Семестр выдался довольно нагруженным, и так получилось, что за
интересные проекты, не связанные с учёбой, взяться едва ли получилось.
Однако, закончилась сессия, и я решил, не сбивая рабочего настроя,
взяться за давно запланированное.
Ещё летом было закуплено пять микросхем для шины RS485, несколько I2C-термометров LM75AD, кучка разъёмов RJ11 (телефонные 6P4C) и соответствующих штекеров на провод с витой парой.
И наконец-то появилась серьёзная задача: управление насосом системы отопления.
Сначала в планах было сделать просто электронный таймер с симистором... но в какой-то момент что-то пошло не так...
Ведь это шикарно вписывается в общую концепцию "умного дома"! Задача проста на вид: учитывая температуру воздуха в доме и температуру воды в котле газового водонагревателя, включать и выключать насос.
В качестве временного решения пока используется простой механический таймер на розетке, который можно "запрограммировать" на включение и выключение напряжения с шагом 15 минут. Когда на улице холодно, настраиваем его на работу в режиме 15-15 (15 минут насос работает, 15 "отдыхает"), теплеет - 15-30. И всё в этом духе. При этом за ним надо следить, так как температура воздуха в доме поплясывает в это время от довольно прохладных +20 до душных +27.
Казалось бы, устанавливаем в доме несколько электронных термометров, симисторный переключатель в разрыв питания насоса, и что-нибудь, что будет этим всем управлять.
И вот так появился повод достать из дальнего ящика старые идеи, развести заново соль для травления плат и убрать с верстака всё ненужное.
Ещё летом было закуплено пять микросхем для шины RS485, несколько I2C-термометров LM75AD, кучка разъёмов RJ11 (телефонные 6P4C) и соответствующих штекеров на провод с витой парой.
И наконец-то появилась серьёзная задача: управление насосом системы отопления.
Сначала в планах было сделать просто электронный таймер с симистором... но в какой-то момент что-то пошло не так...
Ведь это шикарно вписывается в общую концепцию "умного дома"! Задача проста на вид: учитывая температуру воздуха в доме и температуру воды в котле газового водонагревателя, включать и выключать насос.
В качестве временного решения пока используется простой механический таймер на розетке, который можно "запрограммировать" на включение и выключение напряжения с шагом 15 минут. Когда на улице холодно, настраиваем его на работу в режиме 15-15 (15 минут насос работает, 15 "отдыхает"), теплеет - 15-30. И всё в этом духе. При этом за ним надо следить, так как температура воздуха в доме поплясывает в это время от довольно прохладных +20 до душных +27.
Казалось бы, устанавливаем в доме несколько электронных термометров, симисторный переключатель в разрыв питания насоса, и что-нибудь, что будет этим всем управлять.
И вот так появился повод достать из дальнего ящика старые идеи, развести заново соль для травления плат и убрать с верстака всё ненужное.
Физика
Первым пунктом разберёмся, чего хочется от физического уровня:
- Через сетевой кабель хорошо бы раздавать напряжение для питания маломощных модулей вроде разных датчиков. Как следствие, возникает пункт
- Радиосвязь как основной метод обмена данными отпадает из-за пункта 1, а также из-за относительной дороговизны.
- Топология сети - шина, чтобы не тянуть сотни километров провода по пустякам.
- Провода и разъёмы должны быть добротными, подходить для прокладки в уже существующие короба, а также быть доступными.
- Интерфейс так или иначе должен иметь реализацию для AVR-контроллеров, которые в основном и планируется применять в сети.
Протокол передачи данных
Очень мне понравился протокол Modbus RTU. Он довольно несложный в плане реализации и понимания, к тому же в силу своего устройства довольно гармонично вписывается не только в RS485, что позволит при необходимости поднять связь по воздуху или ещё как-нибудь, лишь бы был доступен последовательный обмен.
Управляющее устройство
Сначала я всерьёз думал над распределённой системой, но в какой-то момент понял, что обслуживать это будет ну уж слишком весело. Поэтому пока что мастером шины будет Cubietruck с Debian на борту. На нём стоит в перспективе развернуть какую-нибудь систему поддержки "умного дома" вроде OpenHAB (но как-то не хочется пока такого нагромождения, написанного на Java, да ещё и с убогеньким интерфейсом). Вполне возможно, что ядром системы управления действительно станет ROS, но интерфейс всё равно буду прикручивать внешний (потому что сам вряд ли напишу что-то достаточно функциональное и красивое).
Воплощение
Недолго думая, я решил, что надо начать с максимально простого функционального узла сети - термометра. Максимально простого - потому что всё для него уже есть, модуль довольно самодостаточный, да и в нём будет необходимость на самом первом этапе. Разумеется, помимо этого понадобится ещё блок для подключения к UART на Cubietruck.
Первые устройства в сети
Согласно поставленной задаче, первыми серьёзно необходимыми устройствами в сети будут температурные датчики и симисторный/релейный переключатель. Вообще, впоследствии к температурным датчикам есть смысл добавить измерители влажности и давления (а лучше ещё и всё в один корпус), а симисторные переключатели сделать с возможностью подключения внешних кнопок, чтобы использовать старые выключатели (либо делать что-то новое плюс к этому). Вся проблема в том, что Modbus - шина хоть и простая, но ориентированная на работу в режиме "master-slave", и поддержки "прерываний" (сообщений от slave к master) там, к сожалению, нет. Поэтому с выключателями придётся немного повозиться.
В следующих статьях подробнее остановимся на деталях реализации.
Комментариев нет:
Отправить комментарий