
arduino-pico v6.1.0
Raspberry Pi Pico Arduino core, для всех плат RP2040 и RP2350
Arduino-Pico
Ядро Arduino для Raspberry Pi Pico, для всех плат на RP2040 и RP2350
Это порт Arduino на RP2040 (процессор Raspberry Pi Pico) и RP2350 (процессор Raspberry Pi Pico 2). Он использует голый Raspberry Pi Pico SDK и пользовательский набор инструментов GCC 14.3/Newlib 4.5 и поддерживает ядра ARM и RISC-V.
Документация
См. https://arduino-pico.readthedocs.io/en/latest/ вместе с примерами для получения более подробной информации об использовании.
Внесение вклада
Прочитайте Руководство по внесению вклада для получения дополнительной информации об отправке pull request'ов и портировании библиотек или скетчей в это ядро.
Поддерживаемые платы
- 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 (configurable flash, I/O pins)
- Generic RP2350 (configurable flash, I/O pins)
Возможности
- Adafruit TinyUSB Arduino (USB-мышь, клавиатура, флеш-накопитель, универсальный HID, CDC Serial, MIDI, WebUSB и другие)
- Bluetooth на PicoW (Classic и BLE) с клавиатурой, мышью, джойстиком и виртуальным последовательным портом
- Режим ведущего HID для Bluetooth Classic и BLE (подключение BT-клавиатуры, мыши или джойстика)
- Эмуляция универсального Arduino USB Serial, Keyboard, Joystick и Mouse
- Wi-Fi (Pico W, ESPHost на базе ESP32, Atmel WINC1500)
- Ethernet (проводной WizNet W6300, WizNet W6100, WizNet W5500, WizNet W5100, ENC28J60)
- HTTP-клиент и сервер (WebServer)
- SSL/TLS/HTTPS
- Обновления по воздуху (OTA)
- Файловые системы (LittleFS и SD/SDFS)
- Поддержка многоядерности (setup1() и loop1())
- Поддержка FreeRTOS SMP
- Разгон и снижение тактовой частоты из меню
- digitalWrite/Read, shiftIn/Out, tone, analogWrite(PWM)/Read, temperature
- Аналоговый стереовход с использованием DMA и встроенного АЦП
- Аналоговый стереовыход с использованием аппаратного ШИМ
- Источник (выход) и приёмник (вход) Bluetooth A2DP на PicoW
- Режим USB-накопителя для регистраторов данных (SingleFileDrive, FatFSUSB)
- Периферия: SPI ведущий/ведомый, Wire(I2C) ведущий/ведомый, два UART, эмулируемая EEPROM, аудиовход/выход I2S, Servo
- Вывод printf (т.е. отладочной информации) через USB-последовательный порт
- Прозрачное использование глобальных переменных и кучи в PSRAM (только RP2350)
- Поддержка ARM или RISC-V (Hazard3) для RP2350
- Полухостовый (semihosted) доступ к последовательному порту и файловой системе
- Поддержка профилирования GPROF
Государственные машины PIO (SMs) RP2040 используются для генерации без джиттера:
- Сервоприводов
- Тонов
- Входа I2S
- Выхода I2S
- Программных UART (последовательных портов)
- Программных SPI
Установка через менеджер плат Arduino
Примечания для Windows
Пожалуйста, не используйте версию приложения Arduino из Windows Store, поскольку у неё возникают проблемы с обнаружением подключённых плат Pico. Используйте загрузку "Windows ZIP" или обычного исполняемого файла (EXE) "Windows" напрямую с https://arduino.cc и разрешите установку всех предлагаемых драйверов устройств. В противном случае плата Pico может не обнаруживаться. Кроме того, если вы пробуете бета-версию Arduino 2.0, пожалуйста, предварительно установите версию 1.8, чтобы убедиться, что необходимые драйверы устройств присутствуют. (См. #20 для подробностей.)
Примечания для Linux
Установка Arduino с помощью flatpak (часто используемого "Магазинами приложений" в различных дистрибутивах Linux) означает ограниченный доступ к хосту. Это может привести к сбоям загрузки с сообщениями об ошибках, подобными следующим:
Scanning for RP2040 devices
...
No drive to deploy.
Если вы столкнулись с этим, вам нужно либо установить Arduino другим способом, либо отключить функцию песочницы flatpak с помощью следующей команды, а затем перезапустить Arduino.
flatpak override --user --filesystem=host:ro cc.arduino.IDE2
Установка
Откройте IDE Arduino и перейдите в Файл->Настройки.
В появившемся диалоговом окне введите следующий URL в поле "Дополнительные ссылки для менеджера плат":
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Нажмите OK, чтобы закрыть диалоговое окно.
Перейдите в Инструменты->Платы->Менеджер плат в IDE.
Введите "pico" в поле поиска и выберите "Добавить":

