Оглавление:

Датчик температуры и влажности WiFi IoT. Часть: 8 Интернет вещей, Домашняя автоматизация: 9 шагов
Датчик температуры и влажности WiFi IoT. Часть: 8 Интернет вещей, Домашняя автоматизация: 9 шагов

Видео: Датчик температуры и влажности WiFi IoT. Часть: 8 Интернет вещей, Домашняя автоматизация: 9 шагов

Видео: Датчик температуры и влажности WiFi IoT. Часть: 8 Интернет вещей, Домашняя автоматизация: 9 шагов
Видео: Умный дом - датчики температуры и влажности + Шлюз Xiaomi Mi Smart Home Hub. Обзор Владельца 2024, Ноябрь
Anonim
Датчик температуры и влажности WiFi IoT. Часть: 8 Интернет вещей, Домашняя автоматизация
Датчик температуры и влажности WiFi IoT. Часть: 8 Интернет вещей, Домашняя автоматизация

Преамбула

В этой статье документируется практическая защита и дальнейшее развитие более ранней инструкции: «Прокачать» ваше первое устройство IoT WiFi. Часть 4: Интернет вещей, домашняя автоматизация, включая все необходимые программные функции для успешного развертывания в домашней домашней среде.

Вступление

Как упоминалось выше, в этом руководстве описывается объединение более раннего примера IoT с надежным системным дизайном, позволяющим успешно обрабатывать практические варианты использования, такие как: Катастрофическая потеря мощности, сбой MQTT Broker, сбой WiFi N / W, удаленная реконфигурация датчика, настраиваемая стратегия отчетности для уменьшения сетевого трафика и индивидуальная калибровка датчика.

Всего было создано 6 устройств (см. Рис. 1 выше), которые были распределены по моему дому, чтобы сформировать мою первую сенсорную сеть IoT.

В Instructable также представлен обзор соглашения об именах MQTT, использованного в первоначальной серии IoT Home Automation, уступая место более сбалансированной, практичной структуре, позволяющей упростить отладку трафика IoT в среде с несколькими устройствами IoT.

Ниже приведены полные детали конструкции датчика IoT, включая: конструкция, исходный код, стратегия тестирования и конфигурации OpenHAB.

Какие запчасти мне нужны?

  1. 1 шт. ESP8266-01,
  2. 2 электролитических конденсатора емкостью 1 мкФ,
  3. 3 резистора 10К,
  4. 1 резистор 330R,
  5. 1 шт. Диаметром 3 мм. ВЕЛ,
  6. 1 шт. LD1117-33v, 3v3 LDO VReg. (Фарнелл здесь),
  7. 1 датчик температуры / влажности DHT22,
  8. 1 двойной 4-контактный разъем 0,1 ",
  9. 1 шт. Пластиковый корпус CAMDENBOSS RX2008 / S-5, герметизирующий ящик, ABS, 38 мм, 23 мм (здесь Фарнелл),
  10. 1 шт. Разъем питания постоянного тока, вилка, 1 А, 2 мм, монтаж на панель (здесь Farnell),
  11. 1 радиатор TO-220 24,4 ° C / Вт (здесь Фарнелл),
  12. Различные термоусадочные трубки (желтые, здесь Ebay),
  13. Ленточный кабель IDC различной длины,
  14. Компаунд радиатора,
  15. Veroboard,
  16. Программатор ESP8266-01. Посмотреть здесь; Практическое построение схемы с использованием полосовой платы, шаг 9 и далее.

Какое программное обеспечение мне нужно?

  1. IDE Arduino 1.6.9
  2. Arduino IDE настроен для программирования ESP8266-01. Посмотреть здесь; Настройка IDE Arduino для программирования ESP8266-01

Какие инструменты мне нужны?

  1. Паяльник,
  2. Сверла и различные биты,
  3. Файлы,
  4. Ножовка,
  5. Прочные тиски,
  6. Тепловая пушка,
  7. DMM.

Какие навыки мне нужны?

  1. Минимальное владение электроникой,
  2. Знание Arduino и его IDE,
  3. Элементарные навыки изготовления (пайка, ножовка, опиловка, сверление и т. Д.),
  4. Немного терпения,
  5. Некоторое понимание вашей домашней сети.

