Умный дом своими руками. Часть 3. Инфраструктура — датчики. Температура, влажность, давление.

Введение:

Эта статья будет первой из цикла про всевозможные датчики. В ней будут рассмотрены только несколько распространенных атмосферных датчиков. А для начала будут даны общие принципы работы с Wi-Fi модулями типа ESP-8266, создание для них микропрограммы, передача данных с датчиков в систему умного дома MajorDoMo.

Датчики:

Всевозможные датчики являются неотъемлемой частью любой системы автоматизации. Какие же из них наиболее востребованы в системе «Умный дом»? Рассмотрим их:

  • датчики температуры, влажности, давления…
  • датчик концентрации CO2
  • датчик освещенности
  • датчик движения
  • датчики открытия дверей и окон
  • датчик затопления (протечки)
  • датчик утечки бытового газа
  • датчик дыма.
  • датчик электропотребления

Это основные датчики. В конкретных случаях в дополнение к ним, могут применяться и другие, например: датчик пересечения луча, датчик приближения, акустический датчик, датчик давления воды, датчик дождя, датчик влажности почвы, датчик уровня жидкости и т.п.

Датчики могут быть отдельными устройствами просто передающие свои значения в  какую-то внешнюю систему, а могут быть объединены с исполнительными устройствами, например, термостат или светильник с датчиком движения. В любом случае должна быть возможность подключения к датчику по какому-то протоколу для получения его значений. 

Далее как обычно рассмотрим самодельные и покупные варианты. Кстати не всегда нужно однозначно отдавать предпочтение тем или другим — можно смело комбинировать.

Датчики своими руками:

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

Микроконтроллер:

Итак, начнём с самодельных вариантов на базе Wi-Fi микроконтроллера ESP8266. Во всех примерах буду использовать плату Wemos D1 mini.

На данном микроконтроллере очень легко можно строить различные комбинированные устройства, совмещающие в себе сразу и какие-то датчики и актуаторы для управления нагрузкой, например, светильник с датчиком освещенности и т.п. К модулю можно подключать кнопки и сенсорные площадки. При чем нажатия кнопок с модуля можно обрабатывать на сервере умного дома. Интересные комбинации можно получить, подключив к модулю миниатюрный OLED дисплей, на который можно сразу выводить текущие значения с датчиков и (или) информацию с сервера умного дома. Для подключения к этой плате без пайки есть несколько разных шилдов, например, плата для подключения внешнего аккумулятора, плата с установленным реле, со слотом для microSD карты и т.п. 

Для первоначальной загрузки в плату микропрограммы, не требуются дополнительные адаптеры. Модуль уже имеет на борту встроенный USB-UART адаптер и его достаточно просто подключить к компьютеру через USB. В дальнейшем поддерживается обновление микропрограммы по воздуху (OTA).

Перед тем, как перейти к конкретным решениям необходимо рассмотреть общие правила работы с модулями ESP8266.

Для простоты работы будем использовать конструктор прошивок от проекта WiFi-IoT. Если использовать базовые опции конструктора, то можно обойтись без покупки (совсем не дорогой 110RUR) лицензии. Например, без использования платных функций можно подключить один датчик температуры и влажности и передавать его значения в систему умного дома 1 раз в 10 минут. Но лично я предпочитаю всегда активировать Pro версию для доступа ко всем возможностям модуля. Для связки датчиков с системами «Умного дома» очень удобно использовать протокол MQTT.

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

Создание микропрограммы при помощи конструктора:

Итак, после регистрации на сайте проекта, для создания микропрограммы через конструктор, необходимо:

  • сверху главной страницы выбрать микроконтроллер (ESP8266);
  • затем ввести название нового профиля;
  • далее нужно отметить чекбоксы напротив необходимых опций, как правило это:
    • название подключаемого датчика и Коррекция датчиков в разделе «Сенсоры»;
    • MQTT клиент в разделе «Сервисы»;
    • Время и NTPПоддержка календаряОбновление OTAAuto OTA, Спящий режим (если планируется автономное питание), Планировщик заданий (для периодической перезагрузки модуля) и Настройки по умолчанию в разделе «Системные»

  • В пункте «Настройки по умолчанию» можно заранее ввести настройки точки доступа, что бы после прошивки модуль автоматом к ней подцепился.
  • Затем нажать кнопку «Сохранить, как новый профиль», после чего внизу страницы будет доступна кнопка «Скомпилировать», а после компиляции появится ссылка на скачивание прошивки. 
  • Для реализации конкретных задач, например, для подключения кнопок, экранов и т.п., могут понадобиться дополнительные опции, но я на этом тут не буду подробно останавливаться, все можно изучить на сайте проекта). 

