Преобразование старых ИК-пультов в презентационные кликеры с помощью USB-платы RP2040 и прошивки с открытым исходным кодом TTVKTR

Проект Brisk4t «Tossed The TV — Kept The Remote» (TTVKTR) — это прошивка с открытым исходным кодом для USB-плат Raspberry Pi RP2040, предназначенная для уменьшения количества электронных отходов путем преобразования старых ИК-пультов в презентационные кликеры.

IR remote control RP2040 USB HID

Большинство плат Raspberry Pi RP2040 с USB-портами должны подойти, но проект выделяет Waveshare RP2040-Zero в сочетании со стандартным 38 кГц инфракрасным приёмником благодаря его компактным размерам и низкой цене ( $4–5 ). Проект также использует встроенный RGB-светодиод для цветовой индикации слоя.

IR Remote control to presentation clicker RP2040 project

На этом аппаратная часть заканчивается. Для сборки потребовалась лишь базовая пайка ИК-приёмника к выводам GPIO 28 (OUT), 5V или 3.3V и GND. Ничего сложного. Светодиод WS2812 RGB уже подключён к GPIO 16. Была предпринята попытка найти USB-платы RP2040 со встроенным ИК-приёмником, но таких не обнаружилось.

Waveshare RP2040-Zero Pinout
Схема выводов Waveshare RP2040-Zero (вид сверху)

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

TossedTheTVKeptTheRemote web UI

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.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments