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/248569
Arduino & Modbus habrahabr.ru/post/249043
Arduino & OpenHAB habrahabr.ru/post/252555

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.