Умный Дом – Дешево И Сердито

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

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

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

В хабе уже полно статей о реализации чего-то подобного, чем моя будет отличаться? Меня задушила жаба.

Покупать готовые устройства мне не хотелось, это дорого и не интересно, поэтому решил сделать все сам.

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

Но сначала хотелось бы рассказать об аппаратной части «рабочей лошадки» дома – RC-2 (комнатного контроллера).

Прошивку для AVR МК я пишу давно, поэтому мозгом нашего контроллера будет всем известная Atmega 8-16PU, которая есть во всех магазинах радиодеталей.

Да, его старший брат используется в уже приевшейся Arduino Uno, но мы будем держаться от него подальше.



Что мы хотим?
Теперь определим требования к нашему коню: контроллеры должны быть в каждой комнате и иметь связь с сервером, работать от напряжения питания 7-40 вольт, иметь возможность подключения датчиков температуры и влажности, всевозможных датчиков и «сухих» устройств.

Кнопки типа «контакт» (герконы, кнопки, датчики движения), возможность управления внешними устройствами, возможность выполнения простых действий без участия сервера (включение света по кнопке, датчик движения, геркон).

Теперь пройдемся по требованиям и выберем инструменты, способные обеспечить выполнение этих требований:

  • Связь с сервером.

    Ethernet сложен и много проводов (от свитча к каждому из контроллеров), Bluetooth, WiFi и другие беспроводные сложны и дороги.

    Давайте вспомним старую добрую шину RS-485 и воспользуемся ею.

  • Наша логика 5 вольт, нам нужен преобразователь.

    Мы будем использовать простой и очень эффективный блок питания на базе импульсного стабилизатора LM2576 (схема есть в даташите на первой странице)

  • Всевозможные датчики? У Atmega8 на борту есть все необходимое: АЦП, дискретные входы, есть даже встроенные подтягивающие резисторы.

    Реализуем поддержку шины 1-Wire на одной из ножек для связи с датчиками (тот же DHT11).

  • Управление внешними устройствами? Опять же, у нас на МК есть дискретные выходы и ШИМ.



Молчи - сойдёшь за умного
На шине RS-485 должен быть один мастер, который будет по очереди опрашивать наши смарт-контроллеры, подключенные к шине.

В одно время один человек говорит, остальные слушают. Контроллеры строго реагируют только на запрос мастера; никто ничего не говорит сам по себе, иначе будут коллизии и никто ничего не поймет. Все строго.

Обмен данными по шине происходит полудуплексно, то есть в один момент времени устройство может как передавать, так и принимать данные.

Для работы с шиной мы будем использовать микросхему MAX485 плюс UART самой Atmega8.

Умный дом – дешево и сердито

С ним все просто: на 2 и 3 ножке логическая единица — передаем, ноль — слушаем.

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



Что происходит?
Разведенная схема выглядит так:

Умный дом – дешево и сердито

Готовый контроллер:

Умный дом – дешево и сердито

В ближайшем радиомагазине все это есть:
  • Атмега8-16ПУ — 130руб.

  • MAX485 — 60р
  • LM2576 — 60р
  • Рассыпчатый порошок (текстолит, резисторы, диоды, конденсаторы, кварц, клеммники) – 150 руб.

Итого = 400 руб.

Вышло дешево и сердито.

Протокол связи устройства с сервером является двоичным, с контрольной суммой.

Контроллер дергает лапами по команде сервера и в ответ на статусный запрос отправляет массив состояний своих входов, выходов, АЦП и того, что он смог получить по 1-Wire. Без сервера он может включать свет с помощью кнопки, переключателя или датчика движения.

Если кто-то захочет посмотреть на мой RC-2, или хотя бы использовать его для себя, я подробно опишу протокол связи с сервером и предоставлю принципиальные схемы и прошивку.

Теги: #Сделай сам или Сделай сам #Умный дом #умный дом своими руками #микроконтроллеры avr

Вместе с данным постом часто просматривают: