В системах домашней автоматизации используются различные устройства с управлением по радиоканалу. В качестве примера можно привести управление освещением, въездными воротами и т.д. Управление осуществляется с помощью четырехкнопочных пультов управления (радиобрелков). Кроме того, для функций охраны и контроля доступа применяют радиодатчики (датчики открытия, движения, пожара, протечки воды, утечки газа).
В простых устройствах с управлением по радиоканалу используют частоты 315/433 МГц с применением 24-битного кода. Более подробно о такой кодировке можно почитать здесь - Приемник радиодатчиков.
Основная идея создания данного радиомодуля для системы домашней автоматизации – это эмулировать в единый web-интерфейс все радиобрелки и привязать к радиомодулю различные радиодатчики. Согласитесь, что намного удобнее управлять всеми устройствами с единой панели управления (например, с планшета), чем таскать с собой связку радиобрелков.
Структурная схема организации работы радиомодуля в составе домашней автоматизации с применением Raspberry Pi приведена на рис.1.
Рис.1
Устройствами можно управлять как непосредственно с радиобрелка, так и через web-интерфейс с любого сетевого устройства (ноутбука, смартфона, планшета). В этом случае радиомодуль получает команды с Raspberry Pi по интерфейсу RS485 и транслирует их в эфир через свой передатчик. Второй функцией радиомодуля является прием информации от радиодатчиков и передача их состояния по RS485 на web-интерфейс.
За основу радиомодуля была взята схема, которая ранее рассматривался на нашем сайте - Радиоуправление для умного дома. Фактически, в неё добавлен только модуль передатчика и изменена прошивка микроконтроллера (рис.2)
Рис.2
В состав схемы радиомодуля входят готовые модули приемника и передатчика, настроенные на частоту радиодатчиков и передатчиков-брелков, микроконтроллер 16F628A, предназначенный для обработки, хранения и преобразования принимаемого и передаваемого кодов, блок питания с выходным напряжением 5В, а так же драйвера согласования уровней для интерфейсов RS232 и RS485 - соответственно MAX232 и MAX485. Выбор интерфейса осуществляется с помощью перемычек (джамперов). При установленных перемычках 1-3 и 2-4 включен режим RS232, при 1-5 и 2-6 – режим RS485. В принципе, в системе домашней автоматизации с применением Raspberry Pi интерфейс RS232 не используется, поэтому MAX232 можно не устанавливать. Но интерфейс RS232 может оказаться полезным при отладке устройства через СОМ порт.
Светодиоды VD1-VD5 выполняют функцию индикации при работе и конфигурировании устройства. Кнопка S1 включает режим программирования, а кнопка S2 режим очистки области памяти EEPROM микроконтроллера, в которой хранятся записанные коды датчиков.
Область EEPROM микроконтроллера разделена на три области. В ячейках под номерами 00...27 хранятся принимаемые коды радиодатчиков, 28...77 – коды радиобрелков и ячейки 78...7F предназначены для служебной информации (конфигурации радиомодуля). В общей сложности в память можно занести коды 10 радиодатчиков и 5 четырехкнопочных радиобрелков (т.е 20 команд). В ячейку 7С записывается начало адреса следующего кода, в ячейки 7E и 7F – сетевой номер устройства в сети RS485 (рис.3)
Рис.3
Один 24-битный код радиодатчиков или радиобрелков занимает в EEPROM три ячейки. Однако, если внимательно посмотреть рис.3, то можно заметить, что для радиодатчиков добавляется ещё одна ячейка. Она необходима для того, что бы «привязать» радиодатчик к определенной зоне контроля. Для команд радиобрелков подобная привязка не требуется. Но с целью унификации под команду радиобрелка тоже отведено четыре ячейки.
Запись кодов радиодатчиков:
Для выполнения операции записи («привязки») кода датчика в память EEPROM микроконтроллера, необходимо нажать и удерживать кнопку S1. При этом, с периодом в 1 секунду, включаются светодиоды, показывая в двоичном коде порядковый номер зоны, которая будет присвоена принятому коду. Например, включенный светодиод VD5 (1) соответствует зоне №1 = 00001, а включенные светодиоды VD2 (4) и VD4 (2) зоне №10 = 01010.
Выбор нужного номера зоны, присваиваемой коду, производится отпусканием кнопки в том момент, когда включена соответствующая комбинация светодиодов. После отпускания кнопки светодиоды остаются во включенном состоянии, и устройство готово к записи. Если вы случайно вошли в режим записи, выбрали не тот номер команды или передумали производить запись, то выйти в этого режима можно кратковременным нажатием кнопки S1.
Для инициализации записи кода в память устройства, необходимо вызвать срабатывание датчика. Приемник радиомодуля получит переданный код и запишет его в память микроконтроллера, светодиоды при этом выключатся и устройство выйдет из режима записи.
При записи следующей команды, вышеописанные операции необходимо повторить. После ввода 10 кодов датчиков дальнейшая запись будет заблокирована – при попытке войти в режим записи (нажатие кнопки S1) все светодиоды быстро мигают в течение примерно 2-х секунд, после чего устройство возвращается в исходное состояние. Для записи новых кодов, область памяти EEPROM, предназначенную для хранения кодов радиодатчиков необходимо полностью очистить - нажать кнопку S2 и удерживать её не менее 5 секунд. При этом включаться все светодиоды и через 5 секунд погаснут – память очищена. Если отпустить кнопку S2 ранее, чем через 5 секунд, то очистка памяти будет отменена.
Запись кодов радиобрелков:
Выполнить запись кодов радиобрелков возможно только непосредственно через программирование области EEPROM с адресами 28...77. Здесь необходимо соблюдать четкую последовательность. Например, для первого радиобрелка код кнопки А записывается в ячейки 28...2В, B - 2C...2F, C - 30...33, D - 34...37. Для следующего радиобрелка код кнопки А записывается в ячейки 38...3В и т.д.
Узнать код каждой кнопки радиобрелка довольно просто - достаточно сначала их считать и записать как код радиодатчиков (см. выше), а затем скопировать в соответствующие ячейки памяти без четвертого байта, который определяет номер зоны привязки радиодатчика. Реализация такого метода записи кодов радиобрелков в EEPROM наглядно показана на рис.3
В любом случае процесс привязки радиодатчиков и радиобрелков наиболее правильно организовать следующим образом - сначала считываем коды кнопок радиобрелков и переносим их в область EEPROM с адресами 28...77. Затем выполняем очистку области EEPROM для кодов радиодатчиков (адреса 00...27) и записываем в них уже непосредственно сами коды радиодатчиков.
Запись кодов радиодатчиков и радиобрелков описанным выше способом выполняется пользователем практически «вслепую». Поэтому, для большего удобства и во избежание сбоев с адресацией кодов в EEPROM, рекомендуется считывать коды с помощью Сканера радиокодов, разработанного специально для этой цели, и прописывать считанные коды непосредственно в EEPROM при программировании микроконтроллера.
Для работы с радиомодулем был написан простой web-интерфейс для управления с браузера. Скриншот web-интерфейса для радиомодуля приведен на рис.4.
Рис.4
На странице web-интерфейса отображается статус соединения радиомодуля с Raspberry Pi по RS485 с указанием сетевого адреса, кнопки радиобрелков и состояние срабатывания радиодатчиков. Для эмуляции команды любого из пяти радиобрелков нужно просто нажать на соотвествующую кнопку. Радиомодуль принимает эту команду через RS485 и транслирует её в эфир. Cброс входов радиодатчиков в исходное состояние производится нажатием на кнопку «Сброс входов».
Внимание. Временные характеристики программы приемника рассчитаны для работы кодера РТ2262 с номиналом резистора 3 МОм в задающем генераторе. Это соответствует длительности импульсов нуля - 250 мс, единицы - 750 мс. С такими же характеристиками формируется выходной код передатчика.
Внешний вид радиомодуля показан на рис.5. Принципиальная схема, печатная плата, прошивка микроконтроллера и страница с web-интерфейсом находятся в приложении.
Рис.5
Дополнение. В связи с тем, что в системе автоматизации в настоящее время вместо управления по шине RS485 символами ASCII применяется стандартный протокол Modbus RTU, прошивка радиомодуля переработана под этот протокол. Кроме того, добавлена возможность эмуляции «пользовательских» кодов. Немного подробнее, что это за коды. Как указывалось выше, кроме 10 радиодатчиков в память можно записать коды 5 четырехкнопочных брелков. Вместе с тем, кроме эмуляции уже имеющих запрограммированный код брелков, в системе есть устройства, которым пользователь может назначить свой (т.е пользовательский) 24-битный код. В качестве примера можно привести контроллер управления кондиционером. Так как коды для такого контроллера назначает сам пользователь, то их можно упорядочить и «подчинить» определенному алгоритму.
Вот как это реализовано в программе – в ячейках EEPROM 78...7А записывается «базовый код» AB CD 00 (рис.6), что условно соответствует первому пользовательскому коду. Вызов каждого последующего кода не считывается из «персонально выделенных» ячеек EEPROM, а генерируется добавлением значения 2 к базовому коду. Например, второй код будет иметь значение AB CD 02, третий - AB CD 04, четвертый - AB CD 06 и т.д. Подобным образом в программе реализовано 24 пользовательских кода. Разумеется, используя данный алгоритм, возможно и дальнейшее наращивание количества кодов (команд).
Из изменений так же необходимо отметить, что адрес контроллера теперь занимает одну (7F) ячейку EEPROM. Ячейка начала адреса записи следующего кода радиодатчика перемещена a ячейку 7Е. Ячейки 7B...7D являются резервными и могут быть использованы для организации ещё одного массива пользовательских кодов.
Рис.6
Радиомодуль 2.0
На основе данной схемы Антоном Бизяевым и Александром Вайдуровым разработана новая печатная плата и прошивка микроконтроллера. Несмотря на то, что схемотехника осталась прежней, организация работы устройства значительно изменена. Кроме того, в прошивку введен адаптивный прием пакетов посылок радиосигналов по протоколу 1527 и 2262, что позволило значительно повысить общую помехозащищенность. Но главным преимуществом новой реализации радиомодуля является то, что в ней нет разделения памяти EEPROM на «передаваемые» и «принимаемые коды» - любой 31 код, хранящийся в памяти, доступен как для чтения (приема радиомодулем), так и для передачи.
Прошивка новой версии микроконтроллера радиомодуля находится в общем архиве. Там же вы найдете более подробное описание новой версии радиомодуля. Внешний вид печатной платы показан на рис.7.
Отличное устройство, давно такое искал. Вопрос: мне надо собрать несколько данных устройств и разнести их по этажам, что поменять в некст коде прошивки, что бы сервер их различал