Очередной умный дом. Часть пятая — Большая Красная Кнопка

image
Практически в каждом обсуждении очередной реализации домашней автоматизациии возникает такой вопрос — «Хочу одну кнопку, чтобы уходя из дома ее нажал, и все выключилось\перевелось в режим энергосбережения».
Что ж, как говорил один известный персонаж, вызов принят.

Как я уже рассказывал, у меня используется RS485 и MODBUS. Кнопку можно сделать как мастером, так и слейвом. И у каждого решения есть свои недостатки. Если кнопка будет выступать мастером, то в приборной сети получается два мастер-устройства, если она будет слейвом, то задержка между нажатием и началом выполнения команд будет порядка минуты (частота опроса контроллеров серверной частью). Оба решения меня не устраивали, поэтому было найдено третье — кнопка будет работать через серверную часть. Этот вариант также не лишен недостатков, например, при отсутствии связи с сервером она просто не будет работать, но так как эта Большая Красная Кнопка выполняет вспомогательную функцию (свет можно выключить и обычными выключателями), то с этим решено было мириться. Также решено вместо одной кнопки сделать 4, вернее от одной до четырех. Если можно выключить все — то почему бы не иметь возможность все включить?

Итак, аппаратная часть


Берем кнопочный пост, прозрачные кнопки и выкидываем все лишнее.

image

Из прозрачных кнопок убираем родные переключатели и вклеиваем другие. Зачем этот колхоз? Что бы была возможность добавить светодиоды подсветки (изначально кнопки без подсветки, хотя и имеют прозрачную нажимную часть) и по еще одной простой причине — они по высоте не влезали в этот корпус.

image

Использован Wi-Fi модуль ESP8266–03 и PIC12F1840. Так как одновременные нажатия нескольких кнопок не планируются — то они подключены через резисторный делитель к входу АЦП, что позволило обойтись одним выводом МК. Светодиоды подключены по два к одному выходу — при высоком уровне горит один, при низком — второй, при переключении вывода на вход — выключены оба. Диодный мост, стабилизатор и перемычки — для разных вариантов питания, переменка, постоянка или аккумуляторы.

Разводим, травим, собираем. Не забываем добавить перемычки для удержания МК в сбросе и переводе ESP8266 в режим прошивки, так как выпаивать его неудобно. 11-контактный разъем — питание, кнопки и светодиоды, пятиконтактный — ICSP и по совместительству UART для прошивки и просмотра логов обмена.

image

Как это работает


При включении устройство регистрируется в домашней Wi-Fi сети, при нажатии кнопки — на сервер отправляется простейший GET запрос, при обработке которого серверный скрипт выбирает из базы список адресов контроллеров и записывает в регистры нужные значения. Так как кнопка также является полноценным контроллером со своим MODBUS адресом, то первой командой в ней обнуляется флаг нажатия кнопки, а последней — устанавливается флаг окончания выполнения последовательности команд, что индицируется светодиодами в кнопках. Нажали кнопку — загорелся светодиод, пришла первая команда из серии — замигал, пришла последняя — потух.

image
Консоль настроек.

Самих устройств в сети может быть несколько, количество кнопок в каждом устройстве от одной до четырех, количество команд настраивается и, в принципе, ничем не ограничено. Также в веб-интерфейсе есть виджет для групповых операций с таким же функционалом.

Пару слов о самих ESP8266. для макетирования я использовал ESP-01, в окончательном варианте — ESP-03. Прошил в них последнюю прошивку, 01 заработал нормально, 03 работал при первом включении, при последующих ругался на убитую прошивку. Как оказалось, на них было установлено разное количество памяти, на 01 — 8Мбит, на 03 — 4Мбита. Но никаких предупреждений софт для прошивки не выдавал, все шилось и почти работало. Вылечилось более старой прошивкой с одного известного сайта. Также, крайне желательно при старте делать сброс ESP и ПОСЛЕ сброса слать команду на отключение от точки доступа, а уже потом делать нормальную инициализацию. Иногда модуль при включении считал себя уже подключенным к точке доступа, и даже имел IP 104.111.109.*, но естественно доступа к сети у него не было. Также при перенастройке UART-а на скорость отличную от дефолтной 115200 — периодически он эти настройки забывал.

Ссылки на предыдущие части:

© Geektimes