Темы охватывали

  1. Обзор схемы
  2. Обзор системы программного обеспечения
  3. Обзор программного обеспечения
  4. Калибровка сенсора
  5. Соглашение об именовании тем MQTT
  6. Конфигурация OpenHAB
  7. Тестирование дизайна
  8. Заключение
  9. Использованные ссылки

Ссылки на серию

К части 7: Study Lights Controller (переработанный). Часть 7: Интернет вещей, домашняя автоматизация

К части 9: Контроллер сети IoT. Часть 9: Интернет вещей, домашняя автоматизация

Шаг 1: Обзор схемы

Обзор схемы
Обзор схемы
Обзор схемы
Обзор схемы
Обзор схемы
Обзор схемы
Обзор схемы
Обзор схемы

На рисунке 1 выше показана полная схема датчика IoT.

В основе устройства IoT лежит ESP8266-01, который подключается к датчику температуры / влажности DHT22 через подтягивающий резистор 10 кОм к GPIO2. Внешний источник 5 В поступает с импульсным источником питания и подается на устройство через 2-миллиметровую розетку постоянного тока и регулируется локально с помощью регулятора напряжения LD1117-33v, 3v3 LDO, установленного на внешнем радиаторе с помощью винта и гайки BZP M3 с полукруглой головкой..

Конструкция включает 3-миллиметровый красный светодиод, подключенный к GPIO0, который используется для локальной индикации состояния устройства IoT во время запуска или любого последующего состояния ошибки. Его также можно использовать для идентификации устройства путем ручной активации через интерфейс openHAB.

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

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

На рисунках 4… 6 показаны различные состояния конструкции.

Шаг 2: Обзор системы программного обеспечения

Обзор системы программного обеспечения
Обзор системы программного обеспечения
Обзор системы программного обеспечения
Обзор системы программного обеспечения

Это устройство для измерения температуры и влажности IoT содержит шесть ключевых программных компонентов, как показано на рис. 1 выше.

СПИФЫ

Это встроенная система хранения флэш-памяти SPI, которая используется для хранения следующей информации (см. Рис. 2 выше);

  • Значки и html «Домашняя страница конфигурации датчика»: обслуживаются устройством IoT, когда оно не может подключиться к вашей сети IoT WiFi (обычно из-за неверной информации о безопасности), и предоставляет пользователю средства удаленной настройки датчика без необходимости. для перепрограммирования или загрузки нового содержимого SPIFFS.
  • Информация о безопасности: содержит информацию, используемую при включении устройства IoT для подключения к вашей сети IoT WiFi и MQTT Broker. Информация, отправленная через «Домашнюю страницу конфигурации датчика», записывается в этот файл («secvals.txt»).
  • Информация о калибровке: информация, содержащаяся в этом файле ('calvals.txt'), используется для калибровки встроенного датчика температуры / влажности, если это необходимо. Константы калибровки можно записать в устройство IoT только с помощью команд MQTT от брокера MQTT.

Примечание. Для первоначальной настройки устройства см. Здесь полную информацию о том, как использовать SPIFFS с Arduino IDE.

Сервер mDNS

Эта функция активируется, когда устройству IoT не удалось подключиться к вашей сети Wi-Fi в качестве станции Wi-Fi, и вместо этого оно превратилось в точку доступа Wi-Fi, что-то вроде домашнего маршрутизатора Wi-Fi. В случае такого маршрутизатора вы обычно подключаетесь к нему, вводя IP-адрес чего-то вроде 192.168.1.1 (обычно напечатанный на этикетке, прикрепленной к коробке) непосредственно в адресную строку вашего браузера, после чего вы получите страницу входа для входа имя пользователя и пароль для настройки устройства.

Для ESP8266 в режиме AP (режим точки доступа) устройство по умолчанию использует IP-адрес 192.168.4.1, однако при работающем сервере mDNS вам нужно только ввести понятное человеку имя «SENSORSVR.local» в адресную строку браузера, чтобы увидеть «Домашняя страница конфигурации датчика».

Клиент MQTT

