Найти тему
Smart home Russia

Делаем увлажнитель воздуха "умным" [ESPHome, ESP8266, WiFi]

Распишу в данной статье способ переделки ультразвукового увлажнителя, который купил в одном из магазинов с "фиксированной ценой".

Translation to English is here. Также основной канал в telegram

Сегодня уже никого не удивишь увлажнителями воздуха, есть много разных вариантов, отличающиеся ценой, производительностью, принципом работы. Также каждые тип имеет свои плюсы и минусы. Сегодня в статье я говорю о компактном ультразвуковом увлажнителе с питанием от USB. Данное устройство является, скорее, игрушкой и не способно серьезно изменить влажность в помещении. Но есть у них одно применение, которое не очевидно. В воду добавляют эфирное масло и таким образом помещение не только увлажняется, но и наполняется ароматом. Именно для этой цели я и купил данное устройство в одном из сетевых магазинов всякой всячины.

Опишу принцип работы, ниже видео с демонстрацией. При включении питания не происходит ничего. Короткое нажатие кнопки активирует устройство, повторное нажатие переводит в режим, где устройство половину времени работает, а другую половину не работает, третье нажатие отключает увлажнитель. Итого, мы имеем три режима работы. Длинное нажатие на кнопку включает или отключает трехцветный светодиод. Больше функций я не нашел. Заливаем масло, проверяем - работает.

Если бы при активации питания устройство сразу бы включалось, то переделывать ничего не пришлось бы. Но тыкать на кнопку каждый раз по необходимости в планы не входило. Разберем увлажнитель, посмотрим его начинку.

Я ожидал увидеть внутри каплю и, максимум, транзистор с конденсатором. У нас же неизвестный микроконтроллер, полноценный RGB светодиод, транзистор и резисторы в обвязке. ВЧ излучатель и параллельно ему стоит индуктивность. Таким образом, при подаче импульса с МК на транзистор, ток протекает через излучатель в одну сторону, а при отключении транзистора - индуктивность обеспечивает протекание тока в обратном направлении. Интересное решение, Обычный ШИМ с МК генерирует переменный ток на излучателе.

Первая мысль, которая пришла мне в голову, была заменить микроконтроллер на esp8266. Проблема оказалась там, где ее не ждали. Максимальная частота ШИМ для esp8266 - 1КГц. ПО крайней мере так пишут в источниках.

Для работы увлажнителя же требуется ШИМ с частотой в пару МГц. Даже если информация, на которую я опирался, окажется неправдивой, разница слишком большая. На форумах я нашел рекомендацию использовать внешний аппаратный ШИМ и не мучать esp8266 или использовать esp32. Я же решил поступить немного проще. Оставить родной МК, но отцепить от него кнопку и светодиод, подключить все к ESP и уже управлять ей. Для удобства я снял с платы МК, чтобы напаять на дорожки провода и резисторы, заодно сделал фото платы. Сзади МК я нашел даже маркировку, но она не гуглится.

Ножки, которые я теперь не буду использовать, я отогнул. Кстати, ради эксперимента я напаял вместо кнопки конденсатор на 4мкФ. Его емкости хватает, чтобы создать импульс требуемой длинны. Если требуется автостарт увлажнителя, то этого уже достаточно.

Если бы я не сделал подготовительные работы, то уже на этом этапе собрал бы все назад, воткнул в "умное реле" и получил бы требуемый результат. Вернемся к нашей плате. Светодиод включен общим "+", поэтому наша ESP будет обеспечивать протекание чрезмерного тока через светодиоды. Если глянуть в документацию, то нужно 2В для красного и по 3.2В для синего и зеленого, а у нас будет по 5В на каждый. Не знаю, как это обеспечивалась в старой схеме, ведь никаких резисторов там не было. Поэтому для синего и зеленого диода нужно установить резисторы по 90Ом, а для красного - 150Ом.

-4

Напаяем резисторы 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 готовое устройство выглядит так:

-6

Вот и все. Теперь кнопку мы можем использовать для чего угодно и как угодно, диод может не просто подсвечивать водичку случайными вспышками, а соответствовать общей теме или уведомлять о чем угодно, а включать и выключать увлажнитель можно дистанционно когда нужно и на сколько нужно. Теперь устройство отправляется на тесты.

Подпишитесь, чтобы не пропускать следующий контент.
Нажмите лайк, если интересно, так я пойму какие публикации больше нужны моей публике.

Также публикации можно найти на других площадках: Instagram, telegram (RU, EN, DE), Medium, LiveJournal, YouTube.

Мой блог является некоммерческим, поэтому позитивный комментарий, лайк или репост поможет публикациям выходить чаще ☺.

Неконструктивные, оскорбительные, негативные комментарии удаляются без предупреждения, у нас тут территория добра.