четверг, 29 января 2015 г.

Осваиваем "умный дом". Часть 1: идея

Семестр выдался довольно нагруженным, и так получилось, что за интересные проекты, не связанные с учёбой, взяться едва ли получилось. Однако, закончилась сессия, и я решил, не сбивая рабочего настроя, взяться за давно запланированное.


Ещё летом было закуплено пять микросхем для шины RS485, несколько I2C-термометров LM75AD, кучка разъёмов RJ11 (телефонные 6P4C) и соответствующих штекеров на провод с витой парой.

И наконец-то появилась серьёзная задача: управление насосом системы отопления.

Сначала в планах было сделать просто электронный таймер с симистором... но в какой-то момент что-то пошло не так...

Ведь это шикарно вписывается в общую концепцию "умного дома"! Задача проста на вид: учитывая температуру воздуха в доме и температуру воды в котле газового водонагревателя, включать и выключать насос.

В качестве временного решения пока используется простой механический таймер на розетке, который можно "запрограммировать" на включение и выключение напряжения с шагом 15 минут. Когда на улице холодно, настраиваем его на работу в режиме 15-15 (15 минут насос работает, 15 "отдыхает"), теплеет - 15-30. И всё в этом духе. При этом за ним надо следить, так как температура воздуха в доме поплясывает в это время от довольно прохладных +20 до душных +27.

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

И вот так появился повод достать из дальнего ящика старые идеи, развести заново соль для травления плат и убрать с верстака всё ненужное.

Физика


Первым пунктом разберёмся, чего хочется от физического уровня:
  1. Через сетевой кабель хорошо бы раздавать напряжение для питания маломощных модулей вроде разных датчиков. Как следствие, возникает пункт
  2. Радиосвязь как основной метод обмена данными отпадает из-за пункта 1, а также из-за относительной дороговизны.
  3. Топология сети - шина, чтобы не тянуть сотни километров провода по пустякам.
  4. Провода и разъёмы должны быть добротными, подходить для прокладки в уже существующие короба, а также быть доступными.
  5. Интерфейс так или иначе должен иметь реализацию для AVR-контроллеров, которые в основном и планируется применять в сети.
 В целом, под всё это довольно гармонично вписывается рекомендованный стандарт RS-485. В качестве кабеля используем обыкновенную витую пару (в идеале, провод на две пары). Система должна получиться помехозащищённой и вообще довольно надёжной. В качестве разьёмов используем телефонные 6P4C - довольно приятный вид, удобно обжимать, можно довольно безболезненно отключать и подключать к ним устройства. Получается немного громоздко, но в рамках домашней автоматики можно себе это позволить. К тому же это всяко удобней, чем винтовые колодки.

Протокол передачи данных


Очень мне понравился протокол Modbus RTU. Он довольно несложный в плане реализации и понимания, к тому же в силу своего устройства довольно гармонично вписывается не только в RS485, что позволит при необходимости поднять связь по воздуху или ещё как-нибудь, лишь бы был доступен последовательный обмен.

Управляющее устройство


Сначала я всерьёз думал над распределённой системой, но в какой-то момент понял, что обслуживать это будет ну уж слишком весело. Поэтому пока что мастером шины будет Cubietruck с Debian на борту. На нём стоит в перспективе развернуть какую-нибудь систему поддержки "умного дома" вроде OpenHAB (но как-то не хочется пока такого нагромождения, написанного на Java, да ещё и с убогеньким интерфейсом). Вполне возможно, что ядром системы управления действительно станет ROS, но интерфейс всё равно буду прикручивать внешний (потому что сам вряд ли напишу что-то достаточно функциональное и красивое).

Воплощение


Недолго думая, я решил, что надо начать с максимально простого функционального узла сети - термометра. Максимально простого - потому что всё для него уже есть, модуль довольно самодостаточный, да и в нём будет необходимость на самом первом этапе. Разумеется, помимо этого понадобится ещё блок для подключения к UART на Cubietruck.

Первые устройства в сети


Согласно поставленной задаче, первыми серьёзно необходимыми устройствами в сети будут температурные датчики и симисторный/релейный переключатель. Вообще, впоследствии к температурным датчикам есть смысл добавить измерители влажности и давления (а лучше ещё и всё в один корпус), а симисторные переключатели сделать с возможностью подключения внешних кнопок, чтобы использовать старые выключатели (либо делать что-то новое плюс к этому). Вся проблема в том, что Modbus - шина хоть и простая, но ориентированная на работу в режиме "master-slave", и поддержки "прерываний" (сообщений от slave к master) там, к сожалению, нет. Поэтому с выключателями придётся немного повозиться.

В следующих статьях подробнее остановимся на деталях реализации.

Комментариев нет:

Отправить комментарий