Установка через GIT
Пользователи Windows: Перед установкой через git в Windows, пожалуйста, прочитайте и следуйте указаниям по
этой ссылке.
Если длинные пути Win32 не включены, а git не настроен на их использование, то
при попытке клонировать подмодули могут возникнуть ошибки.
Для установки через GIT (для последних и самых новых версий) в Linux или 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
Для Windows вам необходим уже установленный Python, а клонирование git выполняется по другому пути:
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
Загрузка скетчей
Чтобы загрузить ваш первый скетч, вам нужно удерживать кнопку BOOTSEL при подключении Pico к компьютеру. Затем нажмите кнопку загрузки, и скетч будет передан и начнёт выполняться.
После первой загрузки это не потребуется, так как ядро arduino-pico поддерживает автосброс.
Выберите соответствующий последовательный порт в меню Arduino Инструменты->Порт->Последовательный порт один раз (эта настройка сохранится, и её не нужно
менять для последующих загрузок). Этот выбор позволяет инструменту автосброса определить правильное устройство для сброса.
Затем нажмите кнопку загрузки, и ваш скетч загрузится и запустится.
В некоторых случаях Pico может полностью зависнуть, и его USB-порт не будет отвечать на запрос автосброса. Если это произойдёт, просто повторите начальную процедуру: удерживайте кнопку BOOTSEL при подключении Pico, чтобы войти в загрузчик ROM.
Загрузка образов файловых систем
Встроенная файловая система флеш-памяти Pico, LittleFS, позволяет загружать образ файловой системы из каталога скетча для использования вашим скетчем. Загрузите необходимый плагин с
Для установки следуйте указаниям в
Для получения подробной информации об использовании, пожалуйста, обратитесь к документации репозитория ESP8266 (игнорируйте примечания, связанные с SPIFFS), доступной по адресу
Загрузка скетчей с помощью Picoprobe/Debugprobe
Если вы собрали Raspberry Pi Picoprobe, вы можете использовать OpenOCD для загрузки скетчей и отладки с помощью GDB.
В Windows локальный администратор должен иметь доступ к порту Picoprobe автоматически, но в Linux необходимо сообщить udev об устройстве и разрешить доступ обычным пользователям.
Для настройки доступа на уровне пользователя к Picoprobe в Ubuntu (и других ОС, использующих 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
Первая строка создаёт файл устройства в /dev, соответствующий USB-идентификаторам вендора и продукта Picoprobe, и включает глобальные права на чтение+запись. Вторая строка заставляет udev загрузить это новое правило. Третья строка запрашивает у ядра генерацию событий "device change", которые приведут к выполнению нашего нового правила udev.
Если по какой-то причине файл устройства не появляется, вручную отключите и снова подключите USB-соединение и проверьте ещё раз. Вывод dmesg может содержать полезную диагностику, если файл устройства так и не появился.
После правильной настройки прав Picoprobe выберите плату "Raspberry Pi Pico (Picoprobe)" в меню Инструменты и загружайте скетчи как обычно.
Отладка с помощью Picoprobe, OpenOCD и GDB
Установленные инструменты включают версию OpenOCD (в каталоге pqt-openocd) и GDB (в каталоге pqt-gcc). Их можно использовать для запуска GDB в интерактивном окне, как описано в руководствах Pico Getting Started от Raspberry Pi Foundation. Используйте командную строку ./system/openocd/bin/openocd -f ./lib/rp2040/picoprobe_cmsis_dap.tcl или ./system/openocd/bin/openocd -f ./lib/rp2350/picoprobe_cmsis_dap.tcl из каталога установки git.
Лицензирование и авторство
- Arduino IDE и ArduinoCore-API разработаны и поддерживаются командой Arduino. IDE лицензирована под GPL.
- Набор инструментов на базе GCC для RP2040 лицензирован под GPL.
- Pico-SDK принадлежит Raspberry Pi (Trading) Ltd и лицензирован под лицензией BSD 3-Clause.
- Файлы ядра Arduino-Pico лицензированы под LGPL.
- Библиотека LittleFS написана ARM Limited и выпущена под лицензией BSD 3-clause.
- UF2CONV.PY принадлежит Microsoft Corporation и лицензирован под лицензией MIT.
- Код сетевого взаимодействия и файловых систем взят из ESP8266 Arduino Core и лицензирован под LGPL.
- DHCP-сервер для режима точки доступа из проекта Micropython, распространяется под лицензией MIT.
- FreeRTOS является авторским правом Amazon.com, Inc. или её аффилированных лиц и распространяется под лицензией MIT.
- lwIP (c) Шведский институт компьютерных наук и лицензирован под лицензией BSD.
- Библиотека BearSSL, написанная Томасом Порнином, распространяется под лицензией MIT.
- UZLib является авторским правом (c) 2003 Joergen Ibsen и распространяется под лицензией zlib.
- LEAmDNS является авторским правом нескольких авторов и распространяется под лицензией MIT.
- http-parser является авторским правом Joyent, Inc. и других участников Node.
- Код WebServer изменён из ESP32 WebServer и является авторским правом (c) 2015 Ивана Грохоткова и других.
- Xoshiro-cpp является авторским правом (c) 2020 Ryo Suzuki и распространяется под лицензией MIT.
- Код низкоуровневой файловой системы FatFS является авторским правом (C) 2024, ChaN, все права защищены.
- Менеджер памяти TLSF для PSRAM из форка Espressif от оригинала Мэттью Конте является авторским правом Мэттью Конте и лицензирован под лицензией MIT.
- Библиотека ESPHost лицензирована под LGPL её сопровождающими.
-Earle F. Philhower, III
[email protected]