Raspberry Pi mit RTC und IR-Empfänger nachrüsten unter OpenELEC, Teil 1/3

  • Vorwort
    Da ich den RPi auch benutze wenn kein NTP-Server (Network Time Protocol) zur Verfügung steht und die richtige Uhrzeit und das Datum in XBMC angezeigt werden sollen, habe ich ihn mit einer Batteriegepufferten RTC (real-time clock) nachgerüstet. Auch die Fernbedienung über CEC (Consumer Electronics Control) des TV-Gerätes war für mich nicht zufriedenstellend, deshalb habe ich noch einen IR-Empfänger an den RPi angeschlossen.
    Auf dem RPi ist "OpenELEC XBMC Gotham 13.0-RC1" installiert.

    Bitte beachten
    Bitte die komplette Anleitung zuerst durchlesen, wenn alles verstanden wurde, die nötigen Werkzeuge vorhanden sind, und Frau/Mann es sich zutraut die Arbeiten durchzuführen, dann kann losgelegt werden.
    Um statische Aufladungen zu vermeiden und somit die Hardware zu beschädigen, sollte bei allen Arbeiten ein Anti-Statik-Armband verwendet werden.
    Einige Erfahrung im Umgang mit dem Lötkolben sollte vorhanden sein, um die nötigen Aufgaben durchzuführen.
    Zusätzlich wird ein PC benötigt, mit dem eine SSH-Verbindung zum RPi aufgebaut werden kann. Dies kann ein Linux-PC ein Windows-PC mit z.B. dem Programm PuTTY oder ... sein.

    DS1307 Real Time Clock Modul (RTC)
    Die DS1307 Real Time Clock ist ein Bausatz, zuerst müssen die Bauteile auf die RTC-Platine gelötet werden. Hierzu gibt es eine gute, englische, bebilderte Anleitung unter: Assembly. Abweichend ist hierbei zu beachten, dass die beiden 2,2 KOhm-Widerstände (R1 und R2) NICHT auf die Platine gelötet werden dürfen.

    Verdrahtung
    Die benötigten Litzen-Drähte können aus einem alten USB-Kabel, dem alten Anschlusskabel einer Maus oder ähnlich gewonnen werden.
    Für die Verdrahtung der GPIO-Steckleiste mit der RTC werden 4 (verschiedenfarbige) etwa 5 cm lange Litzen-Drähte benötigt. Die 3 Litzen-Drähte für den Anschluss an die 2,5 mm Klinkenbuchse des IR-Empfängers sollten etwa 11 cm lang sein.

    Verdrahtungs-Tabelle
    (Bereinigt 21.01.15, da die Tabelle scheinbar bei der Umstellung auf die neue Foren-Software zerstört wurde)

    Kerbe/Pin

    RTC

    Klinkenbuchse

    1

    -3 (TSOP-Vs)

    2

    5V-

    3

    SDA-

    5

    SCL-

    6

    GND2 (TSOP-GND)

    12

    -1 (TSOP-OUT)

    Die Drähte in die Pfostenbuchse einführen.

    Die Abdeckung der Pfostenleiste so weit aufsetzen, dass die Drähte gerade noch eingeschoben werden können, sie aber nicht herausspringen. Die Nase der Pfostenleiste muss auf der Seite sein, wo die Drähte herausschauen. Der Draht in der ersten Kerbe, gekennzeichnet mit einem kleinen Dreieck, entspricht dem Pin 1 des RPi, die zweite Kerbe dem Pin 2 usw. Wenn alle Drähte eingeführt sind und die richtige Lage nochmals überprüft wurde, die Abdeckung mit einer Zange auf die Pfostenleiste pressen.

    Die Lötansicht der Klinkenbuchse

    An Masse (GND) der RTC-Platine werden 2 Drähte gelötet, einer zur Pfostenleiste, der Andere zur Klinkenbuchse. Über die 3 Drähte die zu der Klinkenbuchse führen, ein etwa 5 cm langes Stück Schrumpfschlauch schieben und nicht vergessen, bevor die Klinkenbuchse verlötet wird, über die 3 Drähte jeweils ein kurzes Stück Schrumpfschlauch, zur Isolation, zu schieben. Nach dem verlöten die Schrumpfschläuche über die Anschlüsse der Klinkenbuchse, und den Schrumpfschlauch über die 3 Drähte schrumpfen.

    Ende Teil 1 von 3

    3 Mal editiert, zuletzt von AxelR (21. Januar 2015 um 15:22)

  • Die verdrahtete RTC-Platine kann nun auf das RPi-Board montiert werden. Hierfür wurde ein Abstandsbolzen für die MB-Befestigung von einem alten PC-Gehäuse verwendet. Es kann aber auch eine M3er Schraube verwendet werden. Der Abstandsbolzen sollte eine Lange von 8 mm haben, das ist der Abstand zwischen Oberseite RPi-Board und der Unterseite der RTC-Platine. Die Pfostenleiste auf den Pfostenstecker der RPi stecken.

    Gehäuse
    Hier wurde ein Teck-Berry Gehäuse verwendet. Um die Verriegelungslaschen des Deckels beim Öffnen nicht zu beschädigen, den Deckel auf der Seite mit dem Composite (gelb) Anschluss nach innen drücken und ihn dann vorsichtig nach oben ziehen, wenn er etwas geöffnet ist, sollten die Laschen auf der gegenüber liegenden Seite auch ausrasten.
    Auf der Seite wo sich der HDMI-Anschluss befindet, etwa 2,5 cm von der rechten Kante ein 6 mm Loch bohren, die Klinkenbuchse einführen und festschrauben.

    Eigentlich hat das Gehäuse zu wenig Lüftungslöcher, diese können nachträglich in den Deckel des Gehäuses gebohrt werden.

    IR-Empfänger
    Auf keinen Fall darf der IR-Empfänger, so wie er ist, an den RPi angeschlossen werden, die Bauteile sind die Falschen und er ist nicht richtig verdrahtet!
    Verwendet wird eine 3-Polige Klinkenbuchse, der Stecker des Empfängers ist aber 4-Polig. Das spielt keine Rolle, da die beiden hinteren Pole zusammengefasst werden und der Stecker dann so wie ein 3-Poliger funktioniert.

    Zuerst wird der Empfänger aufgeschraubt und die Platine entnommen. Das Anschlusskabel, die LED und der IR-Empfänger werden direkt über der Platine abgeschnitten, da die alte Platine als Schablone verwendet wird. Nun kann die Streifenrasterplatine zugeschnitten oder zugesägt und dann mit einer Feile auf das richtige Maß (20,3 mm x 26 mm) gebracht werden, wobei die Leiterbahnen in Längsrichtung laufen müssen. Nach dem Zuschneiden wird die Ausgebaute Platine über die Streifenrasterplatine gelegt und die beiden 4 mm Löcher durch die Streifenrasterplatine gebohrt.

    Nachdem die neue Streifenrasterplatine fertig gestellt ist, sollte sie etwa so aussehen:

    Ende Teil 2 von 3

  • Nun wird der IR-Empfänger eingebaut. Da dieser nach hinten geneigt ist, wird er in die Streifenrasterplatine gesteckt, etwas nach hinten gebogen und in die Abdeckhaube eingelegt. Somit ist sicher gestellt, dass er richtig abgewinkelt ist. In diesem Zustand wird er dann eingelötet.

    Zuletzt wird das Anschlusskabel eingelötet. Der IR-Empfänger den ich benutzt habe war mit folgenden Aderfarben beschaltet: Die Spitze des Klinkensteckers auf rot, der zweite Kontakt auf Weiß, der dritte auf schwarz (dünn) und der vierte auf schwarz (dick). Bitte dies Verdrahtung überprüfen!
    Die beiden schwarzen Drähte werden mit Bein 1 (GND), der weiße mit Bein 2 (Vs) und der rote mit Bein 3 (OUT) verbunden und verlötet. Nun kann der IR-Empfänger zusammengebaut werden.

    Die Montage der Hardware ist somit abgeschlossen.

    Konfiguration der Software
    Zum Editieren von Dateien verwende ich den Editor vi, wer lieber den Nano verwendet kann vi durch nano ersetzen.
    Der SSH-Server des RPi muss aktiviert werden: SYSTEM -> OpenELEC -> Services -> SSH aktivieren x
    Eine SSH-Verbindung zum RPi aufbauen, die IP-Adresse oder der Hostname des RPi müssen bekannt sein. Ein Terminal auf dem PC öffnen und eingeben:

    Code
    ~$ ssh root@hostname_des_rpi
    root@hostname_des_rpi password: openelec

    Um etwas mehr Komfort zu erhalten, eine Datei ".profile" anlegen, zur einfacheren Bedienung der Shell:

    Code
    ~# vi ~/.profile


    Inhalt: ~/.profile

    Code
    alias l='ls -lF'
    alias ll='ls -alF'

    Die SSH-Sitzung beenden und wieder Anmelden:

    Code
    ~# exit

    Nun muss, zum Auflisten von Datei und Verzeichnissen nicht mehr:

    Code
    ~# ls -al


    eingegeben werden, ein einfaches:

    Code
    ~# ll


    genügt.

    Konfiguration der RTC
    Das Kernel-Modul DS1307 ist unter dieser OpenELEC-Version bereits vorhanden.
    Laden des DS1307-Moduls:

    Code
    ~# modprobe rtc-ds1307
    ~# echo ds1307 0x68 > /sys/class/i2c-dev/i2c-1/device/new_device

    Das momentane Datum der RTC auslesen (1. Januar 2000 ...):

    Code
    ~# hwclock -r

    Die momentane Systemzeit ausgeben:

    Code
    ~# date

    Die Systemzeit stellen und überprüfen:

    Code
    ~# ntpdate ntp1.ptb.de
    ~# date

    Wenn die aktuelle Systemzeit korrekt ist, diese in die RTC schreiben:

    Code
    ~# hwclock -uw

    Dann nochmals die RTC und die Systemzeit ausgeben, hier kann es eine Abweichung von einer Sekunde geben:

    Code
    ~# hwclock -ur && date

    Wenn alles wie gewünscht funktioniert, die Konfiguration in das System schreiben:

    Code
    ~# vi ~/.config/autostart.sh


    Inhalt: ~/.config/autostart.sh

    Bash
    #!/bin/sh
    # RTC-Modul
    (modprobe rtc-ds1307; \
    echo ds1307 0x68 > /sys/class/i2c-dev/i2c-1/device/new_device; \
    hwclock -s; \
    sleep 20; \
    hwclock -uw)&
    
    
    exit 0

    Das Skript benötigt noch Ausführungsrechte:

    Code
    ~# chmod 755 ~/.config/autostart.sh

    Nun eine Neustart des Systems durchführen:

    Code
    ~# reboot

    Das war es, beim nächsten Booten wird die Zeit des RPi automatisch von dem RTC-Modul gelesen (hwclock -s). Wenn der RPi ein korrigiertes Datum und die Zeit, innerhalb von 20 Sekunden (sleep 20) von einem Zeitserver erhält, oder er erhält keine Daten, wenn kein Zeitserver ansprechbar ist, dann wird einfach die korrigierte Zeitserver-Zeit oder die aktuellen Systemzeit in die RTC geschrieben.
    Das ist nicht die eleganteste Lösung, aber ich habe keine Möglichkeit gefunden die Systemzeit-Daten beim herunterfahren des Systems in die RTC zu schreiben.

    Konfiguration der Fernbedienung
    Bitte die Konf-Daten.zip aus dem Anhang entpacken, darin befinden sich alle benötigten Dateien.
    Der Lircd benötigt eine Konfigurationsdatei speziell für die URC-7960 Fernbedienung.

    Anmerkung für Windows-Benutzer: Da unter Windows "scp" nicht zur Verfügung steht, sollte der Service "Samba" aktiviert werden, dann können die Konfigurationsdateien direkt in die Freigaben "configfiles" und "userdata" kopiert werden. Die Dateien aber auf keinen Fall mit einem ungeeigneten Windows-Editor bearbeiten. Nach dem die Daten kopiert wurden, sollte aus Sicherheitsgründen der Service "Samba" wieder deaktiviert werden.

    Kopieren der Lircd-Konfiguration:

    Code
    ~$ scp lircd.conf root@hostname_des_rpi:/storage/.config/

    Auch XBMC muss die Fernbedienung kennen und benötigt eine Konfigurationsdatei.
    Kopieren der Lircmap:

    Code
    ~$ scp Lircmap.xml root@hostname_des_rpi:/storage/.xbmc/userdata/

    Der RPi ist bereits für einige Fernbedienungen vorkonfiguriert, diese Konfigurationen passen nicht zur URC-7960 Fernbedienung, deshalb wird die eigene Konfiguration benutzt. Anmelden auf dem RPi per SSH und die Befehle in die autostart.sh einfügen:

    Code
    vi ~/.config/autostart.sh


    Neuer Inhalt der: ~/.config/autostart.sh

    Dies ist die komplette autostart.sh mit den eingefügten Befehlen.

    Die Fernbedienung muss nun konfiguriert werden, unter "game" den Code "1972" eingeben.

    Nach einem Reboot sollte die Fernbedienung die richtigen Befehle ausführen.

    Wenn alles Funktioniert, sollte der SSH-Server des RPi wieder deaktiviert werden, da das Passwort (openelec) allgemein bekannt ist.

    Der CEC-Adapter kann auch deaktiviert werden, da nun eine eigene Fernbedienung benutzt wird.
    Den CEC-Adapter deaktivieren: SYSTEM -> Einstellungen -> System -> Eingabegeräte -> Geräte - OK drücken
    CEC-Adapter - OK drücken
    Aktiviert -

    Einige Beispiel-Erklärungen zu den FB-Tasten:
    16:9: Videotext bei Live-TV
    list: Senderübersicht bei Live-TV
    mce: wird Musik abgespielt, gelangt man in die Visualisierung
    pop up x: öffnet Untermenüs, Infos beim Musik, Video -Abspielen
    -/--: Untertitel aktivieren/deaktivieren (wenn vorhanden)
    av: Audiokanal bei Videos/Live-TV umschalten (wenn mehrere vorhanden)

    Teileliste
    Die gleichen Teile können selbstverständlich auch von anderen Händlern bezogen werden, ich habe sie jedoch bei folgenden Adressen bezogen.

    EXP GmbH:
    DS1307 Real Time Clock breakout board kit (EXP-R15-142) - 8,57 €
    Kühlkörper Kit für Raspberry Pi (EXP-R12-016) - 5,95 €

    Reichelt Elektronik:
    Gehäuse für Raspberry Pi (TEK-BERRY SW) - 4,95 €
    IR-Empfänger-Module TSOP31238 38kHz (TSOP 31238] - 0,77 €
    Streifenrasterplatine, Hartpapier, 100x100mm (H25SR100) - 1,05 €
    Klinkeneinbaubuchse, 2,5mm Stereo (LUM KLB 13) - 0,85 €
    Pfostenbuchse, 26-polig (PFL 26) - 0,17 €
    Schrumpfschlauch 10er Pack 2:1, 2,4mm schwarz (SDH 2,4 SW) - 0,32 €

    Pollin Electronic‎
    Infrarotempfänger, 1,2m Anschlusskabel, 2,5mm Klinke 4pol (120 822) - 0,95 €

    Amazon
    Universal-Fernbedienung, One For All URC 7960 [Anzeige] - 18,99 €


    Nun wünsche ich allen, die sich entschlossen haben ihren RPi ein wenig umzubauen, vie Spaß.

    Ende Teil 3 von 3

  • Nachtrag zu dem Programm 'ntpdate', das bei OpenELEC 5.0 fehlt.

    Das Programm kann nachträglich auf die SD-Karte in die 'storage'-Partition kopiert werden. Dies Anleitung funktioniert nur unter Linux und auf einem Debian basierenden System, wie zum Beispiel Ubuntu.

    Benötigte Pakete vom Raspbian-Server herunterladen:

    Code
    ~$ wget http://mirrordirector.raspbian.org/raspbian/pool/main/o/openssl/libcrypto1.0.0-udeb_1.0.1e-2+rvt+deb7u14_armhf.udeb
    ~$ wget http://mirrordirector.raspbian.org/raspbian/pool/main/n/ntp/ntpdate_4.2.6.p5+dfsg-3.2_armhf.deb

    Pakete entpacken:

    Code
    ~$ dpkg -x libcrypto1.0.0-udeb_1.0.1e-2+rvt+deb7u14_armhf.udeb libcrypto1
    ~$ dpkg -x ntpdate_4.2.6.p5+dfsg-3.2_armhf.deb ntpdate

    Verzeichnisse erstellen und Dateien kopieren, die SD-Karte in einen Kartenleser schieben und am PC einstecken:

    Code
    ~$ sudo mkdir /media/$USER/Storage/bin
    ~$ sudo mkdir /media/$USER/Storage/lib
    ~$ sudo cp libcrypto1/usr/lib/libcrypto.so.1.0.0 /media/$USER/Storage/lib/
    ~$ sudo cp ntpdate/usr/sbin/ntpdate /media/$USER/Storage/bin/

    Die Pfade in der Profil-Datei erweitern:

    Code
    ~$ sudo vi /media/$USER/Storage/.profile

    Die SD-Karte umounten und wieder in den Raspberry Pi schieben. Das Programm 'ntpdate' kann nun wieder wie gewohnt ausgeführt werden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!