Raspberry Pi Pico 2 – RP2350: Die Raspberry Foundation hat jetzt eine neue Version des Raspberry Pi Pico veröffentlicht. Diese erweiterte Version des ursprünglichen Pico verfügt über eine leistungsstärkere MCU. Zwar fehlen dem Mikrocontroller die Bluetooth und WiFi Schnittstelle, aber dennoch werde ich ihm eine Chance geben und ihn genauer unter die Lupe nehmen.
Den Raspberry Pi Pico 2 habe ich mir auf der diesjährigen Maker Faire Hannover bei Berry Base für 5,5 € gekauft. Da ich diesen vor Ort gekauft habe, entfallen hier die üblichen Versandkosten und somit war es ein gutes Schnäppchen.
Inhaltsverzeichnis
- Technische Daten des Pi Pico 2 mit RP2350 MCU
- Pinout der RP2350 MCU
- Der XIAO RP2350 im Vergleich mit dem originalen Pi Pico 2
- Einrichten und programmieren des originalen RP2350A
Technische Daten des Pi Pico 2 mit RP2350 MCU
Nachfolgend zunächst die technischen Daten des Pi Pico 2:
Technische Daten | Beschreibung |
---|---|
Prozessoren | Dual Arm Cortex-M33 oder Dual Hazard3 RISC-V Prozessoren @ 150MHz |
On-Chip-Speicher | 520 KB SRAM |
Kompatibilität | Software- und hardwarekompatibel mit Raspberry Pi Pico 1 |
Schnittstellen | 2x UART, 2x SPI-Controller, 2x I2C-Controller, 24x PWM-Kanäle, 3x ADC-Kanäle |
USB | 1 × USB 1.1-Controller und PHY, mit Host- und Geräteunterstützung |
SDK und Programmiersprachen | Open-Source-C/C++ SDK, MicroPython CircuitPython, Arduino IDE |
Betriebstemperatur | -20 °C bis +85 °C |
Eingangsspannung | Unterstützte Eingangsspannung: 1,8–5,5V DC |
Sicherheitsfunktionen
Umfassende und vollständig dokumentierte Sicherheitsfunktionen:
- ARM TrustZone für Cortex-M
- Optionales Boot-Signing, durch On-Chip-Masken-ROM durchgesetzt, mit Schlüssel-Fingerprint in OTP
- Geschützter OTP-Speicher für optionalen Boot-Entschlüsselungsschlüssel
- Globales Bus-Filtering basierend auf Arm- oder RISC-V-Sicherheits-/Privilegienstufen
- Peripheriegeräte, GPIOs und DMA-Kanäle einzeln Sicherheitsdomänen zuweisbar
- Hardware-Maßnahmen gegen Fehlerinjektionsangriffe
- Hardware SHA-256-Beschleuniger
Unterschiede der verfügbaren Versionen zum RP2350
Es gibt insgesamt vier Versionen zu dieser neuen MCU. Unter dem Link »hier« findest du eine ausführliche Beschreibung in englischer Sprache vom Hersteller dazu.
Version | Interner Speicher | GPIO-Anschlüsse | Analoge Eingänge |
---|---|---|---|
RP2350A | Keiner | 30 | 4 |
RP2350B | Keiner | 48 | 8 |
RP2354A | 2 MB Flash | 30 | 4 |
RP2354B | 2 MB Flash | 48 | 8 |
Pinout der RP2350 MCU
Nachfolgend das Pinout des Raspberry Pi Pico 2. Da dieses zu 100 % mit dem Vorgängermodell kompatibel ist, wirst du hier keine Besonderheiten finden.
Die Grafik durfte ich mir mit freundlicher Genehmigung der Raspberry Pi Foundation von der Seite https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html entnehmen.
Der XIAO RP2350 im Vergleich mit dem originalen Pi Pico 2
Neben dem originalen Pi Pico 2 habe ich mir den XIAO RP2350 aus China gekauft und dieser wurde recht schnell innerhalb von 5 Tagen geliefert. (Abzüglich der üblichen Probleme mit dem Zoll.) Dieser kleine Zwerg kommt mit etwas weniger Pins daher, hat jedoch den Vorteil, dass dieser zumindest über eine fortschrittliche USB-Typ-C Schnittstelle verfügt und sofort programmiert werden kann (dazu später mehr).
Dieser kleine Mikrocontroller besitzt zusätzlich eine RGB-LED, die über GPIO22 gesteuert werden kann. Zudem kann die als USER-LED bezeichnete LED über GPIO25 angesprochen werden.
Die USER-LED wird ebenso verwendet, um den aktuellen Status anzuzeigen (UART Übertragung und POWER).
Einrichten und programmieren des originalen RP2350A
Der Mikrocontroller wird wie über die Micro-USB Buchse mit dem Computer verbunden und wird dort als RP2350 Boot erkannt.
In der Arduino IDE sowie Thonny wird dieser jedoch nicht erkannt und ich musste diesen Mikrocontroller erstmal flashen. Dazu habe ich mir die UF2-Datei von der Seite https://micropython.org/download/RPI_PICO2/ geladen und auf den Mikrocontroller kopiert. Der Mikrocontroller war dazu bereits im korrekten Modus versetzt gewesen, d.h. es war das Laufwerk RP2350 im Explorer sichtbar.
Nachdem der Mikrocontroller selbständig neu gestartet ist, war dieser in Thonny einsatzbereit und man kann nun diesen mit MicroPython programmieren.
Nachrüsten der fehlenden Bluetoothschnittstelle mit dem seriellen HC-06 Modul
Zumindest kann man die fehlende Bluetoothschnittstelle mit dem seriellen Bluetoothmodul HC-06 sehr einfach nachrüsten. Es gibt auch ESP8266 Module, welche ebenso via serieller Schnittstelle angeschlossen werden können (jedoch habe ich derzeit keines zur Hand, ist aber bestellt).
Für den Aufbau der Schaltung benötigst du:
- einen Raspberry Pi Pico 2*
- ein Micro-USB Datenkabel*
- vier Breadboardkabel*, 10 cm
- eine LED*
- ein Bluetoothmodul HC-06*
- ein 400 Pin Breadboard*
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Die Schaltung hierzu ist recht einfach, für die serielle Kommunikation benötigen wir lediglich zwei Breadboardkabel und für die Stromversorgung des Modules ebenso zwei. In meinem Fall verwende ich eine 10 mm LED, welche eine Spannungsversorgung von 3.3V hat, somit direkt mit dem Mikrocontroller verbunden werden kann (quasi ohne 220 Ohm Vorwiderstand).
Im Beitrag Raspberry Pi Pico W & Bluetooth habe ich dir erläutert, wie man das Vorgängermodell mit dem CYW43438 Chip über das HC-06 Modul Bluetoothfähig macht. Der Chip CYW43438 verfügt neben WiFi auch über Bluetooth, jedoch kam dieses erst mit einem Firmwareupdate und somit gab es eine Zeit wo der Pico W ohne Bluetooth geliefert wurde.
# Import der benötigten Module # zum kommunizieren über # die serielle Schnittstelle from machine import Pin, UART # definieren der seriellen Schnittstelle # der Pi Pico verfügt über mehrere serielle Schnittellen # es wird hier die erste verwendet mit # einer Geschwindigkeit von 9600 baud uart = UART(0, 9600) # die LED ist am GPIO6 angeschlossen led = Pin(6, Pin.OUT) # starten der Endlosschleife while True: # Wenn Daten empfangen wurden, dann... if uart.any() > 0: # auslesen der Daten data = uart.read() # ausgeben der Daten auf der seriellen Schnittstelle # diese können via Putty oder # in der Shell von Thonny abgelesen werden print(data) # Wenn der gelesene Wert gleich 'on' ist, dann... if "on" in data: # aktivieren der LED led.value(1) # absenden der Zeichenkette an den Sender uart.write('LED on \n') elif "off" in data: # Wenn der Wert 'off' ist, dann... # LED deaktivieren led.value(0) # absenden der Zeichenkette an den Sender print('LED off \n') uart.write('LED off \n')