Статья является продолжением ранее опубликованной. В ней приводится краткое описание использования различных датчиков совместно с сервисом ThingSpeak (https://thingspeak.com/) для накопления и отображения собранных данных. В качестве источника данных использован контактный (на примере извещателя магнитоконтактного ИО102-2). Подключение к сети Интернет реализовано по Wi-Fi с использованием модуля ESP-01.
Нередко в радиолюбительской практике встает задача сбора и последующего просмотра разнообразных данных, поступающих с различных датчиков. Одним из вариантов решения задачи является оснащение каждого или группы датчиков своим микроконтроллером с выходом в Интернет. Устройства отсылают собранную информацию на Web-сервер, где она заносится в базу данных. Сервер должен иметь пользовательский интерфейс, позволяющий просматривать (а, возможно, и обрабатывать) собранные данные. Удобно воспользоваться бесплатным сервисом ThingSpeak, предоставляемым фирмой The MathWorks, Inc. (https://www.mathworks.com/help/thingspeak/)
ThingSpeak является платформой для Интернета вещей (IoT), которая позволяет собирать и хранить данные в облаке. Платформа обеспечивает интерфейс, который позволяет анализировать и визуализировать данные в MATLAB. Ранее был описан процесс подключения к сервису на примере сбора данных от датчика влажности DHT11, температуры DS18B20 и давления BMP280. Далее рассмотрен вариант использования контактного датчика, на примере извещателя магнитоконтактного ИО102-2.
Принципиальная схема контактного датчика
Кроме достаточно сложных датчиков, преобразующих различные физические величины в цифровую форму, информацию для регистрации могут поставлять обычные контактные датчики. Например, контакт на размыкание в дверце холодильника, магнитоконтактный извещатель охранной системы, установленный на входной двери или окне и т.п. На рисунке приведена схема подключения контактного датчика.
Это (SW1) обычная кнопка или геркон. Данные с датчика принимаются микроконтроллером ESP8266EX модуля ESP-01 (DD1) по входу GPIO2. Вход «подтянут» к цепи питания резистором R1. Питание устройства осуществляется от зарядного устройства для сотового телефона (через разъем X1 microUSB) или литиевого аккумулятора (на схеме не показан) через стабилизатор напряжения AM1117-3,3 (DA1). В цепи питания установлены конденсаторы, «облегчающие жизнь» DA1 и источника питания в моменты пиковой нагрузки (модуль ESP-01 может потреблять ток до 300 мА).
Монтаж датчика
Для устройства печатная плата не разрабатывалась, монтаж выполнен на куске макетной платы, где распаяны колодки (гнездовые части) разъемов Х2 и Х3 для установки DD1 и подключения контактов SW1 и остальные детали принципиальной схемы. Внешний вид устройства показан на рисунке.
В качестве датчика SW1 использован магнитоконтактный извещатель ИО102-2, обычно применяемый в охранных системах сигнализации и устанавливаемый на неметаллических конструкциях (окнах, дверях), или, как описано в статье про «велоспидометр», на велосипеде. Представленный вариант монтажа имеет дополнительные (по сравнению с схемой) элементы, облегчающие процесс программирования ESP-01: перемычки и переключатели. Для подключения блока питания использована готовая микроплата с распаянным разъемом микроUSB (Х1), на фото вместо него установлен обычный штыревой разъем.
Программа
Для разработки программы используется среда Arduino IDE (https://www.arduino.cc). Для возможности работы с модулями ESP среду Arduino необходимо соответствующим образом «подготовить»: включить поддержку плат ESP8266 Community, выбрать плату «Generic ESP8266 Module» и установить нужный СОМ порт для связи с модулем.
Скетч для устройства сбора данных от контактного датчика приведен в архиве Switch_to_ThingSpeak.
Алгоритм работы программы следующий: после подачи питания для контроля инициируется последовательный канал передачи данных и устанавливается соединение с Wi-Fi сетью (в скетче необходимо указать параметры используемой Вами беспроводной сети – константы ssid и password).
В основном цикле скетча (loop()) с периодом 50 мс выполняется считывание состояния вывода GPIO2. Такая периодичность опроса контактов исключает влияние дребезга на получаемый результат. При смене состояния контактов, сообщение об этом для контроля выводится в последовательный интерфейс. Далее выполняется запрос на сервер api.thingspeak.com, в котором отсылается новое состояние датчика в поле field4 канала сервиса ThingSpeak с указанным в константе channelID идентификатором (тут в скетче надо указать Ваш). Для возможности записи данных в канал необходимо указать свой уникальный API key (в строковой переменной writeAPIKey). Если смены состояния контактов датчика в очередном периоде измерения не произошло, состояние датчика с периодом 20 секунд все равно отсылается в канал сервиса ThingSpeak.
Пример работы
Сначала регистрируемся в сервисе ThingSpeak. Создаем новый канал с хотя бы одним полем для накопления данных. Фиксируем для себя такие параметры канала как ChannelID и API key для записи данных – они Вам понадобятся при корректировке скетча.
Загружаем в Arduino IDE прилагаемый скетч. Меняем значения константы channelID и переменной writeAPIKey на свои. Указываем в константах ssid и password параметры своей Wi-Fi сети (само-собой, Интернет должен быть доступен).
Программируем модуль ESP-01.
Устанавливаем запрограммированный модуль в устройство и подаем питание. Следим за синим светодиодом ESP-01 – с заданной в скетче периодичностью он должен «подмигивать» (данные выводятся в последовательный канал). В примере датчик ИО102-2 закреплялся на двери ванной комнаты. Синий светодиод модуля ESP-01 должен «подмигивать» при каждом открытии/закрытии двери.
Открываем в браузере созданный в ThingSpeak канал и наблюдаем регистрируемые устройством данные о «хлопании» дверью.
На графике показано состояние двери за сутки: единице соответствует раскрытая дверь (контакты SW1 разомкнуты); нулю – закрытая дверь.
Статья была отправлена в журнал «Радио» и опубликована в нем в 2018 году