|
Linux-Projekte
für den Raspberry Pi
(in Python realisiert)
Ansteuerung
LCD-Display [C-Berry 28]
|
Bisher
wurden alle Projekte mit einem monochromen
LC-Display realisiert,
das genau so groß wie preiswert war. Damit war ich in meinen
Möglichkeiten allerdings begrenzt. Mehrere Temperaturlinien in
einer Grafik lassen sich auf einem schwarz/weiß Display ziemlich
schlecht darstellen.
Also war es nun daran, sich nach einer
genauso preiswerten Farb-Alternative umzusehen. Viele Displays
haben inzwischen 'Intelligenz' eingebaut. Will sagen:
Zeichensätze und Befehlsinterpreter für einfache Grafikbefehle
(Linien, Kreise, Texte). Dafür sind sie dann aber auch gleich
viel teurer.
Ich wollte mich aber zunächst an einem
einfachen 'dummen' Display versuchen. Hier fiel mir auch etwas
passendes ins Auge.
Es war das C-Berry 28 (das
Datenblatt dazu):
|
Bildquelle: adma-tec
|
Das
farbige TFT-Display :
ist
2,8“ groß
hat
eine Auflösung von 320 x 240Pixeln
kann
bis zu 256k Farben darstellen
wird
mit 3,3 Volt und 5,0 Volt betrieben
hat
eine SPI Schnittstellen
hat
eine weiße Hintergrundbeleuchtung
ist
im
Versandhandel günstig zu erwerben
Daher
fiel die Wahl auf dieses Produkt.
|
Obwohl
die Auflösung von diesem Display hier deutlich höher ist, sind
die Abmessungen kleiner als die von seinem monochromen
Bruder.
Bei der Programmierung der Schnittstelle
mußten
folgende
Punkte beachtet werden:
Das
Display...
… wird
über die SPI-Schnittstelle angesprochen. Daher ist SPI am
Raspberry freizuschalten.
Anleitungen dazu gibt es genügend
im Internet, aber nicht an dieser Stelle.
(Zu beachten ist,
daß bei aktuellen Betriebssystemen
die Freischaltung per Device-Tree erfolgen muß!!!)
...
hat KEINE 'Intelligenz'. Jeder Einzelpunkt muß also separat
gesetzt/ rückgesetzt werden.
...
besitzt KEINE internen Zeichensätze. Diese müssen selbst
erstellt werden.
|
Bildquelle: adma-tec
Dies
ist die Pinbeschreibung
|
Bildquelle: adma-tec
Und
hier die C-Berry Pinbelegung
|
Das
Modul wird einfach auf die GPIO-Stiftleiste des RaspberryPi
aufgesteckt und passt sowohl auf den 26, als auch auf den 40
poligen Header
Die SPI-relevanten Verbindungen sind
hierbei
|
GPIO
Pin
|
Beschreibung | Klartext
|
GPIO-Bezeichnung
|
|
15
|
RS
Befehl/Data
|
GPIO22
|
|
19
|
MOSI/
SDA
|
GPIO
10
|
|
21
|
MISO
(nicht verwendet)
|
GPIO
09
|
|
22
|
RST
Reset
|
GPIO
22
|
|
23
|
SCLK
Clock
|
GPIO
11
|
|
24
|
CS0
ChipSelect_0
|
GPIO
25
|
|
26
|
CS1
ChipSelect_1
|
GPIO
07
|
Hintergrundbeleuchtung
|
Bildquelle: adma-tec
Der
Vollständigkeit halber hier auch
die
Anschlußbelegung der TFT-Moduls selbst
In
diesem Schaltbild ist auch zu sehen, daß es nur EINE
Datenleitung gibt
|
GPIO-Pin
12 (GPIO 18) ist für die Helligkeitssteuerung der
Hintergrundbeleuchtung vorgesehen.
Hier ist mir aber
aufgefallen, daß die PWM-signale nicht sehr stabil sind und
je nach Prozessorlast schwanken. Das verursacht zum Teil ein
unschönes, unregelmäßiges Flimmern.
Bei
einer PWM-Pulsbreite von 100% werden die 5.0 Volt des
Raspberry mit 80 mA belastet.
|
Eingabeeinheit
Da das
Display ohne PC und Tastatur bedient werden sollte, mußte wieder
eine Eingabeeinheit her (die gleiche, die beim monochromen
LCD-Display verwendet wurde). Diese bestand ursprünglich nur aus
einem einzigen Miniaturtaster und steuerte über unterschiedlich
lange Tastendrücke die einzelnen Funktionen. Diese Einzeltaste
hat sich dann aber als unpraktisch herausgestellt.
Hier
die endgültige Schaltung:
|
|
Inzwischen
besteht die Eingabeeinheit aus 2 Kurzhubtastern, die
einerseits direkt mit Plus 3,3 Volt des Raspberry und auf der
zweiten Seite über je 1 kOhm Schutzwiderstände mit den
GPIO-Pins 07 und 12 verbunden sind.
Die internen
GPIO Widerstände werden per Programm als Pull-Down
zugeschaltet, um die Bauteilanzahl zu minimieren und im
Ruhezustand ein stabiles Eingangssignal zu
gewährleisten.
Beide Taster werden im Programm
per Interruptsteuerung über 'threaded callback'
bedient. Hier erfolgt auch die Entprellung.
|