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]