RSS блога
Подписка
Зарядная станция MaAnt DianBa No.1 и доработка модулем ESP32
- Цена: 3 535 руб.
- Перейти в магазин
Как-то замучался на работе заряжать кучу устройств через USB-порты системного блока и приобрел приглянувшийся мне MaAnt на aliexpress.
Брал давно, сейчас уже новая версия появилась с отличающимся дизайном. Устройство красивое, имеет дисплей с показом потребления как по всем каналам (пользуюсь только этим режимом), так и переключается в режим отображения по каждому каналу с увеличенным размером шрифта и дополнительным отображением информации, например напряжениями на линиях D- и D+. Есть еще силовой выход на 5В для подсоединения бананов, который имеет плохую защиту по КЗ (или мне не повезло), ну собственно я его коротнул и он стал не силовым, а слаботочным, держит 5В при токе не более 100мА, а далее просаживается, до КЗ 2А выдавал смело, больше не пробовал. Также на экране не выводятся по нему никакие параметры, но это так у меня, я видел у людей есть вывод данных, у них видимо более поздние ревизии изделия. Прибор умеет еще заряжать по беспроводной технологии. Также если зажать две кнопки одновременно, то попадем в дополнительное меню, в котором ничего кроме уровня яркости подсветки изменить нельзя.
Приведу выдержку параметров из страницы продавца:
Ниже приведу пару изображений по поддерживаемым протоколам на портах QC3.0 и PD20W, остальные порты стандартные на 5В 2А выдают.
QC3.0:
PD20W:
Также приложу фоточки внутренностей, во время вскрытия присоской оторвал экран, но он уцелел и остался работоспособным:
Основная управляющая плата с экраном и USB выводами:
Блок питания вид сверху:
Блок питания вид снизу:
Гугл поиск по маркировке блока питания ничего интересного не выдал, но на вид все массивно и добротно, возможно даже на 25А тянет при 5В.
Плата беспроводной зарядки:
Ну и поскольку у устройства нет никаких тумблеров включения, а из розетки выдергивать его совсем неудобно решил его доработать на авто включению по моему присутствию и отключению по моему отсутствию. Хотелось, чтобы реагировало именно на меня и всякие датчики движения я отмел. Взор пал на ESP32-WROVER-B с Wifi и Bluetooth и захотелось его немного поковырять, ну и сказано-сделано. Очень мне полюбилась среда EspHome для домашней автоматизации, но ничто не мешает ее использовать для программирования автономных модулей. Собственно, получилась такая конфигурация в формате Yaml:
Собираем и зашиваем из консоли командой: esphome run maant.yaml
Большинство часов с Bluetooth соединением периодически отправляют посылки, с которых можно выдернуть их наименование. Собственно, ловлю посылки с моих часов Amazfit Bip, а также если вдруг забыл часы, то ловлю посылки с uuid данными генерируемым приложением nRF Connect на Android, поскольку политика безопасности в смартфонах не предусматривает периодической отправки каких-либо идентификаторов с включенным Bluetooth.
По обнаружению присутствия устанавливается таймер на один час и включается MaAnt с помощью реле. Таймер сбрасывается пока я рядом, как только я ушел, то через час MaAnt отключится.
Также на ESP32 с большим сенсорным экраном WT32-SC01, тоже купленной на aliexpress, вывожу список найденных рядом Bluetooth устройств ради интереса:
Приложу фотки доработки по встраиванию ESP32 внутрь. Внутри есть выступы под которые распечатал на 3Д-принтере салазки и расположил все модули на них, прям над блоком питания:
Чтобы питать ESP32 встроил для него отдельный блок питания из какого-то дешманского зарядника, который выдает 5В на выход, 5В идут на модуль реле, на котором есть понижающий стабилизатор на 3.3В которые питают ESP32, а ESP32 же с помощью модуля реле включает основной блок питания MaAnt:
Этот дешманский блоки питания кстати меня уже подвел вздутым конденсатором после непродолжительной работы, пришлось вскрывать и перепаивать его.
Вот так выглядит все это дело всунутое внутрь:
Кнопочку включения Wifi модуля в ESP32 вывел на заднюю часть:
Включенный Wifi автоматом подключается к точке доступа, по параметрам, которые забиты заранее в строках ssid и password, а строки ota со своими параметрами позволяют мне обновлять прошивку по wifi не подключаясь ничем физически. Но первую конфигурацию придется залить как-то физически, поэтому сделал это с помощью подключения конвертора USB-UART и EspHome по увиденному COM-порту в системе все успешно залил в модуль:
После нажатия кнопки запускается обратный таймер отключения и через 10 минут Wifi отключится. После подачи питания Wifi не включается сам, все привязано к кнопке.
Ну собственно сама зарядная станция меня устраивает, красивая, много портов USB и много пустого места внутри для доработки :) Засим все.
Брал давно, сейчас уже новая версия появилась с отличающимся дизайном. Устройство красивое, имеет дисплей с показом потребления как по всем каналам (пользуюсь только этим режимом), так и переключается в режим отображения по каждому каналу с увеличенным размером шрифта и дополнительным отображением информации, например напряжениями на линиях D- и D+. Есть еще силовой выход на 5В для подсоединения бананов, который имеет плохую защиту по КЗ (или мне не повезло), ну собственно я его коротнул и он стал не силовым, а слаботочным, держит 5В при токе не более 100мА, а далее просаживается, до КЗ 2А выдавал смело, больше не пробовал. Также на экране не выводятся по нему никакие параметры, но это так у меня, я видел у людей есть вывод данных, у них видимо более поздние ревизии изделия. Прибор умеет еще заряжать по беспроводной технологии. Также если зажать две кнопки одновременно, то попадем в дополнительное меню, в котором ничего кроме уровня яркости подсветки изменить нельзя.
Приведу выдержку параметров из страницы продавца:
- Входное напряжение: 110v-220v
- Выходное напряжение: 5 В
- Максимальный ток: 25А
- Мощность PD: макс. 22 Вт
- Мощность беспроводной зарядки: 10 Вт
- Максимальное напряжение: 5,1 V
- Максимальный ток одного порта: 5A
- Размеры: 102×100x88 мм
Ниже приведу пару изображений по поддерживаемым протоколам на портах QC3.0 и PD20W, остальные порты стандартные на 5В 2А выдают.
QC3.0:
PD20W:
Также приложу фоточки внутренностей, во время вскрытия присоской оторвал экран, но он уцелел и остался работоспособным:
Основная управляющая плата с экраном и USB выводами:
Блок питания вид сверху:
Блок питания вид снизу:
Гугл поиск по маркировке блока питания ничего интересного не выдал, но на вид все массивно и добротно, возможно даже на 25А тянет при 5В.
Плата беспроводной зарядки:
Ну и поскольку у устройства нет никаких тумблеров включения, а из розетки выдергивать его совсем неудобно решил его доработать на авто включению по моему присутствию и отключению по моему отсутствию. Хотелось, чтобы реагировало именно на меня и всякие датчики движения я отмел. Взор пал на ESP32-WROVER-B с Wifi и Bluetooth и захотелось его немного поковырять, ну и сказано-сделано. Очень мне полюбилась среда EspHome для домашней автоматизации, но ничто не мешает ее использовать для программирования автономных модулей. Собственно, получилась такая конфигурация в формате Yaml:
Кодаманама
esphome:
name: maant
on_boot:
- priority: 800
then:
- delay: 300ms
- lambda: |-
id(relay_out).turn_off();
wifi::global_wifi_component->disable();
esp32:
board: esp32dev
framework:
type: arduino
web_server:
port: 80
preferences:
#one on day
flash_write_interval: 1440min
wifi:
ssid: "Тута имя точки"
password: "Тута пароль"
reboot_timeout: 3min
enable_on_boot: false
ota:
safe_mode: true
password: тута пароль
logger:
level: INFO
globals:
- id: out_timeout
type: int
restore_value: no
initial_value: '0'
- id: wifi_timeout
type: int
restore_value: no
initial_value: '0'
- id: in_uuid
type: std::string
restore_value: no
initial_value: '"0x88FFEE11"'
- id: ble_id_name
type: std::string
restore_value: no
initial_value: '"Amazfit Bip"'
interval:
- interval: 1s
then:
- lambda: |-
if(id(out_timeout) != 0) {
id(out_timeout)--;
if((id(out_timeout) < 3550) && ((id(out_timeout) % 60) == 0) ) {
int t = id(out_timeout) / 60;
ESP_LOGI("BLE_SOCKET", "relay time left = %i min", t);
}
if(id(out_timeout) == 0) {
id(relay_out).turn_off();
ESP_LOGI("BLE_SOCKET", "RELAY OFF");
}
}
if(id(wifi_timeout) != 0) {
id(wifi_timeout)--;
if((id(wifi_timeout) % 60) == 0) {
int t = id(wifi_timeout) / 60;
ESP_LOGI("BLE_SOCKET", "wifi time left = %i min", t);
}
if(id(wifi_timeout) == 0) {
wifi::global_wifi_component->disable();
ESP_LOGI("BLE_SOCKET", "WIFI OFF");
}
}
esp32_ble_tracker:
on_ble_advertise:
then:
- lambda: |-
if(x.get_service_uuids().size() != 0) {
auto uuid = x.get_service_uuids()[0];
if(strcmp(uuid.to_string().c_str(), id(in_uuid).c_str()) != 0) return;
ESP_LOGI("BLE_SOCKET", "Success - mac: %s uuid: %s", x.address_str().c_str(), uuid.to_string().c_str());
id(out_timeout) = 3600;
id(relay_out).turn_on();
}
if(strlen(x.get_name().c_str()) > 0) {
ESP_LOGI("BLE_SOCKET", "Name: %s", x.get_name().c_str());
if(strcmp(x.get_name().c_str(), id(ble_id_name).c_str()) >= 0) {
ESP_LOGI("BLE_SOCKET", "Success - name: %s mac: %s", x.get_name().c_str(), x.address_str().c_str());
id(out_timeout) = 3600;
id(relay_out).turn_on();
}
}
if(x.get_service_datas().size() != 0) {
auto data = x.get_service_datas()[0];
std::string s(data.data.begin(), data.data.end());
ESP_LOGI("ble_adv", "Data - %s", s.c_str());
}
if(x.get_service_uuids().size() != 0) {
ESP_LOGI("ble_adv", " Advertised service UUIDs:");
for (auto uuid : x.get_service_uuids()) {
ESP_LOGI("ble_adv", " - %s", uuid.to_string().c_str());
}
}
switch:
- platform: gpio
id: relay_out
pin: GPIO25
restore_mode: ALWAYS_OFF
inverted: True
on_turn_on:
then:
- lambda: |-
return;
ESP_LOGI("Relay", "on_turn_on");
on_turn_off:
then:
- lambda: |-
return;
ESP_LOGI("Relay", "on_turn_off");
binary_sensor:
- platform: gpio
name: "Test Button"
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: True
on_click:
min_length: 50ms
max_length: 2s
then:
- lambda: |-
id(wifi_timeout) = 360;
wifi::global_wifi_component->enable();
ESP_LOGI("Wifi", "Wifi on");
Собираем и зашиваем из консоли командой: esphome run maant.yaml
Большинство часов с Bluetooth соединением периодически отправляют посылки, с которых можно выдернуть их наименование. Собственно, ловлю посылки с моих часов Amazfit Bip, а также если вдруг забыл часы, то ловлю посылки с uuid данными генерируемым приложением nRF Connect на Android, поскольку политика безопасности в смартфонах не предусматривает периодической отправки каких-либо идентификаторов с включенным Bluetooth.
По обнаружению присутствия устанавливается таймер на один час и включается MaAnt с помощью реле. Таймер сбрасывается пока я рядом, как только я ушел, то через час MaAnt отключится.
Также на ESP32 с большим сенсорным экраном WT32-SC01, тоже купленной на aliexpress, вывожу список найденных рядом Bluetooth устройств ради интереса:
Приложу фотки доработки по встраиванию ESP32 внутрь. Внутри есть выступы под которые распечатал на 3Д-принтере салазки и расположил все модули на них, прям над блоком питания:
Чтобы питать ESP32 встроил для него отдельный блок питания из какого-то дешманского зарядника, который выдает 5В на выход, 5В идут на модуль реле, на котором есть понижающий стабилизатор на 3.3В которые питают ESP32, а ESP32 же с помощью модуля реле включает основной блок питания MaAnt:
Этот дешманский блоки питания кстати меня уже подвел вздутым конденсатором после непродолжительной работы, пришлось вскрывать и перепаивать его.
Вот так выглядит все это дело всунутое внутрь:
Кнопочку включения Wifi модуля в ESP32 вывел на заднюю часть:
Включенный Wifi автоматом подключается к точке доступа, по параметрам, которые забиты заранее в строках ssid и password, а строки ota со своими параметрами позволяют мне обновлять прошивку по wifi не подключаясь ничем физически. Но первую конфигурацию придется залить как-то физически, поэтому сделал это с помощью подключения конвертора USB-UART и EspHome по увиденному COM-порту в системе все успешно залил в модуль:
После нажатия кнопки запускается обратный таймер отключения и через 10 минут Wifi отключится. После подачи питания Wifi не включается сам, все привязано к кнопке.
Ну собственно сама зарядная станция меня устраивает, красивая, много портов USB и много пустого места внутри для доработки :) Засим все.
Самые обсуждаемые обзоры
+37 |
3589
168
|
+108 |
4353
122
|
Но чудо техники конечно интересное. Вот уж точно сумрачный азиатский гений.
Например, сетап на рабочем столе: 2 ноутбука (личный + рабочий), монитор, лампа, ЛБП, усилитель, паяльник — 7 устройств, которые постоянно запитаны от «зарядных устройств» с USB-C PD. К этому добавим устройства, которые требуют именно регулярной зарядки, т.е. подключаются на короткий срок, но практически каждый день (т.е. для их зарядки не переиспользуешь порты, которые питают «стационарные» устройства, не удобно): два телефона, пауэрбанк, наушники, фонарь, bluetooth-колонка, планшет.
Можно, конечно, иметь определённое количество малопортовых ЗУ и постоянно играть в «передёрни кабель», или даже сделать вот так:
.
Но, имхо, если есть постоянная нужда в определённом количестве силовых USB одновременно — то удобнее использовать одно устройство, в котором это количество имеется. А пользователей, у которых возникает такая нужда, становится всё больше и больше, поскольку стандарт USB-C PD замещает всё больше проприетарных источников питания для самой разной цифровой и просто бытовой техники.
Вот, например, паяльная станция. Температура выставляется кнопками. Для паяльника: левая — «вниз» (меньше), правая — «вверх» (больше). Для фена — наоборот: левая — «вверх» (больше), правая — «вниз» (меньше).
В сомнительнейшую китайскую зарядку коммутировать реле с еще более слмнительным блоком питания.
Вся надежда на противопожарное узо и 6ka автоматы
https://aliexpress.com/item/1005004929106387.html
https://aliexpress.com/item/1005007278568377.html
планирую еще пару модификаций: впилить вентилятор-улитку и бп мощней, текущий просто без дела валялся
Профиль очень знакомый, раньше в рекламных щитах широко применялся.
PS: У меня медленная на 5 портов у кровати 2А на порт, быстрее не надо :))
Место позволяет.
Но «хотелось, чтобы реагировало именно на меня».
пара которые qc/pd — отдельно.
вид приличный и нажать на кнопку можно не боясь что выдавиш внутрь.
Setjet -?
То есть приходишь домой с севшими часами, и их даже зарядить нельзя?
Поясните по коду:
1) в лямбдах — команда return; прерывает выполнение лямбда-блока, поэтому строка с ESP_LOGI ниже просто не выполнится. Или тут как раз ничего не нужно делать? Тогда может убрать лишний ESP_LOGI?
2) if(strcmp(x.get_name().c_str(), id(ble_id_name).c_str()) >= 0) {
…
}
вы тут точное равенство проверяете? Если так, может лучше:
if (strcmp(x.get_name().c_str(), id(ble_id_name).c_str()) == 0) {
…
}
Я бы таким сделал… чтобы только в моем присутствии )