Arduino

и не только...

Instagram TikTok VK

Модуль умного дома

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

Smart home Arduino module

Итак, для создания макета такого типового модуля нам понадобятся как минимум:

  • плата Arduino Uno: 1 2
  • ethernet shield w5100: 1 2 3 4 5 6
  • датчик движения PIR HC-SR501: 1 2 3 4 5 6
  • датчик температуры и давления DHT22: 1 2 3
  • спикер: 1 2 3
  • макетная плата: 1 2 3 4 5 6
  • реле: 1

Я обычно использую твердотельные реле Omron G3MB-202P. По моему опыту они работают лучше, чем электромагнитные. Однако, при их использовании не стоит забывать о том, что они выдерживают всего 2A нагрузки, тогда как электромагнитные - 10А.

Подключаем все модули по схеме:

Smart home module schema

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

После сборки модуля код можно взять на github: https://github.com/arduinotech/sh-typical-module/

Хочу отметить, что данный модуль является лишь примером того, как вы можете организовать управление светом у себя дома. Только лишь после его установки у вас не заработает автоматическое управление светом. Этот модуль является фактически "тонким клиентом" для хаба умного дома. В качестве хаба может быть использован Home Assistant, OpenHab, Domoticz и другие решения. И вот именно на них и реализуется все логика включения/выключения света исходя из показателей датчиков.

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

Далее логика может быть разной, например такой: если свет в данный момент выключен и хаб получил информацию от модуля о том, что было зафиксировано движение, он по тому же протоколу MQTT отправляет команду на включение света. Если, наоборот, хаб получил информацию о том, что движения нет, при этом свет включен, то свет выключается. Однако это не очень хорошее решение. Хоть датчик и имеет некоторую задержку после фиксации движение, она небольшая и как правило через несколько секунд он отправит информацию о том, что движения нет. Потому что, несмотря на присутствие людей в комнате, они не двигаются постоянно. И свет будет постоянно включаться/выключаться.

Чтобы этого не происходило, на хабе реализуется следующая логика: свет выключается после того, как некоторое время не было движений. Время это подбирается экспериментально и обычно составляет 2-3 минуты. Человек, как правило, не может вообще не двигаться в течении этого времени. Такая логика показывает хороший результат, нужно лишь правильно подобрать этот временной интервал задержки, в зависимости от помещения. Например в комнате, где часто отдыхают, читают или смотрят телевизор, это время должно быть больше, а в коридоре или на кухне, наоборот, меньше.

Итак, вы собрали макет, настроили хаб умного дома и протестировали работу. Теперь нужно собрать готовый модуль. Можно просто спаять провода и собрать все в первый попавшийся корпус. Но если вы планируете установить модули в каждом помещении, то желательно продумать заранее их внешний вид, а также их питание и подключение к сети ethernet. Вот полный список, что может пригодиться:

  • корпуса, хватает места для небольших датчиков, для шин питания, для реле: 1 2 3 4 5 6
  • нулевая шина - удобно использовать ее для разводки питания, если датчиков много: 1 2 3 4 5 6
  • набор нейлоновых винтов и проставок для крепления плат и модулей: 1 2 3

Nylon s1crewsBusCase

Все это сильно упростит и сделает более приятным создание новых интересных проектов на Arduino.