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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
  • Прорывная технология обмена сообщениями

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

    В статье рассказано об опыте создания простого устройства передачи данных на микроконтроллере 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. p.s. Текст программы не привожу, т.к. много страниц и куча настроечных параметров, которые индивидуальны. Переделывать это, равносильно заново написать. Но тем кто непременно захочет посмотреть его, выкладываю ссылку на Яндекс диск https://disk.yandex.ru/d/C2V91yXYetMgqQ.

Источник: https://habr.com/ru/post/673148/


Интересные статьи

Интересные статьи

Kubernetes де-факто стал стандартом при разработке контейнерных приложений, поскольку он предоставляет огромный набор функциональных возможностей "из коробки", которые помогают разработчикам создавать...
В декабре я начал пользоваться аудиоприложением Clubhouse, которое доступно только по приглашениям. Тогда его пользовательская база составляла 600 000 человек, ...
Ключевые тезисы: Взаимодействие между компонентами напрямую друг с другом может привести к неожиданному поведению, в котором сложно будет разобраться разработчикам, операторам и ...
Начнём конечно с аберрации. Затем рассчитаем и проиллюстрируем графиками, как выглядит звёздное небо в иллюминаторах ракеты в зависимости от её скорости. И, наконец, выясним, как выгл...
Приступая к животрепещущей теме резервного копирования на «Битрикс», прежде всего хотелось бы поблагодарить разработчиков, реализовавших автоматическое резервное копирование в облачное хранилище в вер...