Kontrolliere KODI mit vorhandener Fernbedienung

Kontrolliere KODI mit vorhandener Fernbedienung

Show All Items

Fur den Zugriff auf meinen Enigma2-Receiver habe ich in der Kuche einen Raspberry Pi B mit OpenELEC installiert.
Die Bedienung erfolgte nach der Konfiguration mit einer sehr guten Smartphone-App, doch warum ein weiteres Ger nutzen, wenn die TV-Fernbedienung sowieso genutzt wird. Aufgrund des Alters unterstutzt der Fernseher kein CEC und es musste eine andere Losung her:



Ein Arduino als virtuelle Tastatur (Keyboard) mit angeschlossenem IR-Empfger (IR-Sensor)

Verwendete Hardware:
Raspberry Pi mit KODI (XBMC)
Arduino und IR-Empfger
Fernbedienung (fur den TV bereits vorhanden)

Step 1: Stelle die bentigte Hardware zusammen.

Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung

Show All Items

Hardware:

  • Arduino Leonardo kompatibles Microkontrollerboard -> z.B. ATMEL 32U4 PRO Micro oder Genuino MICRO http://www.genuino.cc
  • USB Kabel
  • IR Empfger (Pinbelegung beachten) oder IR Empfgermodul (z.B. DFRobot oder Groove)
  • Media Center KODI – Raspberry Pi
  • Fernseher mit vorhandener Fernbedienung (TV Remote)

Step 2: Stelle die bentigte Software zusammen.

Kontrolliere KODI mit vorhandener Fernbedienung

Show All Items

Software zum Erstellen:

  • Arduino IDE (www.arduino.cc download)
  • Infrarot-Bibliothek (IRremote) schaue bei http://www.righto.com/ und suche nach “IRremote”

Sketches zum Hochladen auf den Arduino/Genuino:

  • Erfassen der IR-Signale und Ausgabe auf dem PC-Monitor:

IRrecvDemo.ino ist ein Beispiel aus der Infrarot-Bibliothek

  • Empfangen der IR-Signale und umsetzen in Tastatur-Befehle (Keyboard):

IR2KeyJW.ino ist an die erfassten IR-Signale und Tastaturbefehle anzupassen
(Download beim entsprechenden Schritt)

  • Kontrolliere KODI mit vorhandener Fernbedienung

    IRrecvDemo.ino

  • Kontrolliere KODI mit vorhandener Fernbedienung

    Arduino-IRremote-library-201.zip

Step 3: Gewnschte Zuordnung (Remote2Keyboard) festlegen

Kontrolliere KODI mit vorhandener Fernbedienung

Show All Items

Folgende Kodi-Tastaturbefehle sollen mit der Fernbedienung ausgefuhrt werden:

OpenELEC/KODI-Shortcuts – Tastaturbefehle

play – p
play/pause – space
stop – x
vorlauf – f
rucklauf – r
hoch – pfeil nach oben
links – pfeil nach links
rechts – pfeil nach rechts
runter – pfeil nach unten
select – enter
shutdown menue – s
back – backspace (loeschen)
exit – escape

Auf einem Foto oder Skizze der TV-Fernbedienung die Ausgabe fur die spere Verwendung notieren.

Step 4: Anschluss des Sensors am Arduino/Genuino/Microcontroller

Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung

Show All Items

IR-Sensor mit dem Arduino Leonardo kompatibler Microcontroller ATMEL 32U4 verbinden.

Kabelkodierung:

  • Schwarz – GND (-)
  • Rot – VCC (+)
  • Wei- ohne Belegung
  • Gelb – Signal

Anschluss:

Sensor – Genuino
GNG – GND
VCC – VCC
Signal – PIN 5 (Pinnummer fur Arduino-Sketch merken)

Beim Anschluss des Sensors (besonders ohne Breakout-Board) ist auf die Pinbelegung zu achten. Die Verbindung kann dauerhaft hergestellt werden, z.B. durch Anloten der Kabel an die Microcontrolleranschusse. Der IR-Sensor bleibt fur die Erfassung der IR-Signale und der speren Verwendung an den selben PIN (PIN 5) angeschlossen.

Step 5: Erfassen des Infrarot-Signales

