Raspberry Zero 2W – BME68x – DS18B20 – ILI9341 TFT. Die Display-Einrichtung und der Display-Code

Teil 4: Display-Treiber und Einrichtung

Verschiedene Möglichkeiten, auf ein TFT-Display auf einem Raspberry zuzugreifen

HDMI- oder Mini-HDMI-Anschluss für das Display Die Einrichtung des Displays war etwas komplizierter, um es zum Laufen zu bringen. In Linux gibt es mehrere Möglichkeiten, ein TFT-Display an einen Raspberry Pi anzuschließen. Zunächst gibt es den standardmäßigen HDMI-Anschluss am Raspberry Pi oder den Mini-HDMI-Anschluss am Raspberry Pi Zero 2W. Diese Methode ist recht unkompliziert und zeigt die standardmäßige Systemoberfläche ohne Einrichtung oder Treiber auf dem Bildschirm an. Es ist wahrscheinlich der bequemste Weg, um Ihr Betriebssystem, Software, Anwendungen und Daten zu visualisieren. Diese Displays sind die tatsächlichen “Framebuffer”-Geräte und unter Linux sind sie im /dev-Baum als /dev/fb0, /dev/fb1 usw. sichtbar und zugänglich. Die Standard-Raspberry Pi /boot/config.txt beschränkt dies auf maximal 2 Framebuffer-Geräte.

TFT-Displays, die über den SPI-Bus mit eigenem Treiber verbunden sind Dann gibt es den SPI-Bus am Raspberry Pi, der über den gelöteten 40-poligen GPIO-Header zugänglich ist. Diese Displays können mit ihrem eigenen Treibercode zugegriffen werden und sind in der Lage, Funktionen durch den Treibercode auszuführen. Wenn eine Funktion definiert ist, können Sie sie verwenden. Die Hauptfunktionen sind meistens etwas wie das Anzeigen von Bildern, das Schreiben von Text, das Zeichnen von Linien, Polygonen und Kreisen sowie operationelle Funktionen wie das Initialisieren des Displays, das Einstellen der Helligkeit der Hintergrundbeleuchtung oder das Löschen des Displays.

Dieser Ansatz ist voll funktionsfähig, und meine Temperatur-Terminals benötigen tatsächlich nicht mehr. Sie müssen jedoch Ihren eigenen Code schreiben, um die gesammelten Werte aus der Datenbank auf dem winzigen TFT-Display anzuzeigen. Ich werde diesen Teil später in diesem Handbuch behandeln, wenn ich das ST7789V 2-Zoll-TFT-Display anschließe, da ich Schwierigkeiten hatte, dieses spezielle Display im Framebuffer-Modus zu betreiben – es war gespiegelt, und das war im st7789v-Treiber selbst fest codiert. Den Treiber neu zu schreiben wäre zu viel Arbeit gewesen 🙂

Im Allgemeinen zeigen diese Displays keine Konsole oder eine grafische Desktop-Umgebung an. Außerdem gibt es auch Framebuffer-Kopiercode, aber das ist für dieses Handbuch viel zu kompliziert.

TFT-Display, das über den SPI-Bus als Framebuffer-Geräte mit Overlay-Dateien in der /boot/config.txt verbunden ist Mit dem ILI9341-Display hatte ich ursprünglich vor, den Framebuffer-Ansatz zu verwenden, weil es mir nicht gelungen ist, das ST7789V-Display als Framebuffer-Gerät zu verwenden, und die winzigen TFTs sind die einzigen Displays an den Temperatur-Terminals. Sie finden zahlreiche ILI9341-Overlay- oder Verbindungsinstruktionen im Internet. Leider hat keines davon gut für mich funktioniert, und es hat eine Weile gedauert, bis ich einen GitHub-Eintrag mit einem Link zu einer Overlay-Datei gefunden habe, die ich erfolgreich verwendet habe. Ich habe auch den Verkabelungsanweisungen auf dieser Seite gefolgt, da all diese Anschlüsse noch verfügbar waren und nicht von meinen anderen Sensoren auf dem GPIO-Header belegt waren.

2.8inch SPI Module ILI9341 SKU:MSP2807 Link zur GitHub-Seite von rusconi hier: https://github.com/rusconi/Raspberry-Pi-TFT-FB1-HowTo

Beachten Sie, dass der MISO-Pin in dieser Beschreibung nicht erwähnt wird, aber das Anschließen des MISO-Pins des TFT-Panels an den physischen Pin 21 des RPi – GPIO 11 – hat bei mir funktioniert.

Lesen Sie die vollständige Display-Verkabelung hier: https://www.wetransco.de/rapsberry-zero-2w-bme68x-ds18b20-ili9341-tft-hardware-setup/

Das eigentliche LCD-show.git mit der Overlay-Datei für das ili9341 kann hier heruntergeladen und wie folgt installiert werden:

git clone https://github.com/goodtft/LCD-show.git
cd LCD-show/
sudo cp ./usr/tft9341-overlay.dtb /boot/overlays/tft9341.dtbo

Sie müssen Ihre /boot/config.txt-Datei aktualisieren, um die Overlay-Datei tft9341.dtbo beim Booten zu laden:

sudo nano /boot/config.txt

Und fügen Sie diese Zeilen am Ende hinzu:

dtparam=spi=on
dtoverlay=tft9341:rotate=270
gpio=13=op,dh

Nachdem Sie Ihre /boot/config.txt mit STRG+O, STRG+X gespeichert haben, starten Sie Ihren Raspberry neu, und Sie sollten ein Framebuffer-Gerät in Ihrem /dev-Ordner sehen können:

ls /dev/fb*

Wenn Sie diese beiden Zeilen am Ende der Zeile in /boot/cmdline.txt hinzufügen:

fbcon=map:10 fbcon=font:VGA8x8

können Sie auch den Konsolen-Login nach einem Neustart sehen, der auf Ihrem Display erscheint.

Sie können jetzt auch einen Bildschirm im X11-System konfigurieren, indem Sie Ihre Konfiguration bearbeiten:

nano /etc/X11/xorg.conf.d/99-fbdev.conf

Kopieren und fügen Sie die folgenden Zeilen ein und speichern Sie die Datei erneut:

Section "Device"
Identifier "FBDEV"
Driver "fbdev"
Option "fbdev" "/dev/fb1"
EndSection

Section "Screen"
Identifier "Default Screen"
Device "FBDEV"
EndSection

Von dort aus können Sie auch eine grafische Desktop-Umgebung starten, indem Sie sich anmelden und eingeben:

FRAMEBUFFER=/dev/fb1 startx

Teil 5: Jetzt ist Ihre gesamte Hardware konfiguriert und zugänglich. Von hier aus setzen wir fort, Code zu schreiben, der regelmäßig Bilder aus den Temperaturmesswerten generiert, die das Python-Skript für die BME688- und DS18B20-Sensoren in der Datenbank speichert, und schöne Grafiken auf dem Display anzeigt.