Привет!
Почти год назад мы впервые представили наш контроллер для автоматизации — Wiren Board Smart Home. Скоро мы запустим продажи его новой версии — Wiren Board 4, а сегодня расскажем про два наших новых устройства из класса бюджетной проводной периферии для домашней автоматизации.
Для создания умного дома одним центральным контроллером не обойтись: требуются еще некоторые исполнительные устройства.
Контроллер Wiren Board ранее позиционировался как универсальный центр умного дома, который управляет исполнительными устройствами сторонних производителей.
Однако стало понятно, что для бюджетных инсталляций выбор периферии оказывается очень ограничен, и особенно остро проблема стоит, как ни странно, в самой распространённой области домашней автоматизации — в управлении освещением.
1.Какие варианты?
Среди готовых беспроводных устройств для управления светом бюджетного сегмента выбор состоит из однонаправленных (без обратной связи) устройств, работающих на частоте 433 MHz:
- оборудования nooLite (~$20 за канал),
- китайских noname комплектов (~$10 за устройство),
- оборудования CoCo (~$20 за устройство) и т.п.
Отсутствие обратной связи, вместе с использованием порядком зашумлённого диапазона 433.92 MHz, делает использование этих устройств в домашней автоматизации очень неудобным. Ближайшие по цене устройства с обратной связью (Z-wave) стоят в несколько раз дороже.
С проводными устройствами ситуация обстоит немногим лучше: в бюджетном сегменте есть устройства на протоколах Modbus или ADICON, которые выпускаются несколькими производителями: ICP-DAS, “Разумный Дом”, Uniel. Многие продукты этих производителей удачные, но в целом цена устройств и цена за канал в тех исполнительных устройствах, которые не страшно использовать, не такая низкая, как хотелось бы. Некоторые производители не работают с розничными клиентами, и мало у кого они всегда есть в наличии.
Видя эту печальную ситуацию, мы решили запустить свою линейку проводных периферийных устройств.
В качестве пробного шара, были выбраны диммер для светодиодных лент и блок реле, которые работают по протоколу Modbus, стандарт RS-485.
2. Почему был выбран Modbus?
Modbus RTU — открытый коммуникационный протокол, основанный на архитектуре “ведущий-ведомый” (master-slave). Широко применяется в промышленности. Он весьма прост в реализации. RS-485 — стандарт передачи данных с помощью дифференциального сигнала по витой паре типа «общая шина», поэтому линия связи надежна и помехоустойчива. Расплата за это — необходимость прокладки кабеля.
В домашней автоматизации RS-485 удобен тем, что его можно разводить обычной витой парой CAT5 для Ethernet. При этом одна пара используется для данных, ещё две — для питания, одна остаётся свободной. Все устройства подключаются параллельно к одному кабелю. Ветвления, “звёзды” и кольца в топологии сети стандартом не разрешаются, но на практике даже такие сети вполне работают на расстояниях в десятки метров.
3. Локальное управление
Управление модулями осуществляется как по Modbus, так и локально, путем подключения двух внешних кнопок управления. Это позволяет работать модулям полностью автономно. Поэтому, подключив настенный выключатель, можно управлять освещением с него. Это удобно и в целом повышает надежность всей системы: при отказе центрального контроллера или обрыва шины RS-485, освещение продолжает нормально работать — просто без автоматизации.
Поддерживаются разные режимы работы кнопок: выключатели без фиксации (удобнее всего), обычные выключатели с фиксацией.
Поскольку модули работают в автономном режиме, а протокол Modbus поддерживают почти все ПЛК и контроллеры для домашней автоматизации, то модули можно закладывать при ремонте для будущего подключения к системе домашней автоматизации.
На модулях можно так же собирать группы проходных выключателей, в том числе использовать больше двух выключателей, подключенных параллельно. Работать это будет даже без центрального контроллера.
4. Централизованное управление
Шину с устройствами нужно подключить к контроллеру домашней автоматизации для управления. Мы разрабатывали устройства для использования с контроллером Wiren Board, но нет никаких ограничений по использованию модулей с другими контроллерами, поддерживающими Modbus RTU. Описание всех регистров доступно в нашей вики.
Каждое устройство Modbus на шине должно иметь уникальный адрес, поэтому стандартом для инсталляций на Modbus является процедура предварительной установки адреса. Адрес устанавливается путём отправки широковещательной команды записи в соответствующий регистр, при этом к порту должно быть подключено только одно устройство.
Мы постарались максимально упростить в этом месте жизнь пользователей, и распространяем устройства с заранее установленными адресами, которые написаны на модулях.
Кроме стандартных операций — установки цвета для LED-диммера и состояния реле для релейного модуля — в устройствах реализовано несколько других интересных возможностей.
Релейный модуль имеет функцию “Safety timer”, которая позволяет выключить реле, если модуль не опрашивался центральным контроллером в течение заданного времени. Функцию полезно применять например для управления нагревателями в термостатах, когда важно, чтобы нагрузка не оставалась включенной в аварийных ситуациях, например при обрыве шины или при проблемах с центральным контроллером.
Оба устройства позволяют контроллеру считывать текущее состояние кнопок. С каждой кнопкой также связан регистр-счётчик, который хранит количество нажатий на соответствующую кнопку. Это позволяет использовать подключенные к устройствам кнопки в пользовательских правилах.
Все эти функции доступны через регистры Modbus и поддерживаются соответствующим ПО на Wiren Board (код, как обычно, открытый и работает на любом устройстве с Linux).
Кроме этого, в модулях есть несколько служебных блоков регистров. В одном из таких блоков записан идентификатор модели, что позволяет делать автоматическую идентификацию устройств на шине. В ещё одном блоке записана версия прошивки.
5. Конструктивные особенности модулей:
Использование одностороннего поверхностного монтажа позволяет сделать модули достаточно компактными и простыми в производстве. Бескорпусный вариант исполнения (в термоусадочной трубке) существенно снижает себестоимость.
Потребление микроконтроллера и трансивера RS-485 довольно мало, что позволяет использовать линейные регуляторы для их питания. Рабочий диапазон напряжений модулей 8-24В.
Такой широкий диапазон рабочих напряжений обусловлен отсутствием единого стандарта в домашней автоматизации: в разных системах используются как 12В, так и 24В. Кроме этого, мы хотели обеспечить стабильную работу даже при проседании напряжения на кабелях.
Чтобы релейный модуль работал в широком диапазоне напряжений, была использована следующая хитрость: реле имеют рабочее напряжение 12 вольт, но МК измеряет входное напряжение и управляет катушкой реле с помощью ШИМ со скважностью D=12В/Uвх, т.е. средний ток через катушку реле остается номинальным даже при больших входных напряжениях. Также после включения реле, ток удержания устанавливается в половину от номинального — это в 4 раза снижает нагрев реле и общее потребление устройства.
При использовании ШИМа есть особенность: на низких частотах реле работают как динамик. Чтобы устройства не пищали, частота ШИМа выведена за звуковой диапазон и составляет 24кГц.
Силовые транзисторы LED диммера WB-RGB — IRF8736 (Vmax=30В, сопротивление канала всего ~5мОм). Буфер 74HC125 повышает управляющее напряжение с 3,3В от МК до 5В на затворах. Это позволяет столь маленькой платке оставаться холодной даже при токе в 5А на каждый канал.
Для регулирования яркости светодиодных лент в LED-диммере используется ШИМ. В подавляющем большинстве конкурирующих продуктов частота ШИМ-а находится в районе 100-200 Гц, и в особо плохих случаях это приводит к заметному мерцанию освещения. В нашем устройстве ШИМ работает на большей частоте. Как и в случае с реле, частота выведена на границу звукового диапазона, но здесь это сделано, чтобы избежать писка некоторых не очень качественных блоков питания светодиодных лент.
Очевидно, что крайне желательна функция сохранения состояния модуля при отключении питания. STM32F0 имеет в этом плане неприятную особенность: у него нет встроенной EEPROM, только flash-память с очень ограниченным ресурсом перезаписи.
Писать во флеш-память каждый раз при получении нового значения — слишком расточительно, поэтому состояние хранится в оперативной памяти и сбрасывается во флеш только при пропадании питания. Момент выключения отслеживается по падению напряжения ниже некоторого порога.
Одного сохранения состояния при выключении недостаточно, т.к. количество перезаписей одной ячейки ограничено тысячей циклов. Поэтому следующий уровень оптимизации — использовать всю свободную память, т.е. записывать значения равномерно, используя разные ячейки.
Операция записи бита (т.е. установки единичного значения) во flash-память производится быстро, но стирание выполняется только постранично, занимает много времени и требует много энергии. Если свободных ячеек не осталось, нужно стереть всю страницу, прежде чем записывать новое значение. Для этого пришлось бы ставить огромный конденсатор для «резервного питания» при выключении.
Мы используем следующий приём: при включении МК мы первым делом проверяем наличие свободного места для записи во flash, если его нет — то освобождаем место для будущей записи путём стирания страниц.
6. Цены и планы
Так как основной нашей целью является расширение экосистемы для контроллеров Wiren Board, на новые модули мы устанавливаем довольно демократичные цены, которые ниже, чем у конкурирующих продуктов:
- двухканальное реле на DIN рейку WB-MR2-DIN стоит 2000р
- то же самое двухканальное реле WB-MR2 в термоусадке — 1500р
- RGB-диммер WB-MRGB: 2100 рублей.
Мы планируем расширять линейку устройств на Modbus, поэтому будем рады обратной связи в голосовании и в комментариях о том, какие модули вы бы хотели видеть в продаже.
Автор: fizikdaos