Arduino-Pico
Raspberry Pi Pico Arduino 内核,适用于所有 RP2040 和 RP2350 板
这是 Arduino 到 RP2040(Raspberry Pi Pico 处理器)和 RP2350(Raspberry Pi Pico 2 处理器)的端口。它使用裸露的 Raspberry Pi Pico SDK 和自定义 GCC 14.2/Newlib 4.3 工具链,并支持 ARM 和 RISC-V 内核。
文档
请参阅 https://arduino-pico.readthedocs.io/en/latest/ 以及示例以获取更详细的使用信息。
贡献
请阅读贡献指南,了解有关提交拉取请求以及将库或草图移植到此核心的更多信息。
支持的主板
- 树莓派 Pico
- 树莓派 Pico W
- 树莓派 Pico 2
- 0xCB 赫利俄斯
- Adafruit 羽毛 RP2040
- Adafruit 羽毛 RP2040 天蝎座
- Adafruit ItsyBitsy RP2040
- 阿达水果 KB2040
- Adafruit Macropad RP2040
- Adafruit Metro RP2040
- Adafruit QTPy RP2040
- Adafruit STEMMA Friend RP2040
- Adafruit Trinkey RP2040 QT
- 安肯兔子
- 安肯雷韦洛普
- 安肯 Revelop Plus
- 安肯 Revelop eS
- Architeuthis Flux 无跳线
- Architeuthis Flux 无跳线 V5
- Arduino Nano RP2040 连接
- 雅昌 RP2 Nano
- 面包棒覆盆子
- BridgeTek IDM2040-7A
- BridgeTek IDM2040-43A
- Cytron IRIV IO 控制器
- Cytron 创客 Pi RP2040
- Cytron Maker Nano RP2040
- Cytron 制造商 Uno RP2040
- Cytron Motion 2350 Pro
- 数据噪声 PicoADK v1
- Datanoise PicoADK v2 (RP2350)
- 德格兹穗博RP2040
- DeRuiLab FlyBoard2040核心
- DF机器人甲虫 RP2040
- ElectronicCats 猎人猫 NFC
- 埃文阿尔法
- 极进电子 RC2040
- 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
- 英向量实验室 RPICO32
- 梅洛佩罗饼干 RP2040
- Melopero 奶昔 RP2040
- 梅特霍卡阿卡纳 R1
- Neko 系统 BL2040 迷你
- Olimex RP2040-Pico30
- 纽桑阿奇
- 空位 Bit-C PRO
- 皮莫罗尼 PGA2040
- 皮莫罗尼 Pico Plus 2
- 皮莫罗尼 Pico Plus 2W
- 皮莫罗尼血浆2040
- 皮莫罗尼 Tiny2040
- 皮莫罗尼 Tiny2350
- Pintronix PinMax
- RAK无线 RAK11300
- 红蝎 RP2040-Eins
- 红蝎RP2040-ProMini
- 海比克罗
- 种子指示器 RP2040
- 参见XIAO RP2040
- 见晓RP2350
- Silicongnition RP2040-垫片
- 焊接党 RP2040 印章
- 焊接方 RP2350 印章
- 焊接派对 RP2350 印章 XL
- SparkFun MicroMod RP2040
- SparkFun ProMicro RP2040
- SparkFun ProMicro RP2350
- SparkFun Thing Plus RP2040
- SparkFun Thing Plus RP2350
- uPesy RP2040 开发套件
- VCC-GND YD-RP2040
- Viyalab Mizu RP2040
- Waveshare RP2040 零
- Waveshare RP2040 一台
- Waveshare RP2040 Plus
- Waveshare RP2040液晶屏0.96
- Waveshare RP2040液晶屏1.28
- Waveshare RP2040 矩阵
- Waveshare RP2040 PiZero
- WIZnet W5100S-EVB-Pico
- WIZnet W5100S-EVB-Pico2
- WIZnet W5500-EVB-Pico
- WIZnet W5500-EVB-Pico2
- WIZnet W55RP20-EVB-Pico
- WIZnet WizFi360-EVB-Pico
- 通用 RP2040(可配置闪存、I/O 引脚)
- 通用 RP2350(可配置闪存、I/O 引脚)
特征
- Adafruit TinyUSB Arduino(USB 鼠标、键盘、闪存驱动器、通用 HID、CDC 串行、MIDI、WebUSB 等)
- PicoW 上的蓝牙(经典和 BLE),带有键盘、鼠标、操纵杆和虚拟串行
- 蓝牙经典和 BLE HID 主模式(连接到 BT 键盘、鼠标或操纵杆)
- 通用 Arduino USB 串行、键盘、操纵杆和鼠标仿真
- WiFi(Pico W、基于 ESP32 的 ESPHost、Atmel WINC1500)
- 以太网(有线 WizNet W6100、WizNet W5500、WizNet W5100、ENC28J60)
- HTTP 客户端和服务器(WebServer)
- SSL/TLS/HTTPS
- 无线 (OTA) 升级
- 文件系统(LittleFS 和 SD/SDFS)
- 多核支持(setup1() 和loop1())
- FreeRTOS SMP 支持
- 从菜单超频和降频
- 数字写入/读取、移入/移出、音调、模拟写入(PWM)/读取、温度
- 使用 DMA 和内置 ADC 的模拟立体声音频
- 使用 PWM 硬件的模拟立体声音频输出
- PicoW 上的蓝牙 A2DP 音频源(输出)和接收器(输入)
- 数据记录器的 USB 驱动模式(SingleFileDrive、FatFSUSB)
- 外设:SPI 主/从、Wire(I2C) 主/从、双 UART、仿真 EEPROM、I2S 音频输入/输出、伺服
- printf(即调试)通过 USB 串行输出
- 透明地使用 PSRAM 全局变量和堆(仅限 RP2350)
- 对 RP2350 的 ARM 或 RISC-V (Hazard3) 支持
RP2040 PIO 状态机 (SM) 用于生成无抖动:
- 舵机
- 音调
- I2S输入
- I2S输出
- 软件 UART(串行端口)
通过 Arduino Boards Manager 安装
Windows 特定注释
请不要使用实际 Arduino 应用程序的 Windows 应用商店版本,因为它在检测连接的 Pico 板时存在问题。使用直接从 https://arduino.cc 下载的“Windows ZIP”或普通“Windows”可执行文件 (EXE)。并允许它安装它建议的任何设备驱动程序。否则可能无法检测到 Pico 板。另外,如果尝试 2.0 beta Arduino,请提前安装 1.8 版本,以确保存在所需的设备驱动程序。 (有关更多详细信息,请参阅#20。)
Linux 特定注释
使用 flatpak(通常由各种 Linux 发行版中的“应用商店”使用)安装 Arduino 将意味着它对主机的访问受到限制。这可能会导致上传失败并显示如下错误消息:
Scanning for RP2040 devices
...
No drive to deploy.
如果遇到这种情况,您需要以不同的方式安装 Arduino,或者使用以下命令覆盖 flatpak 沙箱功能,然后重新启动 Arduino。
flatpak override --user --filesystem=host:ro cc.arduino.IDE2
安装
打开 Arduino IDE 并转到“文件”->“首选项”。
在弹出的对话框中,在“其他 Boards Manager URL”字段中输入以下 URL:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
单击“确定”关闭对话框。
转到 IDE 中的“工具”->“板”->“板管理器”
在搜索框中输入“pico”并选择“添加”:
通过GIT安装
Windows 用户:在 Windows 上通过git
安装之前,请阅读并遵循此链接中的说明。如果未启用 Win32 长路径,并且未将git
配置为使用它们,则尝试克隆子模块时可能会出现错误。
通过 GIT 安装(最新和最好的版本):
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
cd pico-sdk
git submodule update --init
cd ../tools
python3 ./get.py
上传草图
要上传您的第一个草图,您需要在将 Pico 插入计算机时按住 BOOTSEL 按钮。然后点击上传按钮,草图应该被传输并开始运行。
第一次上传后,这应该是不必要的,因为arduino-pico
核心具有自动重置支持。选择 Arduino Tools->Port->Serial Port 菜单中显示的适当串行端口一次(此设置将保留,并且无需进行多次上传)。此选择允许自动重置工具识别要重置的正确设备。他们点击上传按钮,您的草图应该上传并运行。
在某些情况下,Pico 会遇到硬挂起,其 USB 端口将不会响应自动重置请求。如果发生这种情况,只需按照初始步骤操作,即在插入 Pico 时按住 BOOTSEL 按钮即可进入 ROM 引导加载程序。
上传文件系统镜像
Pico 的板载闪存文件系统 LittleFS 允许您从 sketch 目录上传文件系统映像以供 sketch 使用。从以下位置下载所需的插件
- https://github.com/earlephilhower/arduino-pico-littlefs-plugin/releases
要安装,请按照以下说明进行操作
- https://github.com/earlephilhower/arduino-pico-littlefs-plugin/blob/master/README.md
有关详细的使用信息,请查看 ESP8266 repo 文档(忽略 SPIFFS 相关注释):
- https://arduino-pico.readthedocs.io/en/latest/fs.html
使用 Picoprobe/Debugprobe 上传草图
如果您已经构建了 Raspberry Pi Picoprobe,则可以使用 OpenOCD 来处理草图上传并使用 GDB 进行调试。
在 Windows 下,本地管理员用户应该能够自动访问 Picoprobe 端口,但在 Linux 下,必须告知udev
有关设备的信息并允许普通用户访问。
要在 Ubuntu(以及使用udev
的其他操作系统)上设置对 Picoprobes 的用户级访问:
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
第一行在/dev
中创建一个与 Picoprobe 的 USB 供应商和产品 ID 匹配的设备文件,并启用全局读+写权限。第二行导致udev
加载这个新规则。第三行请求内核生成“设备更改”事件,这将导致我们的新udev
规则运行。
如果由于某种原因没有出现设备文件,请手动拔下并重新插入 USB 连接并再次检查。如果设备文件仍然不存在, dmesg
的输出可以揭示有用的诊断信息。
正确设置 Picoprobe 权限后,然后在“工具”菜单中选择开发板“Raspberry Pi Pico (Picoprobe)”并正常上传。
使用 Picoprobe、OpenOCD 和 GDB 进行调试
安装的工具包括OpenOCD版本(在pqt-openocd目录中)和GDB(在pqt-gcc目录中)。这些可用于在交互式窗口中运行 GDB,如 Raspberry Pi 基金会的 Pico 入门手册中所述。使用git
安装目录中的命令行./system/openocd/bin/openocd -f ./lib/rp2040/picoprobe_cmsis_dap.tcl
或./system/openocd/bin/openocd -f ./lib/rp2350/picoprobe_cmsis_dap.tcl
。
许可和积分
- Arduino IDE 和 ArduinoCore-API 由 Arduino 团队开发和维护。该 IDE 根据 GPL 获得许可。
- 基于 RP2040 GCC 的工具链根据 GPL 获得许可。
- Pico-SDK 由 Raspberry Pi (Trading) Ltd 提供,并根据 BSD 3-Clause 许可证获得许可。
- Arduino-Pico 核心文件根据 LGPL 获得许可。
- LittleFS 库由 ARM Limited 编写,并在 BSD 3 条款许可下发布。
- UF2CONV.PY 由 Microsoft Corporation 提供,并根据 MIT 许可证获得许可。
- 网络和文件系统代码取自 ESP8266 Arduino Core,并根据 LGPL 获得许可。
- 来自 Micropython 项目的 AP 主机模式的 DHCP 服务器,根据 MIT 许可证分发。
- FreeRTOS 的版权归 Amazon.com, Inc. 或其附属公司所有,并根据 MIT 许可进行分发。
- lwIP 是 (c) 瑞典计算机科学研究所并根据 BSD 许可证获得许可。
- BearSSL 库由 Thomas Pornin 编写,根据 MIT 许可证分发。
- UZLib 版权所有 (c) 2003 Joergen Ibsen,并根据 zlib 许可证分发。
- LEAmDNS 拥有多个作者的版权,并根据 MIT 许可证分发。
- http-parser 的版权归 Joyent, Inc. 和其他 Node 贡献者所有。
- WebServer 代码修改自 ESP32 WebServer,版权所有 (c) 2015 Ivan Grokhotkov 等人。
- Xoshiro-cpp 版权所有 (c) 2020 Ryo Suzuki,并根据 MIT 许可分发。
- FatFS 低级文件系统代码版权所有 (C) 2024,ChaN,保留所有权利。
- 来自 Espressif fork 的 PSRAM 的 TLSF 内存管理器由 Matthew Conte 原创,版权归 Matthew Conte 所有,并根据 MIT 许可证获得许可。
- ESPHost 库是由其维护者许可的 LGPL。
——厄尔·F·菲尔豪威尔 (Earle F. Philhower),三世
[email protected]