USB пульт для выключателей Livolo

Сделал небольшой проект ус-ва и софта к нему для управления выключателями Livolo, работающими от пульта 433 MHz. Такие:

Девайс работает заместо пульта, отправляет любые коды кнопок, переданных ему с хоста по USB.

Делал первоначально для модуля DigiSpark от Digistump, на базе Attiny85, потому что были “в загашнике” и удобный для меня формат готовой маленькой платы с USB разъемом сразу
на плате, чтобы без проводов подключить сразу в USB разъем.

В принципе сейчас по идее проект должен заработать на любом стандартном модуле Arduino да и с минимальными доработками и на голом контроллере. Ес-но только придется немного аппаратной части для USB добавить (парочка стабилитронов 3.3В, если контроллер от 5В работает и пару резисторов по линиям D+/D-) и конфиг V-USB поменять. Соб-но USB часть сделана на старом-добром программном V-USB в виде HID ус-ва.

Софт для хоста идет с проектом, простая консольная утилитка кросс-платформенная - в параметрах нужно просто указать ID пульта и ID кнопки. Либо придумать свои и привязать к выключателю, либо если хочется совместно с пультом использовать - считать коды пульта (скетчи в инете есть, на форуме arduino.cc к примеру) и использовать их.

Для передатчика нужно использовать любой “глупый” OOK передатчик, работающий на частоте 433 MHz. Я использую модули SYN115, на алишке за копейки есть.

Проект весь тут: GitHub - N-Storm/DigiLivolo: Firmware & software to control Livolo RF 433 Mhz light switches

Исходники, описание и т.п. Бинарники прошивки HEX/ELF и софта под Windows/Linux собираются из исходников там же на гите автоматом - можно просто скачать и прошить. Если кому нужна будет помощь поменять конфиг по другую ардуинку - пишите, без проблем помогу / доработаю проект. Там чуть-чуть осталось доделать для большей универсальности по части прошивки, не было нужды пока просто для себя это делать, но есть желание завершить проект по этой части. )

PS: Код для передачи кнопок по радио использовал сначала либу с форума arduino.cc, но потом разобрался подробнее сам - не понравилось как сделано было. Передача на delayMicroseconds(). Написал свою либу над ней в итоге, которая работает на аппаратном таймере и куда точнее работает, не мешая работе V-USB. Чтобы освободить Timer1, который во фреймворке DigiStump заняли для millis() - поправил конфиг ядра и перевесил millis() на Timer0. Мод ядро с проектом лежит. Собирать из исходников удобнее в PlatformIO, хотя можно и в Arduino IDE. В ридмишке на гите написано как.

Выпустил новую версию 0.6.3 - “причесал” код, улучшил некоторые места, что должно поднять точность радио передач, пофиксил несколько багов (сборка под macOS, управляющий софт мог некорректно определять версию прошивки и еще немного “мелочи”).