RP2040-GEEK - Inbetriebnahme



Anleitung für die Firmware CircuitPython





Seit einiger Zeit ist ein weiterer Vertreter des Microcontrollers RP2040 mit dem Namen RP2040-GEEK auf dem Markt. Er stammt von der Firma Waveshare und wird als Development Board bezeichnet. RP2040-GEEK ist mit integrierter USB-A-Schnittstelle, 1,14-Zoll-LCD-Bildschirm, TF-Kartensteckplatz und anderen Peripheriegeräten ausgestattet. Es ermöglicht unterschiedliche Firmware für SWD-Port, UART-Port und I2C-Port.

Der Pico-GEEK, so werde ich das Board von jetzt an nennen, wird also wie seine anderen Verwandten (Raspberry Pi, RPi Pico u.a.) seine Fangemeinde bei 'vorbelasteten' Programmierern (Profis u. Amateuren) finden, die bestimmte Projekte umsetzen wollen oder einfach zeigen, was mit Microcontrollern alles geht.

Wie ich es auch beim PicoBoy gehandhabt habe, wurde auch der Pico_GEEK zunächst einmal "platt gemacht". D.h. den Pico-GEEK über den USB-A Anschluss bei gedrückter Boot-Taste mit dem Rechner verbunden und dann die Boot-Taste losgelassen. Im Explorerfenster des Rechners erscheint daraufhin wie beim RPi-Pico ein Massenspeicher RPI-RP2 . Also gleiche Methode wie beim RPi-Pico. Dann mit der uf2-Datei flash-nuke.uf2 alles komplett löschen. Ich entscheide mich für das aktuelle Betriebssystem CircuitPython und ziehe eine entsprechende, aktuelle uf2-Datei der Firmeware auf den Massenspeicher RPI-RP2. Nach dem Kopieren erscheint nun das Laufwerk 'CIRCUITPY' im Explorer. Bitte nicht wegklicken. Für den RPi-Pico habe ich die Schritte bei der Erstinstallation des runden LCD-Displays von Waveshare hier ausführlich beschrieben. Lesen Sie sich dort g.g.f. unter 'Los gehts' die entsprechenden Schritte durch und alles ist gut. Diejenigen, die sich schon auskennen, laden sich die aktuelle Firmeware 'CircuitPython' von hier: https://circuitpython.org/board/waveshare_rp2040_lcd_1_28/ herunter und installieren sie.


Los gehts

Nachdem 'CircuitPython' auf dem Pico-GEEK installiert ist, kann es weiter gehen. Als nächstes wird der Treiber für das Display gebraucht. Laut Hersteller handelt es sich um ein 1.14 inch 64K Color LCD-Display mit 240x135 Pixeln. Unter CircuitPython gibt es dafür die Bibliothek adafruit_st7789.mpy, die Sie in den 'lib'-Ordner auf das Laufwerk 'CIRCUITPY' kopieren. Bei dieser Gelegenheit kopieren Sie auch gleich die Bibliotheken für die Zeichenelemente ('adafruit_display_shapes') und den Text ('adafruit_display_text') in den 'lib'-Ordner.

Damit können wir einen ersten Test durchführen, um das Display in Betrieb zu nehmen. Übertragen Sie den Code aus dem unteren Kasten einfach in Ihre Thonny-IDE:

  
  