Клиент MQTT предоставляет все необходимые функции: подключитесь к своей сети IoT-брокеру MQTT, подпишитесь на выбранные вами темы и опубликуйте полезные данные в данной теме. Короче говоря, он обеспечивает базовую функциональность IoT.

Веб-сервер

Как упоминалось выше, если устройство IoT не может подключиться к сети Wi-Fi, SSID, P / W и т. Д. Определены в файле информации о безопасности, хранящемся в SPIFFS, устройство станет точкой доступа. После подключения к сети Wi-Fi, предоставляемой точкой доступа, наличие веб-сервера HTTP позволяет вам напрямую подключаться к устройству и изменять его конфигурацию с помощью веб-браузера HTTP, цель которого - обслуживать главную страницу конфигурации датчика. Страница », которая также хранится в SPIFFS.

Wi-Fi станция

Эта функция дает устройству IoT возможность подключаться к внутренней сети Wi-Fi с использованием параметров в файле информации о безопасности, без этого ваше устройство IoT не сможет подписаться / публиковать в MQTT Broker.

Точка доступа Wi-Fi

Возможность стать точкой доступа Wi-Fi - это средство, с помощью которого устройство IoT позволяет подключаться к нему и вносить изменения в конфигурацию через станцию WiFi и браузер (например, Safari на Apple iPad).

Эта точка доступа передает SSID = «SENSOR» + последние 6 цифр MAC-адреса устройства IoT. Пароль для этой закрытой сети изобретательно назван «ПАРОЛЬ».

Шаг 3. Обзор программного обеспечения

Обзор программного обеспечения
Обзор программного обеспечения
Обзор программного обеспечения
Обзор программного обеспечения

Преамбула Для успешной компиляции этого исходного кода вам потребуются следующие дополнительные библиотеки;

PubSubClient.h

  • Автор: Ник О'Лири
  • Цель: позволяет устройству публиковать или подписываться на темы MQTT с данным брокером.
  • От:

DHT.h

  • Автор: Adafruit
  • Назначение: Библиотека для датчика температуры / влажности DHT
  • От:

Обзор кода

Программное обеспечение использует конечный автомат, как показано на рис. 1 выше (полная копия источника приведена ниже). Ниже приведены 5 основных состояний;

  • В ЭТОМ

    Это состояние инициализации - первое состояние, в которое входит после включения питания

  • NOCONFIG

    В это состояние входит, если после включения питания обнаруживается недопустимый или отсутствующий файл secvals.txt

  • В ОЖИДАНИИ NW

    Это временное состояние, введенное при отсутствии подключения к сети Wi-Fi

  • ОЖИДАНИЕ MQTT

    Это временное состояние, входящее в него после подключения к сети Wi-Fi, и пока в этой сети нет подключения к брокеру MQTT

  • АКТИВНЫЙ

    Это нормальное рабочее состояние, которое переходит в состояние, когда установлено соединение с сетью Wi-Fi и соединение с брокером MQTT. Именно в этом состоянии функция датчика температуры и влажности публикуется в MQTT Broker

События, управляющие переходами между состояниями, описаны на рис. 1 выше. Переходы между состояниями также регулируются следующими параметрами SecVals;

  • 1-й IP-адрес брокера MQTT. В десятичной форме с точками AAA. BBB. CCC. DDD
  • 2-й порт брокера MQTT. В целочисленной форме.
  • Третье соединение с брокером MQTT пытается установить перед переключением из режима STA в режим AP. В целочисленной форме.
  • 4-й SSID сети Wi-Fi. Текст в произвольной форме.
  • 5-й сетевой пароль WiFi. Текст в произвольной форме.

Как упоминалось выше, если устройство IoT не может подключиться в качестве станции Wi-Fi к сети Wi-Fi, SSID и P / W которой определены в файле secvals.txt, хранящемся в SPIFFS, устройство IoT станет точкой доступа. После подключения к этой точке доступа он будет обслуживать «Домашнюю страницу конфигурации датчика», как показано выше на рис. 2 (введя либо «SENSORSVR.local», либо 192.168.4.1 в адресную строку вашего браузера). На этой домашней странице можно изменить конфигурацию датчика через браузер

Удаленный доступ в АКТИВНОМ состоянии

