2.2“ SPI-Display (ILI9341) am Raspberry betreiben

Nachdem wir vor einigen Wochen schon einmal ein Tutorial über das 2.2″ SPI-TFT in Kombination mit dem Arduino veröffentlicht hatten, ist es nun auch für unseren Raspberry Pi an der Zeit ein eigenes kleines Display zu bekommen. So können wir neben einfachen Statusanzeigen sogar GameBoy-Spiele auf dem kleinen SPI-Display wiedergeben. In der nachfolgenden Anleitung zeigen wir euch sowohl den Anschluss sowie die Erstkonfiguration des Minidisplays am Raspberry Pi. 

Was wird benötigt?

Für eine Besser Übersicht haben wir auch diesmal wieder eine kleine Einkaufsliste für euch zusammengestellt:

2.2″ TFT ILI9341 SPI-DisplayAliexpress* (ca. 6,50 €) oder Amazon* (ca. 13 €)

Raspberry Pi – ca. 30 – 40 € – siehe z.B. bei Amazon*

Netzteil für Raspberry Pi – ca. 10 € – siehe z.B. bei Amazon*

Verbindungskabel – ca. 4 € – siehe z.B. bei Amazon*

56 Ohm Widerstand – ca. 4 € – siehe z.B. bei Amazon*

Display an den Raspberry anschließen

Als erstes müssen wir das Display an unseren Raspberry Pi anschließen, zur besseren Übersicht findet ihr weiter unten auch nochmal das genau Schaltbild vor.

Den ersten SDO/MISO Pin unseres Displays schließen wir an den MISO-Pin (GPIO9 – Pin 21) unseres Raspberry’s an, für den zweiten LED-Pin des Displays benötigen wir zusätzlich einen 56 Ohm Widerstand – dieser wird anschließend mit dem GPIO18 (Pin 12) des Pi’s verbunden (da dieser auch PWM unterstützt, können wir später auch die Helligkeit der Hintergrundbeleuchtung beliebig anpassen).

Kommen wir nun zum dritten Display-Pin „SCK“, diesen schließen wir an den SCLK-Pin (auf Pin 23) unseres Bastelrechners an. Nun folgt der „SDI/MOSI“ Anschluss des SPI-Screens, diesen schließen wir an den MOSI (GPIO 10 – Pin 19) des Mini-PC’s an. Weiter geht es mit dem „DC/RS“ Pin, dieser wird an GPIO 24 (Pin 18) angeschlossen, weiterhin müssen wir den RESET-Pin mit dem GPIO 25 (Pin 22) verbinden.

Den drittletzten „CS“-Displaypin müssen wir an den GPIO 8 anschließen – dies ist Pin 24 des Raspberry’s. Den GND-Pin können wir hingegen mit einen beliebigen Ground-Port (Pin 6, 9, 14, 20, 25, 30, 34, 39) unseres Raspberry verbinden. Zuletzt benötigen wir für die Stromversorgung auch noch den VCC-Pin, diesen schließen wir an einen der zwei vorhandenen 3,3 Volt Ports an (Pin 1 oder 17).

Raspberry GPIO Pins

SPI Display - Schaltplan

Funktionstest

Nachdem alles richtig angeschlossen wurde können wir unseren Raspberry Pi an das Netzteil anschließen. Unseren ersten Funktionstest führen wir mit dem aktuellen Raspbian Jessie durch, das entsprechende Image könnt ihr euch von der offiziellen Webseite HIER herunterladen.

Zunächst müssen wir, falls noch nicht geschehen, unseren SPI-Port im Betriebssystem freischalten. Dazu führen wir den folgenden Befehl aus um in das Konfigurationsmenü zu gelangen:

sudo raspi-config

Nun wechselt in das „Advanced Options“ Untermenü und wählt dort „SPI“ aus – dieses aktiviert ihr dann und beendet anschließend den Konfigurationsassistenten. Anschließend werden wir mit dem folgenden Befehl noch unser System auf den aktuellen Stand bringen (dies kann einige Minuten in Anspruch nehmen):

