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

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

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

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

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

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

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

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

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

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

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

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

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

Естественно, первым делом я собрал именно шлюз. Как всегда, для начала на макетной плате (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.

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

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

Собрал вот такого «монстра».

image

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

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

image

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

image

image

image

image

image

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

Комментарии (9)


  1. Verdel
    16.04.2015 09:33

    А можно чуть подробнее про watchdog для ENC28J60?


    1. hexenmeister Автор
      16.04.2015 12:57

      Про Watchdog можно написать собственную статью. Если в кратце, то примерно так:

      Watchdog — это аппаратное устройство в микроконтроллере. (ENC28J60 тут ни при чем.) В общем-то это просто таймер. Если он запущен, то при достижении заданного времени будет подан сигнал Reset и микроконтроллер перезапустится. Чтобы этого не происходило, нужно периодически (из программы) сбрасывать тимер. Если программа повиснет, то сброс не состоится, все перезапустится и заработает снова.
      Оригинальный bootloader в Pro Mini при запуске к сожалению не деактивирует Watchdog, зато ставит время на минимальное значение. В результате сброс происходит еще до выхода из bootloader в программу. Ардуино при этом естественно зависает (характеристично быстрое мигание LED).
      Optiboot такой проблемы не создает. Для записи Optiboot понадобится ISP-программер (можно в этом качестве использовать второй ардуино).


  1. greenkaktus
    16.04.2015 14:03

    Хороший проект. Понравился. Я вот хочу собрать похожее, только хочу обеспечить для датчиков больше автономности, данные гонять по BLE на центральные девайсы (распределенная система со смартфонами).


    1. Nizametdinov
      16.04.2015 14:11

      Глянь вот этот проект, вчера стартовал на кикстартере
      www.kickstarter.com/projects/264813863/bluz-bluetooth-made-smarter?utm_source=Spark&utm_medium=blog&utm_campaign=Bluz


      1. greenkaktus
        16.04.2015 14:35

        Неплохо да. Но дорого.
        Я выбрал Bluno nano, + DHT датчики. CR2032 таблетки недостаточно для питания пары датчиков и борды. Планирую CR-9V.


  1. Nizametdinov
    16.04.2015 14:10

    habrastorage.org/getpro/habr/post_images/9ca/0fa/c21/9ca0fac21a96a9433e56b93a255b6a7d.jpg — очень клево получилось, реально из «Г» конфетку замутил.


    1. hexenmeister Автор
      16.04.2015 15:36

      Спасибо.
      Делал из того, что было под рукой, прототип все таки.
      Последняя версия, уже на произведенной у китайцев PCB, выглядит профессиональнее.
      image


  1. hexenmeister Автор
    16.04.2015 15:46
    +1

    Кстати, если уж разговор о ценах зашел:

    SerialGateway:
    Ардуино ~2$
    Трансивер с антеной: ~5$
    USB<->UART ~2$
    Гетинакс, светодиоды, провода, кнопка, регулятор — мелочь, не знаю даже, пусть будет ~1$
    Итого: 10$
    Если брать трансивер без антены, тогда он не стоит и доллара, но может немного ухудшится радиус приема.

    Motion+Temp+Hum+Lux-Sensor:
    Ардуино ~2$
    Трансивер без внешней антены: ~0.8$
    DHT22 (температура+влажность) ~3$
    BH1750 (освещение) ~1.5$
    Датчик движения: ~1$
    PCB + мелочь: ~1.5$
    Итого: примерно 10$

    вроде бы ничего не забыл…


  1. Jey
    17.04.2015 18:08

    MySensors отличный проект во всех смыслах! Кстати, на mysensors описан вариант ethernet-шлюза с протоколом MQTT. Такой шлюз позволяет использовать сеть MySensors в системе MajorDoMo прямо «из коробки», чем многие и пользуются.