Für erfahrene Nutzer

Pins, Bauteile und Firmware kompakt auf einer Seite.

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

MikrocontrollerRP2040
Prozessor2 × ARM Cortex-M0+, bis 133 MHz
RAM264 KB SRAM
Flash2 MB extern (16 Mbit)
Display1,3″ OLED, 128 × 64 Pixel
Display-ControllerSH1106, 1 Bit Farbtiefe, SPI
Bedienung5-Wege-Joystick
Anzeigen3 LEDs (rot, gelb, grün)
TonLautsprecher über PWM-Pin
SensorBeschleunigungssensor STK8BA58, I²C
AnschlussUSB-C
StromversorgungUSB-C oder Knopfzelle CR2032

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-RP2 kopieren.
  • 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.

Studio öffnen

  • 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.