Arduino Leonardo (ATmega32U4) basierter IR Empfänger als USB HID Gerät.
Sendet alle Tasten direkt als Tastaturkommandos an den PC.
|
3 years ago | |
---|---|---|
AutoHotkey | 3 years ago | |
lib | 3 years ago | |
src | 3 years ago | |
README.md | 3 years ago | |
ir-fb.jpg | 3 years ago |
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.
Simpler Aufbau aus einem IR Receiver wie z.B. TSOP38238 und einem Arduino-kompatiblen "ProMicro" MCU Board. Wichtig ist die ATmega 32U4 MCU - nur diese unterstützt den notwendigen USB Modus.
IR-Receiver | MCU-Modul |
---|---|
Vcc | 5V |
GND | GND |
OUT | GPIO-2 |
Aufbauend auf das Arduino IRrecvDumpV2 code example.
Diese Fernbedienung sendet RC5 12-bit Codes.
RC5-Fernbedienungen wechseln bei jedem Tastendruck ein Togglebit, so dass der "Adressteil" des Codes 2 abwechselnde Werte hat, d.h. dies wechselt bei jedem Tastendruck. Hält man eine Taste gedrückt, wird sie fortlaufend mit dem selben Togglebit erneut gesendet, so dass ein Wechsel eindeutig aussagt, dass die Taste dazwischen losgelassen wurde.
Die IRremote library erzeugt daraus 3-stellige HEX codes, deren erste Stelle (in meinem Code als Prefix bezeichnet) je nach Status des Togglebit immer 7 oder F ist.
IR-Code demzufolge: 0x7** oder 0xF** - ** siehe Tabelle
Fernbedienung | IR-Code | Tastencode |
---|---|---|
Home/Go | BB | WINDOWS-Taste |
Power | BD | System Sleep (kurz), Shutdown (lang) |
TV | 9C | CTRL+ALT+WIN+F1 |
Videos | 98 | CTRL+ALT+WIN+F2 |
Music | 99 | CTRL+ALT+WIN+F3 |
Pictures | 9A | CTRL+ALT+WIN+F4 |
Guide | 9B | CTRL+ALT+WIN+F5 |
Radio | 8C | CTRL+ALT+WIN+F6 |
Pfeil nach links ← | 96 | ← |
Pfeil nach oben ↑ | 94 | ↑ |
Pfeil nach rechts → | 97 | → |
Pfeil nach unten ↓ | 95 | ↓ |
OK | A5 | RETURN |
Back/Exit | 9F | BACKSPACE |
i/MENU | 8D | ESC |
Prev.Ch | A4 | [derzeit nichts] |
Volume + | 90 | MEDIA VOLUME UP (repeat aktiv) |
Volume - | 91 | MEDIA VOLUME DOWN (repeat aktiv) |
Volume Mute | 8F | MEDIA VOLUME MUTE |
CH + | A0 | PAGE UP |
CH - | A1 | PAGE DOWN |
◉ REC | B7 | [derzeit nichts] |
◼ STOP | B6 | MEDIA STOP |
► PLAY | B5 | MEDIA PLAY/PAUSE |
❚❚ PAUSE | B0 | MEDIA PLAY/PAUSE |
◄◄ REWIND | B2 | MEDIA REWIND (repeat aktiv) |
►► FAST FORWARD | B4 | MEDIA FAST FORWARD (repeat aktiv) |
❚◄ PREVIOUS | A4 | MEDIA PREVIOUS TRACK |
►❚ NEXT | 9E | MEDIA NEXT TRACK |
1 | 81 | 1 |
2 | 82 | 2 |
3 | 83 | 3 |
4 | 84 | 4 |
5 | 85 | 5 |
6 | 86 | 6 |
7 | 87 | 7 |
8 | 88 | 8 |
9 | 89 | 9 |
0 | 80 | 0 |
* | 8A | [derzeit nichts] |
# | 8E | [derzeit nichts] |
RED | 8B | CTRL+ALT+WIN+F7 |
GREEN | AE | CTRL+ALT+WIN+F8 |
YELLOW | B8 | CTRL+ALT+WIN+F9 |
BLUE | A9 | CTRL+ALT+WIN+F10 |
Um Aktionen auf die Tastenkombinationen der Sondertasten auszuführen verwende ich ein simples AHK-Script, welches ein weiteres AHK-Script startet. Details siehe /AutoHotkey