Auch wenn es mittlerweile schwierig zu bekommen ist, das C-Berry28 (zum Datenblatt), ein kleines TFT Display für den Raspberry Pi finde ich immer noch klasse. Das Display ist 2.8″ groß, hat eine Auflösung von 320×240 Pixeln, kann 256k Farben anzeigen, hat eine weiße Hintergrundbeleuchtung und bringt keine Intelligenz mit. Das heißt, jeder Pixel muss einzeln angesteuert werden bzw. man lädt ein Bild auf das Display, das man zuvor erzeugt hat.
Das C-Berry28 installieren.
Installiert wird das Display indem man es auf den GPIO-Header des Raspberry Pi steckt. Damit ist die Hardwareinstallation auch schon abgeschlossen.
Das C-Berry28 kann man auf zwei Arten verwenden. Entweder als Monitorersatz, dabei wird das Framebuffer-Device auf das Display umgelenkt oder eben zum Anzeigen von Statusmeldungen oder Bildern, dann steuert man das Display direkt an.
In diesem Beitrag werde ich die Verwendung als Statusdisplay beschreiben, denn dafür habe ich das Display im Einsatz.
Die Bibliothek bcm2835 installieren
Zur Ansteuerung des Displays lädt man zunächst die Bibliothek bcm2835 von Mike McCauley herunter, packt sie aus, kompiliert sie und installiert sie. Ich arbeite noch mit der Version 1.52. Es gibt aber auch schon neuere Versionen.
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.52.tar.gz
tar cvzf bcm2835-1.52.tar.gz
cd bcm2835-1.52
./configure
make
sudo make check
sudo make install
Code-Sprache: JavaScript (javascript)
Das erste Testbild auf dem C-Berry28 anzeigen
Jetzt kann man das Testprogramm des Herstellers installieren und das Testbild auf das Display laden.
wget http://admatec.de/sites/default/files/downloads/C-Berry28.tar.gz
tar xvzf C-Berry28.tar.gz
cd C-Berry28/SW/tft_test
make
sudo tft_test
Code-Sprache: JavaScript (javascript)
Auf neueren Raspberry Pi Modellen kann es vorkommen, dass man Streifen sieht und das Bild verschoben wirkt. Dabei handelt es sich um ein Problem mit dem Timing, das man durch Änderung der Datei tft.c (Zeile 99) beheben kann. Durch ersetzen der Zeile
bcm2835_spi_setClockDivider( BCM2835_SPI_CLOCK_DIVIDER_2 );
mit
bcm2835_spi_setClockDivider( BCM2835_SPI_CLOCK_DIVIDER_8 );
klappt es auch wieder mit dem Timing und das Bild ist nicht mehr verschoben. Beispielsweise klappt es auf einem Raspberry Pi 2 Rev B ohne diese Anpassung, auf einem Raspberry Pi Compute Module 4 hat es nur mit der Anpassung funktioniert.
Eigene Bilder anzeigen und das C-Berry28 Display löschen
Auf Basis des Beispielcodes im Verzeichnis tft_test habe ich zwei kleine Programme geschrieben. Eins zum Anzeigen eines vorbereiteten BMP Files und eins um das Display zu löschen und auszuschalten. Beide Programme und ein angepasstes makefile finden sich in der Datei C-Berry28_tuxlog.tar.gz.
Nach dem Herunterladen der Datei können die Programme mit „make“ kompiliert werden. Mit „sudo ./tft_clear“ löscht man das Display und schaltet es aus. Mit „sudo ./tft_load <Dateiname.bmp>“ wird die BMP Datei auf dem Display angezeigt. Das sieht dann beispielsweise so aus:
Das Statusbild für das Display lasse ich mit einem Skript erstellen und zeige es jeweils für 5 Minuten eventgesteuert an. Nach 5 Minuten schaltet sich das Display dann wieder aus. Bei Interesse kann ich darüber auch einen Beitrag schreiben.
Hallo,
unter welcher Rasbian Version haben sie es ans laufen bekommen? Ich habe es unter bulleseye versucht und habe auch ein bild, mit der bcm2835 lib in version1.75. Aber der touch funktioniert bisher noch nicht.
Gruß Peter
Hallo Peter,
bei mir funktioniert das Display unter bullseye und bookworm mit bcm2835-1.71. Allerdings ist es kein touch-display. Für das die touch Version gibt es ein anderes Softwarepaket bei admatec. Soweit ich das gerade in den Foren richtig verstanden habe, scheint das zu funktionieren.
Viele Grüße, Hans