Загрузка микропрограммы:

Загрузку микропрограммы удобно выполнить при помощи NODEMCU FlasherПредварительно, для исключения разных возможных глюков, необходимо зашить файл 0x00000_blank1m.bin, скачанный с сайта проекта WiFi-IoT. Для этого на вкладке «Config», нажав на шестеренку, необходимо выбрать файл для прошивки. Затем, вернувшись на вкладку «Operation», запустить процесс загрузки, для чего необходимо нажать кнопку «Flash». После успешного окончания можно аналогичным образом прошить и основной файл.

 

Настройка ESP8266:

Для настройки модуля необходимо:

  • Зайти в панель администрирования, набрав в адресной строке браузера IP-адрес, полученный модулем (Если в конструкторе были верно заполнены «Настройки по умолчанию», то микроконтроллер автоматически должен подключиться к сети и его адрес можно будет увидеть в настройках роутера). 
  • Дать понятное имя модуля в поле Host name на вкладке «Main»
  • На вкладке Hardware активировать нужный датчик.
  • На вкладке Servers активировать опцию «Enable send MQTT»,  задать IP-адрес сервера умного дома (брокера MQTT) и выставить желаемый период отправки.
  • Если требуется — выполнить дополнительные настройки…

Настройка Majordomo:

Будем исходить из того, что сервер Majordomo уже установлен и функционирует. Так же на нем установлен брокер Mosquitto и установлен модуль MQTT (в настройках модуля указать путь для подписки — #). Итак, нам необходимо:

  • Убедиться в получении данных по протоколу MQTT с датчика. Для этого идем в Панель управления>Устройства>MQTT,  в строку поиска вводим имя,  которое задали в настройках модуля ESP8266, находим там наш датчик и видим кучу полученных метрик, к некоторым из них мы будем привязывать объекты.ТУТ ЗАКРАЛАСЬ ИДЕОЛОГИЧЕСКАЯ ОШИБКА ПО РАБОТЕ С ПРОСТЫМИ УСТРОЙСТВАМИ — ИХ НЕ НАДО СОЗДАВАТЬ ОТДЕЛЬНО. В БЛИЖАЙШЕЕ ВРЕМЯ ПОПРАЛЮ (однако, так тоже работает)
  • Теперь нужно создать по «Простому Устройству» (ПУ) на каждую функцию датчика. Для этого идем в Панель управления > Устройства > Простые устройства. Нажимаем кнопку добавить и заполняем соответствующие поля, указав тип датчика (температура, влажность, давление и т.п.). Здесь нам нужно создать столько простых устройств, сколько функций есть у датчика, например, если датчик измеряет только температуру, то необходимо создать одно ПУ соответствующего типа, если температуру и влажность, то создаем 2 ПУ и т.д.  
  • Автоматически создадутся связанные объекты, к свойствам которых нужно будет привязывать параметры полученные по MQTT от наших физических устройств.
  • Теперь необходимо связать параметры физических устройств, получаемые по MQTT с виртуальными объектами.  Для этого возвращаемся в Панель управления>Устройства>MQTT, находим там наше устройство и нужный нам параметр (например для датчика температуры DS18B20 параметр будет называться /имя_датчика/dsw1, а для DHT22 — /имя датчика/dhtt1 для температуры и dhth1 для влажности). Справа от нужного параметра нажимаем кнопку с пиктограммой карандаша, затем в поле «Связанный объект» выбираем нужный объект, в поле «Свойство» выбираем нужное свойство (как правило value) и в поле «Метод» выбираем «Value updated». 
  • Сохраняем и настройки на этом, можно сказать, закончены.

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

Итак, теперь перейдем к рассмотрению самих датчиков:

DS18B20

Для начала изучим цифровой температурный датчик DS18B20, подключаемый по шине 1-wire. Основные технические характеристики следующие:

  • Диапазон измерения температуры составляет от -55 до +125 °C.
  • Точность: ±0,5°C (в пределах −10…+85 °C)
  • Время получения данных: 750 мс при 12-битном разрешении; 94 мс при 9-битном разрешении
  • Напряжение питания: 3–5,5 В
  • Потребляемый ток при бездействии: 750 нА
  • Потребляемый ток при опросе: 1 мА

Из особенностей следует отметить:

  • На одну линию связи может быть установлено до 20 датчиков (макс. кол-во нужно выставить в конструкторе прошивки перед компиляцией). Каждый DS18B20 имеет свой уникальный цифровой идентификатор, что позволяет принимать данные от нескольких датчиков на одной линии связи.
  • Возможность получения питания от той-же линии связи (паразитное питание). 1 и 3 выводы подключаются на общий провод, а плюс питания через резистор 4,7k подключается к выводу №2 (на длинной линии рекомендуется полноценное питание).
  • Выпускается как в обычном исполнении, так и в закрытом корпусе (герметичной металлической капсуле), что позволяет использовать его под водой, например для контроля температуры воды в аквариуме.

Схема подключения термодатчика к популярной плате Wemos D1 Mini выглядит следующим образом (GPIO5 для примера, можно использовать и другие, только отразить это в настройках микроконтроллера):

В конструкторе прошивок на сайте wifi-iot.com необходимо отметить соответствующий чекбокс, а в настройках модуля ESP8266 необходимо активировать опцию DS18B20 и указать правильный номер GPIO в разделе Hardware, затем обнаружить датчик, отсканировав шину 1-wire в одноименном разделе. 

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

DHT22 (AM2302):

Это комбинированный датчик температуры и влажности, с приемлемой точностью (возможно потребуется начальная калибровка в настройках прошивки WiFi-IoT). Однако существует и более дешёвая версия этого датчика DHT11 (в синем корпусе), которая к использованию не рекомендуется по причине совсем низкой точности. Основные параметры датчика следующие: 

  • Питание – от 3 до 5 Вольт;
  • Измерение влажности в интервале от 0% до 100%. Точность измерений от 2% до 5%;
  • Диапазон измеряемых температур – от минус 40 до 125 градусов по Цельсию (точность измерений – 0,5);
  • Частота снятия показаний: одно измерение за 2 секунды.
  • Габаритные размеры: 15,1 мм длина; 25 мм широта; 5,5 мм высота;

Схема подключения  к плате D1 Mini следующая:

В конструкторе прошивок на сайте wifi-iot.com необходимо отметить соответствующий чекбокс, а в настройках модуля ESP8266 необходимо активировать опцию DHT 11/22 в разделе Hardware. На главной странице админки контроллера можно увидеть показания температуры и влажности.

BME280

Новейший датчик от фирмы BOSH. BME-280 это три в одном: Датчик давления, влажности, температуры, подключается по I2C. Есть так же версия под названием BMP-280 — она менее интересна, т.к. не имеет на борту датчика влажности. Сам датчик очень мелкий, поэтому имеет смысл покупать его сразу в виде модуля (например, как на фото справа). Характеристики у датчика следующие:

  • Рабочее напряжение: 3.3В
  • Диапазон давления: 300-1100hPa
  • Диапазон температур: -40 — +85 °C
  • Диапазон влажности: 0 — 100 %
  • Среднее энергопотребление: во время измерений 2.74 нА, в спящем режиме: 0.1 нА
  • Среднее время измерения: 5.5 мс
  • Точность измерения: Давление — 0.01 hPa ( < 10 cm), Температура — 0.01° C
  • Температурный коффициент смещения: ± 0.12 hPa (средний), эквивалент 1 метра

Схема подключения следующая (Внимание, датчик требует питание 3.3В): 

Вообще, шина I2C, к которой подключается данный датчик, в обязательном порядке требует установку подтягивающих резисторов на линии SCL и SDA, но на конкретно этой плате они уже распаяны, хотя в других вариантах могут отсутствовать.

В конструкторе прошивок на сайте wifi-iot.com необходимо отметить соответствующий чекбокс с названием датчика, а в настройках модуля ESP8266 необходимо активировать опцию BME280 в разделе Hardware. На главной странице отобразятся полученные значения.

Это была тройка пожалуй самых популярных датчиков. Естественно в вышеприведенных вариантах эти датчики (микроконтроллеры) требуют питания от сети, т.к. поддержание Wi-Fi соединения довольно энергозатратно. Как-то может помочь в этой ситуации режим Deep sleep, для активации которого необходимо отметить соответствующую опцию в конструкторе прошивки (в шестеренке указав время бодрствования), затем электрически соединить между собой два вывода микроконтроллера — Reset c GPIO16, а так же настроить интервалы просыпания в разделе MAIN веб-админки Wi-Fi модуля. Но конечно микроконтроллеры, которые используют другие стандарты передачи данных, могут обеспечивать на порядки лучшую энергоэффективность, работая годами от одного комплекта батареек.

Покупные датчики:

Как правило большинство готовых решений имеют батарейное питание и работают по радиоканалу zigbee, z-wave и т.п. Среди готовых датчиков весьма популярны Noolite (433MHz свой протокол), Xiaomi (zigbee), большой ассортимент z-wave совместимых решений и т.п. Более подробно остановлюсь на первом:

Noolite PT111:

Это датчик температуры и влажности с автономным питанием. Работает по беспроводному протоколу на частоте 433МГц. Основные технические характеристики:

  • Диапазон измерения температуры: -20…+50 °С
  • Диапазон измерения относительной влажности: 1…99 %
  • Точность измерения температуры:
    — в диапазоне от -10 до +50 °С :0,5 °С
    — в диапазоне от -20 до -10 °С: 1 °С
  • Точность измерения влажности: 4,5 %
  • Диапазон рабочих температур / влажности -20… +50 °С / 10…80 %
  • Максимальное рабочее расстояние: 50 м
  • Тип элементов питания датчика: 2 x AAA (LR03)Alkaline 1.5 В
  • Время автономной работы от одного комплекта элементов питания: не менее 1 года
  • Степень защиты корпуса: IP 20

Для получения данных температуры и влажности понадобится шлюз Ноолайт, подключаемый к UART или USB:

По UART можно подключить устройство напрямую, например, к одноплатному компьютеру Raspberry Pi. В версии с USB, кроме наличия USB-UART преобразователя, нет никаких отличий от более дешёвого варианта (без USB).

В систему Majordomo из Маркета дополнений необходимо установить модуль Noolite и выполнить начальные настройки — для ОС Линукс  необходимо выбрать Serial Port /dev/ttyUSB0 (как правило). После этого на всякий случай можно перезагрузить Мини ПК.

Общий алгоритм подключения датчика температуры и влажности от Ноолайт к системе «Умный дом» следующий:

  • Привязать наш датчик температуры и влажности к какому-нибудь каналу (от 1 до 64). Для этого идём в Панель управления > Noolite, жмем добавить, заполняем поля «Название», по желанию «Описание», указываем желаемый канал, выбираем «Тип» — Датчик/пульт, по желанию указываем местоположение и затем нажимаем кнопку «Добавить». Далее жмем появившуюся кнопку «Start binding» (в этот момент на модуле MTRF начнет мигать светодиод) После этого нужно кратковременно (< 1 секунды) нажать на сервисную кнопку, расположенную с обратной стороны датчика PT111, для передачи команды привязки и затем нажать кнопку сохранить в панеле управления Noolite.
  • Далее необходимо создать 2 Простых Устройства (по одному на каждую функцию датчика), для этого идем в Панель управления > Устройства > Простые устройства. Создаём 2 новых ПУ с типами: Датчик температуры и Датчик влажности. Автоматически создадутся связанные объекты, к свойствам которых нужно будет привязывать параметры датчика Ноолайт.
  • Возвращаемся в панель управления Noolite, заходим в настройки недавно созданного датчика и переходим на страницу «Данные» 
  • Теперь для параметров температуры и влажности в поле «Связанный объект» выбираем нужный объект, в поле «Свойство» выбираем свойство  value и в поле «Метод» выбираем «Value updated».На этом настройка связки PT111 > MajorDoMo закончена.

Данное устройство так же можно использовать автономно совместно с силовыми блоками от Ноолайт для управления нагрузкой без каких-либо дополнительных систем. Таким образом можно получить функционал термостата или гигростата на выбор:

Более подробно про систему Noolite читайте в предыдущей части и на сайте производителя.

Все рассматриваемые датчики установлены у меня дома. Все инструкции из собственного опыта.

Продолжение следует…

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *