Zurück zu den Updates
New releaseSep 5, 2026

arduino-pico v6.1.0

Raspberry Pi Pico Arduino core, für alle RP2040 und RP2350 Boards

Teilen

Arduino-Pico

Release Gitter

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). Es verwendet das reine Raspberry Pi Pico SDK und eine benutzerdefinierte GCC 14.3/Newlib 4.5-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 Leitfaden zum Mitwirken für weitere Informationen zum Einreichen von Pull-Requests und zum Portieren von Bibliotheken oder Skizzen 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 Floppsy RP2040
  • Adafruit ItsyBitsy RP2040
  • Adafruit KB2040
  • Adafruit Macropad RP2040
  • Adafruit Metro RP2040
  • Adafruit Metro RP2350
  • Adafruit QTPy RP2040
  • Adafruit STEMMA Friend RP2040
  • Adafruit Trinkey RP2040 QT
  • Amken Bunny
  • 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 Pi RP2040
  • Cytron Maker Nano RP2040
  • Cytron Maker Uno RP2040
  • Cytron Motion 2350 Pro
  • Datanoise PicoADK v1
  • Datanoise PicoADK v2 (RP2350)
  • Degz Suibo RP2040
  • DeRuiLab FlyBoard2040 Core
  • DFRobot Beetle RP2040
  • ElectronicCats Hunter Cat NFC
  • EVN Alpha
  • ExtremeElectronics RC2040
  • GeeekPi RP2040 Plus
  • GroundStudio Marble Pico
  • Invector Labs Challenger RP2040 WiFi
  • Invector Labs Challenger RP2040 WiFi/BLE
  • Invector Labs Challenger RP2040 WiFi6/BLE
  • Invector Labs Challenger NB RP2040 WiFi
  • Invector Labs Challenger RP2040 LTE
  • Invector Labs Challenger RP2040 LoRa
  • Invector Labs Challenger RP2040 SubGHz
  • Invector Labs Challenger RP2040 SD/RTC
  • Invector Labs Challenger RP2040 UWB
  • Invector Labs Challenger+ RP2350 BConnect
  • Invector Labs Challenger+ RP2350 WiFi/BLE
  • Invector Labs Challenger+ RP2350 NB-IoT
  • Invector Labs RPICO32
  • Melopero Cookie RP2040
  • Melopero Shake RP2040
  • METE HOCA Akana R1
  • Makerbase MKSTHR36
  • Makerbase MKSTHR42
  • MyMakers RP2040
  • Neko Systems BL2040 Mini
  • Newsan Archi
  • nullbits Bit-C PRO
  • Olimex Pico2XL
  • Olimex Pico2XXL
  • Olimex RP2040-Pico30
  • PicoLume Transceiver
  • Pimoroni PGA2040
  • Pimoroni Pico Plus 2
  • Pimoroni Pico Plus 2W
  • Pimoroni Plasma2040
  • Pimoroni Plasma2350
  • Pimoroni Plasma2350W
  • Pimoroni Servo2040
  • Pimoroni Tiny2040
  • Pimoroni Tiny2350
  • Pintronix PinMax
  • PCBCupid Glyph 2040
  • PCBCupid Glyph Mini 2040
  • RAKwireless RAK11300
  • Redscorp RP2040-Eins
  • Redscorp RP2040-ProMini
  • Sea-Picro
  • Seeed Indicator RP2040
  • Seeed XIAO RP2040
  • Seeed XIAO RP2040 Plus
  • Seeed XIAO RP2350
  • Silicognition RP2040-Shim
  • Solder Party RP2040 Stamp
  • Solder Party RP2350 Stamp
  • Solder Party RP2350 Stamp XL
  • Soldered Electronics NULA Ethernet W55RP20
  • Soldered Electronics NULA RP2350
  • SparkFun IoT RedBoard RP2350
  • SparkFun MicroMod RP2040
  • SparkFun ProMicro RP2040
  • SparkFun ProMicro RP2350
  • SparkFun Thing Plus RP2040
  • SparkFun Thing Plus RP2350
  • SparkFun XRP Controller
  • uPesy RP2040 DevKit
  • VCC-GND YD-RP2040
  • Viyalab Mizu RP2040
  • Waveshare RP2040 Zero
  • Waveshare RP2040 One
  • Waveshare RP2040 Plus
  • Waveshare RP2040 LCD 0.96
  • Waveshare RP2040 LCD 1.28
  • Waveshare RP2040 LoRa
  • Waveshare RP2040 Matrix
  • Waveshare RP2040 PiZero
  • Waveshare RP2350 Zero
  • Waveshare RP2350 PiZero
  • Waveshare RP2350 Plus
  • Waveshare RP2350 Plus W
  • Waveshare RP2350 LCD 0.96
  • 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
  • Generisches RP2040 (konfigurierbarer Flash, I/O-Pins)
  • Generisches RP2350 (konfigurierbarer Flash, I/O-Pins)

Funktionen

  • Adafruit TinyUSB Arduino (USB-Maus, -Tastatur, -Flash-Laufwerk, generisches HID, CDC-Seriell, MIDI, WebUSB, andere)
  • Bluetooth auf dem PicoW (Classic und BLE) mit Tastatur, Maus, Joystick und virtuellem seriellem Port
  • Bluetooth Classic und BLE HID-Master-Modus (Verbindung mit BT-Tastatur, -Maus oder -Joystick)
  • Generische Arduino USB-Serielle, -Tastatur, -Joystick und -Maus-Emulation
  • WiFi (Pico W, ESP32-basiertes 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)-Updates
  • 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 über DMA und den eingebauten ADC
  • Analoger Stereo-Audio-Ausgang über PWM-Hardware
  • Bluetooth A2DP-Audioquelle (Ausgabe) und -Senke (Eingabe) auf dem PicoW
  • USB-Laufwerk-Modus für Datenlogger (SingleFileDrive, FatFSUSB)
  • Peripherie: SPI-Master/Slave, Wire(I2C)-Master/Slave, dualer UART, emuliertes EEPROM, I2S-Audio-Ein-/Ausgabe, Servo
  • printf (d.h. Debug)-Ausgabe über USB-Seriell
  • Transparente Nutzung von PSRAM-Globals und -Heap (nur RP2350)
  • ARM- oder RISC-V (Hazard3)-Unterstützung für den RP2350
  • Semihosted-Serielle und Dateisystemzugriff
  • GPROF-Profiling-Unterstützung

Die RP2040 PIO-Zustandsmaschinen (SMs) werden verwendet, um jitterfreie:

  • Servos
  • Töne
  • I2S-Eingang
  • I2S-Ausgang
  • Software-UARTs (serielle Ports)
  • Software-SPIs

zu erzeugen.

Installation über den Arduino-Boardverwalter

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 die "Windows ZIP" oder die normale "Windows"-ausführbare Datei (EXE) direkt von https://arduino.cc und lassen Sie zu, dass sie alle vorgeschlagenen Gerätetreiber installiert. Andernfalls wird das Pico-Board möglicherweise nicht erkannt. Wenn Sie die 2.0 Beta von Arduino ausprobieren, installieren Sie bitte vorher die Version 1.8, um sicherzustellen, dass die erforderlichen Gerätetreiber vorhanden sind. (Siehe #20 für weitere Details.)

Linux-spezifische Hinweise

Die Installation von Arduino über flatpak (häufig von "App Stores" in verschiedenen Linux-Distributionen verwendet) bedeutet, dass der Zugriff auf den Host eingeschränkt ist. Dies kann dazu führen, dass Uploads mit Fehlermeldungen wie der folgenden fehlschlagen:

Scanning for RP2040 devices
...
No drive to deploy.

Wenn dies auftritt, müssen Sie Arduino entweder auf andere Weise installieren oder die Flatpak-Sandbox-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 erscheinenden Dialogfeld die folgende URL in das Feld "Zusätzliche Boardverwalter-URLs" ein:

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

image

Klicken Sie auf OK, um das Dialogfeld 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":

image

Installation über GIT

Windows-Benutzer: Bevor Sie unter Windows über git installieren, lesen und befolgen Sie bitte die Anweisungen unter diesem Link. Wenn Win32-Lange-Pfade nicht aktiviert und git nicht für deren Verwendung konfiguriert ist, kann es beim Klonen der Untermodule zu Fehlern kommen.

Um unter Linux oder Mac über GIT (für die neuesten und besten Versionen) zu installieren:

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 das git clone in einem anderen Pfad durchfü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 Skizzen

Um Ihre erste Skizze 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-Taste, und die Skizze sollte übertragen werden und zu laufen beginnen.

Nach dem ersten Upload sollte dies nicht mehr notwendig sein, da der arduino-pico-Core eine Auto-Reset-Unterstützung besitzt. Wählen Sie den entsprechenden seriellen Anschluss im Arduino-Menü Werkzeuge->Port->Serieller Anschluss einmal aus (diese Einstellung bleibt erhalten und muss für mehrere Uploads nicht mehr geändert werden). Diese Auswahl ermöglicht dem Auto-Reset-Tool, das richtige Gerät zum Zurücksetzen zu identifizieren. Drücken Sie dann die Upload-Taste, und Ihre Skizze sollte hochgeladen werden und laufen.

In einigen Fällen stürzt der Pico hart ab und sein USB-Anschluss reagiert nicht auf die Auto-Reset-Anforderung. Sollte dies passieren, folgen Sie einfach dem anfänglichen Verfahren, indem Sie die BOOTSEL-Taste gedrückt halten, während Sie den Pico einstecken, um den ROM-Bootloader zu betreten.

Hochladen von Dateisystem-Images

Das interne Flash-Dateisystem des Pico, LittleFS, ermöglicht es Ihnen, ein Dateisystem-Image aus dem Skizzenverzeichnis hochzuladen, das Ihre Skizze verwenden kann. Laden Sie das benötigte Plugin herunter von

Zur Installation folgen Sie den Anweisungen unter

Detaillierte Nutzungsinformationen finden Sie in der ESP8266-Repo-Dokumentation (ignorieren Sie SPIFFS-bezogene Hinweise) unter

Hochladen von Skizzen mit Picoprobe/Debugprobe

Wenn Sie einen Raspberry Pi Picoprobe gebaut haben, können Sie OpenOCD für Ihre Skizzen-Uploads und zum Debuggen mit GDB verwenden.

Unter Windows sollte ein lokaler Administratorbenutzer automatisch auf den Picoprobe-Port zugreifen können, aber unter Linux muss udev über das Gerät informiert und so konfiguriert werden, dass normale Benutzer darauf zugreifen können.

Um den 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 der USB-Hersteller- und Produkt-ID des Picoprobe entspricht, und aktiviert globale Lese- und Schreibberechtigungen. Die zweite Zeile veranlasst udev, diese neue Regel zu laden. Die dritte Zeile fordert den Kernel auf, "Geräteänderungs"-Ereignisse zu generieren, die dazu führen, dass unsere neue udev-Regel ausgeführt wird.

Wenn die Gerätedatei aus irgendeinem Grund nicht erscheint, trennen Sie die USB-Verbindung manuell und schließen Sie sie wieder an und überprüfen Sie erneut. Die Ausgabe von dmesg kann nützliche Diagnoseinformationen liefern, wenn die Gerätedatei weiterhin fehlt.

Sobald die Picoprobe-Berechtigungen korrekt eingerichtet sind, wählen Sie im Menü "Werkzeuge" das Board "Raspberry Pi Pico (Picoprobe)" 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-Erste-Schritte-Handbüchern der Raspberry Pi Foundation dokumentiert. Verwenden Sie den Befehlszeilenbefehl ./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 Danksagungen

  • Die Arduino IDE und ArduinoCore-API werden vom Arduino-Team entwickelt und gepflegt. Die IDE ist unter GPL lizenziert.
  • Die RP2040 GCC-basierte Toolchain ist unter der GPL lizenziert.
  • Das Pico-SDK stammt von Raspberry Pi (Trading) Ltd und ist unter der BSD-3-Clause-Lizenz lizenziert.
  • Die Arduino-Pico-Core-Dateien sind unter der LGPL lizenziert.
  • Die LittleFS-Bibliothek wurde von ARM Limited geschrieben und unter der BSD-3-Clause-Lizenz veröffentlicht.
  • UF2CONV.PY stammt von Microsoft Corporation und ist unter der MIT-Lizenz lizenziert.
  • Netzwerk- und Dateisystemcode stammt aus dem ESP8266 Arduino Core und ist unter der LGPL lizenziert.
  • DHCP-Server für AP-Host-Modus aus dem Micropython-Projekt, verteilt unter der MIT-Lizenz.
  • FreeRTOS ist urheberrechtlich geschützt von Amazon.com, Inc. oder seinen Tochtergesellschaften und wird unter der MIT-Lizenz vertrieben.
  • lwIP ist (c) des Swedish Institute of Computer Science und unter der BSD-Lizenz lizenziert.
  • Die BearSSL-Bibliothek, geschrieben von Thomas Pornin, wird unter der MIT-Lizenz vertrieben.
  • UZLib ist urheberrechtlich geschützt (c) 2003 Joergen Ibsen und wird unter der zlib-Lizenz vertrieben.
  • LEAmDNS ist urheberrechtlich geschützt mehrerer Autoren und wird unter der MIT-Lizenz vertrieben.
  • http-parser ist urheberrechtlich geschützt von Joyent, Inc. und anderen Node-Beitragenden.
  • WebServer-Code modifiziert aus dem ESP32 WebServer und ist urheberrechtlich geschützt (c) 2015 Ivan Grokhotkov und andere.
  • Xoshiro-cpp ist urheberrechtlich geschützt (c) 2020 Ryo Suzuki und wird unter der MIT-Lizenz vertrieben.
  • FatFS Low-Level-Dateisystem-Code ist urheberrechtlich geschützt (C) 2024, ChaN, alle Rechte vorbehalten.
  • TLSF-Speicherverwalter für PSRAM aus dem Espressif-Fork des Originals von Matthew Conte ist urheberrechtlich geschützt von Matthew Conte und unter der MIT-Lizenz lizenziert.
  • Die ESPHost-Bibliothek ist LGPL-lizenziert durch ihre Betreuer.

-Earle F. Philhower, III
[email protected]

Kategorien