
arduino-pico v6.1.0
Cœur Arduino pour Raspberry Pi Pico, pour toutes les cartes RP2040 et RP2350
Arduino-Pico
Cœur Arduino pour Raspberry Pi Pico, pour toutes les cartes RP2040 et RP2350
Il s'agit d'un port d'Arduino sur les RP2040 (processeur Raspberry Pi Pico) et RP2350 (processeur Raspberry Pi Pico 2). Il utilise le SDK Raspberry Pi Pico brut et une chaîne d'outils personnalisée GCC 14.3/Newlib 4.5 et prend en charge les cœurs ARM et RISC-V.
Documentation
Voir https://arduino-pico.readthedocs.io/en/latest/ ainsi que les exemples pour des informations d'utilisation plus détaillées.
Contribuer
Lisez le Guide de contribution pour plus d'informations sur la soumission de demandes de tirage (pull requests) et le portage de bibliothèques ou d'esquisses vers ce cœur.
Cartes supportées
- 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
- Generic RP2040 (flash configurable, broches E/S)
- Generic RP2350 (flash configurable, broches E/S)
Fonctionnalités
- Adafruit TinyUSB Arduino (souris USB, clavier, disque flash, HID générique, série CDC, MIDI, WebUSB, autres)
- Bluetooth sur le PicoW (Classique et BLE) avec clavier, souris, joystick et série virtuelle
- Mode maître HID Bluetooth Classique et BLE (connecter un clavier, une souris ou un joystick Bluetooth)
- Émulation Arduino USB série, clavier, joystick et souris générique
- WiFi (Pico W, ESPHost basé sur ESP32, Atmel WINC1500)
- Ethernet (WizNet W6300 filaire, WizNet W6100, WizNet W5500, WizNet W5100, ENC28J60)
- Client et serveur HTTP (WebServer)
- SSL/TLS/HTTPS
- Mises à jour Over-the-Air (OTA)
- Systèmes de fichiers (LittleFS et SD/SDFS)
- Support multicœur (setup1() et loop1())
- Support SMP FreeRTOS
- Surcadençage et sous-cadençage depuis les menus
- digitalWrite/Read, shiftIn/Out, tone, analogWrite(PWM)/Read, température
- Entrée audio stéréo analogique via DMA et le convertisseur CAN intégré
- Sortie audio stéréo analogique via le matériel PWM
- Source audio A2DP Bluetooth (sortie) et récepteur (entrée) sur le PicoW
- Mode lecteur USB pour enregistreurs de données (SingleFileDrive, FatFSUSB)
- Périphériques : maître/esclave SPI, maître/esclave Wire(I2C), double UART, EEPROM émulée, entrée/sortie audio I2S, Servo
- Sortie printf (c'est-à-dire débogage) sur USB série
- Utilisation transparente des variables globales et du tas PSRAM (RP2350 uniquement)
- Support ARM ou RISC-V (Hazard3) pour le RP2350
- Accès série et système de fichiers semi-hébergé
- Support de profiling GPROF
Les machines à états PIO du RP2040 sont utilisées pour générer sans gigue :
- Servos
- Tones
- Entrée I2S
- Sortie I2S
- UARTs logicielles (ports série)
- SPIs logicielles
Installation via le gestionnaire de cartes Arduino
Notes spécifiques à Windows
N'utilisez pas la version Windows Store de l'application Arduino car elle a des problèmes pour détecter les cartes Pico connectées. Utilisez le téléchargement "Windows ZIP" ou l'exécutable "Windows" standard directement depuis https://arduino.cc et autorisez l'installation des pilotes de périphériques qu'il suggère. Sinon, la carte Pico risque de ne pas être détectée. De plus, si vous essayez la version 2.0 bêta d'Arduino, veuillez d'abord installer la version 1.8 publiée pour vous assurer que les pilotes nécessaires sont présents. (Voir #20 pour plus de détails.)
Notes spécifiques à Linux
Installer Arduino via flatpak (souvent utilisé par les "App Stores" dans diverses distributions Linux) signifie qu'il aura un accès restreint à l'hôte. Cela peut entraîner l'échec des téléversements avec des messages d'erreur tels que :
Scanning for RP2040 devices
...
No drive to deploy.
Si cela se produit, vous devrez soit installer Arduino d'une autre manière, soit remplacer la fonction de bac à sable flatpak en utilisant la commande suivante, puis redémarrer Arduino.
flatpak override --user --filesystem=host:ro cc.arduino.IDE2
Installation
Ouvrez l'IDE Arduino et allez dans Fichier -> Préférences.
Dans la boîte de dialogue qui apparaît, entrez l'URL suivante dans le champ "URL supplémentaires du gestionnaire de cartes" :
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Appuyez sur OK pour fermer la boîte de dialogue.
Allez dans Outils -> Cartes -> Gestionnaire de cartes dans l'IDE
Tapez "pico" dans la zone de recherche et sélectionnez "Ajouter" :

Installation via GIT
Utilisateurs Windows : Avant d'installer via git sur Windows, veuillez lire et suivre les instructions de
ce lien.
Si les chemins longs Win32 ne sont pas activés et que git n'est pas configuré pour les utiliser, il peut y avoir
des erreurs lors de la tentative de clonage des sous-modules.
Pour installer via GIT (pour les versions les plus récentes) sous Linux ou 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
Pour Windows, vous devez avoir Python déjà installé et cloner git dans un chemin différent :
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
Téléversement des esquisses
Pour téléverser votre première esquisse, vous devrez maintenir le bouton BOOTSEL enfoncé tout en branchant le Pico à votre ordinateur. Appuyez ensuite sur le bouton de téléversement et l'esquisse devrait être transférée et commencer à s'exécuter.
Après le premier téléversement, cela ne devrait plus être nécessaire car le cœur arduino-pico prend en charge la réinitialisation automatique.
Sélectionnez le port série approprié affiché dans le menu Arduino Outils->Port->Port série une fois (ce paramètre reste et n'a pas besoin d'être
modifié pour les téléversements suivants). Cette sélection permet à l'outil de réinitialisation automatique d'identifier le bon périphérique à réinitialiser.
Appuyez ensuite sur le bouton de téléversement et votre esquisse devrait se téléverser et s'exécuter.
Dans certains cas, le Pico peut rencontrer un blocage matériel et son port USB ne répondra pas à la demande de réinitialisation automatique. Si cela se produit, suivez simplement la procédure initiale en maintenant le bouton BOOTSEL enfoncé tout en branchant le Pico pour entrer dans le chargeur de démarrage ROM.
Téléversement d'images de systèmes de fichiers
Le système de fichiers flash embarqué du Pico, LittleFS, vous permet de téléverser une image de système de fichiers depuis le répertoire de l'esquisse pour que votre esquisse l'utilise. Téléchargez le plugin nécessaire depuis
Pour installer, suivez les instructions dans
Pour des informations d'utilisation détaillées, veuillez consulter la documentation du dépôt ESP8266 (ignorez les notes relatives à SPIFFS) disponible à
Téléversement d'esquisses avec Picoprobe/Debugprobe
Si vous avez construit une Picoprobe Raspberry Pi, vous pouvez utiliser OpenOCD pour gérer vos téléversements d'esquisses et pour le débogage avec GDB.
Sous Windows, un utilisateur administrateur local devrait pouvoir accéder automatiquement au port Picoprobe, mais sous Linux, udev doit être informé du périphérique et autoriser l'accès aux utilisateurs normaux.
Pour configurer l'accès au niveau utilisateur aux Picoprobes sur Ubuntu (et autres systèmes d'exploitation utilisant udev) :
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
La première ligne crée un fichier de périphérique dans /dev correspondant à l'ID vendeur et produit USB de la Picoprobe, et active les permissions globales de lecture+écriture. La deuxième ligne demande à udev de charger cette nouvelle règle. La troisième ligne demande au noyau de générer des événements "changement de périphérique" qui déclencheront notre nouvelle règle udev.
Si pour une raison quelconque le fichier de périphérique n'apparaît pas, débranchez et rebranchez manuellement la connexion USB et vérifiez à nouveau. La sortie de dmesg peut révéler des diagnostics utiles si le fichier de périphérique reste absent.
Une fois les permissions Picoprobe correctement configurées, sélectionnez la carte "Raspberry Pi Pico (Picoprobe)" dans le menu Outils et téléversez comme d'habitude.
Débogage avec Picoprobe, OpenOCD et GDB
Les outils installés incluent une version d'OpenOCD (dans le répertoire pqt-openocd) et GDB (dans le répertoire pqt-gcc). Ceux-ci peuvent être utilisés pour exécuter GDB dans une fenêtre interactive comme documenté dans les manuels de démarrage Pico de la Raspberry Pi Foundation. Utilisez la ligne de commande ./system/openocd/bin/openocd -f ./lib/rp2040/picoprobe_cmsis_dap.tcl ou ./system/openocd/bin/openocd -f ./lib/rp2350/picoprobe_cmsis_dap.tcl depuis le répertoire d'installation git.
Licences et crédits
- L'IDE Arduino et ArduinoCore-API sont développés et maintenus par l'équipe Arduino. L'IDE est sous licence GPL.
- La chaîne d'outils RP2040 basée sur GCC est sous licence GPL.
- Le Pico-SDK est par Raspberry Pi (Trading) Ltd et sous licence BSD 3-Clause.
- Les fichiers du cœur Arduino-Pico sont sous licence LGPL.
- La bibliothèque LittleFS écrite par ARM Limited et publiée sous licence BSD 3-clause.
- UF2CONV.PY est par Microsoft Corporation et sous licence MIT.
- Le code réseau et système de fichiers provient du ESP8266 Arduino Core et est sous licence LGPL.
- Le serveur DHCP pour le mode point d'accès provient du Projet Micropython, distribué sous licence MIT.
- FreeRTOS est copyright Amazon.com, Inc. ou ses affiliés, et distribué sous licence MIT.
- lwIP est (c) Swedish Institute of Computer Science et sous licence BSD.
- La bibliothèque BearSSL écrite par Thomas Pornin, est distribuée sous licence MIT.
- UZLib est copyright (c) 2003 Joergen Ibsen et distribué sous licence zlib.
- LEAmDNS est copyright de plusieurs auteurs et distribué sous licence MIT.
- http-parser est copyright Joyent, Inc. et autres contributeurs Node.
- Le code du serveur Web modifié à partir du ESP32 WebServer et est copyright (c) 2015 Ivan Grokhotkov et autres.
- Xoshiro-cpp est copyright (c) 2020 Ryo Suzuki et distribué sous licence MIT.
- Le code du système de fichiers bas niveau FatFS est Copyright (C) 2024, ChaN, tous droits réservés.
- Le gestionnaire de mémoire TLSF pour PSRAM du fork Espressif de l'original par Matthew Conte est copyright Matthew Conte et sous licence MIT.
- La bibliothèque ESPHost est sous licence LGPL par ses mainteneurs.
-Earle F. Philhower, III
[email protected]