Зарядная станция 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 и много пустого места внутри для доработки :) Засим все.
Самые обсуждаемые обзоры
+28 |
1865
43
|
Но чудо техники конечно интересное. Вот уж точно сумрачный азиатский гений.
Допустим, владелец произносит команду:
— Станция, включись!
Обязательно два слова — предварительная и исполнительная команда.
После чего звук обрабатывается и переводится в цифру. Затем создается сигнатура (код), который приводит к срабатыванию реле.
Как то так…
Например, сетап на рабочем столе: 2 ноутбука (личный + рабочий), монитор, лампа, ЛБП, усилитель, паяльник — 7 устройств, которые постоянно запитаны от «зарядных устройств» с USB-C PD. К этому добавим устройства, которые требуют именно регулярной зарядки, т.е. подключаются на короткий срок, но практически каждый день (т.е. для их зарядки не переиспользуешь порты, которые питают «стационарные» устройства, не удобно): два телефона, пауэрбанк, наушники, фонарь, bluetooth-колонка, планшет.
Можно, конечно, иметь определённое количество малопортовых ЗУ и постоянно играть в «передёрни кабель», или даже сделать вот так:
Но, имхо, если есть постоянная нужда в определённом количестве силовых USB одновременно — то удобнее использовать одно устройство, в котором это количество имеется. А пользователей, у которых возникает такая нужда, становится всё больше и больше, поскольку стандарт USB-C PD замещает всё больше проприетарных источников питания для самой разной цифровой и просто бытовой техники.
P.S. Лично я месяц назад был вынужден обежать все «злачные точки» города, чтобы найти пару «днищевых» китайских «зарядок» с 4хUSB-A в параллель и 5В 2А преобразователем внутри, когда занимался изготовлением гирлянд на НГ. Потому что сюрприз: самые трендовые, рейтинговые и рекомендуемые сверхсовременные GaN 65-140-200W PD3.1 зарядники, во-первых, имеют 1, максимум 2 порта USB-A, а во-вторых, сюрприз-сюрприз, от них гирлянды не работают, потому что 5В на выход они просто так не отдают. Сабж обзора, при всех его недостатках, в такой задаче не спасует.
Да, для ноутов, мониторов, ЛБП и паяльников зачастую надо 20 В. При этом, порты должны быть независимые, а это, значит, по отдельному преобразователю на каждый порт.
В целом же, я ничего не имею против таких сетапов — да, сейчас много устройств работают/заряжаются от тайпси. Но лично у меня пока потребности в комбайне не было — что-либо стационарное (типа монитора или док-станции) идут со своим БП, с которым и работают. Паяльник в тайпси я зарекся включать, т.к. у обычных блочков нет заземпления, таким паяльником только полупроводники жечь. Обозреваемый, кстати, такой же и это (имхо) большой минус.
Недавно в офисмаге брал дешевый 5 В 2 А блок с двумя портами. Да, не 4, но стоит 280 рублей, можно и два взять. Но с китайскими у меня другое опасение — чтобы не загорелся. В теории импульсный источник в этом плане надежен — или работает, или просто сгорает без возгорания, но что-то последнее время несколько раз уже слышал о таком.
так здесь они, судя по виду платы, именно отдельные, но — немощные. заряжать пачку телефонов — сойдет.
Паяльник в тайпси я зарекся включать, т.к. у обычных блочков нет заземпления, таким паяльником только полупроводники жечь.
каким образом? не отключая паяемое от питания разве. да и то скорее статикой, а для нее заземление паяльника пофиг, в первую очередь себя надо. а 176ые нынче не в моде.
при типовом использовании одним пример не актуален.
И светодиоды, кстати, светятся только от одного паяльника TS101. Землю взять, знаете ли, не проблема — через корпус, который трогается руками, например. Человек достаточно заземлен, чтобы между ним и паяльником напряжения хватило для выбивания мелкого полевика.
Вообще, от вас странно такие комментарии видеть.
1) usb-увлажнитель, который в лицо практически дует и приятно руки смачивает
2) Дисплей с обнаружением блютуз устройств
3) Пока не коротнул силовой выход, была подключена гирлянда
ну а потом сразу по приходу подключается телефон и наушники на зарядку
Приходишь к рабочему месту, а уже все включено и радует :)
art.mysku-st.net/uploads/arts/13/62/98/2025/01/29/a6f1d2.png
Вот, например, паяльная станция. Температура выставляется кнопками. Для паяльника: левая — «вниз» (меньше), правая — «вверх» (больше). Для фена — наоборот: левая — «вверх» (больше), правая — «вниз» (меньше).
В сомнительнейшую китайскую зарядку коммутировать реле с еще более слмнительным блоком питания.
Вся надежда на противопожарное узо и 6ka автоматы
https://aliexpress.com/item/1005004929106387.html
https://aliexpress.com/item/1005007278568377.html
планирую еще пару модификаций: впилить вентилятор-улитку и бп мощней, текущий просто без дела валялся
Профиль очень знакомый, раньше в рекламных щитах широко применялся.
на платки в ютубе напоролся, вот толковый обзор
www.youtube.com/watch?v=rV6pybQB6PI
Первый кот говорит:
— Я на столько ленивый, что мне вчера миску с едой к морде поднесли.
Второый кот говорит:
— А я на столько ленивый, что мне принесли миску с едой и окунули туда мордой.Так они еще вытерли останки еды с моих усов.
Третий самый ленивый кот говорит:
— А вы слышали вчера дикий рев? Дак вот это я на свои яйца сел, дак мне лень встать было.
Ну так вот я 3 кот, каждый раз включать и выключать и вообще думать об этом неохота приходя и уходя на работу
PS: У меня медленная на 5 портов у кровати 2А на порт, быстрее не надо :))
Место позволяет.
Но «хотелось, чтобы реагировало именно на меня».
сравнение с холодильником, кхм это устройство и должно всегда быть запитано, странное сравнение.
пара которые qc/pd — отдельно.
вид приличный и нажать на кнопку можно не боясь что выдавиш внутрь.
Setjet -?
То есть приходишь домой с севшими часами, и их даже зарядить нельзя?
В вашем варианте использования можно, к примеру, отключать зарядку телефона на 78%(или сколько там рекомендуется для увеличения работоспособности аккумулятора?). Да много чего можно. Единственный недостаток — задержки срабатывания до 5 секунд. В некоторых случаях это очень критично.
Поясните по коду:
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) {
…
}
2) У меня часы могут слать два разных имени Amazfit Bip Watch или Amazfit Bip S, написал так чтобы ловились оба имени
Я бы таким сделал… чтобы только в моем присутствии )
Вкорячивать в само устройство тумблер тоже нет — оно у меня так классно под монитором поселилось и лезть и нащупывать где его включать вообще не мое
Эту кнопку невидно от слова совсем и никому )) о ее существовании знаю только я )))
В одном из низкопрофильных лежачих системников от Acer видел тонкий оптический привод, мастерски замаскированный в диагональной решётке — кнопкой был один из сегментов решётки, слегка выступающий относительно остальных, один из других оказался индикатором.