OpenHAB и домашний контроллер — делаем железо
Удачно состыковав простое Modbus устройство с платформой OpenHAB, мне тут же захотелось сделать что-то полезное для дома. В ближайшем интернет магазине были закуплены проводки, макетка, модули и датчики для Arduino, и моток синей изоленты.Вот так я обеспечил себе увлекательное занятие на предстоящие выходные. Поначалу было весело, но скоро путаница проводов стала напрягать, а надежда испытать это чудо в боевых условиях таяла с каждой минутой. Казалось, что проводки пытаются уползти сами собой, а конструкция разбегается от каждого неосторожного движения. А в это время в голове уже рождались новые гениальные мысли…
Решено, нужно спроектировать плату, к которой легко будет подключить все эти датчики и напихать в неё всё, что нужно для автоматизации. А если по той же шине навесить на OpenHAB другие устройства, то получится отличная система умного дома:
Итак, что нужно реализовать в первую очередь? — измерение давления; температуры и влажности; — контроль состояния окон и дверей, датчиков движения, защиты от пожара и протечек; — контроль доступа с использованием ключей IButton и RFID; — контроль контактов и управление исполнительными механизмами через дискретные входы и выходы; — контроль нескольких выносных датчиков температуры через интерфейс 1-Wire; — контроль дополнительных датчиков, контактов и управление исполнительными механизмами через радиоканал.
Отлично, приступим к проектированию аппаратной части.Попробуем реализовать нужные нам функции, использовав самые популярные датчики и модули от Arduino, сложив всё вместе получаем вот такую структуру:
Краткое описание аппаратной части Для измерения давления использован датчик BMP180, кроме этого он контролирует температуру. Считывание данных с BMP180 осуществляется через интерфейс I2C. К той же шине подключен расширитель портов ввода вывода MCP23017, обеспечивающий контроль восьми внешних входов/выходов и светодиодную индикацию работы контроллера и охранных шлейфов.Для измерения влажности использован датчик DHT11 имеющий собственный однопроводный интерфейс. В будущем нужно предусмотреть возможность установки этого датчика вне корпуса контроллера.
Для контроля уличной температуры, температуры воды, радиаторов отопления и температуры в помещениях использованы датчики DS18B20 подключаемые к общей 1-Wire шине.
Второй 1-Wire интерфейс работает с ключами I-Button, он используется в функциях взятия и снятия с охраны, управления электрозамком. Рядом с ним расположен выход индикатора режима охраны его можно подключить к светодиоду расположенному на лузе считывателя ключей.
Охранные датчики через согласующие цепи подключены к входам АЦП контроллера, таким образом, реализованы четыре стандартных охранных шлейфа, которые позволяют контролировать целостность линии и извещатели с нормально замкнутыми и нормально разомкнутыми контактами.
Радиоканал сделан на самом распространённом и дешёвом радиомодуле для Arduino выполненном на чипе NRF24L01. Трансивер работает на частоте 2.4 ГГц, основным недостатком этого является небольшой радиус действия из за плохого прохождения сигнала через бетонные стены. Но этот недостаток легко превратить в преимущество, разместив в квартире несколько контроллеров-шлюзов, при этом одни датчики не станут мешать другим, находящимся в других комнатах и квартирах.
Для непосредственной связи с мобильными устройствами предназначен BLE (Bluetooth Low Energy) трансивер HM-11. Он позволит интегрировать в устройство функции iBeacon от Apple, а также Google Nearby или physical-web. Позже, в ходе обсуждения было решено предусмотреть возможность замены Bluetooth модуля HM-11 на недорогой WiFi модуль на основе ESP8266, что должно расширить варианты применения контроллера, например, беспроводное подключение к ведущему контроллеру или роутеру или подключения WiFi датчиков и устройств.
С конструкцией разобрались, пора приступать к разработке платы.Среди любителей так мало хороших монтажников, поэтому я не стал создавать им трудности, выбрал достаточно крупный размер резисторов и конденсаторов — 0805, оставил приличный зазор между элементами и сделал маркировку компонентов шелкографией. Всё элементы разместил на плате 68,6×53,3 мм конструкция которой соответствует модулю расширения Arduino UNO.Разработанный в PCAD прототип печатной платы был отправлен в Резонит для изготовления опытных образцов на срочном производстве. Через несколько дней платы и заранее заказанная комплектация была уже у меня. Ещё пара дней с паяльником и вот уже мысль приобрела реальные очертания! Осталось навесить модуль на Arduino и вот он, долгожданный контроллер! Работать с таким устройством сплошное удовольствие! С лёгкостью удалось протестировать отдельные узлы, используя стандартные библиотеки и примеры для Arduino. Были найдены и исправлены ошибки и неточности в конструкции и схеме, которых оказалось не так много.
Но с особой чёткостью проявилась известная заранее проблема, её суть «однозадачность» Arduino. Считывание одного датчика мешало работе других, останавливало обмен с OpenHAB.
Забегая вперёд скажу, что мне удалось решить эту проблему, для чего пришлось переписать часть библиотек, устроив своеобразную многозадачность при помощи прерываний таймера. Но об этом в следующей публикации, которая будет посвящена программному обеспечению.
Что получилось в результате работы:
Создан прототип надёжного и компактного контроллера ввода вывода для системы Умный дом, который можно использовать не только для экспериментов, но и в реальных условиях, он может послужить хорошей базой для разработки других устройств.
Модульная конструкция позволяет легко изменить конфигурацию контроллера, обеспечивает простоту тестирования датчиков и узлов входящих в его состав.
Важная особенность контроллера — простота сборки и адекватная себестоимость даже при опытном производстве, что может положительно повлиять на его популярность.
Что осталось сделать перед изготовлением полноценной версии контроллера:1. Провести корректировки в схеме и конструкции, устранив ошибки и недочёты, обнаруженные в процессе альфа тестирования.2. Установить вместо модуля HM-11 разъём для подключения WiFi модуля ESP8266, при этом спроектировать плату переходник для HM-11 с такой же распиновкой разъёма.3. Предусмотреть разъём стандарта Grove или DFRobot для выносного подключения датчика влажности DHT11
Вот, кажется всё, схему и дополнительную информацию о ходе работы можно посмотреть на страничке проекта vk.com/myremoter
Предыдущие публикации посвящённые стыковке Arduino c системой OpenHAB по протоколу Modbus можно посмотреть здесь: Как подружить OpenHAB и Arduino habrahabr.ru/post/248569Arduino & Modbus habrahabr.ru/post/249043Arduino & OpenHAB habrahabr.ru/post/252555