Распишу в данной статье способ переделки ультразвукового увлажнителя, который купил в одном из магазинов с "фиксированной ценой".
Translation to English is here. Также основной канал в telegram
Сегодня уже никого не удивишь увлажнителями воздуха, есть много разных вариантов, отличающиеся ценой, производительностью, принципом работы. Также каждые тип имеет свои плюсы и минусы. Сегодня в статье я говорю о компактном ультразвуковом увлажнителе с питанием от USB. Данное устройство является, скорее, игрушкой и не способно серьезно изменить влажность в помещении. Но есть у них одно применение, которое не очевидно. В воду добавляют эфирное масло и таким образом помещение не только увлажняется, но и наполняется ароматом. Именно для этой цели я и купил данное устройство в одном из сетевых магазинов всякой всячины.
Опишу принцип работы, ниже видео с демонстрацией. При включении питания не происходит ничего. Короткое нажатие кнопки активирует устройство, повторное нажатие переводит в режим, где устройство половину времени работает, а другую половину не работает, третье нажатие отключает увлажнитель. Итого, мы имеем три режима работы. Длинное нажатие на кнопку включает или отключает трехцветный светодиод. Больше функций я не нашел. Заливаем масло, проверяем - работает.
Если бы при активации питания устройство сразу бы включалось, то переделывать ничего не пришлось бы. Но тыкать на кнопку каждый раз по необходимости в планы не входило. Разберем увлажнитель, посмотрим его начинку.
Я ожидал увидеть внутри каплю и, максимум, транзистор с конденсатором. У нас же неизвестный микроконтроллер, полноценный RGB светодиод, транзистор и резисторы в обвязке. ВЧ излучатель и параллельно ему стоит индуктивность. Таким образом, при подаче импульса с МК на транзистор, ток протекает через излучатель в одну сторону, а при отключении транзистора - индуктивность обеспечивает протекание тока в обратном направлении. Интересное решение, Обычный ШИМ с МК генерирует переменный ток на излучателе.
Первая мысль, которая пришла мне в голову, была заменить микроконтроллер на esp8266. Проблема оказалась там, где ее не ждали. Максимальная частота ШИМ для esp8266 - 1КГц. ПО крайней мере так пишут в источниках.
Для работы увлажнителя же требуется ШИМ с частотой в пару МГц. Даже если информация, на которую я опирался, окажется неправдивой, разница слишком большая. На форумах я нашел рекомендацию использовать внешний аппаратный ШИМ и не мучать esp8266 или использовать esp32. Я же решил поступить немного проще. Оставить родной МК, но отцепить от него кнопку и светодиод, подключить все к ESP и уже управлять ей. Для удобства я снял с платы МК, чтобы напаять на дорожки провода и резисторы, заодно сделал фото платы. Сзади МК я нашел даже маркировку, но она не гуглится.
Ножки, которые я теперь не буду использовать, я отогнул. Кстати, ради эксперимента я напаял вместо кнопки конденсатор на 4мкФ. Его емкости хватает, чтобы создать импульс требуемой длинны. Если требуется автостарт увлажнителя, то этого уже достаточно.
Если бы я не сделал подготовительные работы, то уже на этом этапе собрал бы все назад, воткнул в "умное реле" и получил бы требуемый результат. Вернемся к нашей плате. Светодиод включен общим "+", поэтому наша ESP будет обеспечивать протекание чрезмерного тока через светодиоды. Если глянуть в документацию, то нужно 2В для красного и по 3.2В для синего и зеленого, а у нас будет по 5В на каждый. Не знаю, как это обеспечивалась в старой схеме, ведь никаких резисторов там не было. Поэтому для синего и зеленого диода нужно установить резисторы по 90Ом, а для красного - 150Ом.
Напаяем резисторы 90Ом, 90Ом и 150Ом на дорожки под родным МК, а также резистор на 2.4кОм к кнопке. К ESP подключим к выводам D0, D5, D6, D7. Вход старого МК подключим через резистор 2.4кОм к выводу D2. Принцип выбора ножек я описывал ранее тут:
Выглядит все конечно пока не очень, но для прототипа пойдет. Забегая вперед, сразу скажу, что я планирую данную схему переделать и облагородить со временем.
В данном устройстве все пока держится на добром слове, но работает. Теперь, что касается прошивки. Я накидал такой вариант:
esphome:
name: humidifier
esp8266:
board: d1_mini
api:
encryption:
key: "123"
ota:
password: "123"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
light:
- platform: rgb
name: "RGB"
red: output_component1
green: output_component2
blue: output_component3
output:
- platform: esp8266_pwm
id: output_component1
pin:
number: D5
inverted: true
- platform: esp8266_pwm
id: output_component2
pin:
number: D6
inverted: true
- platform: esp8266_pwm
id: output_component3
pin:
number: D0
inverted: true
switch:
- platform: gpio
pin: D2
inverted: true
id: onoff
name: "on/off"
icon: "mdi:air-humidifier"
on_turn_on:
- delay: 500ms
- switch.turn_off: onoff
binary_sensor:
- platform: gpio
pin:
number: D7
inverted: true
mode:
input: true
pullup: true
name: "button"
Конечно же никто не мешает добавить дополнительного функционала, все в наших руках. Это лишь базовая часть.
RGB платформу я описывал ранее тут:
Работу сенсора я уже тоже описывал в статье:
А вот переключатель я, кажется, ранее не описывал. Теория описана тут:
Теперь разберемся в том, что написал я:
Указываем тип устройства: switch:
Указываем платформу: - platform: gpio
Мы работаем с физическими портами, укажем их: pin: D2
Выход нужно инвертировать: inverted: true
Придумаем идентификатор данному переключателю: id: onoff
Укажем имя для отображения: name: "on/off"
Укажем иконку для отображения: icon: "mdi:air-humidifier"
В начале статьи я писал, что смена режима происходит импульсом, поэтому создадим автоматизацию прямо в описании этого же переключателя:
on_turn_on:
- delay: 500ms
- switch.turn_off: onoff
Мы указываем, что при включении данного переключателя, его нужно выключить тут же, через полсекунды.
В HA готовое устройство выглядит так:
Вот и все. Теперь кнопку мы можем использовать для чего угодно и как угодно, диод может не просто подсвечивать водичку случайными вспышками, а соответствовать общей теме или уведомлять о чем угодно, а включать и выключать увлажнитель можно дистанционно когда нужно и на сколько нужно. Теперь устройство отправляется на тесты.
Подпишитесь, чтобы не пропускать следующий контент.
Нажмите лайк, если интересно, так я пойму какие публикации больше нужны моей публике.
Также публикации можно найти на других площадках: Instagram, telegram (RU, EN, DE), Medium, LiveJournal, YouTube.
Мой блог является некоммерческим, поэтому позитивный комментарий, лайк или репост поможет публикациям выходить чаще ☺.
Неконструктивные, оскорбительные, негативные комментарии удаляются без предупреждения, у нас тут территория добра.