В первой части (http://habrahabr.ru/post/255281) я немного рассказал о моем опыте создания устройств на основе системы MySensors. Должен признать, описание получилось не полным — без начала и без конца.
В этот раз займемся «началом», значит это будет Часть 0.
Умный Дом
Строго говоря, «умным» будет любой дом, который с помощью автоматики облегчает своим жителям их быт. И совсем неважно, используется ли при этом электричество, колдовство или ситема веревок и рычагов.
С другой стороны, под понятием «Умный Дом» каждый понимает нечто свое. У меня все началось с желания автоматизировать наружные жалюзи. Точнее с нежелания бегать по дому и управлять ими по отдельности. Я тогда уже выбрал и почти купил (сравнительно) простые таймеры, но что-то меня остановило. В конце концов были установлены радиоуправляемые контроллеры системы HomeMatic.
Постепенно система росла. Добавилось управление светом, отоплением, датчики открытия окон и дверей, влажности, температуры, движения, освещенности. Вместе со всем этим менялось и мое мнение о том, что должен делать «Умный Дом». Ну это как аппетит, который приходит во время еды.
В моем сегодняшнем представлении система должна быть максимально незаметной, должна помогать и поддерживать пользователя, виртуально «нажимать кнопки» как раз в тот момент, в который он бы это сделал сам.
Конечно, в основе всего лежит аппаратная часть. Но установка датчиков и сбор данных сами по себе занятие довольно скучное, гораздо более интересно их применение для реализации различных сценариев управления.
Простой пример: жалюзи.
Кажется, что все очень просто: утром открывать, вечером наоборот.
А в какое время? — Лучше всего в на основании данных наружного освещения — расчеты в зависимости от времени года не учитывает погодных условий. И еще учитывать максимальное и минимальное время — разумеется в зависимости от дня недели, праздников и факта наличия отпуска.
А насколько плотно закрывать? — В спальне я оставляю небольшую щель открытой — чтобы не было соверщенно темно.
А если окно открыто? — Значит полностью не закрывать, для притока свежего воздуха, но для первого этажа нужно предупреждать забывчивого обитателя.
А если это балкон и дверь открыта? — Не закрывать жалюзи вообще, чтобы не запереть человека снаружи (у меня в данном случаее жалюзи опускаютня на 30см — в качестве напоминания).
А если снаружи темнеет, но порог еще не достигнут, а в комнате включили свет? — Решать заново, но согласно другому порогу освещенности.
И еще защита от ослепления низкостоящим солнцем (в зависимости от интенсивности и позиции солнца), защита комнаты от жары (учитывая интенсивность солнца и температуру воздуха), на первом этаже можно еще учитывать датчик движение под окном.
Наверное можно еще много других сценариев придумать, но и этого достаточно, чтобы показать, сколько возможностей скрывается в казалось бы такой простой штуке, как жалюзи.
Но в начале всего все же лежит «железо»…
Всю техническую часть системы я грубо разделяю на исполнительные устройства (актуаторы), сенсорику и устройства пользовательского интерфейса (ввод, вывод, визуализация).
Темой данной статьи является мой первый опыт с MySensors. Здесь не будет исчерпывающего описания системы и ее возможностей, их можно найти на домашней странице (http://www.mysensors.org/).
Шлюз
Неважно, из каких компонентов состоит каждая конкретная система, одно устройство необходимо практически всегда — шлюз для связи с управляющим компьютером. Нет, конечно можно обойтись и без него, но это не будет особенно интересно.
Естественно, первым делом я собрал именно шлюз. Как всегда, для начала на макетной плате (breadboard).
Не особо аккуратно, но заработало. И даже проработало в тестовом режиме несколько недель (параллельно к тому я собрал еще парочку сенсоров).
Оригинальное описание находится, кстати, здесь: www.mysensors.org/build/serial_gateway
Так, как все работало очень даже хорошо, решил собрать как положено. Для одного экземпляра разрабатывать печатную плату было черезчур, потому ограничился стандартной макетной из гетинакса.
Принципиальная схема очень проста.
А вот и конечный результат.
Ну и соответственно «внутренности»:
Устройство было установленно стационарно и первый прототип датчика движения утоплен в стену в коридоре на первом этаже. Все работало без проблем.
Второй датчик отправился на свое место на втором этаже. А вот здесь начались проблемы. Из-за железобетонного потолка прием в месте установки был скорее от случая к случаю.
Хотя устройства MySensors можно настроить работать в режиме ретранслятора, мне это тогда ничем не помогло — у меня было всего два датчика и они не видели друг друга.
Все это меня не особо и удивило — те же самые проблемы возникли уже и раньше в отношении WLAN. Для того на втором этаже уже находился дополнительный WLAN-Router. Как раз то, что нужно, чтобы подключить Ethernet Gateway (http://www.mysensors.org/build/ethernet_gateway).
Его я собрал на основе ENC28J60, все равно валялся без дела.
К сожалению эта версия показала себя не особо стабильной — каждый день зависал как минимум один раз. Грешу на утечку памяти в библиотеке для ENC28J60. В качестве «решения» активировал Watchdog. Грубо конечно, но эффективно. Кстати, обнаружил, что Bootloader Pro Mini не поддерживает Watchdog. При активации ардуино зависал в бесконечном, Reset-цикле. К счастью для этого есть простое решение — установить Optiboot (https://code.google.com/p/optiboot/).
Первые прототипы конкретных устройств
В качестве заключения хочу еще показать несколько фотографий прототипов устройств, предшествовавших описанному в первой статье датчику движения.
Уже при первом знакомстве с библиотекой оказалось, что есть готовые примеры для практически всех доступных сенсорных модулей. И что они очень легко комбинируются друг с другом.
Собрал вот такого «монстра».
Тут датчики температуры, влажности (кстати, не используйте DHT11 — дерьмо последнее, возьмите DHT22), движения, освещенности и дистанции. Работало без проблем. С рэле было также просто, но это я быстро разобрал за ненадобностью.
Захотелось сделать нечто действительно полезное. А так, как больше всего мне не хватает датчиков движения, начал именно с них.
Собрал практически из «подножного корма».
На этом поставлю сегодня точку. Ах, да, мои исходники можно найти здесь: github.com/hexenmeister/MySensors_MyDevices
Автор: hexenmeister