Приведено краткое описание применения сервиса ThingSpeak (https://thingspeak. com/) для накопления и отображения собранной информации. В качестве её источника использован датчик температуры и влажности DHT11. Подключение к Интернету по Wi-Fi реализовано с помощью модуля ESP-01.
В радиолюбительской практике нередко приходится собирать, сохранять и в последующем просматривать и обрабатывать разнообразную информацию, поступающую с различных датчиков. Один из вариантов решения этой задачи - оснащение каждого датчика или их группы своим микроконтроллером с выходом в Интернет. Эти устройства должны отсылать собранную информацию на Web-сервер, где она заносится в базу данных. Сервер должен иметь интерфейс, позволяющий просматривать, а возможно, и обрабатывать сохранённую информацию.
При самостоятельной реализации такой системы Web-сервер должен поддерживать PHP и иметь сервер баз данных, что далеко не всегда доступно на бесплатных сервисах. К тому же нужно обладать определёнными навыками web-программирования.
Задача существенно упрощается, если воспользоваться бесплатным сервисом ThingSpeak (URL: https://www.mathworks.com/ help/thingspeak/). Это платформа для Интернета вещей (IoT), позволяющая собирать и хранить информацию в облаке. Она обеспечивает интерфейс, дающий возможность анализировать и визуализировать информацию в MATLAB.
Основа платформы ThingSpeak - каналы, в которые пользователи посылают информацию для хранения и визуализации. Каждый канал содержит, кроме имени и описания, восемь полей для информации любого типа, три поля для географических координат (широта, долгота, высота), поле для ссылки на сайт, где используется хранящаяся информация, ссылку на канал в YouTube.
Зарегистрировав канал в ThingSpeak, туда сразу же можно отправлять информацию, обрабатывать её и получать к ней доступ. Каналы могут работать с информацией в форматах JSON, XMLи CSV.
Зарегистрироваться в сервисе и проверить его работу очень легко. Для этого на странице сервиса https:// thingspeak.com/ нажмите на экранную кнопку Get Started For Free. Чтобы зарегистрироваться и создать новый канал, достаточно указать его имя и определить используемые поля. Например, для описываемого ниже устройства - два поля для сбора информации о влажности и температуре (рис. 1). Сервис присвоит каналу уникальный идентификатор Channel ID.
Рис. 1. Регистрация в сервисе
Проверить работу созданного канала можно, записав в него информацию GET-запросом с помощью любого интернет-браузера. Для этого потребуется использовать ключ API key - длинный буквенно-цифровой код, который можно найти на вкладке API Keys канала. Обратите внимание, ключи API key для записи и чтения различны.
Отошлите в канал первую пару значений, например, 173 и 121. Для этого в адресной строке браузера наберите:
https://api.thi ngspeak.com/update
§ . json?api_key=c9cso.......155HZ&§fi eldl=173&fi el d2=121
Примечание.Здесь и далее знак § в начале строки означает, что эта строка - продолжение предыдущей. В компьютер эти строки нужно вводить слитно, а знак § удалить.
Потом отошлите следующую пару значений, например, 123 и 321:
https://api .thi ngspeak.com/update
§. json?api_key=c9cso.......155HZ&§fieldl=12 3&fi el d2=321
На каждый запрос сервер даст развёрнутый (JSON) ответ, где будут указаны Channel ID, значения всех полей, дата и время. Если .json в запросе отсутствует, ответ будет лаконичным - только число записанных значений.
Если теперь зайти в личный кабинет сервиса ThingSpeak, то на вкладке Private View можно увидеть графическое представление загруженной информации (рис. 2). При необходимости канал можно открыть для просмотра ограниченному числу пользователей или всем желающим. Для этого следует произвести соответствующие изменения на вкладке Sharing. Сохранить собранную информацию в файле или загрузить поля канала из файла можно на вкладке Data Import/Export.
Рис. 2. Вкладка Private View. Графическое представление загруженной информации
В качестве контроллера устройства измерения температуры и влажности использован готовый модуль ESP-01 (рис. 3). Как сказано в его описании, модуль "представляет собой высокоэффективный, высокоинтегрированный комплекс для создания беспроводных систем на одном кристалле. Он может быть использован как полное и самодостаточное беспроводное сетевое решение или как связку с Wi-Fi какого-либо иного самостоятельного решения".
Рис. 3. Модуль ESP-01
На плате модуля установлены микроконтроллер ESP8266EX [1], микросхема памяти, кварцевый резонатор на 26 МГц, два светодиода и печатная антенна. В микроконтроллере есть всё, что нужно для организации беспроводной связи - от антенного коммутатора до цифровых интерфейсов.
На интерфейсный разъём модуля ESP-01 (простейшего в семействе ESP) выведены цепи питания, в том числе сигнал его включения Ch_PD, линии последовательного порта микроконтроллера UTXD и URXD и линии ввода-вывода общего назначения GPIO0, GPIO2 и GPIO16. В старших моделях модулей семейства ESP на разъём выведено значительно больше интерфейсных линий.
На плате модуля ESP-01 установлены два контрольных светодиода. Красный, расположенный ближе к краю платы, сигнализирует о наличии напряжения питания. Синий светодиод соединён с линией UTXD.
Модули поставляются запрограммированными и позволяют работать с ними через последовательный интерфейс с помощью АТ-команд. В описываемом устройстве этот режим не используется. В модуль загружается программа, созданная в среде Arduino IDE. Рассказ об особенностях такого способа работы с модулем выходит за рамки статьи, найти описание программирования ESP-01 в Arduino IDE можно в Интернете, например в [2].
В качестве примера практической реализации устройства-поставщика информации для канала ThingSpeak рассмотрим модуль ESP-01 с подключённым к нему датчиком влажности и температуры DhT 11. Принципиальная схема этого устройства показана на рис. 4.
Рис. 4. Принципиальная схема устройства
Датчик DHT11, подключаемый к разъёму XS2, обладает не очень высокими параметрами, но довольно интересен в плане использования в самодельных устройствах [3]. Он имеет простой интерфейс и алгоритм работы. Информация выдаётся 40-разрядной кодовой последовательностью по линии DATA [4]. Для нормальной работы эта линия соединена с плюсом питания резистором R1. Она также соединена с выводом GPIO2 микроконтроллера ESP8266EX модуля ESP-01, подключённого к разъёму XS1.
Питающее напряжение 3,7...5 В подают на разъём XP1 от зарядного устройства для сотового телефона или от литиевого аккумулятора. Далее с помощью интегрального стабилизатора напряжения AMS1117-3.3 (DA1) его понижают до 3,3 В, необходимых для питания модуля ESP-01 и датчика DHT11. Учтите, пиковый ток потребления модуля ESP-01 может достигать 300 мА.
Устройство собрано на макетной плате, на которой установлены разъёмы ХP1 и ХP2 и остальные детали. Её внешний вид показан на рис. 5. Здесь установлены и дополнительные детали (кнопки, съёмные перемычки, разъём), необходимые для программирования модуля ECP-01, но не показанные на схеме рис. 4. Схему их подключения можно найти в [5]. Для присоединения к разъёму XP1 блока питания с разъёмом miniUSB я использовал готовую плату-переходник.
Рис. 5. Макетная плата
Порядок работы с устройством следующий. Прежде всего, зарегистрируйтесь в сервисе ThingSpeak и создайте новый канал с двумя полями для накопления информации. Запомните или запишите на бумаге полученные Channel ID и API key для записи данных. Они потребуются для корректировки скетча.
Загрузите в Arduino IDE приложенный к статье скетч. Замените указанные в нём значения констант channelID и writeAPIKey своими. Укажите ssid и password своей сети Wi-Fi. Само-со-бой, Интернет должен быть доступен.
Скомпилируйте скетч и загрузите результат в модуль ESP-01. После этого установите модуль в устройство и подайте питание. Следите за синим светодиодом модуля. Он должен мигать с заданной в скетче периодичностью. Это означает, что информация выводится в последовательный порт.
Откройте в браузере созданный в ThingSpeak канал и наблюдайте переданную устройством информацию о температуре и влажности (рис. 6).
Рис. 6. Переданная устройством информация о температуре и влажности
Сервис ThingSpeak предоставляет удобные средства для сбора, накопления и визуализации информации даже в бесплатной версии. Это позволяет довольно просто строить различные IoT-устройства. Даже описанный простой прибор может найти практическое применение в "умном доме".
Программа микроконтроллера имеется здесь.
Литература
1. ESP8266EX Datasheet. - URL: https:// www.espressif.com/sites/default/files/doc umentation/0a-esp8266ex_datasheet_en.
pdf (23.05.2018).
2. ESP8266. Работа в Arduino IDE. Часть 2 (лето 2016). - URL: http://ucheba33.ru/?p= 491 (23.05.2018).
3. Пахомов А. Комнатная метеостанция на Arduino Pro mini. - Радио, 2015, № 12, с. 43, 44.
4. Temperature and humidity module DHT 11 Product Manual. - URL: https://static. chipdip.ru/lib/185/DOC001185323.pdf (23.05.2018).
5. Макетирование и программирование платы ESP-01 с помощью Arduino IDE. - URL: http://radioprog.ru/post/213 (24.05.2018).
Автор: А. Пахомов, г. Владимир