Проект Brisk4t «Tossed The TV — Kept The Remote» (TTVKTR) — это прошивка с открытым исходным кодом для USB-плат Raspberry Pi RP2040, предназначенная для уменьшения количества электронных отходов путем преобразования старых ИК-пультов в презентационные кликеры.
Большинство плат Raspberry Pi RP2040 с USB-портами должны подойти, но проект выделяет Waveshare RP2040-Zero в сочетании со стандартным 38 кГц инфракрасным приёмником благодаря его компактным размерам и низкой цене ( $4–5 ). Проект также использует встроенный RGB-светодиод для цветовой индикации слоя.
На этом аппаратная часть заканчивается. Для сборки потребовалась лишь базовая пайка ИК-приёмника к выводам GPIO 28 (OUT), 5V или 3.3V и GND. Ничего сложного. Светодиод WS2812 RGB уже подключён к GPIO 16. Была предпринята попытка найти USB-платы RP2040 со встроенным ИК-приёмником, но таких не обнаружилось.

Прошивка принимает ИК-коды от стандартного 38 кГц приёмника и преобразует их в USB HID-отчёты на основе JSON-конфигурации, хранящейся в файловой системе устройства. Однако пользователям не нужно редактировать JSON вручную, поскольку инструмент настройки на основе браузера взаимодействует через Web Serial, позволяя пользователям назначать кнопки, обучаться ИК-кодам и настраивать раскладки аналогично VIA или QMK для механических клавиатур и макропадов. Это отличает прошивку TTVKTR от других подобных попыток, таких как Adafruit pIRkey и CH32V003-USB-IR-Receiver , которые требуют ручного программирования для каждого пульта.

TossedTheTVKeptTheRemote web UIПользовательский интерфейс предоставляет следующие функции:
- Интерфейс настраиваемых привязок клавиш в браузере для назначения кнопок пульта на клавиши, элементы управления медиа или пользовательские действия.
- Несколько слоев для одного пульта, при этом RGB-светодиод платы отображает выбор слоя.
- Поддержка многошаговых вводов, включая комбинации с модификаторами, повторные нажатия и цепные действия.
- Раскладки позволяют четко различать разные ИК-пульты.
- Ручное редактирование конфигурации с помощью JSON-редактора.
Пример JSON-файла, хранящегося в /settings.json в разделе платы:
{
"ir": {
"modeChangeCode": "0xC40387EE",
"modeCount": 2,
"receivePin": 28,
"handleRepeat": true,
"repeatInitialDelayReports": 5
},
"led": {
"pin": 16,
"modeColors": ["0xFF0040", "0x0080FF"],
"brightnessPercent": 10
},
"modes": [
{
"name": "Layer 1",
"slots": [
{ "irCode": "0xC40387EE", "type": "consumer", "key": "0xCD" },
{ "irCode": "0x...", "type": "keyboard", "key": "0x28" },
{ "irCode": "0x...", "type": "keyboard", "key": "0x1D", "mods": "0x01" },
{ "irCode": "0x...", "type": "mode_switch" },
{ "irCode": "0x...", "type": "text", "value": "hello world" },
{ "irCode": "0x...", "type": "combo", "steps": [
{ "type": "keyboard", "key": "0x04", "mods": "0x01" },
{ "type": "keyboard", "key": "0x4C" }
]}
]
}
],
"layouts": [
{
"name": "Default Layout",
"buttons": [
{ "irCode": "0x...", "x": 0, "y": 0 },
{ "irCode": "0x...", "x": 1, "y": 0 }
]
}
]
}
Примечание: требуется Chrome или другой браузер с поддержкой Web Serial; например, Firefox не поддерживается.
Исходный код прошивки (Arduino/PlatformIO) и веб-интерфейса (HTML+JavaScript), а также инструкции по сборке кода и началу работы доступны на GitHub .
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.


