Умная дверь (продолжение)

Февраль 16, 2020 - Время чтения: 4 минуты

Начало тут, Видео здесь.

Наконец то дошли руки доделать начатое: поставил датчики на три замка, а также поменял метод определения того, закрыт замок или нет. Сначала думал реализовать определение состояния замков с помощью аналогового входа A0 на плате NodeMCU, подключал датчики по такой схеме:

Согласно которой, в зависимости от замкнутого контакта изменялось сопротивление, далее NodeMCU на входе A0 считывает значение и в зависимости от напряжения вычислялось какие замки закрыты. Но использование микриков:

показалось ненадежным, поэтому решил поменять на модули TCRT5000, которые покупал тут, встроил их в дверь вот таким способом:

После чего, используя плату NodeMCU, подключил все модули и с помощью программы FLProg накидал программу, которая  с помощью протокола MQTT будет передавать данные на сервер Умного дома. Также плата NodeMCU будет иметь Web-интерфейс, зайдя на который после авторизации, можно будет посмотреть состояние датчиков и поменять некоторые параметры. Ниже пример интерфейса. На данный момент на главной странице можно узнать о состоянии замков,

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

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

Как я писал выше, используя программу FLProg, написал прошивку. Прошивка состоит из нескольких плат:

Плата MQTT:

Отвечает за настройки MQTT, здесь берутся "Переменные пользователя" (такие как сервер MQTT, логин и пароль сервера), заданные в настройках и передаются в пользовательский блок "MQTT ESP main". С помощью этого блока в дальнейшем данные передаются на сервер.

Плата Light:

Эта плата отвечает за включение подсветки при открытии двери. Блок TOF подает логическую единицу на ВЫХОД "LightON" на определенное время, заданное в переменной "LightOn time",  когда на его вход EN подается логическая единица.

PS: В принципе тут пока ничего сложного. В дальнейшем хочу доработать и сделать включение/ выключение плавным. Пока решил оставить так. Из-за вспышки Коронавируса в Китае, мне не пришла посылка, заказанная на Ali, в которой были светодиодные ленты и нужные реле.

Плата Debug:

Эта плата отвечает за вывод информации с датчиков в порт UART при изменении значений. По умолчанию плата не выполняется, но при необходимости в настройках Web-интерфейса можно включить выполнение, также указав какой датчик следует мониторить.

Плата Main:

Тут вся основная логика программы, если кратко описать ее, то данные с датчика замка передаются на MQTT сервер с помощью блока "MQTT ESP Pub", а также сохраняются в переменные. Как видно из схемы, она разбита на три идентичных блока, согласно количеству замков, а блок, отвечающий за открытие/закрытие двери берет данные с остальных блоков и также передает на сервер MQTT. Также данные сохраняются в переменные, которые используются при отображении или управлении информации по web-интерфейсу.

PS: Усли вам нужен будет файл проекта для программы FLProg, пишите в комментариях, могу вам выслать его на почту. А также если возникли дополнительные вопросы, оставляйте комментарии, постараюсь ответить.

Полу(о)умный дом

Делаем вещи умнее...

Посетителей

98