RPi - LCD-Ansteuerung
- Details
- Zugriffe: 15043
Seit Kurzem ist für den Raspberry Pi eine Erweiterungs-Platine, die sogenannte RPi-ShieldBridge (Watterot), erhältlich. Sie ermöglicht die einfache Verbindung zur Arduino-Periphrie, besitzt einen eigenen ATmega328 Prozessor mit Arduino Bootloader und stellt auch Anschlüsse für ein 2,8" Touch-Farb-LCD zur Verfügung mit einer Auflösung von 240 x 320 Pixel (MI0283QT-9A). Da liegt es nahe, einmal ein solches Display am RPi anzuschließen und zu testen.
Das als Kit gelieferte Shield ist rasch aufgebaut, nur die Steckanschlüsse sind zu verlöten, dann kann die Platine eingesetzt werden. Soll auch das Touchpanel verwendet werden muss noch die Lötbrücke 'JIRQ' für den Interrupt geschlossen werden. | ||
Auch bei diesem Adapter sind lediglich zwei Steckerleisten zu verlöten. Danach kann die LCD-Platine mit der RPI-Shieldbridge und dem RPi verbunden werden. | ||
Als nächstes brauchen wir einen geeigneten Treiber für das LCD und das Touchpanel. Hier war Lallafa's Blog und notro's fbtft Treiber (ili9341fb) für die Umsetzung sehr hilfreich. Wichtig ist bei der Auswahl des Treibers darauf zu achten, welcher Typ des LCD's verwendet wird. Hier ist es das LCD mit der Endung '-9A'. | ||
Am einfachsten und auch recht schnell geht die Software-Installation mit dem vorgefertigten Image von notro's GitHub (2013-05-25-wheezy-raspbian-2013-07-07-fbtft.img). Dort findet sich auch eine umfangreiche Erklärung zum Build-Prozess dieses Image's. | ||
Zur Erzeugung einer bootbaren SD-Card findet man für Windows/Mac bei Adafruit ein Tutorial mit Links zum Programm bzw. Skript, das einem diese verschiedenen Installations-Schritte abnimmt. Zum Start des Skripts wird das Terminal geöffnet und in das Verzeichnis gewechselt, indem sich das Image und das Installation-Skript (install) befindet. In diesem Fall wird das Laufwerk 5 'dev/disk1s1' gewählt und bestätigt, womit der Installationsprozess beginnt. Achten Sie dabei genau darauf, dass das richtige Laufwerk verwendet wird! |
Ist Alles normal verlaufen, wird die neue SD-Card mit dem RPi gebootet und dann so eingerichtet, wie im Beitrag RPi - Installation eines Betriebssystems besprochen.
Nun sind wir so weit, dass das Shield mit dem LC-Display auf den ausgeschalteten Raspberry aufgesteckt werden kann. Danach starten wir neu und man meldet sich wie gewohnt an. Möchte man sich die unterstützten Devices (LCDs) anzeigen lassen, kann man dies durch die folgende Eingabe am Terminal erreichen:
sudo modprobe fbtft_device name=list; dmesg | tail -30 |
Durch die Eingabe von 'list' für den Namen des Treibers, wird eine Liste mit den verfügbaren Treibern ausgegeben.
Jetzt kann das Display mit den LCD-Treibern getestet werden. Hierzu sind am Terminal die folgenden Anweisungen einzugeben:
sudo modprobe fbtft_device name=ili9341fb cs=0 rotate=1 sudo modprobe ili9341fb |
Zum Start der grafischen Oberfläche X Windows, noch ohne den Touchscreen, wird der Startbefehl mit dem Framebuffer verknüpft, in folgender Weise eingegeben:
FRAMEBUFFER=/dev/fb1 startx |
Waren die bisherigen Eingaben korrekt, muss sich nun nach kurzer Zeit X Windows auf dem LCD melden und kann dann auch mit der Maus bedient werden. Auch die Konsole kann auf ähnliche Weise gestartet werden. Hierfür geben Sie Folgendes ein:
con2fbmap 1 1 |
So könnte die Ausgabe an die Konsole auf dem kleinen LCD aussehen. |
Bisher hatten wir die Treiber nur 'versuchsweise' ausgegeben und nach jedem Neustart mussten sie wieder neu eingegeben werden, um das LCD anzusteuern. Soll dies beim Booten des Pi's automatisch ablaufen, müssen die Treiber fest installiert werden. Dies wird in der Datei '/etc/modules' gemacht, wofür man wiederum Administrator-Rechte benötigt. Fügen Sie der Datei die folgenden Angaben hinzu:
fbtft_device name=ili9341fb cs=0 rotate=1 ili9341fb |
Nach dem Neustart kann jetzt die Oberfläche, wie oben gezeigt, auf dem LCD gestartet werden.
Als nächstes soll nun das Touchpanel aktiviert werden. Beachten Sie hierbei nochmals, dass die Lötbrücke 'JIRQ' geschlossen sein muss. Ist 'xinput' und 'evtest' , die man für das Touchpanel benötigt, bereits installiert, kann die folgende Installation übersprungen und mit dem Test des Touchscreen's begonnen werden.
sudo apt-get -y install xinput evtest |
Danach gehen wir ähnlich wie oben vor. Zuerst testen wir wieder die Treiber mit den dazugehörenden Einstellungen:
sudo modprobe ads7846_device cs=1 speed=20000000 model=7846 \ swap_xy=1 pressure_max=255 x_min=250 x_max=3780 y_min=160 y_max=3930 \ x_plate_ohms=60 gpio_pendown=25 keep_vref_on=1 |
Bevor jetzt ein Ergebnis sichtbar wird, muss noch das X Windows und der Touchscreen gestartet werden:
FRAMEBUFFER=/dev/fb1 startx & DISPLAY=:0 xinput --set-prop 'ADS7846 Touchscreen' 'Evdev Axis Inversion' 0 1 |
wird fortgesetzt!
Hinweis:
Anders, als in den unten aufgeführten Links sind die Chip Select Signalpegel 'cs' bei der obigen Ausführung folgendermaßen initialisiert:
LCD-Treiber: cs=0, Touchpanel: cs=1
Links: |
||
Lallafa's Blog | Watterott's new RPi-ShieldBridge | |
notro's fbtft Treiber | Linux Framebuffer drivers for small TFT LCD display modules | |
notro's GitHub | Image mit LCD-Treiber 2013-05-25-wheezy-raspbian-2013-07-07-fbtft.img |
|
notro's GitHub Touchpanel | Touchpanel | |
Adafruit | Adafruit Raspberry Pi lesson 1 preparing an sd card for your raspberry pi | |
RPi-SD-Installer-OSX | Raspberry Pi SD Installer OSX von Ray Vijoen |