Kontrolliere KODI mit vorhandener Fernbedienung

Show All Items



Zum Erfassen der IR-Signale wird tempor das Arduino-Programm “IRrecvDemo.ino” auf den Microcontroller geladen, siehe STEP 2. Das Programm erfasst die IR-Signale und druckt diesen als Hexadezimal-Zahl (0x????????) aus. Diese wird sper im endgultigen Programm benotigt.

Sketch auf den Arduino (mit angeschlossenem IR-Senor) hochladen.
Arduino am PC uber USB anschlien (ggf. noch vom Sketch hochladen angeschlossen)
Seriellen Monitor offnen (unter Menue: Werkzeuge) die Baudrate im Drop-Down-Menue auf 9600 stellen.

Die Fernbedienung auf den IR-Sensor ausrichten und die gewunschten Tasten nacheinander drucken und die Werte notieren. Dazu den im Seriellen Monitor ausgegebenen Wert in eine Textdatei fur die spere Verwendung kopieren.
z.B. Play-Taste auf Samsung-Remote ergibt B676A3B2 dies wird sper im endgultigen Programm zu 0xB676A3B2.

BEISPIEL: ERGEBNIS DER ERFASSTEN IR-SIGNALE FUeR TV-REMOTE: SAMSUNG – BN59-00618A – STB PLAY 0xB676A3B2 STOP 0x1478EC78 FORWARD 0x395AECF4 REWIND 0xC1E6EB16 UP 0xE8105F4 DOWN 0x1114CBF6 LEFT 0xC1A1B332 RIGHT 0x9F953498 ENTER 0xD7064AD8 EXIT 0x558A0912 BACK 0xB2D45698 // menue button POWER 0x40CF3F38 // shutdown menu

Wichtig: Jeder Fernbedienungs-Typ hat seine eigenen Werte (HEX-Zahlen)

Step 6: Erstellen des endgltigen Programmes IR2Key.ino

Alle gewunschten Fernbedienungstasten wurden erfasst und notiert.

Im dem zu erstellenden Sketch IR2Key.ino wird eine Zuordnung zwischen IR-Singnal und KODI-Tastaturbefehl nach folgendem Muster vorgenommen:

* play – p // KODI Tastaturbefehl #define PLAY 0xB676A3B2 // IR-Signal im HEX-Format PLAY zuordnen #define PLAY_KEY Keyboard.write(112); // ASCII for p PLAY_KEY zuordnen case PLAY: // Arduino/Genuino-Code – wenn PLAY erfasst, dann PLAY_KEY; // PLAY_KEY (also “p”‘) ausfuhren break;

Fur meine Fernbedienung ergibt sich folgendes Programm IR2KeyJW.ino:

