Raspberry Pi Pico und Pimoroni Pico Display Pack

Das Pimoroni 1.14″ IPS LCD Display mit einer Auflösung von 240×135 Pixeln ist eine praktische Ergänzung für den Raspberry Pi Pico. Das Display kostet £13.50 was im Moment ca. 15.75€ entspricht.

Mit Pico Display kann man einen Raspberry Pi Pico in ein kompaktes User-Interface für ein Projekt verwandeln, das in der Lage ist, Texte oder Grafiken anzuzeigen.

Das Pico Display ist so konstruiert, dass es perfekt auf den Raspberry Pi Pico abgestimmt ist und einfach nur auf den Header aufgesteckt werden braucht.

Kaufen kann man den Raspberry Pi Pico und das Display im Pimoroni Shop unter https://shop.pimoroni.com/products/raspberry-pi-pico und  https://shop.pimoroni.com/products/pico-display-pack kaufen.

Micropython Firmware für das Pimoroni Pico Display Pack

Für die Nutzung des Displays in MicroPython benötigt man eine angepasste Firmware, in der die benötigten Bibliotheken enthalten sind.

Alle Infos zu der Firmware findet man unter https://github.com/pimoroni/pimoroni-pico.

Eine Anleitung zur Installation der Firmware findet man unter https://github.com/pimoroni/pimoroni-pico/blob/main/setting-up-micropython.md. Die

Die letzte Version der Firmware ist unter https://github.com/pimoroni/pimoroni-pico/releases zu finden. Zum Zeitpunkt des Tests ist die Version 0.1.1 (31.03.2021) aktuell.

Diese Version enthält auch die display.flip Methode, die am 29 Mar 2021 in Version 0.0.9 Alpha hinzugefügt wurde und leider in der Doku (https://github.com/pimoroni/pimoroni-pico/tree/main/micropython/modules/pico_display) bisher nicht enthalten ist.

Nach der Installation meldet sich der Raspberry Pi Pico mit folgender Statuszeile in Thonny.

MicroPython ca3d51f on 2021-03-31; Raspberry Pi Pico with RP2040
Type "help()" for more information.

Ein erstes Demo Programm kann man unter https://github.com/pimoroni/pimoroni-pico/blob/main/micropython/examples/pico_display/demo.py herunterladen und installieren.

Auch für die 4 Buttons gibt es ein fertiges Demo Python Script, das schnell installiert ist.

https://github.com/pimoroni/pimoroni-pico/blob/main/micropython/examples/pico_display/buttons.py

Die noch recht neue Flip Funktion ist leider noch nicht dokumentiert und es gibt auch noch keine Demo dafür. Also habe ich mal kurz in die C-Header Files geöffnet und mal nachgesehen, wie man die Funktion verwendet.

import picodisplay as display
import utime

# Initialise display with a bytearray display buffer
buf = bytearray(display.get_width() * display.get_height() * 2)
display.init(buf)
display.set_backlight(0.5)

# sets up a handy function we can call to clear the screen
def clear():  
    display.set_pen(0, 0, 0)
    display.clear()
    display.update()
    
while True:
    display.flip() 
    display.set_pen(255, 255, 255)                    
    display.text("display flip", 10, 10, 240, 3)
    display.update()
    utime.sleep(1)  # this number is how frequently the Pico checks for button presses
    

Verfügbare Pins bei Verwendung des Raspberry Pi Pico mit dem Pimoroni Pico Display Pack

Leider ist es so, dass alle Pins des Raspberry Pi Pico mit dem Pico Display Pack verbunden werden, so dass man keine weiteren Komponenten verwenden kann, obwohl nicht alle Pins vom Display benötigt werden. Das kann man aber ändern, indem man einfach einen „Stackable Long Connector Female Pin Header“ zwischen die Beiden steckt.

Folgende Pins stehen dann wieder zur Verfügung und können für weitere Module verwendet werden.

Damit kann man dann z.B. noch ein Lora Module an einen der beiden UART Schnittstellen anschließen.

Fazit

Das Pimoroni Pico Display ist eine praktische Ergänzung für ein Raspberry Pi Pico Projekt, das um ein Display und bis zu 4 Buttons ergänzt werden soll. Die Firmware ist aktuell noch nicht 100% fertig, aber Pimoroni arbeitet kontinuierlich an Bugfixes und neuen Funktionen. Die gewählte Schriftart für das Display ist nicht ganz meine erste Wahl, da sie bei einer Schriftgröße von 1 nicht mehr so gut zu lesen ist. Trotzdem kann ich das Display nur empfehlen und werde es vermutlich noch oft in Projekten verwenden.

Ergänzung

Wichtig zu erwähnen ist noch, dass man beim Entwickeln die Python Datei nicht gleich main.py nennt sondern ihr einen anderen Namen gibt. Ich habe diesen Fehler gemacht was dazu geführt hat, dass ich das Problem hatte, dass nach einem Reset („RUN Button“ oder „Stromversorgung unterbrechen“) das Programm direkt wieder angelaufen ist und ich mich nicht mehr mit dem Pico verbinden konnte. Ich habe dann immer die Fehlermeldung

Unable to connect to /dev/cu.usbmodem0000000000001: [Errno 2] could not open port /dev/cu.usbmodem0000000000001: [Errno 2] No such file or directory: '/dev/cu.usbmodem0000000000001'

Backend terminated or disconnected. Use 'Stop/Restart' to restart.

################################################################

Eception
Connection lost (device reports readiness to read but returned no data (device disconnected or multiple access on port?))

Use Stop/Restart to reconnect.

erhalten. Auch ein „Stop/Restart Backend“ hat nichts daran geändert. Das Problem habe ich dann gelöst, indem ich die offizielle Raspberry Pi Pico Firmware (pico_micropython_20210121.uf2) installiert, habe. Die führt den Code natürlich nicht korrekt aus, da das display Modul fehlt.

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ImportError: no module named 'picodisplay'

Auf diese Art und Weise kann man dann doch wieder mit Thonny (https://thonny.org/) auf den Pico zugreifen und Python Code auf dem Pico hoch- und runter laden.

Ich startet nun immer mit einem anderen Dateinamen für die Python Dateien, so dass der Code nicht automatisch beim Start ausgeführt wird. Erst wenn alles fertig ist und ich das Projekt in Betrieb nehme ändere ich den Dateinamen in main.py. Dann solle ja alles fertig sein und falls dann doch noch mal etwas geändert werden muss, weiß ich ja wie ich auf den Pico zugreifen kann.