Arduino Leonardo (ATmega32U4) basierter IR Empfänger als USB HID Gerät.
Sendet alle Tasten direkt als Tastaturkommandos an den PC.

FloKra 57102a114b added config variable enableVolumeButtons - if set to false Vol+, Vol- and Mute commands will not be sent via USB to PC so that they can be used with a different IR-receiver i.E. to control to an AVR 2 years ago
AutoHotkey f2d09d57fd init checkin 2 years ago
lib f2d09d57fd init checkin 2 years ago
src 57102a114b added config variable enableVolumeButtons - if set to false Vol+, Vol- and Mute commands will not be sent via USB to PC so that they can be used with a different IR-receiver i.E. to control to an AVR 2 years ago
CHANGELOG.md 0765efc887 - 2022-01-11 2 years ago
RC-Hauppauge.md 75eda9a675 Doku aktualisiert 2 years ago
RC-Pioneer.md 2ef332e8dd Doku upd 2 years ago
README.md 6614155553 - HOLD-Mode bei RC5/RC6: anstatt repeats zu senden (eigene Keyboard Tastendrücke) wird bei Tasten, die auf "HOLD" konfiguriert sind die Taste nicht sofort (virtuall) losgelassen. Wird die Taste der Fernbedienung weiter gehalten so bleibt die virtuelle Keyboardtaste gedrückt, bis die FB-Taste losgelassen wurde (mit timeout). 2 years ago
ir-fb.jpg f2d09d57fd init checkin 2 years ago

README.md

IR-PC-HID-Remote

Arduino ProMicro/Leonardo (ATmega32U4) basierter IR Empfänger als USB HID Gerät. Sendet alle Tasten direkt als Tastaturkommandos an den PC.

In habe das an einem Nachmittag/Abend entwickelt um eine vorhandene alte Fernsteuerung einer alten Hauppauge TV-Karte mit meinem mit Windows 10 und KODI betriebenen Media Center PC benutzen zu können. Ursprünglich wollte ich nur einen einfachen Arduino-basierten Empfänger (das Code Example IRrecvDumpV2) aufbauen, der die empfangenen Codes seriell an den PC überträgt, welche dann dort von einem Agent-Programm in Tastencodes umgesetzt werden.

Tests haben gezeigt, dass das aus verschiedenen Gründen weniger zuverlässig ist, vor allem timingkritische Vorgänge sind auf der MCU besser aufgehoben. Daraus ist dann dieser Arduino-Sketch mit direkter USB-HID-Unterstützung geworden, da ich zufällig noch einen ATmega 32U4 basierten "ProMicro" clone herumliegen hatte.

Daher habe ich mich dann entschieden, die Sondertasten einfach Tastenkombinationen senden zu lassen, welche dann am PC mit AutoHotkey einfach verarbeitet werden können.

Der Code ist simpel gestrickt und die Tastencodes meiner Fernsteuerung sind hard coded. Also eher ein prove-of-concept.

Update 05.01.2022:

  • Unterstützung für RC5/RC6-Fernbedienungen verbessert, Power-Button Handling verbessert, TaskSwitch-Handling neu (ALT+TAB), bessere Unterstützung für verschiedene IR-Codes gleichzeitig, z.B. Pioneer und NEC.

  • Mehrfachauslösung wird nun in mehreren Stufen schneller, bei guter Response des einzelnen Tastendrucks (zumindest bei RC5/RC6 Remotes).

Update 07.01.2022:

  • HOLD-Mode bei RC5/RC6: anstatt repeats zu senden (eigene Keyboard Tastendrücke) wird bei Tasten, die auf "HOLD" konfiguriert sind die Taste nicht sofort (virtuall) losgelassen. Wird die Taste der Fernbedienung weiter gehalten so bleibt die virtuelle Keyboardtaste gedrückt, bis die FB-Taste losgelassen wurde (mit timeout).
  • HOLD-Mode auch für OK/ENTER und BACK: ermöglicht in Kodi das Kontextmenü bzw. das Shutdown-Menü per langem Tastendruck zu erreichen

CHANGELOG

Hardware

Simpler Aufbau aus einem IR Receiver wie z.B. TSOP4838, TSOP38238 und einem Arduino-kompatiblen "ProMicro" MCU Board. Wichtig ist die ATmega 32U4 MCU - nur diese unterstützt den notwendigen USB Modus.

Anschluss

IR-Receiver MCU-Modul
Vcc 5V
GND GND
OUT GPIO-2

Software

Aufbauend auf das Arduino IRrecvDumpV2 code example.

Libraries

  • Arduino v1.8.13, Arduino AVR Boards v1.8.3
  • HID-Project v2.8.2 Für die USB-HID Kommunikation, da die in Arduino (Stand Arduino IDE v1.8.13 mit Arduino AVR Boards v1.8.3) enthaltenen HID-Funktionen keine Media Keys wie Play/Pause, Stop, etc. unterstützen.
  • IRRemote v2.0.1

Features

  • IR codes empfangen, in Tastaturcodes umsetzen und via USB-HID an den angeschlossenen PC senden
    • Media Keys wie Play/Pause, Stop, Fast-Forward, Rewind... als entsprechende "Media Keyboard" Tastendrücke
    • Sleep/Herunterfahren durch kurz/lang drücken der Power-Taste
    • Steuerkreuz auf Pfeiltasten zur Menünavigation
  • die wichtigsten Tasten der Fernbedienung senden die naheliegenden Befehle,
  • Sondertasten willkürlich festgelegte Tastenkombinationen, z.B. um mit AutoHotkey ein Programm zu starten, wenn die blaue Taste der Fernbedienung gedrückt wurde
  • Mehrfachauslösung bei gehaltener Taste unterdrücken (außer bei bestimmten Tasten), bei Tasten mit konfiguriertem Repeat wird die Rate in 2 Stufen schneller.

Fernbedienungen

Hauppauge

Pioneer AVR

AutoHotkey

Um Aktionen auf die Tastenkombinationen der Sondertasten auszuführen verwende ich ein simples AHK-Script, welches ein weiteres AHK-Script startet. Details siehe AutoHotkey

Bekannte Probleme

  • Aufwecken des PC funktioniert nicht wenn der PC heruntergefahren ist, obwohl es mit verschiedenen anderen USB Keyboards geht (aufwecken aus dem Standby funktioniert aber). Die Ursache habe ich nicht herausgefunden.

Ich vermute dass der Arduino USB Core mitbekommt wenn der PC abgeschaltet ist, und dann einfach keine Tastendrücke gesendet werden.