Создание данного контролера ставило собой цель применять в системе домашней автоматизации на Raspberry Pi идентичные аппаратные средства для различного назначения. В качестве базовой схемы контроллера была принята схема разработанного ранее контроллера температурного регулирования (термоконтроллера), имеющего пять входов и четыре релейных выхода.
Для использования платы термоконтроллера в качестве обычного контроллера достаточно входы датчиков DS18B20 задействовать в качестве обычных дискретных входов, а резервный вход применить для подключения дополнительных цифровых датчиков. Принципиальная схема устройства показана на рис.1.
Рис.1
Контроллер имеет четыре релейных выхода (К1-К4), к которым можно подключать различные нагрузки, четыре входа (INP1-INP4) для подключения датчиков с двумя состояниями (замкнут/разомкнут) и цифровой вход для датчика температуры и влажности DHT22. Кроме того, этот выход планируется использовать и для других типов датчиков. Датчик является необязательным элементом контроллера, т.е его можно не устанавливать.
Состояние входов и выходов контроллера, показания температуры и влажности, выводятся на дисплей контроллера (рис.2)
Рис.2
В верхней строке дисплея отображаются показания температуры и состояние входов контроллера, в нижней - показания влажности и состояние выходных реле контроллера. На приведенном рисунке входы 2 и 4 замкнуты, 1 и 3 – разомкнуты, реле на выходах 1 и 3 включены, на выходах 2 и 4 – выключены.
В контроллере предусмотрена функция местного управления выходными реле. Это может пригодится, когда необходимо включить/отключить нагрузку непосредственно на месте установки контроллера, а не удаленно через web-интерфейс. Алгоритм местного управления очень простой – для этого достаточно нажать и удерживать кнопку S2. При этом на дисплее последовательно будут показываться сообщения OUT1 ON, OUT1 OFF, OUT2 ON и т.д, сопровождаемые звуковым сигналом (рис.3). При появлении нужного сообщения необходимо отпустить кнопку и включение/выключение выбранного реле будет выполнено.
Рис.3
Адрес контроллера состоит из двухзначного числа в ASCII коде и хранится в последних двух ячейках EEPROM микроконтроллера (ячейка EF – десятки адреса, ячейка FF – единицы адреса). Так же в EEPROM (ячейка F8) хранится последнее установленное значение выходов контроллера. Если произойдет сброс микроконтроллера по сторожевому таймеру или каким-либо иным причинам, эта функция позволит вернуть реле в состояние, в котором они находились до момента сброса.
Расположение ячеек EEPROM показано на рис.4. Здесь адрес контроллера установлен 61 (EF = 36, FF=31), все реле выключены (F8 = 00). Значения в EEPROM записываются на этапе прошивки микроконтроллера 16F876A.
Рис.4
В web-интерфейсе отображается статус соединения сервера с контроллером, текущие дата и время, состояние входов контроллера, кнопки управления и состояние выходных реле контроллера, значения температуры и влажности, получаемые от датчика DHT22 (рис.5).
Рис.5
Необходимо отметить, что самая первая версия контроллера RS485 имеет очень незначительные отличия от рассматриваемой здесь схемы и при необходимости может быть очень легко модернизирована.
Все интересующие вопросы по контроллеру задаем в соответствующем форуме и в комментариях в статье.
А можно ли на этом контроллере устроить счетчик импульсов? Например от счетчиков воды. Хотелось бы вести подсчет импульсов и при достижении какого-то значения count создавать новую запись в БД.
Вставлю еще свои пять копеек. У малины нет встроенных часов. Было бы здорово, что бы на внешних контроллерах стояли часы, типа DS1307. И данные, поступающие с контроллеров протоколировались (вёлся лог-файл).
Часы, безусловно, нужны. Можно, конечно обойтись и без них, если малина постоянно подключена к интернету и может информацию о времени забирать с него. Но это неправильно, т.к. в случае "падения" интернета или работе в автономном режиме время мы не получим. Поэтому в самое ближайшее время часы RTC будут интегрированы в нашу систему
Сегодня хотел провести испытание механического терморегулятора из Китая, который из холодной и горячей воды делает теплую. Вспомнил, что делал когда-то плату под несколько датчиков... и заблудился. Уважаемый автор, было бы здорово, если бы Вы дали своим проектам более конкретные названия. Смотрю сей проект и думаю каким боком здесь в названии RS485, если RS485 используется и в Контроллер температуры и влажности, и вКонтроллер температурного регулирования. В этих проектах одна плата, но разные прошивки? Разобраться, конечно, можно. Но зачем так всё усложнять лишними словами? Ясно, что контроллер. Ясно, что с интерфейсом RS485. Может лучше указать особенности, типа, "термостат: DS18B20 (4шт) +реле (4шт) +RS485" или "8-канальный индикатор температуры и влажности на DHT11 / DHT22+RS485". Разумеется всё IMHO.
Нисколько не отрицая справедливость критики, хочу отметить следующее. Изначально "Контроллер RS-485" назывался "Универсальный контроллер". Но тоже были вопросы, причем справедливые - а что в нем универсального? Наличие входов/выходов плюс входы температурных датчиков? Поэтому как-то сложилось, что его все стали называть просто контроллер RS-485. Поэтому я и изменил название. Но видимо, не совсем корректно, наверное проще было бы назвать его просто "Контроллер входов/выходов". Ну а касательно остального, так вроде бы все понятно, что собой представляет каждый контроллер, указано здесь - http://lock.3dn.ru/news....-15-127 Другой вопрос, что в связи с развитием системы, указанная информация на сегодняшний день требует актуализации.
Спасибо за Ваш труд! Однако, если "имеет очень незначительные отличия от рассматриваемой здесь схемы и при необходимости может быть очень легко модернизирована" может быть правильнее было бы в статье перечислить эти доработки. Приложить фото двух вариантов. А пользователь сам решит что ему проще: сделать новую плату или дорабатывать имеющуюся. И еще. Из описания непонятно чем вызвана новая разработка. Хорошо бы табличку, где видно, что может 2-я версия и что могла первая.
Согласен, что описание не самое полное, но так как есть довольно подробное описание первой версии контроллера, то здесь я старался отметить только те функции, которые появились в новой версии.
Доработка касается печатной платы, а так как плату для первой версии я вообще не разрабатывал, то как бы и сравнивать не с чем Там только добавляются четыре транзисторных ключа с реле, две кнопки и бузер.
И почему непонятно, чем вызвана доработка? В самом начале статьи ведь об этом сказано :
"Создание данного контролера ставило собой цель применять в системе домашней автоматизации на Raspberry Pi идентичные аппаратные средства для различного назначения".
Ведь данный контроллер очень похож по схеме с 4-х канальным термоконтроллером, так зачем делать различное "железо", если можно это "железо" унифицировать? Это первое. Ну а второе - на форуме неоднократно возникали вопросы по поводу реализации местного управления выходными реле. Что и было реализовано в текущей версии. Фактически, это пока все нововведения этой версии. А что будет в неё ещё добавлено, я отмечал на форуме.