«Умный Дом» и система MySensors: Часть 0

в 21:12, , рубрики: arduino, diy или сделай сам, MySensors, waf, программирование микроконтроллеров, Разработка для интернета вещей, умный дом

В первой части (http://habrahabr.ru/post/255281) я немного рассказал о моем опыте создания устройств на основе системы MySensors. Должен признать, описание получилось не полным — без начала и без конца.

В этот раз займемся «началом», значит это будет Часть 0.

Умный Дом
Строго говоря, «умным» будет любой дом, который с помощью автоматики облегчает своим жителям их быт. И совсем неважно, используется ли при этом электричество, колдовство или ситема веревок и рычагов.

С другой стороны, под понятием «Умный Дом» каждый понимает нечто свое. У меня все началось с желания автоматизировать наружные жалюзи. Точнее с нежелания бегать по дому и управлять ими по отдельности. Я тогда уже выбрал и почти купил (сравнительно) простые таймеры, но что-то меня остановило. В конце концов были установлены радиоуправляемые контроллеры системы HomeMatic.

Постепенно система росла. Добавилось управление светом, отоплением, датчики открытия окон и дверей, влажности, температуры, движения, освещенности. Вместе со всем этим менялось и мое мнение о том, что должен делать «Умный Дом». Ну это как аппетит, который приходит во время еды.

В моем сегодняшнем представлении система должна быть максимально незаметной, должна помогать и поддерживать пользователя, виртуально «нажимать кнопки» как раз в тот момент, в который он бы это сделал сам.

Конечно, в основе всего лежит аппаратная часть. Но установка датчиков и сбор данных сами по себе занятие довольно скучное, гораздо более интересно их применение для реализации различных сценариев управления.

Простой пример: жалюзи.
Кажется, что все очень просто: утром открывать, вечером наоборот.
А в какое время? — Лучше всего в на основании данных наружного освещения — расчеты в зависимости от времени года не учитывает погодных условий. И еще учитывать максимальное и минимальное время — разумеется в зависимости от дня недели, праздников и факта наличия отпуска.
А насколько плотно закрывать? — В спальне я оставляю небольшую щель открытой — чтобы не было соверщенно темно.
А если окно открыто? — Значит полностью не закрывать, для притока свежего воздуха, но для первого этажа нужно предупреждать забывчивого обитателя.
А если это балкон и дверь открыта? — Не закрывать жалюзи вообще, чтобы не запереть человека снаружи (у меня в данном случаее жалюзи опускаютня на 30см — в качестве напоминания).
А если снаружи темнеет, но порог еще не достигнут, а в комнате включили свет? — Решать заново, но согласно другому порогу освещенности.
И еще защита от ослепления низкостоящим солнцем (в зависимости от интенсивности и позиции солнца), защита комнаты от жары (учитывая интенсивность солнца и температуру воздуха), на первом этаже можно еще учитывать датчик движение под окном.

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

Но в начале всего все же лежит «железо»…

Всю техническую часть системы я грубо разделяю на исполнительные устройства (актуаторы), сенсорику и устройства пользовательского интерфейса (ввод, вывод, визуализация).

Темой данной статьи является мой первый опыт с MySensors. Здесь не будет исчерпывающего описания системы и ее возможностей, их можно найти на домашней странице (http://www.mysensors.org/).

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

Естественно, первым делом я собрал именно шлюз. Как всегда, для начала на макетной плате (breadboard).
image

Не особо аккуратно, но заработало. И даже проработало в тестовом режиме несколько недель (параллельно к тому я собрал еще парочку сенсоров).

Оригинальное описание находится, кстати, здесь: www.mysensors.org/build/serial_gateway

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

Принципиальная схема очень проста.
image

А вот и конечный результат.
image

Ну и соответственно «внутренности»:
image

Устройство было установленно стационарно и первый прототип датчика движения утоплен в стену в коридоре на первом этаже. Все работало без проблем.
Второй датчик отправился на свое место на втором этаже. А вот здесь начались проблемы. Из-за железобетонного потолка прием в месте установки был скорее от случая к случаю.

Хотя устройства MySensors можно настроить работать в режиме ретранслятора, мне это тогда ничем не помогло — у меня было всего два датчика и они не видели друг друга.

Все это меня не особо и удивило — те же самые проблемы возникли уже и раньше в отношении WLAN. Для того на втором этаже уже находился дополнительный WLAN-Router. Как раз то, что нужно, чтобы подключить Ethernet Gateway (http://www.mysensors.org/build/ethernet_gateway).

Его я собрал на основе ENC28J60, все равно валялся без дела.
image

К сожалению эта версия показала себя не особо стабильной — каждый день зависал как минимум один раз. Грешу на утечку памяти в библиотеке для ENC28J60. В качестве «решения» активировал Watchdog. Грубо конечно, но эффективно. Кстати, обнаружил, что Bootloader Pro Mini не поддерживает Watchdog. При активации ардуино зависал в бесконечном, Reset-цикле. К счастью для этого есть простое решение — установить Optiboot (https://code.google.com/p/optiboot/).

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

Уже при первом знакомстве с библиотекой оказалось, что есть готовые примеры для практически всех доступных сенсорных модулей. И что они очень легко комбинируются друг с другом.
Собрал вот такого «монстра».
image

Тут датчики температуры, влажности (кстати, не используйте DHT11 — дерьмо последнее, возьмите DHT22), движения, освещенности и дистанции. Работало без проблем. С рэле было также просто, но это я быстро разобрал за ненадобностью.

Захотелось сделать нечто действительно полезное. А так, как больше всего мне не хватает датчиков движения, начал именно с них.

image

Собрал практически из «подножного корма».
image

image

image

image

image

На этом поставлю сегодня точку. Ах, да, мои исходники можно найти здесь: github.com/hexenmeister/MySensors_MyDevices

Автор: hexenmeister

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js