Вашему вниманию предлагается разработка одного из самых активных участников проекта WebHomePi Александра (AlexAW). На этот раз речь пойдет об устройстве системы домашней автоматизации, предназначенном для эмуляции команд, и, соответственно, дистанционного управления кондиционерами и телевизорами производства компании LG, а также любыми другими, имеющими аналогичный протокол управления (NEC 28 или 32 бит).
Принципиальная схема контроллера приведена на рис. 1
Рис. 1
Схема состоит из микроконтроллера PIC12F629, приемопередачика МАХ487, стабилизатора напряжения +5В 78L05 и каскада управления ИК светодиодами, выполненного на транзисторе 2N3417. Внешнее питание на контроллер подается по отдельным жилам интерфейсного кабеля. В схеме предусмотрен вход для подключения герконового датчика, что позволяет настроить в системе запрет на включение кондиционера при открытых окнах.
В контроллере реализован программный USART и программный передатчик команд управления по ИК. Как уже отмечалось, передатчик контроллера эмулирует работу протокола NEC 28 или 32 бит.
Данные для передачи ИК команд хранятся в энергонезависимой памяти микроконтроллера. На хранение каждой команды отводится по 4 ячейки памяти (для 32 передаваемых бит). По умолчению в память записаны 14 команд для управления кондиционерами и две команды для управления телевизорами. Всего можно разместить в памяти микроконтроллера до 31 команды.
Команды с 00h по 0Fh имеют длинну 28 бит и предназначены для управления кондиционером, а команды с 10h по 1Еh имеют длинну 32 бит и предназначены для управления телевизором. Команды ИК управления можно записать в память микроконтроллера не только на этапе прошивки, но и через интерфейс RS485.
Сначала последовательность бит команд управления следует считать с пульта ДУ эмулируемого устройства и затем записать в виде 4-х байт в соответствующие ячейки микроконтроллера. Для этого можно использовать любой фотоприемник, например типа TSOP1738 или ИК-фотодиод, подключенный к входу осциллографа или анализатора (рис.2).
Рис. 2
Алгоритм считывания команд следующий: читаем биты от стартовой последовательности слева направо и пишем байты в память микроконтроллера по порядку. Для 28 битных команд последний байт содержит в старшей тетраде 0. Например для 32 битной последовательности (рис.3) последовательность кодов будет выглядеть следующим образом: 85h-7Ah-07h-F8h, а для 28 битной команды (следующая диаграмма на рис.3): 85h-7Ah-07h-08h.
Рис. 3
Перечень всех команд Modbus RTU, выполняемых устройством, сведен таблицу Exel приложенной к пакету файлов проекта.
Необходимо отметить, что к сожалению не удалось аппаратными средствами используемого микроконтроллера сделать независимыми процедуры передачи ИК сигнала и приема передачи по сети Modbus RTU, поэтому после получения команды на передачу ИК команды, устройство “уходит в себя" для передачи ИК команды на время около 40 мс. И если в это время придет запрос с центрального модуля устройство ему не ответит. В сущности это не создает проблемы, т.к. для передачи ИК команд с большой частотой нет необходимости, но данный факт в любом случае необходимо учитывать.
Архив материалов к статье