Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Raspberry Pi Pico W mit TFT Display

Posted on 22. August 202210. März 2024 by Stefan Draeger

In diesem neuen Beitrag möchte ich dir zeigen, wie du am Raspberry Pi Pico W ein TFT Display programmieren und Daten anzeigen lassen kannst.

Raspberry Pi Pico W mit 1,77" TFT Display
Raspberry Pi Pico W mit 1,77″ TFT Display

Das hier verwendete TFT Display mit einer Größe von 1,77 Zoll (4,5 Zentimeter) habe ich dir bereits im Beitrag 1,77 Zoll TFT Display am Arduino UNO R3 für den Arduino UNO R3 vorgestellt. Hier soll es jedoch darum gehen, wie du dieses mit MicroPython am Raspberry Pi Pico W erledigst.

Raspberry Pi Pico W - TFT-Display via SPI anschließen und programmieren
Dieses Video auf YouTube ansehen.

  • Benötigte Ressourcen für dieses Projekt
  • Aufbau & Pinout des TFT Displays
    • Pinout
  • Aufbau der Schaltung – TFT Display am Raspberry Pi Pico W
  • Pinout Raspberry Pi Pico
  • Programmieren des 1,77 Zoll (4,5 cm) TFT Display am Raspberry Pi Pico W
    • Benötigtes Modul ILI9341
    • Schritt-für-Schritt-Anleitung
      • Schritt 1 – importieren der benötigten Module
      • Schritt 2 – definieren der Konstanten für das TFT Display
      • Schritt 3 – Aufbauen der SPI Verbindung
      • Schritt 4 – Objekt für das TFT Display initialisieren
      • Schritt 5 – leeren des Displays
      • Schritt 6 – definieren der Schriftparameter (Farbe, Hintergrundfarbe, Position, Größe)
      • Schritt 7 – Ausgeben von Text
      • Hinweis
    • Vollständiger Quellcode

Benötigte Ressourcen für dieses Projekt

Für den Nachbau dieses Projektes benötigst du:

  • einen Raspberry Pi Pico W*,
  • ein Micro-USB Datenkabel*,
  • ein 1,77 Zoll (4,5 cm) TFT Display*,
  • ein 400 Pin Breadboard*,
  • diverse Breadboardkabel*

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Übersicht der Bauteile, für dieses Projekt
Übersicht der Bauteile, für dieses Projekt

Für den ersten Aufbau der Schaltung könntest du auch das etwas günstigere Vorgängermodell des Pi Pico W ohne Wi-Fi Support nutzen. Jedoch bietet die Wi-Fi-Schnittstelle die Möglichkeit, Daten aus dem Internet zu laden und anzuzeigen.

Aufbau & Pinout des TFT Displays

In diesem Beitrag verwende ich ein TFT Display mit einer Auflösung von 160×128 Pixel und einer Größe von 1,77 Zoll (4,5 Zentimeter).

Vorderseite des 1.77 Zoll TFT Displays
Vorderseite des 1.77 Zoll TFT Displays
Rückseite des 1.77 Zoll TFT Displays
Rückseite des 1.77 Zoll TFT Displays

Pinout

Hier nun das Pinout des TFT Displays, welches du ebenfalls auf der Rückseite der Platine in tabellarischer Form findest.

Pinout des TFT Displays
Pinout des TFT Displays

Aufbau der Schaltung – TFT Display am Raspberry Pi Pico W

In der Grafik verwende ich das Vorgängermodell ohne Wi-Fi Modul, da beide Mikrocontroller von der Pinbelegung gleich sind ist das für dieses Projekt nicht so schlimm.

Anschluss eines TFT Displays via SPI an den Raspberry Pi Pico
Anschluss eines TFT Displays via SPI an den Raspberry Pi Pico
Schaltung - RP2040 mit TFT Display
Schaltung – RP2040 mit TFT Display

Pinout Raspberry Pi Pico

Pinout des Raspberry PI Pico
Pinout des Raspberry PI Pico

Programmieren des 1,77 Zoll (4,5 cm) TFT Display
am Raspberry Pi Pico W

Zur Programmierung nutze ich das kostenfrei erhältliche Tool Thonny IDE, dieses habe ich bereits in diversen Beiträgen verwendet und sollte dir bestimmt nicht fremd sein.

Wenn du ein Linux System hast, dann habe ich dir im Beitrag Thonny IDE auf Linux einrichten für den Raspberry Pi Pico W gezeigt wie du diese auf einem Linux Mint einrichtest.

Benötigtes Modul ILI9341

Für die Programmierung benötigst du das Modul „MicroPython ILI9341“ welches du vom GitHub Repository jeffmer / micropython-ili9341 als ZIP-Datei herunterladen kannst.

Da du keinen direkten Zugriff auf das lib Verzeichnis des Raspberry Pi Pico W hast, musst du in diesem Fall die Dateien händisch über die Thonny IDE einfügen. Wie du das machst, habe ich dir im oben gezeigten YouTube Video gezeigt.

Schritt-für-Schritt-Anleitung

Nachdem wir das Modul (die Python Dateien vom GitHub Repository) auf dem Raspberry gespeichert haben, können wir mit der Programmierung beginnen.

Schritt 1 – importieren der benötigten Module

Zum Ansteuern des TFT Displays benötigen wir noch zusätzliche Module, um die GPIO Pins des Mikrocontrollers ansteuern zu können.

# Module zum ansteuern des TFT Displays
from ili934xnew import ILI9341, color565
from machine import Pin, SPI
from micropython import const
import glcdfont
import tt14
import tt24
import tt32

Schritt 2 – definieren der Konstanten für das TFT Display

Im nächsten Schritt definieren wir die Konstanten für unser Display. Dieses sind zum einen die Abmaße (Höhe x Breite) sowie die Rotation.

Zusätzlich definieren wir auch die Pins, an welche dieses angeschlossen wurde.

Solltest du von meiner Schaltung abweichen, so musst du hier deine Pins eintragen!

# Hoehe und Breite des Displays definieren
SCR_WIDTH = const(160)
SCR_HEIGHT = const(128)
# Bildschirm drehen
SCR_ROT = const(4)

# Definieren an welche Pins das Display angeschlossen ist
TFT_CLK_PIN = const(6)
TFT_MOSI_PIN = const(7)
TFT_MISO_PIN = const(4)

TFT_CS_PIN = const(13)
TFT_RST_PIN = const(14)
TFT_DC_PIN = const(15)

Schritt 3 – Aufbauen der SPI Verbindung

Die zuvor definierten Pins benötigen wir nun, um die SPI Verbindung aufzubauen.

# Aufbau der SPI Verbindung
spi = SPI(
    0,
    baudrate=15625000,
    miso=Pin(TFT_MISO_PIN),
    mosi=Pin(TFT_MOSI_PIN),
    sck=Pin(TFT_CLK_PIN))

Schritt 4 – Objekt für das TFT Display initialisieren

Nachdem auch die SPI Verbindung aufgebaut wurde, bzw. das Objekt dafür initialisiert wurde, können wir dieses nutzen, um unser TFT Display Objekt aufzubauen.

# Initialisieren des Display Objektes
display = ILI9341(
    spi,
    cs=Pin(TFT_CS_PIN),
    dc=Pin(TFT_DC_PIN),
    rst=Pin(TFT_RST_PIN),
    w=SCR_WIDTH,
    h=SCR_HEIGHT,
    r=SCR_ROT)

Schritt 5 – leeren des Displays

Sollten wir zuvor einen Text angezeigt haben, so können oder müssen wir das Display leeren.

# leeren des Displays
display.erase()

Schritt 6 – definieren der Schriftparameter (Farbe, Hintergrundfarbe, Position, Größe)

Im nächsten Schritt werden die Parameter für die anzuzeigende Schrift definiert.
Hier wähle ich

  • Schriftgröße 24,
  • Schriftfarbe – grün,
  • Hintergrundfarbe – schwarz,
  • Cursor Position x = 0, y = 0
# setzen der Schriftgröße  
display.set_font(tt24)
# Schriftfarbe und Hintergrundfarbe setzen, Format ist BGR (blue, green, red)
# erster Parameter ist die Schriftfarbe
# zweiter Parameter ist die Hintergrundfarbe
display.set_color(color565(0, 255, 0), color565(0, 0, 0))
# setzen der Cursor Position zum schreiben von Text
display.set_pos(0,0)

