Arduino-Pico
This is the documentation for the Raspberry Pi Pico Arduino core, Arduino-Pico. Arduino-Pico is a community port of Arduino to the RP2040 (Raspberry Pi Pico processor) and RP2350 (Raspberry Pi Pico 2 processor), intended to make it easier and more fun to use and program the Raspberry Pi Pico / RP2040 / RP2350 based boards.
This Arduino core uses a custom toolset with GCC 14.2 and Newlib 4.3 and doesn’t require any system-installed prerequisites.
For the latest version, always check https://github.com/earlephilhower/arduino-pico
Contents:
- Getting Help
- Contributing
- Installation
- Installing via Arduino Boards Manager
- Installing via Arduino CLI
- Installing via GIT
- Installing both Arduino and CMake
- Uploading Sketches
- Uploading the First Sketch
- Windows 7 Driver Notes
- Windows 7 Installation Problems
- Uploading Filesystem Images
- Uploading Sketches with Picotool
- Uploading Sketches with Picoprobe
- Uploading Sketches with OpenOCD
- Debugging with Picoprobe/Debugprobe, OpenOCD, and GDB
- IDE Menus
- Platform.IO Integration
- What is PlatformIO?
- Important steps for Windows users, before installing
- Current state of development
- Deprecation warnings
- Selecting the new core
- Flash size
- PSRAM size
- PSRAM chip select (CS)
- Boot2 Source
- CPU Speed
- Debug Port
- Debug Level
- C++ Exceptions
- Stack Protector
- RTTI
- USB Stack
- USB Customization
- IP Stack
- Bluetooth Stack
- Selecting a different core version
- Selecting the CPU architecture
- Examples
- Debugging
- Filesystem Uploading
- Pin (Re)Assignment
- RP2040/RP2350 Helper
- Analog I/O
- Digital I/O
- BOOTSEL Button
- EEPROM
- I2S Audio
- PWM Audio
- Microphone (and Analog Sensor) Input
- Serial USB and UARTs
- “SoftwareSerial” PIO-based UART
- SoftwareSerial Emulation
- Servo
- SPI Master (Serial Peripheral Interface)
- Software SPI (Master Only)
- SPI Slave (SPISlave)
- Asynchronous Operation
- Examples
- Wire(I2C)
- File Systems (SD, SDFS, LittleFS)
- Flash Layout
- Compatible Filesystem APIs
- FatFS File System Caveats and Warnings
- LittleFS File System Limitations
- Uploading Files to the LittleFS File System
- Downloading Files from a LittleFS System
- SD Library Information
- Using Second SPI port for SD
- Enabling SDIO operation for SD
- Using VFS (Virtual File System) for POSIX support
- File system object (LittleFS/SD/SDFS/FatFS)
- Filesystem information structure
- Directory object (Dir)
- File object
- USB (Arduino and Adafruit_TinyUSB)
- Multicore Processing
- Semihosting
- Profiling (GPROF)
- RP2350 Specific Notes
- RP2350 PSRAM
- Bluetooth
- Bluetooth HID Master
- Bluetooth Audio (A2DP)
- Single File USB Drive
- FatFSUSB - full FS access over USB
- FreeRTOS SMP (multicore)
- WiFi (Pico-W Support)
- Ethernet (Wired)
- WiFiClient
- WiFiServer
- WiFiUDP
- NTP client
- BearSSL Encrypted TLS
- WiFiClientSecure (TLS/SSL/HTTPS)
- Validating X509 Certificates (Am I talking to the server I think I’m talking to?)
- Client Certificates (Proving I’m who I say I am to the server)
- MFLN or Maximum Fragment Length Negotiation (Saving RAM)
- Sessions (Resuming connections fast)
- Errors
- Limiting Ciphers (New connections faster)
- Limiting TLS(SSL) Versions
- ESP32 Compatibility
- WiFiServerSecure (TLS/SSL/HTTPS)
- HTTP/HTTPS Client
- Over-the-Air (OTA) Updates
- Ported/Optimized Libraries
- Using Pico-SDK
- Licenses