После подключения к брокеру MQTT также можно повторно откалибровать и перенастроить устройство с помощью тематических публикаций MQTT. Файл calvalval.txt имеет доступ для чтения / записи, а файл secvals.txt имеет доступ только для записи.

Пользовательская отладка

Во время последовательности загрузки светодиод устройства IoT выдает следующую отладочную информацию.

  • 1 короткая вспышка: нет файла конфигурации, расположенного в SPIFFS (secvals.txt)
  • 2 коротких мигания: устройство IoT пытается подключиться к сети Wi-Fi.
  • Постоянное свечение: устройство IoT пытается подключиться к MQTT Broker
  • Не горит: устройство активно
  • Примечание 1. «Домашняя страница конфигурации датчика» не использует защищенные сокеты и, следовательно, зависит от безопасности вашей сети.
  • Примечание 2. Чтобы запрограммировать каждое устройство IoT, строку MQTT необходимо отредактировать перед загрузкой. Это связано с тем, что номер датчика был встроен в строку темы MQTT. т.е. «WFD / THSen / 100 / HumdStatus / 1» для моих 6 устройств они пронумерованы от 1 до 6 соответственно.

Шаг 4: Калибровка датчика

Калибровка сенсора
Калибровка сенсора
Калибровка сенсора
Калибровка сенсора

Когда устройство IoT включается, как часть последовательности загрузки из SPIFFS считывается файл с именем cavals.txt. Содержимое этого файла представляет собой калибровочные константы, как показано выше на рис. 1. Эти калибровочные константы используются для корректировки показаний, полученных от датчика, для приведения их в соответствие с эталонным устройством. Существует еще одно значение, которое определяет стратегию создания отчетов для устройства и описано ниже вместе с процедурой калибровки датчиков.

Стратегия отчетности Этот параметр определяет, как удаленный датчик сообщает о любых локальных изменениях параметров окружающей среды. Если выбрано значение 0, удаленный датчик будет публиковать любые изменения, которые он видит в значениях температуры или влажности, каждый раз при считывании показаний датчика (примерно каждые 10 секунд). Любое другое значение задержит публикацию изменения на 1… 60 минут. Изменение этого параметра позволяет оптимизировать сетевой трафик MQTT.

Калибровка температуры

Чтобы откалибровать датчики, они были помещены в непосредственной близости друг от друга, как показано на рис. 2. Рядом с ними я разместил цифровой мультиметр с присоединенной откалиброванной термопарой (Fluke 87 V), а затем контролировал выходные сигналы каждого устройства с помощью температуры OpenHAB. страницу трендов в течение дня, чтобы получить хорошие колебания температуры. Я отметил как статическое смещение (повышенный ноль «C»), так и скорость изменения каждого устройства (усиление или наклон графика «M») относительно значения, поступающего от калиброванной термопары. Затем я вычислил простую зависимость y = mx + c (я обнаружил, что она достаточно линейна, чтобы быть близким приближением к прямолинейному графику) и запрограммировал любые необходимые поправки в константы калибровки через MQTTSpy.

Затем устройства контролировались в течение следующих 24 часов, чтобы убедиться, что калибровка прошла успешно. Показателем того, что было, было то, что температурные кривые на странице температурных трендов OpenHAB были в значительной степени поверх друг друга.

Конечно, если вас интересует только приближение к температуре, вы можете оставить все значения калибровки по умолчанию.

Калибровка влажности

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

Шаг 5: Соглашение об именовании тем MQTT

Соглашение об именовании тем MQTT
Соглашение об именовании тем MQTT
Соглашение об именовании тем MQTT
Соглашение об именовании тем MQTT

После долгих проб и ошибок я остановился на соглашении об именах тем, показанном на рис. 1 выше.

А именно AccessMethod / DeviceType / WhichDevice / Action / SubDevice.

Это не идеально, но позволяет применять полезные фильтры для просмотра всех выходных сигналов датчиков для заданного параметрического значения, что позволяет легко сравнивать, как на рис. 2 выше, с MQTTSpy. Он также поддерживает разумно расширяемые логические группы функций в рамках данного устройства IoT.

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

