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 Hintergrund­beleuchtung 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.