Ардуино-Пико
Ядро 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/ вместе с примерами для получения более подробной информации об использовании.
Содействие
Прочтите Руководство для участников, чтобы получить дополнительную информацию об отправке запросов на включение и переносе библиотек или эскизов в это ядро.
Поддерживаемые платы
- Малиновый Пи Пико
- Малиновый Пи Пико W
- Малиновый Пи Пико 2
- 0xCB Гелиос
- Адафрут Перо RP2040
- Adafruit Feather RP2040 СКОРПИОН
- Adafruit ItsyBitsy RP2040
- Адафрут KB2040
- Adafruit Макропад RP2040
- Адафрут Метро RP2040
- Адафрут QTPy RP2040
- Adafruit STEMMA Friend RP2040
- Adafruit Trinkey RP2040 QT
- Амкен Банни
- Амкен Ревелоп
- Амкен Ревелоп Плюс
- Амкен Ревелоп ЭС
- Architeuthis Flux без перемычки
- Architeuthis Flux без перемычки V5
- Ардуино Нано RP2040 Подключение
- ArtronShop РП2 Нано
- Хлебные палочки Малиновые
- БриджТек IDM2040-7A
- БриджТек IDM2040-43A
- Контроллер ввода-вывода Cytron IRIV
- Cytron Maker Pi RP2040
- Cytron Maker Nano RP2040
- Cytron Maker Уно RP2040
- Cytron Motion 2350 Pro
- Datanoise PicoADK v1
- Datanoise PicoADK v2 (RP2350)
- Дегз Суибо RP2040
- DeRuiLab FlyBoard2040 Core
- DFРобот Жук RP2040
- ElectronicCats Кот-охотник NFC
- ЕВН Альфа
- Экстремальная электроника RC2040
- GroundStudio Мраморный Пико
- Invector Labs Challenger RP2040 Wi-Fi
- 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 СубГГц
- Invector Labs Challenger RP2040 SD/RTC
- Invector Labs Challenger RP2040 СШП
- Invector Labs Challenger RP2350 BConnect
- Invector Labs Challenger RP2350 WiFi/BLE
- Инвектор Лабс RPICO32
- Печенье Мелоперо RP2040
- Мелоперо Шейк RP2040
- МЕТЭ НОСА Акана R1
- Neko Systems BL2040 Мини
- Олимекс RP2040-Пико30
- Ньюсан Арчи
- нулевые биты Bit-C PRO
- Пиморони PGA2040
- Пиморони Пико Плюс 2
- Пиморони Пико Плюс 2W
- Пиморони Плазма2040
- Пиморони Крошечный2040
- Пиморони Тини2350
- Пинтроникс ПинМакс
- RAKбеспроводной RAK11300
- Редскорп RP2040-Эйнс
- Редскорп RP2040-ПроМини
- Море-Пикро
- Индикатор семян RP2040
- Семена СЯО RP2040
- Семена СЯО RP2350
- Silicognition RP2040-Шим
- Штамп Solder Party RP2040
- Штамп Solder Party RP2350
- Штамп Solder Party RP2350 XL
- SparkFun Микромод RP2040
- SparkFun ПроМикро RP2040
- SparkFun ProMicro RP2350
- SparkFun Thing Plus RP2040
- SparkFun Thing Plus RP2350
- uPesy RP2040 DevKit
- VCC-GND YD-RP2040
- Виялаб Мизу RP2040
- Waveshare RP2040 Ноль
- Waveshare RP2040 Один
- Waveshare RP2040 Плюс
- Waveshare RP2040 ЖК-дисплей 0,96
- Waveshare RP2040 ЖК-дисплей 1,28
- Матрица Waveshare RP2040
- Waveshare RP2040 PiZero
- WIZnet W5100S-EVB-Пико
- WIZnet W5100S-EVB-Pico2
- WIZnet W5500-EVB-Пико
- WIZnet W5500-EVB-Pico2
- WIZnet W55RP20-EVB-Пико
- WIZnet WizFi360-EVB-Пико
- Универсальный RP2040 (настраиваемая флэш-память, контакты ввода-вывода)
- Универсальный RP2350 (настраиваемая флэш-память, контакты ввода-вывода)
Функции
- Adafruit TinyUSB Arduino (USB-мышь, клавиатура, флэш-накопитель, универсальный HID, CDC Serial, MIDI, WebUSB и другие)
- Bluetooth на PicoW (Classic и BLE) с клавиатурой, мышью, джойстиком и виртуальным последовательным портом
- Главный режим Bluetooth Classic и BLE HID (подключение к клавиатуре, мыши или джойстику BT)
- Общий USB-порт Arduino, эмуляция клавиатуры, джойстика и мыши
- Wi-Fi (Pico W, ESPHost на базе ESP32, Atmel WINC1500)
- Ethernet (проводной WizNet W6100, WizNet W5500, WizNet W5100, ENC28J60)
- HTTP-клиент и сервер (WebServer)
- SSL/TLS/HTTPS
- Обновления по беспроводной сети (OTA)
- Файловые системы (LittleFS и SD/SDFS)
- Поддержка многоядерности (setup1() и цикл1())
- Поддержка FreeRTOS SMP
- Разгон и разгон из меню
- цифровая запись/чтение, вход/выход сдвига, тональный сигнал, аналоговая запись (ШИМ)/чтение, температура
- Аналоговый стереозвук с использованием DMA и встроенного АЦП.
- Аналоговый стереозвук с использованием оборудования ШИМ
- Источник звука Bluetooth A2DP (выход) и приемник (вход) на PicoW
- Режим USB-накопителя для регистраторов данных (SingleFileDrive, FatFSUSB)
- Периферийные устройства: ведущий/ведомый SPI, ведущий/ведомый провод (I2C), двойной UART, эмулируемая EEPROM, аудиовход/выход I2S, сервопривод
- вывод printf (т.е. отладка) через последовательный порт USB
- Прозрачное использование глобальных переменных PSRAM и кучи (только RP2350)
- Поддержка ARM или RISC-V (Hazard3) для RP2350
Конечные автоматы PIO (SM) RP2040 используются для генерации без джиттера:
- Сервоприводы
- Тоны
- I2S-вход
- Выход I2S
- Программное обеспечение UART (последовательные порты)
Установка через Менеджер плат Arduino
Примечания для Windows
Пожалуйста, не используйте версию реального приложения Arduino из Магазина Windows, поскольку в ней возникают проблемы с обнаружением подключенных плат Pico. Используйте «Windows ZIP» или простой «Windows» исполняемый файл (EXE), загрузив его прямо с 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
Установка
Откройте Arduino IDE и перейдите в «Файл» -> «Настройки».
В появившемся диалоговом окне введите следующий URL-адрес в поле «Дополнительные URL-адреса менеджера досок»:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
Нажмите ОК, чтобы закрыть диалоговое окно.
Перейдите в Инструменты->Платы->Диспетчер плат в IDE.
Введите «pico» в поле поиска и выберите «Добавить»:
Установка через GIT
Пользователи Windows: перед установкой через git
в Windows прочтите и следуйте инструкциям по этой ссылке. Если длинные пути 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
Загрузка эскизов
Чтобы загрузить свой первый эскиз, вам нужно будет удерживать кнопку BOOTSEL при подключении Pico к компьютеру. Затем нажмите кнопку загрузки, и эскиз должен быть перенесен и запущен.
После первой загрузки в этом не должно быть необходимости, поскольку ядро arduino-pico
поддерживает автоматический сброс. Один раз выберите соответствующий последовательный порт, показанный в меню «Инструменты Arduino->Порт->Последовательный порт» (эта настройка останется неизменной, и ее не нужно будет трогать при многократной загрузке). Этот выбор позволяет инструменту автоматического сброса определить подходящее устройство для сброса. Они нажимают кнопку загрузки, и ваш эскиз должен загрузиться и запуститься.
В некоторых случаях Pico может зависнуть, и его USB-порт не ответит на запрос автоматического сброса. Если это произойдет, просто следуйте первоначальной процедуре: удерживайте кнопку BOOTSEL при подключении Pico, чтобы войти в загрузчик ПЗУ.
Загрузка образов файловой системы
Встроенная файловая система флэш-памяти Pico LittleFS позволяет загружать образ файловой системы из каталога эскизов для использования в вашем эскизе. Загрузите необходимый плагин с
- https://github.com/earlephilhower/arduino-pico-littlefs-plugin/releases
Для установки следуйте инструкциям в
- https://github.com/earlephilhower/arduino-pico-littlefs-plugin/blob/master/README.md
Для получения подробной информации об использовании ознакомьтесь с документацией по репозиторию ESP8266 (игнорируйте примечания, связанные с SPIFFS), доступной по адресу
- https://arduino-pico.readthedocs.io/en/latest/fs.html
Загрузка эскизов с помощью Picoprobe/Debugprobe
Если вы создали Raspberry Pi Picoprobe, вы можете использовать OpenOCD для обработки загрузки эскизов и для отладки с помощью GDB.
В Windows локальный администратор должен иметь возможность автоматически получать доступ к порту Picoprobe, но в Linux необходимо сообщить udev
об устройстве и разрешить доступ обычным пользователям.
Чтобы настроить доступ на уровне пользователя к Picoprobes в 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
загрузить это новое правило. Третья строка требует, чтобы ядро сгенерировало события «смены устройства», которые заставят запуститься наше новое правило udev
.
Если по какой-то причине файл устройства не отображается, вручную отключите и снова подключите USB-соединение и проверьте еще раз. Вывод команды dmesg
может дать полезную диагностику, если файл устройства отсутствует.
После правильной настройки разрешений Picoprobe выберите плату «Raspberry Pi Pico (Picoprobe)» в меню «Инструменты» и загрузите ее как обычно.
Отладка с помощью Picoprobe, OpenOCD и GDB
Установленные инструменты включают версию OpenOCD (в каталоге pqt-openocd) и GDB (в каталоге pqt-gcc). Их можно использовать для запуска GDB в интерактивном окне, как описано в руководствах по началу работы с Pico от 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.
- Набор инструментов RP2040 на основе GCC распространяется под лицензией GPL.
- Pico-SDK разработан Raspberry Pi (Trading) Ltd и лицензируется по лицензии BSD 3-Clause.
- Базовые файлы Arduino-Pico лицензируются по лицензии LGPL.
- Библиотека LittleFS, написанная ARM Limited и выпущенная под лицензией BSD с 3 пунктами.
- UF2CONV.PY разработан корпорацией Microsoft и лицензируется по лицензии MIT.
- Код сети и файловой системы взят из ESP8266 Arduino Core и распространяется по лицензии LGPL.
- DHCP-сервер для режима хоста AP из проекта Micropython, распространяемого по лицензии MIT.
- Авторские права на FreeRTOS принадлежат Amazon.com, Inc. или ее дочерним компаниям и распространяются по лицензии MIT.
- lwIP является (c) Шведским институтом компьютерных наук и лицензируется по лицензии BSD.
- Библиотека BearSSL, написанная Томасом Порнином, распространяется по лицензии MIT.
- UZLib защищен авторским правом (c) 2003 Йоргена Ибсена и распространяется по лицензии 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, предоставляемую ее сопровождающими.
-Эрл Ф. Филхауэр, III
[email protected]