An meiner Raspberry Pi hatte ich bereits ein 16×2 LCD (Data Vision 16210 VZFHLY) betrieben – dieses soll nun auch an der Banana Pi laufen:
Das LCD ist einfach an die Banana Pi anzuschließen. Folgende Pins müssen dazu verbunden werden:
GPIO Header LCD 26 4 (RS) 24 6 (EN) 22 11 (D4) 18 12 (D5) 16 13 (D6) 12 14 (D7) 6 1 GND 6 5 /RW (GND) 2 2 (5V) 3 wird über ein Poti verbunden 2 15 LED+ (5V) 6 16 LED- (GND)
Es muss beachtet werden, dass die Banana Pi nur 3,3V Pegel liefert (und auch aushält). Zum ansteuern der Pins ist das ok, aber /RS sollte dann unbedingt auf GND gelegt werden, damit kein Read-Befehl des LCD die Pegel auf 5V zieht und die Banana Pi beschädigt. Die Hintergrund-Beleuchtung dieses LCD zieht über 500mA – das Netzteil meiner Banana Pi mit seinen 1,2A ging damit in die Knie und der Rechner schaltete sich aus. Es ist also entweder ein stärkeres Netzteil notwendig oder des LCD muss ohne Hintergrundbeleuchtung betrieben werden. Ohne Beleuchtung verbraucht das Display kaum über 6mA.
Die Ansteuerung soll zuerst mal unter Ruby erfolgen. Dazu muss ruby und das Gem wiringpi installiert werden:
apt-get install ruby ruby-dev build-essential
gem install wiringpi
Ein erster Versuch mit meinem bereits bestehendem Programm lieferte keinen Erfolg. Zum Debuggen kam mein ultrakleines Oszilloskop Xprotolab von gabatronics zum Einsatz:
Mit ihm konnte ich feststellen, dass kein einziger Ausgang der Banana Pi korrekt gesetzt wurde. Für weitere Tests benutze ich dann das Programm gpio um gezielt die GPIO Pins zu setzen.
gpio readall gpio export 11 out gpio write 11 1 gpio write 11 0
Auch mit der Hilfe von gpio wurden keine Pins auf HIGH oder LOW gesetzt. Auf der Webseite von www.lemaker.org fand ich dann einen Verweis auf eine angepasste Version von WiringPi für die Banana Pi.
Die neue WiringPi Library ist schnell kompiliert und installiert mit
cd WiringPi ./build
Der nächste Test mit gpio verlief bereits erfolgreich und ich konnte am Oszilloskop das Toggeln meines Pins beobachten.
Als nächstes habe ich die LCD Beispieldatei aus dem WiringPi-Paket angepasst, kompiliert, gestartet und erfolgreich einen Text auf dem Display erhalten.
Jetzt war wieder mein Ruby-Programm dran – leider wieder erfolglos. Kein Text auf dem Display und auch keine Signale auf dem Oszilloskop. Also spricht die wiringpi-Library des Ruby-Gems die Ports noch immer nicht richtig an.
Unter /var/lib/gems/1.9.1/gems/wiringpi-1.1.0/ext/wiringpi/ habe ich die .c und .h Dateien gefunden, die leider nur für die Raspberry Pi sind. Die Dateien
wiringShift.h wiringShift.c wiringPi.h wiringPi.c
habe ich durch jene für die Banana Pi ersetzt, mit make kompiliert und mit make install installiert.
Der nächste Test mir Ruby verlief dann auch erfolgreich