Pins, Pins, Pins
Wenn du dich schon auskennst, kannst du den PicoBoy ohne die übrigen Seiten programmieren. Er verhält sich wie ein Raspberry Pi Pico, an den die unten beschriebenen Komponenten angeschlossen sind. Neben MicroPython und der Arduino IDE lassen sich daher auch PlatformIO und CircuitPython verwenden.
Technische Daten
Controller
Der Kern des PicoBoy ist der RP2040, wie er auch im Raspberry Pi Pico verwendet wird. Ihm steht ein externer Flash-Speicher (W25Q16JVSSIQ) mit 2 MB zur Seite. Den Arduino-Core für den Raspberry Pi Pico kannst du unverändert nehmen; für MicroPython gibt es eine eigene Firmware (siehe unten). Wähle in der Arduino IDE das Board „Raspberry Pi Pico“.
Display
Das SH1106-Display hat eine Auflösung von 128 × 64 Pixeln bei einer Diagonale von 1,3″. Es ist per SPI angebunden (SPI 0) und lässt sich gut mit der u8g2-Bibliothek verwenden.
Dabei werden die folgenden Pins verwendet:
- DC → GPIO 8
- Reset → GPIO 9
- CS → GPIO 10
- SCK → GPIO 18 (SPI0)
- MOSI → GPIO 19 (SPI0)
SCK und MOSI sind die Standardpins von SPI0, der Konstruktor von u8g2 braucht sie daher nicht. Er lautet in der Arduino IDE:
#include <U8g2lib.h> #include <SPI.h> U8G2_SH1106_128X64_NONAME_F_4W_HW_SPI u8g2(U8G2_R0, 10, 8, 9); // CS, DC, Reset
Schreibst du einen eigenen Treiber, beachte: Der SH1106 hat intern 132 Spalten, das sichtbare Bild beginnt bei Spalte 2.
Joystick
- Oben → GPIO 1
- Unten → GPIO 3
- Links → GPIO 4
- Rechts → GPIO 2
- Mitte → GPIO 0
- Hinweis:Die Taster schalten gegen Masse. Du musst daher die im Mikrocontroller vorhandenen Pull-Up-Widerstände einschalten.
LEDs
Die LEDs sind jeweils über einen Vorwiderstand direkt mit den IO-Pins verbunden:
- Rot → GPIO 5
- Gelb → GPIO 6
- Grün → GPIO 7
Lautsprecher
Der Lautsprecher hängt an einem Tiefpassfilter, so dass sich Töne auch per PWM erzeugen lassen:
- Lautsprecher → GPIO 15
- Hinweis:Lass den Pin nicht zu lange auf HIGH. Es ist zwar ein Tiefpassfilter vorhanden, um die Ausgabe von PWM-Signalen zu ermöglichen, aber kein Hochpassfilter.
Tasten auf der Rückseite
Auf der Rückseite liegen zwei Tasten für den Mikrocontroller selbst: Mit „RES“ startest du das Gerät neu. Hältst du „BOOT“ gedrückt, während du kurz „RES“ drückst, meldet sich der PicoBoy als USB-Massenspeicher mit dem Laufwerk RPI-RP2. In diesem Zustand kopierst du eine *.uf2-Datei darauf.
Beschleunigungssensor
Der Beschleunigungssensor STK8BA58 ist im Arduino-Umfeld eher ungewöhnlich, daher kannst du dir hier ein Beispiel zu seiner Verwendung herunterladen. Er ist über I²C angebunden:
- SDA → GPIO 20
- SCL → GPIO 21
- I²C-Adresse → 0x18
Die Messwerte liegen ab den Registern 0x02 (x), 0x04 (y) und 0x06 (z), je zwei Bytes, das niederwertige zuerst. Die oberen vier Bits des ersten Bytes und das zweite Byte ergeben zusammen einen vorzeichenbehafteten 12-Bit-Wert. 1024 Schritte entsprechen 1 g. In MicroPython liefern pb.xAcc(), pb.yAcc() und pb.zAcc() den Wert direkt in g.
Firmware und Bibliothek
Für MicroPython gibt es eine fertige Firmware für den PicoBoy. Sie basiert auf MicroPython 1.29 und hat die Bibliothek picoboy.py sowie ein Startmenü fest eingebaut – du musst also nichts mehr von Hand auf das Gerät kopieren.
- PicoBoy-MicroPython-1.29.0.uf2 – im Bootloadermodus einfach auf das Laufwerk
RPI-RP2kopieren. - picoboy.py – die Bibliothek als einzelne Datei, zum Nachlesen oder Anpassen. Zum Programmieren brauchst du sie nicht.
PicoBoy() setzt den Prozessortakt: Nach dem Aufruf läuft MicroPython mit 50 MHz. Einen anderen Takt wählst du über den Parameter frequency:
from picoboy import PicoBoy pb = PicoBoy(frequency=125000000) # statt der üblichen 50 MHz
Die Grafikausgabe ist in dieser Firmware deutlich schneller als vorher: Ein vollständiges Spielbild braucht 18,5 statt 28,4 Millisekunden, das sind etwa 54 statt 35 Bilder pro Sekunde.
Studio im Browser
Das PicoBoy Studio ist nicht nur für Anfänger nützlich: Es hat einen Python-Editor, eine serielle Konsole mit REPL, einen Dateimanager für das Gerät und einen PicoBoy-Emulator. Firmware und Startmenü lassen sich damit ebenfalls installieren.
- Python-Editor und Blöcke
- Seriell/REPL und Soft-Reset
- Dateien auf dem Gerät verwalten
- Flash-Backup als .uf2 erstellen
- Emulator für Tests ohne Gerät
Für die Übertragung über USB nutzt das Studio Web Serial. Nimm dafür Google Chrome, denn Web Serial gibt es nur in Browsern auf Chromium-Basis.
Weiterführende Links
Beispielprogramme, Vorlagen, Datenblätter und Bibliotheken findest du gesammelt unter Links & Downloads.