Pull to refresh

IoT мониторинг объекта

Reading time4 min
Views6.9K

Прорывная технология обмена сообщениями

О чем эта статья.

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

Что Вам понадобится.

Наличие доступа к интернету через сеть WiFi 2.4ГГц на объекте. Скорость не важна, объем трафика мал, обычного роутера с sim – картой вполне достаточно. Микроконтроллер NodeMcu V3 ESP8266, c шилдом Base_ver1.0 для удобства монтажа, плюс стабилизатор на плате дают широкий диапазон входного напряжения. Набор датчиков и сенсоров в зависимости от того какие параметры среды необходимо контролировать это может быть температура, влажность, дверные контакты, PIR-сенсор, датчик освещенности, акустический сенсор, датчик дыма. В качестве исполнительных устройств могут применяться контакты реле, Mosfet драйвер, либо драйвер двигателя.

Для кого эта статья.

Статья предназначена для людей, которые хотят реализовать не дорогой проект по мониторингу различных параметров среды на удаленном объекте. Базовое понимание платы и ее программирование ее является преимуществом.

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

 При подаче питания на AC-DC преобразователь 220В в 5в начинает заряжаться аккумулятор 18650, через плату заряда TP4052 тем самым обеспечивается автономность работы устройства 2-3ч, в случае выключения сетевого напряжения. Чтобы обеспечить NodeMcu V3, необходимым уровнем входного напряжения 6-10В, применена плата повышающего стабилизатора MT3608. Функциональная схема устройства на Рис.1

Для сбора данных о состоянии объекта, используется датчик температуры DS18B20 и датчик RCWL-0516 он определяет движение с помощью эффекта Доплера и микроволн. Исполнительным устройством является релейный модуль SRD-05VDC-SL-C который коммутирует сетевое напряжение 220В мощностью 2квт. Например для вкл/выкл тепловентилятора в холодное время. Отключение происходит по таймеру через 3часа. Отслеживание сетевого напряжения происходит с помощью резисторного делителя 43к и 51к подключенного к выходу AC-DC 5В т.о. при наличии сети 220В, на цифровом входе D11, логическая единица а при отсутствии сети ноль. Т.К. имеется автономное питание, то сообщения в мессенджер отправляются. Состояние самого аккумулятора контролируется с помощью 10 разрядного АЦП. На вход A0 поступает напряжение в диапазоне 2.5-4.2В от 18650. На плате NodeMcu V3 предусмотрен делитель 220к и 100к поэтому такое напряжение безопасно для микросхемы.

Механическая часть 

При грамотном размещении все модули можно уместить, в монтажную коробку 100х100 привинтив часть модулей с внешней стороны. Но у меня оказался под рукой, корпус Gainta 2113  150х200х30 в нем все свободно расположилось, монтаж занял минимум времени. Результат на Рис 2.

Была взята пластина (ненужная печатная плата) вырезана в размер основания корпуса.  На ней с помощью шестигранных стоек М2.5х6 закрепил плату контроллера, повышающего DC-DC, и реле. Все хорошо видно на Рис 4.  Остальные модули без крепежных отверстий просто приклеил на текстильную застежку с липким слоем. Держится отлично, монтируется быстро. Датчик температуры DS15b20 закреплен на внешней стороне для точности измерений, а RCVL-0516 удалось на шлейфе протиснуть через прорезь сделанную в боковой стенке. На Рис. 3 наглядно показано это.

Полностью себя оправдало применение клеммных колодок ЗПС4-10, для навесного монтажа не заменимая вещь.

Программная часть

Скетч написан в среде разработки Arduino IDE c использованием стандартного набора библиотек «WiFiClientSecure.h», «UniversalTelegramBot.h», «ArduinoJson.h», «OneWire.h» «DallasTemperature.h».  Программировал методом отдельных процедур, но все работает. Старался сделать универсальную программу, чтобы в дальнейшем использовать готовые части кода в других проектах. В основе программы циклический алгоритм, в котором каждый элемент выполняется по таймеру. Период таймера ~120мС. C помощью конструкции switch/case происходит переход по метке и выполнение инструкции. Полностью алгоритм приведен на Рис. 5

При отправке команды /start, бот присылает список команд, на которые он откликается.

Далее нажимая на строчку сообщения, оно будет автоматически отправляется. А через несколько секунд, возвращаться ответ.

Хочется остановиться на важных моментах. Чтобы повысить скорость распознавания тревог от датчика движения RCVL-0516 рекомендую настроить внешнее прерывание на его сигнальном входе. Т.е по прерыванию просто поднимается флаг «singl_send» датчик сработал. А отправка сообщения в мессенджер, происходит в основном цикле программы, при условии что кнопка вкл/выкл_охрана была нажата. После отправки флаг «singl_send» сбрасывается. Рис. 7 текст отправляемого сообщения

Полезной функцией оказалось отправка отчета о состоянии бота один раз в сутки. Он содержит информацию о напряжении «сеть есть/нет» «Охрана вкл/выкл» и «Т град С°». Момент отправки определяется по времени UTC. Текущее значение, сравнивается с константой (например 8:20). В случае совпадения происходит отправка.

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

Спасибо всем кто дочитал до конца. Буду рад, конструктивной обратной связи по этому направлению DIY.

P.S.

Текст программы не привожу, т.к. много страниц и куча настроечных параметров, которые индивидуальны. Переделывать это, равносильно заново написать. Но тем кто непременно захочет посмотреть его, выкладываю ссылку на Яндекс диск.

Tags:
Hubs:
+2
Comments14

Articles