Creative Technologies Lab | dokuWiki

Repository of academic adventures, experimental technology, accidental brilliance, and collaborative nerdery.

User Tools

Site Tools


extras:codikon:hardware:pipico

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
extras:codikon:hardware:pipico [2025/07/06 07:49] – removed - external edit (Unknown date) 127.0.0.1extras:codikon:hardware:pipico [2026/10/15 07:15] (current) – Felix Hardmood Beck
Line 1: Line 1:
 +====== 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.LED'' ansprechbar.
 +  * 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: [[https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html#layout_wireless|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 [[https://circuitpython.org/board/raspberry_pi_pico_w/|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-RP2'' kopieren.
 +  - 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 ''*.mpy'' oder 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): [[https://circuitpython.org/libraries|circuitpython.org/libraries]]
 +
 +
 +===== Editor: Mu =====
 +
 +  * Mu Editor installieren: [[https://codewith.mu|codewith.mu]] – beim ersten Start den Modus „CircuitPython“ wählen.
 +  * ''code.py'' auf dem Laufwerk ''CIRCUITPY'' ö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 =====
 +
 +<code python>
 +# --- 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)
 +</code>
 +
 +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''/''GP6'' fü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 ''CIRCUITPY'' erscheint nicht: anderes USB-Kabel testen (reine Ladekabel übertragen keine Daten).
 +  * ''ImportError'': benötigte Bibliothek fehlt im Ordner ''lib/'' 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.py'' zu 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/]]