sudo rpi-update

Sobald das System erfolgreich aktualisiert wurde, müsst ihr das System noch mit dem folgenden Reboot-Befehl noch neu starten:

sudo reboot

Verbindet euch nun neu mit eurem Raspberry Pi, wir führen nun mit den nachfolgenden Befehlen einen ersten Funktionstest durch:

sudo modprobe fbtft_device name=tm022hdh26 rotate=90 speed=80000000 fps=60
sudo FRAMEBUFFER=/dev/fb1 startx

Nach einem kurzen Moment sollte euer Display nun die typische Raspbian Desktopoberfläche anzeigen, damit hätte unser Display den ersten Funktionstest problemlos bestanden. Unsere komplette Anleitung haben wir hier auch nochmal als Video aufbereitet:

Autostart

Da wir das SPI-Display nicht jedesmal manuell über die Kommandozeile neu starten wollen, legen wir nun die entsprechende Befehle in den Autostart ab, dies funktioniert wie folgt: Zunächst müssen wir eine neue Datei im modules-load-Verzeichnis erstellen:

sudo nano /etc/modules-load.d/fbtft.conf

Dieser“fbtft.conf“-Datei geben wir folgenden Inhalt und speichern diese anschließend ab:

spi-bcm2835
fbtft_device

Nun erstellen wir noch eine weitere Datei im modprobe-Verzeichnis:

sudo nano /etc/modprobe.d/fbtft.conf

Dieser geben wir den folgenden Inhalt und speichern auch diese ab:

options fbtft_device name=tm022hdh26 rotate=90 speed=80000000 fps=60

Zuletzt müssen wir noch die bereits vorhandene rc.local Datei editieren:

sudo nano /etc/rc.local

Vor dem „exit 0“-Absatz erweitern wir die Datei mit folgendem Inhalt:

con2fbmap 1 1
sudo FRAMEBUFFER=/dev/fb1 startx

Speichert nun die gemachte Änderung und startet euren Raspberry Pi mit dem typischen Reboot-Befehl neu:

sudo reboot

Das Display sollte nun ohne zusätzliche manuelle Eingaben komplett automatisch starten.

Helligkeit regulieren

Da wir den LED-Pin unseres Displays an einen PWM-Port (Pulsweitenmodulation) unseres Raspberrys angeschlossen haben, können wir nach belieben die Helligkeit der Hintergrundbeleuchtung verändern. Dazu müsst ihr lediglich folgenden Befehl eingeben, dadurch wird das Display zunächst dunkel:

gpio -g mode 18 pwm

Um die Helligkeit auf die maximale Stufe zu setzen, gebt ihr den folgenden Befehl ein:

gpio -g pwm 18 1024

Im Bereich von 0 – 1024 könnt ihr beliebig die Helligkeit regulieren, verändert einfach den Befehl dementsprechend.



Kleine Farb-TFTs an den Raspberry anschließen - wir zeigen euch wie es funktioniert. (Bild: Xgadget.de)
Datum:
11.10.2016, 19:30 Uhr
Aktualisiert:
08.11.2019, 19:44 Uhr
Autor:
Stefan Kröll
Comments:
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