/*
* IR2KeyJW: based on IRrevcDemo (Version 0.1 July, 2009) of Ken Shirriff arcfn.com * Remote signal to keyboard use with openELEC * An IR detector/demodulator must be connected to the input RECV_PIN. * Modified by JensLab at Feb, 2015 * OpenELEC / kodi – shortcuts * play – p * play/pause – space * stop – x * vorlauf – f * rucklauf – r * up – pfeil nach oben * left – pfeil nach links * right – pfeil nach rechts * down – pfeil nach unten * select – enter * shutdown menue – s * back – backspace (loeschen) * exit – escape */ #include int RECV_PIN = 5; IRrecv irrecv(RECV_PIN); decode_results results; // Recorded IRcodes (here SAMSUNG-TV Remote) #define PLAY 0xB676A3B2 #define STOP 0x1478EC78 #define FORWARD 0x395AECF4 #define REWIND 0xC1E6EB16 #define UP 0xE8105F4 #define DOWN 0x1114CBF6 #define LEFT 0xC1A1B332 #define RIGHT 0x9F953498 #define ENTER 0xD7064AD8 #define EXIT 0x558A0912 #define BACK 0xB2D45698 // menue button #define POWER 0x40CF3F38 // shutdown menu // Mediaplayer hot keys #define PLAY_KEY Keyboard.write(112); // ASCII for p //Keyboard.write(32); // ASCII code for space #define STOP_KEY Keyboard.write(120); // ASCII for x #define FORWARD_KEY Keyboard.write(102); // ASCII for f #define REWIND_KEY Keyboard.write(114); // ASCII for r #define UP_KEY Keyboard.write(KEY_UP_ARROW); // Keyboard.press(KEY_UP_ARROW); delay(100); Keyboard.releaseAll(); #define DOWN_KEY Keyboard.write(KEY_DOWN_ARROW); // Keyboard.press(KEY_DOWN_ARROW); delay(100); Keyboard.releaseAll(); #define LEFT_KEY Keyboard.write(KEY_LEFT_ARROW); // Keyboard.press(KEY_LEFT_ARROW); delay(100); Keyboard.releaseAll(); #define RIGHT_KEY Keyboard.write(KEY_RIGHT_ARROW); // Keyboard.press(KEY_RIGHT_ARROW); delay(100); Keyboard.releaseAll(); #define ENTER_KEY Keyboard.write(KEY_RETURN); #define EXIT_KEY Keyboard.write(KEY_ESC); #define BACK_KEY Keyboard.write(KEY_BACKSPACE); // menue button #define POWER_KEY Keyboard.write(115); // ASCII for s, shutdown menu void setup() { Serial.begin(9600); // for debugging irrecv.enableIRIn(); // Start the receiver Keyboard.begin(); // Start keyboard } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); // for debugging // select action response to IR input switch(results.value) { case PLAY: PLAY_KEY; break; case STOP: STOP_KEY break; case FORWARD: FORWARD_KEY break; case REWIND: REWIND_KEY break; case UP: UP_KEY break; case DOWN: DOWN_KEY break; case LEFT: LEFT_KEY break; case RIGHT: RIGHT_KEY break; case ENTER: ENTER_KEY break; case EXIT: EXIT_KEY break; case BACK: BACK_KEY break; case POWER: POWER_KEY break; } irrecv.resume(); // Receive the next value } }

Dieses Programm auf den Leonardo kompatiblen Microcontroller (Arduino/Genuino) hochladen.



  • Kontrolliere KODI mit vorhandener Fernbedienung

    IR2KeyJW.ino

Step 7: Anschlieen an Raspberry Pi – Computer und nutzen

Kontrolliere KODI mit vorhandener Fernbedienung

Show All Items

Der Infrarot-Empfger-in-Tastaturbefehl-Umwandler ist fertig und wird so hinter dem Fernseher versteckt, dass das Fernbedienungssignal ausreichend auf den IR-Sensor strahlt.

Step 8: Bilder zur IR-Signalerfassung

Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung
Kontrolliere KODI mit vorhandener Fernbedienung

Show All Items

  • 00 Aufbau
  • 01 Arduino-IRremote Lib kopieren

02 Arduino-IRremote Lib umbenennen

02b Arduino-IRremote Lib umbenennen in IRremote

03 Arduino-IRremote Lib prufen

04 IRrecvDemo laden

05 Seriellen Anschluss bestimmen

06 Sketch hochladen

07 Seriellen Monitor oeffnen

08 Baud-Rate einstellen

09 HEX notieren

Step 9: Fazit

Mit dem modifizierbaren IR2KeyJW.ino Sketch kann auf derungen der notwendigen Tastaturbefehle (inkl. Kombinationen) einfach reagiert werden. Eine derung am Media-System ist nicht erforderlich. Somit muss beispielsweise kein LIRC im Hintergrund laufen.
Des Weiteren konnte das Arduino-IR-Modul zur PC Fernsteuerung umgeschrieben werden. Der groe Vorteil: nur noch ein Ger zur Bedienung auf dem Tisch.

Danke an Massimo Banzi und Team http://www.arduino.cc fur die Arduinoplatform.
Danke an http://www.sparkfun.com und http://www.adafruit.com fur die guten Anleitungen.
Danke an Ken Shirriff von http://www.arcfn.com bzw. http://www.righto.com/ fur das Programm.

Die Arduino-Platform wird fur Europa von www.arduino.org (Arduino S.R.L – Italy) hergestellt.
Die Genuino-Platform wird von Partnern der www.arduino.cc (Arduino LLC) hergestellt.

Die Markenrechte liegen bei den Rechteinhaber.

raspberry-pi – Kontrolliere KODI mit vorhandener Fernbedienung, in category: technology