Публикации по теме автоматизации дома WebHomePi вызвали определенный интерес у пользователей. Особенно приятно, что многие стремиться не только повторить то, о чем рассказывалось на страницах сайта, но и внести свой вклад в развитие системы, разрабатывая различные устройства, позволяющие расширить функционал WebHomePi.
Сегодня я хочу познакомить вас с релейным блоком, управляемым по интерфейсу RS485, разработанным участником проекта Александром (AlexAW). Далее описание устройства идет от автора этой разработки.
Представляю вашему вниманию проект релейного блока для систем домашней автоматизации. Его основное предназначение – местное и (или) дистанционное управление требуемыми нагрузками. Местное управление четырьмя выходами осуществляется с четырех гальванически изолированных от внутреннего микроконтроллера входов. Дистанционное управление происходит по сети RS485 широко распространенным протоколом обмена Modbus RTU. Соответственно этот релейный блок будет легко интегрироваться в проект WebHomePi. Особенно он будет полезен для автоматизации домашнего освещения.
Релейный блок проектировался исходя из опыта эксплуатации «умного света» в квартире собранного на устройствах управления с сетевым протоколом Х10 передаваемым по питающим сетевым проводам. Отмечу – практически все меня устраивало! Устройства автономны, при отсутствии центрального блока выполняют заложенный в них алгоритм управления, самостоятельно. А с помощью централизованной системы управления, возможно, организовать различные сценарии освещения, удаленное управление освещением, имитацию присутствия и прочие вкусности типа «включения кофеварки по утрам» Подробно можете почитать про это в моем личном блоге . Но протокол Х10 имеет два существенных недостатка:
команда с повтором передается довольно медленно, в течении одной секунды.
при наличии в сети высокочастотных или импульсных помех среда передачи становится недоступной. Устройства попросту глохнут.
Если с первым недостатком еще можно мириться, то со вторым в принципе невозможно!
Сначала я вдруг обнаружил, что у меня не всегда срабатывает выключатель в спальне, когда соседка выше этажом пылесосит свою квартиру. Эту беду я победил легко, установив специальный фильтр на вводе электросети в квартиру. Потом вдруг после включения света в кабинете перестали работать все выключатели в квартире. Причиной тому было высыхания электролитического конденсатора в сетевом выпрямителе одной из лампочек - экономок в люстре кабинета. И колебания тока внутреннего генератора преобразователя лампочки попадало в электрическую сеть. А поскольку в современном жилище большинство бытовых приборов имеют высокочастотные блоки питания, такая борьба за чистоту сети продолжается с завидной периодичностью.
Есть альтернатива устройства с беспроводным обменом или по отдельным проводам. Например, устройства KNX или HDL, но цены на них, на мой взгляд неприемлемые. Решил поискать что то подешевле На Алиэкспресс есть устройства ввода вывода, работающие по сети RS485 Modbus и даже цены приемлемые. Все хорошо, на первый взгляд. Принцип работы сети Modbus основан на том, что в сети одно головное устройство опрашивает все остальные. Получается для того что бы включить какой то выход по команде с какого то входа, это головное устройство должно спросить состояние входа и в зависимости от результата включить или выключить соответствующий выход. Крутит устройство управления домашней автоматикой опрос выключателей и датчиков, и рулит соответствующими выходами и реле. Но вдруг оно раз и остановилось? Ну мало ли сложное ведь, поломалось или просто повисло…. И все сидим без тепла и света. Клацаем выключателями и никакой реакции. Не, так не пойдет, мы уже это проходили.
Вывод устройства автоматизации в рамках выполнения своей задачи должны быть автономны. Выключатель управлять светом по заданному алгоритму, терморегулятор поддерживать температуру, регулятор уровня поддерживать уровень воды в требуемых интервалах, и т.д и т.п. И дополнительно иметь возможности получать настройки и команды управления с внешней централизованной системы. Настроил местно или удаленно, и оно само по себе работает. Поломалось центральное управление, основной функционал не нарушился. Без веб интерфейса жили и еще поживем, пока починиться. Так вернее. Само устройство тоже может выйти из строя, но это локальная неисправность типа нет света в одной комнате, а не во всей квартире ничего не работает.
Именно эта философия и была заложена в основу проектирования алгоритма работы представляемого релейного блока. В текущей версии реализовано управление четырех выходов по принципу N вход управляет N выходом. Принципиальная схема блока приведена на рис. 1
Рис. 1
Вход может работать в следующих режимах:
кнопка;
выключатель;
универсальный выключатель (работает как кнопка при кратковременном (менее 1 сек.) включении, и как выключатель, если включение было, более 1 сек.);
вход отключен от выхода.
Настройка режимов может производиться с помощью кнопки программирования.
Для смены режимов необходимо установить требуемое сочетание входов и выходов (см. таблицу) нажать и подержать кнопку программирования от 3 до 5 сек. Для удобства программирования при нажатии на кнопку программирования более 2 сек. временно все входы начинают работать как кнопки.
Имеется еще пятый вход, который работает как кнопка «выключить/включить все». Короткое «нажатие» на эту кнопку приводит к выключению всех выходов, а если нажать и подержать более 1 сек. произойдет включение всех выходов. Без этого входа можно было бы, и обойтись, т.к. функцию включить выключить все, удобно реализовывать как некий сценарий освещения в центральном блоке управления. Но мой опыт эксплуатации «умного света» в квартире показывает, что сценарий выключить все является единственным востребованным всеми моими домочадцами. Действительно удобно при выходе из дома нажать на клавишу и быть уверенным, что весь свет и переноска (в которую обычно включается «утренние бытовые приборы» утюг плойка фен) выключены. Поэтому я добавил этот вход, (благо портов хватает) что бы обеспечить самостоятельное исполнение этого сценария устройством. Если устройств несколько этот вход у них объединяется. Я в своей квартире релейные блоки размещаю в распределительных коробках и в силовом электрощите. Еще при строительстве я раскидал восьми проводную витую пару UTP-5 между электрическим щитом и распределительными коробками параллельно с электрическими проводами. Пара питание пара RS485 остальное свободно так, что есть чем соединиться.
Рис. 2
Может случиться так, что какой-то выход не должен реагировать на вход «выключить/включить все». Бывает, требуется что бы какой то выход был во включенном состоянии сразу после включения питания. Для настройки режимов реакции выходов на вход «выключить/включить все» и установки состояния выходов при включении питания, предусмотрен другой режим работы кнопки программирования. Если кнопку программирования удерживать нажатой более 10 сек., то текущие состояния выходов запишутся в долговременную память устройства как состояния при включении питания. А состояние входов запишется в настройки режимов реакции выходов на вход «выключить/включить. все». Если вход был включен, то соответствующий выход реагирует на вход «Вкл. Выкл. все», если выключен, то игнорирует. Более тонкую настройку реакции (например на вкл. реагировать на выкл. нет возможно настроить, но только по сети Modbus RTU.
Для обеспечения централизованного управления реализован контроль и за состоянием входов и выходов, управление выходами и настройка режимов работы входов релейного блока по сети RS485 протоколом Modbus RTU
Команды, которые принимает и передает блок, сведены в таблицу Exel (см. архив материалов к статье)
Запись в регистр 0х05 по функции записи 0х03, управляет настройками режима работы входов в соответствии с таблицей:
В этой версии программы микроконтроллера устройства реализована возможность установить задержку включения и (или) выключения выхода (это может быть полезным например для управления вентилятором в ванной)..Задержка может быть установлена:
от 1 сек. до 256 сек. с шагом 1 сек.,
от 10 до 2560 сек. с шагом 10 сек. с точностью до минус один шаг.
Выбор варианта задержки устанавливается установкой соответствующего бита в ячейку флагов делителя пауз. (см таблицу Exel в архиве материалов к статье)
Рис. 3
Архив материалов к статье содержит:
дизайн проект релейного блока в Proteus;
HEX файл прошивки для контроллера 16F628A;
несколько вариантов печатных плат разведенных так же в Proteus под ЛУТ вариант с односторонней печатной платой;
вариант печатной платы для размещения в корпусе на DIN рейку размером в два модуля 17.5мм;
таблицу Exel с описанием реализованных в устройстве команд Modbus RTU
В архив также включен дизайн проект с эмулятором последовательного порта для отладки взаимодействия устройства протоколом Modbus RTU – подробнее, см. здесь . Proteus позволяет подключить виртуально моделируемое устройство к реальным или так же виртуальным внешним устройствам через последовательный интерфейс и проверить весь протокол обмена. В качестве приемопередатчика Modbus команд удобно использовать ПО Modbus Poll или ему подобные – подробнее см, например, тут.
Рис. 4
Есть печатная плата для размещения устройства в корпусе на DIN рейку разработанная Aлександром. Открытый проект в среде EasyEDA опубликован вот по этой ссылке - оттуда можно заказать платы промышленного качества и там же заказать детали.
Варианты собранного модуля приведены в статье на рис. 2-4:
Процесс отладки устройства в симуляторе и процесс разработки печатной платы можно посмотреть на моем канале в YouTube:
P.S. В архив материалов к статье добавлен вариант печатной платы релейного модуля на Mosfet транзисторах. Печатная плата разработана Vanuha_63
Доброго времени суток. Без протеуса, к сожалению, не открыть. В Layout он тоже не конвертирует Из доступных сконвертировал в PDF картинки В материалах к статье есть архив с рисунками ПП в формате PDF обратите внимание на фото, имеются три перемычки