15 Comments zu "2.2“ SPI-Display (ILI9341) am Raspberry betreiben"

  1. Mark sagt:

    Ich habe mit dieser Anleitung keinen Erfolg gehabt. Alles so gemacht wie in der Anleitung. Nach dem Startx Befehl startet er entweder die Oberfläche über den normalen HDMI Ausgang oder gar nicht. Kann mir jemand sagen was ich falsch mache?

    1. Max sagt:

      Habe das selbe Problem..

      1. Adam sagt:

        bei mir startet er auch nur die normale Oberfläche über den HDMI Ausgang…

    2. Tim sagt:

      hallo ich habe ein neues Baby 2b Plus und habe immer noch dieses TFT Display dran natürlich funktioniert das nicht mehr alles mit den Anleitungen weil der Treiber nicht mehr im Kern integriert ist hat jemand dafür eine Lösung oder ein Lösungsansatz? Bitte um etwas Hilfe! Danke!

  2. Joachim sagt:

    Danke für die Anleitung. Im Wesentlichen hat das bei mir genauso funktioniert, aber ich musste den speed-Wert kleiner wählen. (z.B. speed=40000000) Damit wird ja die SPI-Taktrate festgelegt, und bei mir ist da wohl der Aufbau ungünstig und eine Leitung zu lang. Der Effekt war, dass das Bild wenn überhaupt nur kurz erschienen ist und gleich wieder verschwand.

    1. ano sagt:

      das funtioniert nicht. hat mich 3 std. gekostet.. 🙁

  3. saarfranzose sagt:

    die Lösung, warum kein Bild auf dem TFT erscheint, steht indirekt oben im Text. Die Hintergrundbeleuchtung muss auch eingeschaltet werden. Z.B. in der rc.local mit den Einträgen:
    gpio -g mode 18 pwm
    gpio -g pwm 18 1024

  4. sanket Palrecha sagt:

    Is this diagram & setting will be same for raspberry pi zero & raspberry pi zero w model. Plz let me know sir I will be egarly waiting for your reply.
    Thank you sir

  5. Bastler19 sagt:

    ich habe es ausprobiert und kam bereits beim start der modprobe auf diese fehlermeldung:

    FATAL: Module fbtft_device not found in directory /lib/modules/5.4.51-v7+

    Ich wäre um hilfe dankbar

    1. Alexander Schlier sagt:

      Gleiche Fehlermeldung bei mir. Im aktuellen Kernel ist kein fbtft mehr vorhanden.
      Hat jemand eine Idee das Display zum laufen zu bringen ohne auf einen alten Kernel zu gehen?

      1. Lucas Zimmer sagt:

        hallo gibt es hier Neuigkeiten? Ich habe dasselbe Problem und würde es gerne lösen.

        1. Gunnar Thielebein sagt:

          Hallo, das Modul fbtft_device ist ab 5.x nicht mehr im Kernel enthalten. Das Modul fbtft jedoch schon. Mit diesem hatte ich aber keinen Erfolg.

          Aktuell experimentiere ich mit diesem Userspace Programm https://github.com/juj/fbcp-ili9341 was einen kompletten Ersatz für den SPI + Framebuffer Ansatz darstellt und einen riesigen Geschwindigkeitszusatz bringen würde.

          Unter Nutzung des hier dargestellten Pinout bleibt der Bildschirm dunkel. Ich habe einen Issue im Projekt erstellt. Über Tips wie man das mit diesem Display zum Laufen bringt würde ich mich freuen.

          1. bailsone sagt:

            Ich hab hiermit auf einem rpi3 hinbekommen.

            sudo nano /boot/config.txt
            –> add the following line to the end of the file:
            dtoverlay=rpi-display

            und dann noch die Konsole auf FB1 mappen
            Open /boot/cmdline.txt as root:

            > sudo vi /boot/cmdline.txt

            and add at the end of the first line:

            fbcon=map:10 fbcon=font:VGA8x8 logo.nologo

            nachzulesen auf folgenden Seiten

            https://raspberrypi.stackexchange.com/questions/120436/troubleshooting-rpi-4b-ili9341-display

            https://lallafa.de/blog/2015/03/fbtft-setup-on-modern-raspbian/

            Achso und für die Helligkeit brauchte ich erstma ein Tool mit dem ich auf dem GPIO schreiben konnte ist hier zu finden.

            http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/

            ich hoffe ich konnte jemandem damit helfen. Schönen Tag noch

  6. Oliver Dziuba sagt:

    Das hier funktioniert auch mit neuem Kernel 😉 , nicht von mir !

    https://www.the-diy-life.com/add-an-oled-stats-display-to-raspberry-pi-os-bullseye/

* gesponserter Link
Blogverzeichnis - Bloggerei.de