Примечание. Если вы не знаете, как использовать MQTTSpy, см. Здесь «Настройка брокера MQTT. Часть 2: Интернет вещей, домашняя автоматизация »

Шаг 6: Конфигурация OpenHAB

Конфигурация OpenHAB
Конфигурация OpenHAB
Конфигурация OpenHAB
Конфигурация OpenHAB
Конфигурация OpenHAB
Конфигурация OpenHAB

Я изменил конфигурацию OpenHAB, приведенную в моем предыдущем руководстве (здесь), и добавил отдельные записи для;

  • Гараж,
  • Зал,
  • Гостиная,
  • Кухня
  • Гостевая спальня
  • Главная спальня

На карте сайта см. Рис. 1 выше.

Для каждой из этих записей я добавил отдельные карты сайта, отображающие локальные значения окружающей среды (см. Рис. 2 выше);

  • Температура
  • Влажность
  • Индекс тепла

Я также включил переключатель для управления локальным светодиодом, установленным внутри датчика.

На рисунках 3–5 показаны отдельные графики в реальном времени за период в 24 часа для температуры, влажности и RSSI (Индикация силы принятого сигнала, в основном мера того, насколько хорошо датчик видит сеть Wi-Fi).

На рисунке 6 показан пример долгосрочного тренда влажности в течение недели.

Примечание 1. Если вы не знаете, как использовать OpenHAB, см. Здесь «Установка и настройка OpenHAB. Часть 6: Интернет вещей, домашняя автоматизация '

Примечание 2. Копия измененной карты сайта, файлов правил и элементов, значков и т. Д. Приведена ниже.

Шаг 7: Тестирование дизайна

Тестирование дизайна
Тестирование дизайна
Тестирование дизайна
Тестирование дизайна

По большей части я тестировал IoT-устройство через MQTT-соединение с MQTT Spy, отслеживая вывод светодиодов и отлаживая трафик через последовательный интерфейс. Это позволило мне проверить все доступные темы, на которые подписана подписка, и проверить опубликованные ответы. Хотя это было достигнуто вручную и временами становилось немного утомительным, это позволило обеспечить 100% покрытие.

Однако тестировать главный конечный автомат оказалось непросто, поскольку он полагался на наличие или отсутствие сети Wi-Fi, доступ к которой требовал определенных наборов параметров. Использовать для этого домашнюю сеть было просто непрактично.

Чтобы обойти эту проблему, я создал свой собственный набор фиктивных сетей, используя ESP8266-01, настроенный как точки доступа (рис. 1) с SSID «DummyNet1» и «DummyNet2» соответственно. Использование схемы на рис. 2 над светодиодом показало, подключено ли к нему IoT-устройство. Хотя это не было идеальным решением для тестирования (т.е. каждая из этих фиктивных сетей Wi-Fi не содержала сервера MQTT), можно было полностью протестировать конечный автомат.

Я включил копию исходного кода ниже.

Шаг 8: Заключение

Общий

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

Улучшения

При разработке программных подпрограмм для чтения и записи в SPIFFS я написал код, который, на первый взгляд, может быть немного более продвинутым, чем я предполагал, используя указатели void, преобразование и указатели на указатели. Хотя он очень гибкий и хорошо справляется со своей задачей, в следующий раз я могу использовать JSON, подобный ConfigFile.ino, чтобы сделать его немного проще.

  • Ядро Arduino GIT HUB

    https://github.com/esp8266/Arduino

  • Источник ConfigFile.ino

    https://github.com/esp8266/Arduino/tree/master/libraries/esp8266/examples/ConfigFile

Список желаний

Я намеревался использовать клиент mDNS для подключения к брокеру, но библиотека была слишком нестабильной. Вот почему необходимо указать IP-адрес брокера MQTT вместо «MQTTSVR.local». Если в будущем библиотека mDNS станет более стабильной, я добавлю эту возможность в устройство.

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

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

Шаг 9: Использованные ссылки

Я использовал следующие источники, чтобы собрать это руководство;

PubSubClient.h

  • Автор: Ник О'Лири
  • От:

DHT.h

  • Автор: Adafruit
  • От:

DHT22 Лист данных

Рекомендуемые: