Table of Contents
Introduction to Raspberry Pi Pico W
This documentation is based on the DTI '24 Microcontroller Workshop and introduces the Raspberry Pi Pico W and its potential in physical computing using CircuitPython. All examples, explanations and tutorials are adapted from the online version found at https://adriaanb.github.io/dti_workshop/.
Raspberry Pi Pico – Einführung
Der Raspberry Pi Pico ist ein kompaktes Mikrocontroller-Board der Raspberry Pi Ltd. Im Gegensatz zu den Einplatinencomputern der Raspberry-Pi-Familie läuft auf dem Pico kein Linux; das Board führt genau ein Programm aus, das im integrierten Flash-Speicher abgelegt ist. Damit eignet sich der Pico für Aufgaben, bei denen Sensoren ausgelesen und Aktoren (Licht, Klang, Bewegung) in Echtzeit gesteuert werden – also für Physical Computing, interaktive Objekte und Prototypen.
Im DTI-Workshop wird der Raspberry Pi Pico W verwendet, vorinstalliert mit CircuitPython 10 und ergänzt durch ein Grove Shield für steckbare Bauteile.
Modellübersicht
| Modell | Chip | SRAM | Flash | Funk |
|---|---|---|---|---|
| Pico / Pico H | RP2040 | 264 kB | 2 MB | – |
| Pico W / Pico WH | RP2040 | 264 kB | 2 MB | WLAN + Bluetooth |
| Pico 2 / Pico 2 with headers | RP2350 | 520 kB | 4 MB | – |
| Pico 2 W / Pico 2 W with headers | RP2350 | 520 kB | 4 MB | WLAN + Bluetooth |
- Suffix W: integriertes Funkmodul (WLAN und Bluetooth).
- Suffix H bzw. „with headers“: Stiftleisten sind bereits aufgelötet.
- Pinbelegung und Abmessungen sind zwischen Pico 1 und Pico 2 kompatibel; Pico W und Pico 2 W teilen sich ebenfalls ein Layout.
Technische Daten Pico W
| Merkmal | Wert |
|---|---|
| Mikrocontroller | RP2040, Dual-Core Arm Cortex-M0+ |
| Taktfrequenz | bis 133 MHz |
| Arbeitsspeicher | 264 kB SRAM |
| Programmspeicher | 2 MB Flash (auf dem Board) |
| GPIO | 26 multifunktionale Pins |
| Analogeingänge | 3 × ADC, 12 Bit |
| Schnittstellen | 2 × UART, 2 × SPI, 2 × I²C, 16 PWM-Kanäle |
| PIO | 8 programmierbare I/O-Zustandsmaschinen |
| USB | USB 1.1 (Device und Host), Micro-USB-Buchse |
| Funkchip | Infineon CYW43439 |
| WLAN | IEEE 802.11n, 2,4 GHz, WPA3, Access-Point-Modus (bis 4 Clients) |
| Bluetooth | 5.2 (BLE und Classic) |
| Logikpegel | 3,3 V |
Hinweis: Die GPIO-Pins arbeiten mit 3,3 V und sind nicht 5-V-tolerant. Ein 5-V-Signal direkt an einem GPIO kann den Mikrocontroller beschädigen.
Aufbau und Pinbelegung
- Micro-USB-Buchse (Stromversorgung und Daten) an der oberen Kante.
- BOOTSEL-Taster unterhalb der USB-Buchse; wird zum Aufspielen neuer Firmware benötigt.
- Onboard-LED: beim Pico W über den Funkchip angesteuert (WL_GPIO0), in CircuitPython als
board.LEDansprechbar. - 40 Pins (je 20 pro Seite), davon 26 GPIO.
- Debug-Anschluss (SWD) mittig unter dem Mikrocontroller.
Wichtige Versorgungs- und Sonderpins:
VBUS(Pin 40): 5 V direkt vom USB-Anschluss.VSYS(Pin 39): Systemeingang für externe Versorgung (z. B. Batterie).3V3(OUT)(Pin 36): geregelte 3,3-V-Ausgangsspannung für Sensoren.3V3_EN(Pin 37): auf GND gezogen, schaltet das Board ab.ADC_VREF(Pin 35): Referenzspannung der Analog-Digital-Wandler.AGND(Pin 33): analoge Masse für störungsarme Sensormessungen.RUN(Pin 30): Reset-Pin.
Analogeingänge liegen auf GP26 (A0), GP27 (A1) und GP28 (A2).
Offizielles Pinout-Diagramm: Raspberry Pi Documentation – Wireless board layout
Programmiersprachen und Umgebungen
| Umgebung | Sprache | Charakteristik |
|---|---|---|
| CircuitPython (Adafruit) | Python | Board erscheint als USB-Laufwerk CIRCUITPY; Code wird beim Speichern sofort ausgeführt. Im Workshop verwendet. |
| MicroPython | Python | Offiziell von Raspberry Pi unterstützt; Dateiübertragung über Editor (z. B. Thonny). |
| Pico C/C++ SDK | C, C++ | Höchste Performance und volle Hardwarekontrolle; Kompilierung nötig. |
| Arduino-Core | C++ (Arduino) | Community-Core; Nutzung der Arduino-Bibliotheken möglich. |
CircuitPython installieren
Bei den Workshop-Boards ist CircuitPython bereits installiert. Für eigene Boards oder ein Update:
- Passende UF2-Datei für „Raspberry Pi Pico W“ von circuitpython.org herunterladen.
- BOOTSEL-Taster gedrückt halten und das Board per USB mit dem Rechner verbinden.
- Es erscheint ein Laufwerk
RPI-RP2. - UF2-Datei per Drag-and-drop auf
RPI-RP2kopieren. - Das Board startet neu und erscheint als Laufwerk
CIRCUITPY.
Der BOOTSEL-Modus liegt im unveränderlichen ROM des Chips. Ein Board kann daher durch fehlerhafte Software nicht dauerhaft unbrauchbar werden.
Dateistruktur auf CIRCUITPY
code.py: Hauptprogramm; wird bei jedem Start und nach jedem Speichern automatisch ausgeführt.lib/: Ordner für zusätzliche Bibliotheken (Dateien*.mpyoder Ordner).boot_out.txt: enthält die installierte CircuitPython-Version.
Bibliotheken stammen aus dem Adafruit Library Bundle, das zur installierten Hauptversion passen muss (Workshop: Bundle 10.x): circuitpython.org/libraries
Editor: Mu
- Mu Editor installieren: codewith.mu – beim ersten Start den Modus „CircuitPython“ wählen.
code.pyauf dem LaufwerkCIRCUITPYöffnen, bearbeiten und mit cmd + S speichern.- Serieller Monitor („Serial“): zeigt Ausgaben von
print()und Fehlermeldungen. - Plotter: stellt Zahlenwerte als Kurven dar, wenn sie als Tupel ausgegeben werden, z. B.
print. - Im seriellen Monitor bricht ctrl + C das laufende Programm ab; ctrl + D startet es neu (Steuerzeichen der seriellen Konsole, auch auf dem Mac mit ctrl).
Erstes Programm: Onboard-LED blinken lassen
# --- Imports import time import board import digitalio # --- Variables led = digitalio.DigitalInOut(board.LED) led.direction = digitalio.Direction.OUTPUT # --- Main loop while True: led.value = True time.sleep(0.5) led.value = False time.sleep(0.5)
Das Gliederungsschema (Imports, Variables, Functions, Setup, Main loop) entspricht der Struktur der Workshop-Beispiele.
Grundbegriffe
- Input: Signal, das der Mikrocontroller erfasst (Taster, Drehregler, Sensor).
- Output: Element, das der Mikrocontroller steuert (Licht, Lautsprecher, Motor).
- Digital: zwei Zustände (an/aus, True/False). Modul
digitalio. - Analog: kontinuierlicher Wertebereich; der ADC liefert in CircuitPython Werte von 0 bis 65535. Modul
analogio. - PWM: schnelles Ein- und Ausschalten eines digitalen Signals; erzeugt ein analog wirkendes Signal (Helligkeit, Tonhöhe, Servoposition). Modul
pwmio. - I²C: Bus mit zwei Leitungen (SDA = Daten, SCL = Takt) für komplexere Bauteile; jedes Gerät besitzt eine Adresse. Modul
busio.
Grove Shield im Workshop
Das Grove Shield für den Pi Pico stellt lötfreie Grove-Steckverbinder bereit:
- 3 digitale Anschlüsse
- 2 I²C-Anschlüsse (I2C0:
GP9/GP8, I2C1:GP7/GP6für SCL/SDA), auch digital nutzbar - 2 UART-Anschlüsse, auch digital nutzbar
- 3 analoge Anschlüsse A0, A1, A2
Die Anschlüsse A1 und A2 sind „geschindelt“: Der zweite Pin eines Anschlusses ist mit dem ersten Pin des darüberliegenden Anschlusses identisch. Die Nutzung eines Anschlusses kann daher den benachbarten blockieren.
Typische Fehlerquellen
- Laufwerk
CIRCUITPYerscheint nicht: anderes USB-Kabel testen (reine Ladekabel übertragen keine Daten). ImportError: benötigte Bibliothek fehlt im Ordnerlib/oder stammt aus einem nicht passenden Bundle.- Analoger Sensor liefert keine Werte: Sensor steckt an einem digitalen statt an einem analogen Anschluss.
- I²C-Gerät nicht gefunden: Anschluss und Pinpaar (SCL/SDA) im Code prüfen.
- Laufwerk vor dem Abziehen des Kabels im Finder auswerfen, um Datenverlust in
code.pyzu vermeiden.
Quellen
- Raspberry Pi Ltd.: Pico microcontroller boards. https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html (abgerufen am 15.10.2026)
- Raspberry Pi Ltd.: Raspberry Pi Pico W Datasheet. https://pip.raspberrypi.com/documents/RP-008312-DS
- Raspberry Pi Ltd.: RP2040 Datasheet. https://pip.raspberrypi.com/documents/RP-008371-DS
- Microcontroller Workshop DTI ’26. https://adriaanb.github.io/dti_workshop/ (abgerufen am 15.10.2026)
- Adafruit: CircuitPython for Raspberry Pi Pico W. https://circuitpython.org/board/raspberry_pi_pico_w/