
Raspberry Pi Pico Arduino core, für alle RP2040 und RP2350 Boards
# Arduino-Pico
[](https://github.com/earlephilhower/arduino-pico/releases)
[](https://gitter.im/arduino-pico/community)
Raspberry Pi Pico Arduino-Core für alle RP2040- und RP2350-Boards
Dies ist ein Port von Arduino auf den RP2040 (Raspberry Pi Pico Prozessor) und RP2350 (Raspberry Pi Pico 2 Prozessor). Er verwendet das reine Raspberry Pi Pico SDK und eine benutzerdefinierte GCC 16.1/Newlib 4.6 Toolchain und unterstützt ARM- und RISC-V-Kerne.
# Dokumentation
Siehe https://arduino-pico.readthedocs.io/en/latest/ zusammen mit den Beispielen für detailliertere Nutzungsinformationen.
# Mitwirken
Lesen Sie den [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blob/master/docs/contrib.rst) für weitere Informationen zum Einreichen von Pull Requests und zum Portieren von Bibliotheken oder Sketches auf diesen Core.
# Unterstützte Boards
* Raspberry Pi Pico
* Raspberry Pi Pico W
* Raspberry Pi Pico 2
* Raspberry Pi Pico 2W
* 0xCB Helios
* Adafruit Feather RP2040
* Adafruit Feather RP2040 SCORPIO
* Adafruit Feather RP2040 DVI
* Adafruit Feather RP2040 Adalogger
* Adafruit Feather RP2040 RFM
* Adafruit Feather RP2040 ThinkINK
* Adafruit Feather RP2040 USB Host
* Adafruit Feather RP2040 CAN
* Adafruit Feather RP2040 Prop-Maker
* Adafruit ItsyBitsy RP2040
* Adafruit Metro RP2040
* Adafruit QT Py RP2040
* Adafruit STEMMA Friend RP2040
* Adafruit Trinkey RP2040 QT
* Adafruit MacroPad RP2040
* Adafruit KB2040
* Adafruit Feather RP2350 Adalogger
* Adafruit Feather RP2350 HSTX
* Adafruit Floppsy
* Adafruit Metro RP2350
* Adafruit Fruit Jam RP2350
* Amken BunnyBoard
* Amken Revelop
* Amken Revelop Plus
* Amken Revelop eS
* Architeuthis Flux Jumperless
* Architeuthis Flux Jumperless V5
* Arduino Nano RP2040 Connect
* ArtronShop RP2 Nano
* BIGTREETECH SKR-Pico
* Breadstick Raspberry
* BridgeTek IDM2040-7A
* BridgeTek IDM2040-43A
* Cytron IRIV IO Controller
* Cytron Maker Nano RP2040
* Cytron Maker Pi RP2040
* Cytron Maker Uno RP2040
* Cytron Motion 2350 Pro
* Cytron Maker Sumo RP2350
* DatanoiseTV PicoADK
* DatanoiseTV PicoADK v2
* Degz Robotics Suibo RP2040
* DeRuiLab FlyBoard2040Core
* DFRobot Beetle RP2040
* L'atelier d'Arnoz DudesCab
* ElectronicCats HunterCat NFC RP2040
* EVN Alpha
* ExtremeElectronics RC2040
* GeeekPi RP2040 Plus
* GroundStudio Marble Pico
* iLabs Challenger 2040 LTE
* iLabs Challenger 2040 LoRa
* iLabs Challenger 2040 SubGHz
* iLabs Challenger 2040 WiFi
* iLabs Challenger 2040 WiFi/BLE
* iLabs Challenger 2040 WiFi6/BLE
* iLabs Challenger NB 2040 WiFi
* iLabs Challenger 2040 SD/RTC
* iLabs Challenger 2040 NFC
* iLabs Challenger 2040 UWB
* iLabs Connectivity 2040 LTE/WiFi/BLE
* iLabs RPICO32
* iLabs Challenger 2350 WiFi/BLE
* iLabs Challenger 2350 BConnect
* iLabs Challenger 2350 NB-IoT
* iLabs Challenger ZP 2350 LoRa
* iLabs CPico 2350
* Makerbase MKS THR36
* Makerbase MKS THR42
* Melopero Cookie RP2040
* Melopero Shake RP2040
* METE HOCA Akana R1
* MyMakers RP2040
* MyMakers RP2350B
* Neko Systems BL2040 Mini
* Newsan Archi
* nullbits Bit-C PRO
* Olimex Pico2BB48
* Olimex Pico2XL
* Olimex Pico2XXL
* Olimex RP2040-Pico30
* Pcbcupid GLYPH 2040
* Pcbcupid GLYPH MINI 2040
* PicoLume Transceiver
* Pimoroni PGA2040
* Pimoroni PGA2350
* Pimoroni PicoPlus2
* Pimoroni PicoPlus2W
* Pimoroni Plasma2040
* Pimoroni Plasma2350
* Pimoroni Plasma2350W
* Pimoroni Servo2040
* Pimoroni Tiny2040
* Pimoroni Tiny2350
* Pimoroni Explorer
* Pintronix PinMax
* RAKwireless RAK11300
* redscorp RP2040-Eins
* redscorp RP2040-ProMini
* Generic Sea-Picro
* Silicognition RP2040-Shim
* Solder Party RP2040 Stamp
* Solder Party RP2350 Stamp
* Solder Party RP2350 Stamp XL
* Soldered Electronics NULA RP2350
* Soldered Electronics NULA Ethernet W55RP20
* Soldered Electronics NULA Node
* SparkFun IoT RedBoard RP2350
* SparkFun MicroMod RP2040
* SparkFun ProMicro RP2040
* SparkFun ProMicro RP2350
* SparkFun Thing Plus RP2040
* SparkFun Thing Plus RP2350
* SparkFun IoT Node LoRaWAN
* SparkFun XRP Controller (Beta)
* SparkFun XRP Controller
* Seeed INDICATOR RP2040
* Seeed XIAO RP2040
* Seeed XIAO RP2040 Plus
* Seeed XIAO RP2350
* uPesy RP2040 DevKit
* VCC-GND YD RP2040
* Vicharak Shrike-Lite
* Viyalab Mizu RP2040
* Waveshare RP2040 Zero
* Waveshare RP2040 One
* Waveshare RP2040 LoRa
* Waveshare RP2040 Matrix
* Waveshare RP2040 PiZero
* Waveshare RP2040 Plus
* Waveshare RP2040 LCD 0.96
* Waveshare RP2040 LCD 1.28
* Waveshare RP2350 Core
* Waveshare RP2350 Zero
* Waveshare RP2350 PiZero
* Waveshare RP2350 Plus
* Waveshare RP2350B Plus W
* Waveshare RP2350 LCD 0.96
* Waveshare RP2350-POE-ETH
* WeAct Studio RP2350B Core Board
* WIZnet W5100S-EVB-Pico
* WIZnet W5100S-EVB-Pico2
* WIZnet W5500-EVB-Pico
* WIZnet W5500-EVB-Pico2
* WIZnet W55RP20-EVB-Pico
* WIZnet W6300-EVB-Pico
* WIZnet W6300-EVB-Pico2
* WIZnet WizFi360-EVB-Pico
* Generic RP2040
* Generic RP2350
# Funktionen
* Adafruit TinyUSB Arduino (USB-Maus, Tastatur, Flash-Laufwerk, generisches HID, CDC Serial, MIDI, WebUSB, andere)
* Bluetooth auf dem PicoW (Classic und BLE) mit Tastatur, Maus, Joystick und virtuellem Serial
* Bluetooth Classic und BLE HID-Master-Modus (Verbindung mit BT-Tastatur, -Maus oder -Joystick)
* Generische Arduino USB-Serial-, Tastatur-, Joystick- und Maus-Emulation
* WiFi (Pico W, ESP32-basierter ESPHost, Atmel WINC1500)
* Ethernet (kabelgebunden WizNet W6300, WizNet W6100, WizNet W5500, WizNet W5100, ENC28J60)
* HTTP-Client und -Server (WebServer)
* SSL/TLS/HTTPS
* Over-the-Air (OTA)-Upgrades
* Dateisysteme (LittleFS und SD/SDFS)
* Multicore-Unterstützung (setup1() und loop1())
* FreeRTOS SMP-Unterstützung
* Übertakten und Untertakten über die Menüs
* digitalWrite/Read, shiftIn/Out, tone, analogWrite(PWM)/Read, Temperatur
* Analoges Stereo-Audio-Eingang mittels DMA und dem integrierten ADC
* Analoger Stereo-Audio-Ausgang mittels PWM-Hardware
* Bluetooth A2DP-Audioquelle (Ausgang) und -Senke (Eingang) auf dem PicoW
* USB-Laufwerksmodus für Datenlogger (SingleFileDrive, FatFSUSB)
* Peripheriegeräte: SPI Master/Slave, Wire(I2C) Master/Slave, dualer UART, emuliertes EEPROM, I2S-Audio-Ein-/Ausgang, Servo
* printf- (d. h. Debug-)Ausgabe über USB-Serial
* Transparente Nutzung von PSRAM-Globals und Heap (nur RP2350)
* ARM- oder RISC-V- (Hazard3-)Unterstützung für den RP2350
* Semihosted Serial- und Dateisystemzugriff
* GPROF-Profiling-Unterstützung
Die RP2040 PIO-Zustandsmaschinen (SMs) werden verwendet, um jitterfrei zu erzeugen:
* Servos
* Töne
* I2S-Eingang
* I2S-Ausgang
* Software-UARTs (serielle Ports)
* Software-SPIs
# Installation über den Arduino Boards Manager
## Windows-spezifische Hinweise
Bitte verwenden Sie nicht die Windows-Store-Version der eigentlichen Arduino-Anwendung,
da diese Probleme beim Erkennen angeschlossener Pico-Boards hat. Verwenden Sie den "Windows ZIP"- oder den einfachen "Windows"-
Executable-(EXE-)Download direkt von https://arduino.cc. und lassen Sie ihn alle vorgeschlagenen Gerätetreiber installieren.
Andernfalls wird das Pico-Board möglicherweise nicht erkannt. Wenn Sie außerdem die
2.0-Beta von Arduino ausprobieren möchten, installieren Sie bitte vorher die Version 1.8, um sicherzustellen, dass die benötigten Gerätetreiber
vorhanden sind. (Siehe #20 für weitere Details.)
## Linux-spezifische Hinweise
Wenn Sie Arduino mit flatpak installieren (wird häufig von "App Stores" in verschiedenen Linux-
Distributionen verwendet), hat es eingeschränkten Zugriff auf das Host-System. Dies kann dazu führen, dass Uploads fehlschlagen
mit Fehlermeldungen wie der folgenden:
```
Scanning for RP2040 devices
...
No drive to deploy.
```
Wenn Sie darauf stoßen, müssen Sie entweder Arduino auf eine andere Weise installieren oder die
flatpak-Sandboxing-Funktion mit dem folgenden Befehl überschreiben und dann Arduino neu starten.
```
flatpak override --user --filesystem=host:ro cc.arduino.IDE2
```
## Installation
Öffnen Sie die Arduino IDE und gehen Sie zu Datei->Voreinstellungen.
Geben Sie im daraufhin angezeigten Dialog die folgende URL in das Feld "Zusätzliche Boardverwalter-URLs" ein:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Klicken Sie auf OK, um den Dialog zu schließen.
Gehen Sie in der IDE zu Werkzeuge->Boards->Boardverwalter
Geben Sie "pico" in das Suchfeld ein und wählen Sie "Hinzufügen":

# Installation über GIT
**Windows-Benutzer:** Bevor Sie über `git` unter Windows installieren, lesen und befolgen Sie bitte die Anweisungen in
[diesem Link](https://arduino-pico.readthedocs.io/en/latest/platformio.html#important-steps-for-windows-users-before-installing).
Wenn Win32-Langpfade nicht aktiviert sind und `git` nicht für deren Verwendung konfiguriert ist, kann es
beim Versuch, die Submodule zu klonen, zu Fehlern kommen.
Zur Installation über GIT (für die neuesten und besten Versionen) unter Linux oder Mac:
````
mkdir -p ~/Arduino/hardware/pico
git clone https://github.com/earlephilhower/arduino-pico.git ~/Arduino/hardware/pico/rp2040
cd ~/Arduino/hardware/pico/rp2040
git submodule update --init --recursive
cd tools
python3 ./get.py
`````
Für Windows müssen Sie Python bereits installiert haben und git clone in einem anderen Pfad ausführen:
````
mkdir %USERPROFILE%\Documents\Arduino\hardware\pico
git clone https://github.com/earlephilhower/arduino-pico.git %USERPROFILE%\Documents\Arduino\hardware\pico\rp2040
cd %USERPROFILE%\Documents\Arduino\hardware\pico\rp2040
git submodule update --init --recursive
cd tools
python .\get.py
````
# Hochladen von Sketches
Um Ihren ersten Sketch hochzuladen, müssen Sie die BOOTSEL-Taste gedrückt halten, während Sie den Pico an Ihren Computer anschließen.
Drücken Sie dann die Upload-Schaltfläche und der Sketch sollte übertragen werden und mit der Ausführung beginnen.
Nach dem ersten Upload sollte dies nicht mehr notwendig sein, da der `arduino-pico`-Core Auto-Reset-Unterstützung bietet.
Wählen Sie einmal den entsprechenden seriellen Port aus, der im Menü Arduino Werkzeuge->Port->Serieller Port angezeigt wird (diese Einstellung bleibt erhalten und muss für mehrere Uploads nicht
angepasst werden). Diese Auswahl ermöglicht es dem Auto-Reset-Tool, das richtige Gerät zum Zurücksetzen zu identifizieren.
Drücken Sie dann die Upload-Schaltfläche und Ihr Sketch sollte hochgeladen und ausgeführt werden.
In einigen Fällen kann der Pico einen harten Hänger erleiden und sein USB-Port reagiert nicht auf die Auto-Reset-Anfrage. Sollte dies passieren, befolgen Sie einfach
das anfängliche Verfahren, bei dem Sie die BOOTSEL-Taste gedrückt halten, während Sie den Pico anschließen, um den ROM-Bootloader zu starten.
# Hochladen von Dateisystem-Images
Das integrierte Flash-Dateisystem für den Pico, LittleFS, ermöglicht es Ihnen, ein Dateisystem-Image aus dem Sketch-Verzeichnis hochzuladen, damit Ihr Sketch es verwenden kann. Laden Sie das benötigte Plugin herunter von
* https://github.com/earlephilhower/arduino-pico-littlefs-plugin/releases
Zur Installation folgen Sie den Anweisungen in
* https://github.com/earlephilhower/arduino-pico-littlefs-plugin/blob/master/README.md
Für detaillierte Nutzungsinformationen lesen Sie bitte die ESP8266-Repo-Dokumentation (ignorieren Sie SPIFFS-bezogene Hinweise), verfügbar unter
* https://arduino-pico.readthedocs.io/en/latest/fs.html
# Hochladen von Sketches mit Picoprobe/Debugprobe
Wenn Sie einen Raspberry Pi Picoprobe gebaut haben, können Sie OpenOCD verwenden, um Ihre Sketch-Uploads und zum Debuggen mit GDB zu handhaben.
Unter Windows sollte ein lokaler Administratorbenutzer automatisch auf den Picoprobe-Port zugreifen können, aber unter Linux muss `udev` über das Gerät informiert werden und normalen Benutzern den Zugriff erlauben.
Um Benutzerzugriff auf Picoprobes unter Ubuntu (und anderen Betriebssystemen, die `udev` verwenden) einzurichten:
````
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE="660", GROUP-"plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", MODE="660", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000f", MODE="660", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
sudo udevadm control --reload
sudo udevadm trigger -w -s usb
````
Die erste Zeile erstellt eine Gerätedatei in `/dev`, die zur USB-Hersteller- und Produkt-ID des Picoprobe passt, und aktiviert globale Lese- und Schreibberechtigungen. Die zweite Zeile veranlasst `udev`, diese neue Regel zu laden. Die dritte Zeile fordert den Kernel auf, "Device Change"-Ereignisse zu generieren, die unsere neue `udev`-Regel ausführen.
Wenn die Gerätedatei aus irgendeinem Grund nicht erscheint, ziehen Sie die USB-Verbindung manuell ab und stecken Sie sie wieder ein und prüfen Sie erneut. Die Ausgabe von `dmesg` kann nützliche Diagnosen liefern, wenn die Gerätedatei weiterhin fehlt.
Sobald die Picoprobe-Berechtigungen ordnungsgemäß eingerichtet sind, wählen Sie das Board "Raspberry Pi Pico (Picoprobe)" im Werkzeuge-Menü aus und laden Sie wie gewohnt hoch.
# Debuggen mit Picoprobe, OpenOCD und GDB
Die installierten Werkzeuge enthalten eine Version von OpenOCD (im Verzeichnis pqt-openocd) und GDB (im Verzeichnis pqt-gcc). Diese können verwendet werden, um GDB in einem interaktiven Fenster auszuführen, wie in den Pico Getting Started-Handbüchern der Raspberry Pi Foundation dokumentiert. Verwenden Sie die Befehlszeile `./system/openocd/bin/openocd -f ./lib/rp2040/picoprobe_cmsis_dap.tcl` oder `./system/openocd/bin/openocd -f ./lib/rp2350/picoprobe_cmsis_dap.tcl` aus dem `git`-Installationsverzeichnis.
# Lizenzierung und Credits
* Die [Arduino IDE und ArduinoCore-API](https://arduino.cc) werden vom Arduino-Team entwickelt und gepflegt. Die IDE ist unter GPL lizenziert.
* Die [RP2040 GCC-basierte Toolchain](https://github.com/earlephilhower/pico-quick-toolchain) ist unter der GPL lizenziert.
* Das [Pico-SDK](https://github.com/raspberrypi/pico-sdk) stammt von Raspberry Pi (Trading) Ltd und ist unter der BSD 3-Clause-Lizenz lizenziert.
* [Arduino-Pico](https://github.com/earlephilhower/arduino-pico) Core-Dateien sind unter der LGPL lizenziert.
* Die [LittleFS](https://github.com/ARMmbed/littlefs)-Bibliothek wurde von ARM Limited geschrieben und unter der [BSD 3-clause license](https://github.com/ARMmbed/littlefs/blob/master/LICENSE.md) veröffentlicht.
* [UF2CONV.PY](https://github.com/microsoft/uf2) stammt von Microsoft Corporation und ist unter der MIT-Lizenz lizenziert.
* Netzwerk- und Dateisystemcode stammt aus dem [ESP8266 Arduino Core](https://github.com/esp8266/Arduino) und ist unter der LGPL lizenziert.
* DHCP-Server für AP-Host-Modus aus dem [Micropython Project](https://micropython.org), vertrieben unter der MIT-Lizenz.
* [FreeRTOS](https://freertos.org) ist urheberrechtlich geschützt durch Amazon.com, Inc. oder seine Tochtergesellschaften und wird unter der MIT-Lizenz vertrieben.
* [lwIP](https://savannah.nongnu.org/projects/lwip/) ist (c) des Swedish Institute of Computer Science und unter der BSD-Lizenz lizenziert.
* Die [BearSSL](https://bearssl.org)-Bibliothek wurde von Thomas Pornin geschrieben und wird unter der [MIT License](https://bearssl.org/#legal-details) vertrieben.
* [UZLib](https://github.com/pfalcon/uzlib) ist urheberrechtlich geschützt durch (c) 2003 Joergen Ibsen und wird unter der zlib-Lizenz vertrieben.
* [LEAmDNS](https://github.com/LaborEtArs/ESP8266mDNS) ist urheberrechtlich geschützt durch mehrere Autoren und wird unter der MIT-Lizenz vertrieben.
* [http-parser](https://github.com/nodejs/http-parser) ist urheberrechtlich geschützt durch Joyent, Inc. und andere Node-Mitwirkende.
* WebServer-Code wurde vom [ESP32 WebServer](https://github.com/espressif/arduino-esp32/tree/master/libraries/WebServer) modifiziert und ist urheberrechtlich geschützt durch (c) 2015 Ivan Grokhotkov und andere.
* [Xoshiro-cpp](https://github.com/Reputeless/Xoshiro-cpp) ist urheberrechtlich geschützt durch (c) 2020 Ryo Suzuki und wird unter der MIT-Lizenz vertrieben.
* [FatFS Low-Level-Dateisystem](http://elm-chan.org/fsw/ff/)-Code ist Copyright (C) 2024, ChaN, alle Rechte vorbehalten.
* [TLSF-Speichermanager für PSRAM aus dem Espressif-Fork](https://github.com/espressif/tlsf) des [Originals](https://github.com/mattconte/tlsf) von Matthew Conte ist urheberrechtlich geschützt durch Matthew Conte und unter der MIT-Lizenz lizenziert.
* Die [ESPHost-Bibliothek](https://github.com/Networking-for-Arduino/ESPHost) ist LGPL-lizenziert durch ihre Maintainer.
* Die [iLabs_ESP-NOW-Bibliothek](https://github.com/PontusO/iLabs_ESP-NOW) ist unter der MIT-Lizenz von iLabs Electronics lizenziert.
* Die [iLabs_Hearth-Bibliothek](https://github.com/PontusO/iLabs_Hearth) ist unter der MIT-Lizenz von iLabs Electronics lizenziert.
* Die [PicoCamera](https://github.com/umeiko/PicoCamera)-Kamerabibliothek ist unter der MIT-Lizenz von umeko lizenziert.
-Earle F. Philhower, III
[email protected]