RGB лампа – это светодиодная лампа, которая позволяет создавать практически любые световые оттенки за счет смешения в разных пропорциях основных трех цветов – красного (Red), зеленого (Green), и синего (Blue). Для получения белого свечения все три основных цвета должны смешиваться в равных пропорциях.
Конструктивно RGB лампа выполнена в виде обычной электрической лампочки с цоколем под стандартный патрон Е14 или Е27 с питанием от переменного напряжения 230 В. Переключение режимов выполняется с помощью пульта дистанционного управления. Пультом можно включить или выключить лампу, выбрать по 5 оттенков красного, зеленого и синего цветов, белый цвет, отрегулировать яркость и включить любой из четырех динамических режимов – Flash, Strobe, Fade, Smooth (рис.1).
Рис.1
Ниже приводится краткое описание, как интегрировать RGB лампу в рассматриваемую ранее систему домашней автоматизации. В принципе, ничего сложного в этом нет, достаточно считать излучаемые пультом коды и затем воспроизводить (эмулировать) их с помощью эмулятора пульта. В одной из предыдущих публикаций рассказывалось, как таким же способом можно организовать управление кондиционером.
Вся цепочка управления построена следующим образом – при клике по кнопке в web-интерфейсе радиомодуль формирует одну из 24 команд, которая принимается эмулятором пульта дистанционного управления. В зависимости от принятой команды, эмулятор формирует ИК-посылку, которая управляет непосредственно лампой. Структурная схема используемого принципа управления показана на рис.2.
Рис.2
При анализе считанного с пульта кода было определено, что для кодирования ИК-посылок управления RGB лампой используется стандартный протокол NEC. Этот код состоит из импульса преамбулы, двух байт адреса (прямой и инверсный) и двух байт команды (прямой и инверсный), рис.3.
Рис.3
Принципиальная схема эмулятора пульта управления RGB ламой (рис.4). абсолютно идентична схеме эмулятора пульта управления кондиционером. Применение микроконтроллера 12F683 обусловлено тем, что в нем есть аппаратный ШИМ, с помощью которого формируется несущая ИК- команд частотой 38 кГц. Кнопка S1 предназначена для запуска тестового режима, при котором последовательно прогоняются все возможные режимы:
включение;
5 ступеней регулировки яркости вниз;
5 ступеней регулировки яркости вверх;
5 оттенков красного цвета;
5 оттенков зеленого цвета;
5 оттенков синего цвета;
белый цвет;
режим Flash;
режим Strobe;
режим Fade;
режим Smooth;
выключение.
Рис.4
Ниже (рис.5) приведена таблица соответствия команд RS485, формируемых радиомодулем кодов и соответствующих им ИК-посылок. Для примера рассмотрим всю цепочку формирования команды управления режима «Включить». При нажатии этой кнопки в web-интерфейсе на радиомодуль по RS485 приходит команда записать в регистр значение 14. Это является для радиомодуля «указанием» сформировать радиопосылку с кодом AB CD 26. Эмулятор пульта принимает указанный код и сравнивает его с сохраненными кодами в памяти. Определив, что такой код существует с привязкой к идентификатору 14 (AB CD 26 14), эмулятор формирует ИК-посылку, «модулированную» значением B0, что равнозначно нажатию на пульте кнопки «Включить».
Рис.5
В таблице так же приведена адресация всех кодов (принимаемых и эмулируемых) для их распределения в области памяти EEPROM микроконтроллера. Под принимаемый радиокод отводится четыре ячейки памяти (непосредственно сам код три байта плюс идентификатор – один байт), под эмулируемую ИК-посылку – одна ячейка. Здесь может возникнуть вопрос, почему записывается только один байт, ведь выше, при разборе протокола NEC говорилось, что кодовая посылка без учета импульса преамбулы состоит из четырех байт (двух байт адреса и двух байт команды). Дело в том, что адрес для всех команд является одним и тем же – 00 и он прописан прямо в программе формирования кода. Инверсные байты адреса и команды формируются так же в программе путем инвертирования из прямых адреса и команды . Следовательно, для формирования каждой ИК-посылки достаточно указать значение только прямой команды.
Возможна ситуация, что у вас пульт формирует команды с другими значениями. В таком случае их необходимо предварительно считать с пульта с помощью фотоприемника и простейшего логического анализатора и заменить данные в соответствующих ячейках EEPROM.
Несколько слов о записи команд управления в радиомодуль. Так как радиомодуль должен формировать 24 команды, а EEPROM в нем небольшая, то используется так называемый «пользовательский» код. Более подробно, что это такое, можно почитать в статье с описанием радиомодуля. Здесь же только отметим, что для работы эмулятора пульта в ячейки EEPROM радиомодуля 78, 79, 7A необходимо записать соответственно значения AB СD 00.
На рис.6 показан пример оформления web-интерфейса эмулятора пульта. При желании его можно стилизовать под реальный пульт, наложив соответствующую картинку.
Рис.6
В архиве находится прошивка микроконтроллера с уже прописанными командами, html страница web-интерфейса и скрипт с макросами Python, формирующими команды управления по RS485.