habrahabr

Очередная умная розетка для очередного умного дома

  • среда, 30 апреля 2014 г. в 03:10:37
http://habrahabr.ru/post/221247/

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



Все остальное под катом. Осторожно! Много картинок.

Предисловие


Сначала надо сказать, что в городе, в котором я сейчас живу, очень большая проблема с электронными компонентами (резисторы по 5р. штука, а о микроконтроллерах тут вообще не слышали). Все приходится заказывать или просить товарищей мне передавать из более продвинутых в этом плане мест. Надеюсь, эта информация объяснит возможные вопросы по применению тех или иных компонентов. Это не первое моё устройство и, благодаря использованию готовых модулей, надобность в рисовании схем отпала. Представлю только схему симисторного ключа.

Компоненты


Заказал у наших любимых друзей из поднебесной замечательные модули с распаянным nRF24LE1. О этом микроконтроллере уже много написано на хабре (тут, и тут, и еще вот тут), и это очень помогло на старте.
Мои модули, в отличие от большинства рассмотренных на хабре, меньше размером и имеют PLS с маленьким шагом (кстати, может сообщество подскажет, как правильно называются эти штырьки и где достать ответную часть).



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



Так же из поднебесной были заказаны симисторы BTA16 (600v, 16A) и опто-симисторы MOC3063. Рассыпуха частично была, частично докупил.
Итак, в бой!

Процесс разработки


Для начала разобрал сетевой фильтр, что бы понять, хватит ли мне места.


Места вагон и телега хватает.

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



Отдельное, большое, спасибо посту от MaksMS, а так же ему лично. Статья и переписка с ним очень помогли начать программировать nrf24le1, а так же завести радио часть.

Итак, модуль отзывается на запросы программатора (использую USB ASP), переходим к управлению силовой части. Для управления симистором решил использовать опто-симистор MOC3063. Данная микросхема полностью отделяет силовую часть от низковольтовой, но есть один нюанс. MOC3063 имеет встроенный детектор перехода через 0 (zero-cross) в сети питания и сама подает открывающий импульс на симистор, что в свою очередь ведет к тому, что мы не можем диммировать розетку, но эту цель я и не преследовал. Схема включения ниже:



Схема проста, думаю, дополнительных объяснений не надо. Единственное отступление, вместо ограничивающего резистора поставил зеленый светодиод, который будет оповещать о включении опто-симистора.
По схеме собрал, маленькие, модули для 5-и розеток (на фото только 3):





Далее, одну из линий в сетевом фильтре порезал в указанных местах, а из вырезанных промежутков сделал перемычки на «не скрепленные» концы, что бы при включении вилки они сильно не разгибались.





Припаял управляющие выводы симисторных модулей к пинам микроконтроллерного модуля 0.2, 0.1, 0.0, 1.6, 1.5.
5 желтых светодиодов припаял к выводам 0.7, 1.0, 1.1, 1.2, 1,3. К выводам 0.5, 0.6 припаял зеленый и красный светодиоды для индикации работы модуля (парсинг команд, прием или отправка данных).
Все это добро упаковал в корпус сетевого фильтра.



Симисторные модули отлично поместились в промежутки между коробками для вилок (на фото к ним идет зеленые и серые проводки), под модулями установлены зеленые светодиоды (в заранее высверленные отверстия) в противоположной от них стороне, установлены желтые светодиоды.
Слева посередине видны концы двух светодиодов состояния мк.
Ну и в левом нижнем углу виден сам радиомодуль с висящим разъемом для программирования. Постой, а где же хваленый microUSB!? На момент съемки, microUSB кабель, который у меня был, оказался слишком длинным и программатор не видел мк.

Далее, самая большая проблема всего мероприятия: питание для микроконтроллера. Сначала хотел сделать конденсаторное питание, но нужных конденсаторов и стабилитрона в городе не нашел, а заказывать и ждать уже не было желания. Решил использовать блок питания из зарядки для какого-то телефона.



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



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



После сборки в рабочем состоянии:





Функционал


К сожалению, пока не могу выложить прошивку, потому что она очень запутана. Писалась с учетом работы в сети со многими устройствами, и в ней куча лишнего. Если сообществу будет интересно и я наконец получу инвайт то опубликую все в следующем посте. Хочется отметить, что никакого хитрого алгоритма там нет. Все сводится к простому дерганью пинами вкл/выкл. Никакого шима и тд. Простое мигание светодиодами (силовые модули для мк — обычные светодиоды)

Принцип работы следующий: при получении пакета от сервера, модуль определяет, что следует сделать с выбранной розеткой, и включает или выключает её. В выключенном состоянии на против розетки горит желтый светодиод, во включенном состоянии горит зеленый.
Тут я допустил очень серьезную ошибку, надо было сверлить дырки для светодиодов перпендикулярно к отверстиям для вилки. Так как 80% всех блоков питания, что я нашел дома, закрывают или оба светодиода, или один.

Немного о сервере

Сервер представляет собой такой же модуль nRF24LE1, подключенный через USB-UART конвертер к ПК, с которого через Java приложение идет управление другими устройствами в сети. Фото ниже



Заключение


Сетевой фильтр уже трудится на благо моего дома. Софт еще сырой и смысла его показывать и краснеть нет.
Тем кто собирается повторять сие чудо я могу прислать облегченную версию прошивки и сервера, а так же дать пару советов:
  • Светодиоды надо установить перпендикулярно, а для особо обеспеченных оргстеклом, рекомендую сделать светящуюся обводку. Будет круто!
  • Сам радио модуль стоит установить в противоположную сторону от входа напряжения. Помех меньше, да и места больше.
  • Используйте короткие microUSB
  • Стоит добавить функцию сохранения состояния пинов при отключении питания. Сам планирую в новой версии прошивки это сделать


Отдельная благодарность доценту Юрию Ивановичу Иванову (каф. САУ, ЮФУ) за помощь в разработке конденсаторных и других типов блоков питания. Хоть в этом проекте их нет, буду применять их в следующих, и обязательно расскажу об этом, если сообщество одобрит этот пост.

Ожидаю критики а лучше похвалы и предложений по улучшению конструкции.

Необходимая документация

Даташит на nRF24LE1
Даташит на BTA16
Даташит на MOC3063
Схема управления силовой нагрузкой с более развернутым описанием