Schritt 7 – Ausgeben von Text

Nachdem wir nun die Parameter für den Text definiert haben, können wir den Text über die Funktion „print“ am Objekt „display“ ausgeben.

# Ausgeben von Text
display.print("Welcome")
display.print("from")
display.print("Pico W")

Hinweis

Sollte der Text zu lang werden, so wird dieser automatisch umgebrochen!

Vollständiger Quellcode

# Module zum ansteuern des TFT Displays
from ili934xnew import ILI9341, color565
from machine import Pin, SPI
from micropython import const
import glcdfont
import tt14
import tt24
import tt32

# Hoehe und Breite des Displays definieren
SCR_WIDTH = const(160)
SCR_HEIGHT = const(128)
# Bildschirm drehen
SCR_ROT = const(4)

# Definieren an welche Pins das Display angeschlossen ist
TFT_CLK_PIN = const(6)
TFT_MOSI_PIN = const(7)
TFT_MISO_PIN = const(4)

TFT_CS_PIN = const(13)
TFT_RST_PIN = const(14)
TFT_DC_PIN = const(15)

# Aufbau der SPI Verbindung
spi = SPI(
    0,
    baudrate=15625000,
    miso=Pin(TFT_MISO_PIN),
    mosi=Pin(TFT_MOSI_PIN),
    sck=Pin(TFT_CLK_PIN))

# Initialisieren des Display Objektes
display = ILI9341(
    spi,
    cs=Pin(TFT_CS_PIN),
    dc=Pin(TFT_DC_PIN),
    rst=Pin(TFT_RST_PIN),
    w=SCR_WIDTH,
    h=SCR_HEIGHT,
    r=SCR_ROT)

# leeren des Displays
display.erase()

# setzen der Schriftgröße  
display.set_font(tt24)
# Schriftfarbe und Hintergrundfarbe setzen, Format ist BGR (blue, green, red)
# erster Parameter ist die Schriftfarbe
# zweiter Parameter ist die Hintergrundfarbe
display.set_color(color565(0, 255, 0), color565(0, 0, 0))
# setzen der Cursor Position zum schreiben von Text
display.set_pos(0,0)
# Ausgeben von Text
display.print("Welcome")
display.print("from")
display.print("Pico W")
# verringern der Textgröße
display.set_font(tt14)
# Ausgeben von Text
display.print("http://draeger-it.blog")

3 thoughts on “Raspberry Pi Pico W mit TFT Display”

  1. Uwe sagt:
    11. Dezember 2022 um 10:20 Uhr

    Danke!
    für die komplette Beschreibung. Es hat für mich funktioniert. Die Displays haben je nach Hersteller unterschiedliche Pinbeschreibungen und verschiedene Ausstattungen mit Spannungsreglern/Levelshiftern. Mein TFT z.B. läuft nur bei VCC 3.3 Volt. Auf der Seite http://www.lcdwiki.com/Main_Page sind die Beschreibungen, die mir geholfen haben.

    Antworten
  2. Christian Ernst sagt:
    30. Dezember 2022 um 18:42 Uhr

    Ich finde das ist eine sehr gute Beschreibung um das TFT-Display mit dem Pico zu programmieren!
    Ich habe zwei Fragen.
    1. In dem Datenblatt zum 1,77 Zoll 128×160 Pixel SPI TFT-Display wird der Display Driver ST7735S angegeben. In der Beschreibung wird aber der Driver ILI9341 verwendet. Ist das richtig?
    2. Im Quellcode wird in Zeile 10 (TFT_MISO_PIN = const(4)) der GP4 zugewiesen. Im Schaltplan ist er aber nicht verbunden. Ist das richtig?

    Antworten
  3. Christian Ernst sagt:
    6. Januar 2023 um 10:11 Uhr

    Ich habe mit dieser Beschreibung begonnen mein Display anzusteuern. Die Verkabelung der PIN-Belegung ist aber nicht korrekt. Im Pinout Raspberry Pi Pico (s.o.) sind GP 14 und GP 15 links unten, der GP 16 ist rechts unten.
    Nachdem ich so verkabelt habe wird das Display korrekt angesteuert.

    Antworten

Schreibe einen Kommentar Antworten abbrechen

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

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}