1  import os
2  import time
3  import board
4  import busio
5  import sdcardio
6  import digitalio
7  import storage
8  from fourwire import FourWire
9  from adafruit_display_text import label
10 import terminalio
11 import displayio
12 from adafruit_st7789 import ST7789
13
14 # Display initialisieren
15 lcd_cs=board.GP9
16 lcd_dc=board.GP8
17 lcd_reset=board.GP12
18 # Release any resources currently in use for the displays
19 displayio.release_displays()
20 spi = busio.SPI(board.GP10, board.GP11)
21 display_bus = FourWire(spi, command=lcd_dc, chip_select=lcd_cs, reset=lcd_reset)
22 display = ST7789(display_bus, rotation=270, width=240, height=135, rowstart=40, colstart=53)
23 # Make the display context
24 splash = displayio.Group()
25 display.root_group = splash
26
27 # Make a background color fill
28 color_bitmap = displayio.Bitmap(display.width, display.height, 3)
29 color_palette = displayio.Palette(3)
30 color_palette[0] = 0x660088
31 color_palette[1] = 0x000000
32 color_palette[2] = 0xffffff
33 bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
34 splash.append(bg_sprite)
35
36 # Draw a label
37 text_area = label.Label(font=terminalio.FONT, text="\n   RP2040 GEEK\n\n    it work's" , color=0xFFFF00, scale=2, line_spacing=1 )
38 text_group = displayio.Group(x=15, y=10)
39 text_group.append(text_area)  # Subgroup for text scaling
40 splash.append(text_group)
  

Wenn Sie auf 'Start' drücken, wird das Display initialisiert und ein kurzer Text ausgegeben. Genug, um zu sehen, dasss das Display arbeitet. Es folgen einige Erläuterungen:

Zunächst werden in den Zeilen 1 bis 12 die Bibliotheken geladen. (In 5 und 7 werden die Bibliotheken für die SD- Karte schon geladen, die im nächsten Beispiel gebraucht werden.)

Die Zeilen 14 bis 25 initialisieren das Display (und kommen so in allen weiteren Anwendungen vor). Dabei geht aus den Zeilen 15, 16, 17 und 20 hervor, welche GPIO's vom Board für das Display belegt sind. Die Zeilen 24, 25 konfigurieren den Zugriff.

In den Zeilen 28 bis 34 werden drei verschiedenfarbige Hintergründe festgelegt, wobei hier die erste Palette verwendet wird.

Schließlich wird mit den Zeilen 37 bis 40 eine einfache Textausgabe realisiert. Das untere Bild zeigt Daten von der Messung der Temperatur, Luftfeuchtigkeit und Luftdruck aus einem späteren Projekt.


Es werden jetzt die Programmzeilen 41 bis 57 zum Einbinden der SD-Karte ergänzt.

  
  

41
42 # SD Karte mounten
43 SD_SCK = board.GP18
44 SD_MOSI = board.GP19
45 SD_MISO = board.GP20
46 cs = board.GP23
47
48 try:
49     card = busio.SPI(SD_SCK, SD_MOSI, SD_MISO)
50     sdcard = sdcardio.SDCard(card, cs)
51     vfs = storage.VfsFat(sdcard)
52     storage.mount(vfs, "/sd")
53     text_area.text = "\n    SD-Karte\n   erfolgreich\n    gemountet."
54 except OSError as exc:
55     error = exc.errno
56     print(error)
57     text_area.text = "\n\n  keine SD-Karte\n\n    vorhanden."
  

Auch hier sehen Sie wieder, welche GPIO's das Board für den SD-Karten Slot belegt. Dieser Teil ist in den Zeilen 48 bis 57 so gestaltet, dass je nachdem ob eine SD-Karte eingelegt ist, die Ausgabe: "SD-Karte erfolgreich gemountet" bzw. ein entsprechender Fehler mit der Ausgabe: "Keine SD-Karte vorhanden." abgefangen und am Display angezeigt wird.

Noch ein Hinweis zum Anzeigen der SD-Karte in der Thonny IDE. Wenn die SD-Karte eingelegt ist, aber das Programm zum mounten noch nicht ausgeführt wurde, werden die auf der Karte gespeicherten Dateien in Python nicht angezeigt, sondern im Ordner 'sd/' nur eine Datei 'placeholder.txt'. Erst nach dem Mounten kann auf die Dateien über die Thonny IDE zugegriffen werden. Wird die SD-Karte direkt mit dem PC verbunden, ist sie ganz normal zu benutzen.


Viel Spass und Erfolg beim Ausprobieren.