WiFi Cata

Настало лето, в работу был запущен шкаф с ригами, в дополнение к корпусным вентиляторам на выдув воздуха со шкафа были поставлены вентиляторы с кухонных вытяжек Cata. Все бы хорошо, но хотелось иметь возможность управления – а идти каждый раз к шкафу для переключения скорости или выключения вентилятора не сильно хотелось. Плюс “Каты” иногда вылетали и не всегда это вовремя замечалось, а шкаф начинал перегреваться.

В итоге был сделан очередной проект на esp8266 для решения этой задачи.

С помощью контроллера решалось несколько вопросов:

  • Возможность включения / выключения вентилятора.
  • Возможность менять его скорость.
  • Контроль состояния: если вентилятор был включен, но не потреблял ток – значит, вылетел; включалась пищалка и отображался статус в веб-интерфейсе.
  • Контроллер должен был сохранять свое состояние между выключениями: если свет “мигнул”, то в дальнейшем возвращаемся к тому же режиму, в котором были.

Проект – адаптация упоминавшегося ранее кода – примера веб-сервера для управления светодиодами. Вместо светодиодов используется 2 реле: одно на включение, второе на переключение скоростей; коммутация сделана так, чтобы при типичном использовании (вентилятор включен, скорость малая) реле были выключены. Добавлен использовавшийся ранее код для возможности обновления прошивки по воздуху.

Из нового для себя – использовал EEPROM (точнее, его эмуляцию в esp8266) для хранения состояния реле. В setup’е вычитывается состояние ячеек и задается состояние выходов и внутренних переменных. В дальнейшем в рабочем цикле идет сравнение состояния выхода и состояния ячейки памяти, при отличии – в память заносится новое значение (да, есть место для оптимизации – можно не дергать каждый раз EEPROM.read и не писать в выход, например, HIGH если он уже HIGH, а использовать какую-нибудь дополнительную переменную). Из неожиданных моментов – сначала неправильно сделал сравнение состояния ячейки: делал проверку на равенство значению и записывал противоположное значение. Попался на том, что в ячейке был дефолт “53” и проверка для выполнения условия перезаписи никогда не происходила, в итоге состояние не сохранялось. Сделал проверку на неравенство, все заработало. Из заметок – в EEPROM.begin() указывается число байт для дальнейшей работы, счет с единицы.

Для сигнализации использовал тот же вывод, на котором сидит набортный светодиод; в коде сделал поправку на то, чтобы после подключения wifi на выходе был низкий уровень, чтобы через зуммер не шел ток. В итоге в нормальном режиме светодиод постоянно светится. При подключении к wifi зуммер щелкает :). На момент написания кода в наличии был только пассивный зуммер, поэтому использовал функцию tone(). Условия сигнализации простые – если выключено 1-е реле (т.е., если вентилятор включен) и напряжение на заданном входе ниже порога – сигналим и ставим переменную fan в “FAIL”, иначе – “OK”.

В качестве микроконтроллера используется модуль ESP-01. GPIO0 и GPIO1 (TX) – выходы на реле, GPIO2 – светодиод и пищалка, GPIO3 (RX) – вход для контроля состояния вентилятора. В качестве источника напряжения использовал трансформатор тока с дохлых PZEM-004t + мост на базе КД522 + конденсатор на 2 мкФ + стабилитрон на 3V. В качестве драйвера для пищалки – КТ817 с резистором на 9,1 КОм в базе. Выход RX пришлось подтянуть резистором на 12 КОм к плюсу, иначе модуль не запускался. Питание ESP-01 – на базе HT7333-1, с парой конденсаторов по 10 мкФ на входе и выходе. Общее питание – от обычного недорогого импульсного БП на 5В.

Код

Одна мысль про “WiFi Cata”

Добавить комментарий