Справочник платы
Raspberry Pi Pico в Arduino IDE
Raspberry Pi Pico — плата на чипе RP2040 от создателей Raspberry Pi: два ядра, 264 КБ оперативной памяти и прошивка, которая копируется на плату, как файл на флешку. В Arduino IDE её программируют теми же setup() и loop(), что и Uno. Здесь — распиновка, какой пакет ставить, как прошить новую плату кнопкой BOOTSEL, Wi-Fi на Pico W, два ядра, Pico 2 и платы вроде RP2040-Zero.
Что это за плата
Raspberry Pi Pico — не маленький Raspberry Pi
Несмотря на имя, Pico — не компьютер с Linux, а микроконтроллер, как Arduino: включили питание — сразу работает ваша программа. RP2040 — первый собственный чип Raspberry Pi, а Pico — плата для него. Чтобы программировать Pico в Arduino IDE, нужен пакет «Raspberry Pi Pico/RP2040/RP2350», его автор — Earle Philhower. С ним обычные скетчи с digitalWrite(), analogRead() и библиотеками для датчиков работают и на Pico, и на десятках плат с тем же чипом.
Raspberry Pi Pico вместо Uno: что меняется
- Выводы работают от 3,3 В, и 5 В на них подавать нельзя.
- В скетче вывод называют номером GP: digitalWrite(15, HIGH) включает GP15, а не ножку номер 15.
- Serial идёт через USB, а выводы GP0 и GP1 — это Serial1.
- Аналоговых входов три, A0–A2. analogRead() отдаёт 0–1023, как на Uno, но верх шкалы — 3,3 В.
- Первую программу загружают с кнопкой BOOTSEL, дальше — через COM-порт, как на Uno.
- Blink занимает 54 КБ, а не 1 КБ. Это нормально: флеш-памяти у Pico 2 МБ, у Uno — 32 КБ.
Какая у вас плата: Raspberry Pi Pico, Pico W или Pico 2
Оригинальных плат четыре. Pico — первая, на RP2040. Pico W — она же с Wi-Fi и Bluetooth: её узнают по металлическому экрану и антенне у нижнего края. Pico 2 и Pico 2 W — то же самое на новом чипе RP2350. Буква H в названии (Pico H, Pico WH) значит, что ножки уже впаяны и есть разъём для отладчика; у Pico 2 такие платы называются «with headers». Pico от Pico 2 отличают по надписи на чипе: RP2040 или RP2350.
У нас в магазине есть Pico, Pico W и Pico 2.
RP2040 или RP2350: что изменилось в Pico 2
В Pico 2 стоит RP2350: ядра Cortex-M33 вместо M0+, 520 КБ оперативной памяти вместо 264 и 4 МБ флеш-памяти вместо 2. Частота по умолчанию — 150 МГц, ниже, чем у Pico в Arduino, но ядра M33 за такт успевают больше и считают дробные числа аппаратно, так что на деле Pico 2 быстрее. Необычное в чипе — второй комплект ядер на RISC-V: в Arduino IDE архитектура выбирается пунктом CPU Architecture, ARM или RISC-V, и один и тот же скетч собирается под обе. Разводка у Pico 2 та же, что у Pico, так что схемы и платы расширения подходят к обеим.
У первых партий RP2350 был изъян: вход с внутренней подтяжкой к земле мог «залипать» на 2,2 В, и кнопка, подключённая к 3,3 В, читалась неверно. В чипах новой ревизии A4 его исправили, но платы со старыми ещё продаются. Подключайте кнопки к земле и читайте их с INPUT_PULLUP — так работает на любой ревизии.
RP2040-Zero, YD-RP2040 и другие платы на RP2040
Кроме оригинальных Pico, на RP2040 делают десятки плат: крошечную Waveshare RP2040-Zero с разъёмом USB-C, YD-RP2040 от VCC-GND с флеш-памятью до 16 МБ, Seeed XIAO RP2040 и Adafruit Feather. Чип у них тот же, но светодиоды, кнопки и объём памяти свои, поэтому выбирайте в меню пункт своей платы, а не «Raspberry Pi Pico». У RP2040-Zero обычного светодиода нет вовсе — только цветной WS2812 на GP16, и Blink с LED_BUILTIN для неё не соберётся. Вот скетч для цветного; ему нужна библиотека Adafruit NeoPixel из менеджера библиотек:
// Цветной светодиод Waveshare RP2040-Zero: WS2812 на GP16.
// Обычного светодиода у этой платы нет, поэтому Blink с LED_BUILTIN
// для неё не соберётся. Нужна библиотека Adafruit NeoPixel.
#include <Adafruit_NeoPixel.h>
const int RGB_PIN = 16;
const int BRIGHTNESS = 40; // 0–255: на полной яркости светодиод слепит
// Если красный горит зелёным, замените NEO_GRB на NEO_RGB:
// у разных партий плат светодиоды бывают с разным порядком цветов.
Adafruit_NeoPixel rgb(1, RGB_PIN, NEO_GRB + NEO_KHZ800);
void showColor(const char *name, int r, int g, int b) {
rgb.setPixelColor(0, rgb.Color(r, g, b));
rgb.show();
Serial.println(name);
delay(1000);
}
void setup() {
Serial.begin(115200);
rgb.begin();
}
void loop() {
showColor("красный", BRIGHTNESS, 0, 0);
showColor("зелёный", 0, BRIGHTNESS, 0);
showColor("синий", 0, 0, BRIGHTNESS);
showColor("погашен", 0, 0, 0);
}
Arduino или MicroPython
Pico часто продают как плату для MicroPython, и в школах её нередко изучают на Python. Программировать её можно и так и так:
| Arduino | MicroPython | |
|---|---|---|
| Язык | C++, как у Uno и ESP32 | Python |
| Скорость | программа компилируется в машинный код — быстро | команды выполняет интерпретатор — заметно медленнее |
| Библиотеки | тысячи библиотек Arduino для датчиков, дисплеев, моторов | свои модули; под редкий датчик драйвер приходится искать или писать |
| Как пробовать | скетч собирают и загружают целиком | команды можно выполнять по одной прямо на плате |
| Кому удобнее | тем, кто уже писал для Arduino или собирает готовый Arduino-проект | тем, кто учит Python или хочет быстро что-то попробовать |
Переход в любую сторону — это просто новая прошивка. На плате с MicroPython свой COM-порт, и первый скетч из Arduino надёжнее загрузить через кнопку BOOTSEL — как это делается, рассказано в разделе «Первая прошивка». Вернуться на MicroPython так же просто: держите BOOTSEL, подключите плату и скопируйте на появившийся диск файл MicroPython с сайта Raspberry Pi.
Какой пакет ставить: Earle Philhower, а не Mbed
Для Pico есть два пакета. «Arduino Mbed OS RP2040 Boards» — официальный, от Arduino, и в менеджере плат сразу находится только он. Но в нём лишь Pico и Arduino Nano RP2040 Connect: ни Wi-Fi на Pico W, ни Pico 2, ни клонов. Второй — «Raspberry Pi Pico/RP2040/RP2350», его ведёт Earle Philhower вместе с другими разработчиками: около 150 плат, Wi-Fi, Bluetooth, оба ядра, USB-клавиатура, и обновления выходят часто. Ставьте его, но сначала добавьте в Arduino IDE ссылку на него. Последняя версия на октябрь 2026 года — 6.3.0.
В Arduino IDE 2 откройте «Файл → Параметры» и добавьте в поле «Дополнительные ссылки для Менеджера плат» адрес:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.jsonЗатем откройте менеджер плат — значок платы на левой панели, — найдите «Raspberry Pi Pico/RP2040/RP2350» и нажмите «Установить». Под Windows скачается около 470 МБ, на диске пакет займёт 1,5 ГБ: в нём два компилятора, для ARM и для RISC-V.
В Trema IDE адрес вставлять не нужно: найдите в окне плат семейство «Raspberry Pi Pico» — оно подписано «платы на RP2040 и RP2350» — и нажмите «Установить». Пакет скачается с российского зеркала.
Первая прошивка: кнопка BOOTSEL и порт «UF2 Board»
Загрузчик Pico зашит в сам чип, и испортить его нельзя. Если держать кнопку BOOTSEL в момент подключения кабеля, плата появится в компьютере как флешка RPI-RP2 (у Pico 2 — RP2350). Файл прошивки с расширением .uf2, скопированный на этот диск, записывается в плату, и она сразу перезапускается с новой программой. Arduino IDE делает это сама — нужно только правильно выбрать порт. Каким он будет, зависит от того, что сейчас на плате:
По шагам для новой платы:
- Нажмите и держите BOOTSEL, подключите плату кабелем к компьютеру и отпустите кнопку — появится диск RPI-RP2.
- В меню «Инструменты → Плата» выберите свою плату, например «Raspberry Pi Pico».
- В «Инструменты → Порт» выберите «UF2 Board» и нажмите «Загрузить».
- Когда в окне вывода внизу появятся строки «Flashing» и «Wrote … bytes», плата перезапустится с вашей программой, а в списке портов появится её COM-порт. Дальше загружайте через него — кнопка больше не нужна.
// Маячок для Raspberry Pi Pico, Pico W, Pico 2 и Pico 2 W.
// У Pico и Pico 2 светодиод на GP25, у Pico W и Pico 2 W — на радиочипе,
// но LED_BUILTIN пакет сам направляет куда нужно.
// У RP2040-Zero простого светодиода нет: для неё — скетч с цветным.
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // зажгли
delay(100);
digitalWrite(LED_BUILTIN, LOW); // погасили
delay(900);
}
На Pico этот скетч занимает 54 КБ из 2 МБ — больше, чем на Uno, потому что в каждую программу входят драйвер USB и часть библиотек чипа. На Pico W он вырастает до 313 КБ: светодиод там подключён к радиочипу, и, чтобы им мигать, в программу добавляется драйвер радио вместе с его прошивкой.
Прошить вручную: файл .uf2 на диск RPI-RP2
Если порта «UF2 Board» в списке нет или загрузка не находит диск, файл прошивки можно скопировать вручную. В Arduino IDE выберите «Скетч → Экспортировать скомпилированный бинарный файл»: в папке скетча появится папка build, в ней — папка с названием платы, а там файл с расширением .uf2. Trema IDE после сборки пишет путь к файлу прошивки, и .uf2 лежит в той же папке. Переведите плату в режим BOOTSEL и перетащите файл на диск RPI-RP2 — плата сама перезапустится.
Так же можно стереть плату целиком, если она ведёт себя странно: Raspberry Pi выкладывает файл nuke_universal.uf2, который очищает флеш-память. После него на плате ничего нет, и при включении она сама открывается как диск.
Распиновка Raspberry Pi Pico
Pico, Pico W, Pico 2 и Pico 2 W разведены одинаково: 40 выводов, из них 26 — выводы GP от GP0 до GP28; GP23, GP24 и GP25 на ножки не выведены, их занимает сама плата. Кнопками над схемой переключаются Pico и Pico W. Если нажать на пункт легенды, нужные выводы подсветятся, а под схемой появится пояснение.
Плата лежит разъёмом USB вверх, деталями к вам, как на официальной схеме. Числа на квадратиках — номера ножек 1–40, подписи рядом — имена выводов. В скетче пишут просто номер GP: для GP15 — pinMode(15, OUTPUT). Pico 2 разведена точно так же. Нажмите на пункт легенды, чтобы подсветить группу.
Питание: VBUS, VSYS и 3V3
От USB плата питается сама. Без кабеля питание подают на VSYS — от 1,8 до 5,5 В: подойдут три батарейки AA (4,5 В) или один литиевый аккумулятор 3,7 В с платой защиты. Четыре батарейки AA (6 В), «крона» на 9 В и блоки питания на 7–12 В, которыми питают Uno, сожгут стабилизатор платы.
Батарею ведите к VSYS только через свой диод Шоттки, например 1N5819, анодом к батарее. Тогда USB и батарею можно подключать одновременно: плата возьмёт питание от того, где напряжение выше. Без этого диода USB начнёт «заряжать» батарею: щелочные потекут, а литиевый аккумулятор может вздуться или загореться. Вывод 3V3 — выход стабилизатора для датчиков, нагружать его больше чем на 300 мА не стоит. Кнопки сброса у Pico нет: её роль играет вывод RUN — замкните его на землю и отпустите, и плата перезапустится.
5 вольт на выводы — нельзя
Выводы Pico работают от 3,3 В. У RP2040 сигнал на выводе не должен быть выше её питания — 3,3 В; 3,8 В — уже порог, за которым чип портится. И не подавайте сигнал на выводы выключенной платы: это тоже вредно. Датчик или модуль с выходом 5 В подключают через делитель или преобразователь уровней. Raspberry Pi называет RP2350 в Pico 2 стойким к 5 В, но с оговорками: только пока на плату подано питание, не на аналоговых входах GP26–GP28 и не у первых ревизий чипа. Проще считать, что и у Pico 2 все выводы — на 3,3 В.
Сами модули на 5 В питать можно — от вывода VBUS, пока плата подключена к USB. Но у модулей I²C резисторы подтяжки SDA и SCL идут к их питанию, и тогда на этих линиях окажется 5 В. Такие модули питайте от 3V3, а если им нужно именно 5 В — ставьте преобразователь уровней. Подробнее — в статье про питание и 3,3 В.
Аналоговые входы GP26–GP28
Аналоговых входов три: GP26, GP27 и GP28, в скетче A0, A1 и A2. АЦП 12-битный, но analogRead() по умолчанию отдаёт 0–1023, как на Uno; строка analogReadResolution(12) включает полную шкалу 0–4095. На деле точность у АЦП RP2040 около 8–9 бит, а на значениях 512, 1536, 2560 и 3584 по шкале 0–4095 (128, 384, 640 и 896 по обычной 0–1023) у него ступеньки — это известная ошибка чипа, исправления нет. Для точных измерений берут внешний АЦП, например ADS1115, — питайте его от 3V3 платы. Ещё есть встроенный датчик температуры чипа: analogReadTemp() возвращает градусы Цельсия.
Serial, I²C, SPI: выводы по умолчанию
В скетче выводы называют номером GP без букв: digitalWrite(15, HIGH) включает GP15. Номер ножки на плате (1–40) — другое дело, его в программе не используют. Serial у Pico — это USB, а UART на выводах называется Serial1:
| Что | Выводы | Как обратиться в скетче |
|---|---|---|
| Serial | USB | Монитор порта; выводы не занимает |
| Serial1 | GP0 — TX, GP1 — RX | Serial1.begin(9600) |
| Serial2 | GP8 — TX, GP9 — RX | Serial2.begin(9600) |
| I²C (Wire) | GP4 — SDA, GP5 — SCL | Wire.begin() |
| Второй I²C (Wire1) | GP26 — SDA, GP27 — SCL | Wire1.begin(); выводы те же, что у A0 и A1 |
| SPI | GP16 — MISO, GP17 — CS, GP18 — SCK, GP19 — MOSI | SPI.begin() |
| Второй SPI (SPI1) | GP12 — MISO, GP13 — CS, GP14 — SCK, GP15 — MOSI | SPI1.begin() |
| Светодиод | GP25, у Pico W — на радиочипе | LED_BUILTIN |
Шины можно перенести на другие выводы: перед begin() вызовите Wire.setSDA() и Wire.setSCL(), Serial1.setTX() и Serial1.setRX() или SPI.setSCK(), SPI.setTX() и SPI.setRX() (у SPI TX — это MOSI, RX — MISO). Подойдут не любые выводы, а те, к которым внутри чипа подведена эта шина, — они подписаны на официальной схеме выводов Raspberry Pi. С неподходящим выводом скетч остановится с ошибкой, и COM-порт пропадёт до прошивки через BOOTSEL.
Wi-Fi и Bluetooth на Raspberry Pi Pico W и Pico 2 W
Для Wi-Fi в меню «Инструменты → Плата» выберите «Raspberry Pi Pico W» (или «Raspberry Pi Pico 2W»). Если оставить «Raspberry Pi Pico», скетч с Wi-Fi соберётся без единой ошибки, но вместо радио в него попадёт пустой драйвер: плата прошьётся и будет бесконечно ждать подключения к сети. Wi-Fi у Pico W только на 2,4 ГГц: сеть 5 ГГц плата не увидит.
Ниже — небольшая веб-страница. Впишите в начало скетча имя и пароль своей сети Wi-Fi, загрузите его и откройте монитор порта: плата напечатает свой адрес. Наберите его в браузере телефона или компьютера, подключённого к той же сети, и включайте светодиод кнопками на странице.
// Веб-страница на Pico W: температура чипа и кнопки для светодиода.
// В меню нужна плата «Raspberry Pi Pico W» или «Raspberry Pi Pico 2W».
// С пунктом для обычного Pico скетч соберётся, но сеть не появится:
// в этом пункте нет драйвера радио. Wi-Fi у Pico W только 2,4 ГГц.
#include <WiFi.h>
#include <WebServer.h>
const char *SSID = "ИмяСети"; // имя вашей сети Wi-Fi
const char *PASS = "пароль"; // и пароль от неё
WebServer server(80);
bool ledOn = false;
void showPage() {
String page = "<!doctype html><meta charset='utf-8'>";
page += "<meta name='viewport' content='width=device-width'>";
page += "<h1>Pico W</h1><p>Температура чипа: ";
page += String(analogReadTemp(), 1);
page += " °C</p><p>Светодиод ";
page += ledOn ? "горит" : "погашен";
page += "</p><p><a href='/on'>Зажечь</a> <a href='/off'>Погасить</a></p>";
server.send(200, "text/html", page);
}
void setLed(bool on) {
ledOn = on;
digitalWrite(LED_BUILTIN, on ? HIGH : LOW);
server.sendHeader("Location", "/"); // вернуться на главную страницу
server.send(303);
}
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
WiFi.begin(SSID, PASS);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("Откройте в браузере адрес ");
Serial.println(WiFi.localIP());
server.on("/", showPage);
server.on("/on", []() { setLed(true); });
server.on("/off", []() { setLed(false); });
server.begin();
}
void loop() {
server.handleClient();
}
Bluetooth по умолчанию выключен — так он не занимает память. Включается он в меню «Инструменты → IP/Bluetooth Stack» пунктом «IPv4 + Bluetooth»: Pico W умеет и классический Bluetooth, и Bluetooth LE. Подробнее о сети — в статье про Wi-Fi в Arduino.
Два ядра: setup1() и loop1()
У RP2040 и RP2350 по два ядра, и занять второе в пакете Philhower просто: всё, что написано в setup() и loop(), работает на первом ядре, а в setup1() и loop1() — на втором. Так одно ядро может опрашивать датчик без остановки, пока второе рисует на экране или отвечает в сети. Передавать числа между ядрами удобно через очередь rp2040.fifo:
// Два ядра: setup() и loop() работают на первом, setup1() и loop1() — на втором.
// Второе ядро без остановки считает среднее по аналоговому входу GP26,
// первое мигает светодиодом и печатает результат, когда он готов.
// Данные передаются через очередь rp2040.fifo — так ядра не мешают друг другу.
const int SENSOR_PIN = 26; // GP26, он же A0: 0–3,3 В
bool ledOn = false;
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
ledOn = !ledOn;
digitalWrite(LED_BUILTIN, ledOn ? HIGH : LOW);
uint32_t average;
if (rp2040.fifo.pop_nb(&average)) { // пришло новое число со второго ядра
Serial.print("GP26, среднее из 1000 замеров: ");
Serial.println(average);
}
delay(500);
}
void setup1() {
analogReadResolution(12); // 0–4095 вместо 0–1023
}
void loop1() {
uint32_t sum = 0;
for (int i = 0; i < 1000; i++) {
sum += analogRead(SENSOR_PIN);
}
rp2040.fifo.push_nb(sum / 1000); // не ждём, если первое ядро не забрало прошлое
delay(1000);
}
Блоки PIO и USB
Ещё одна особенность чипа — блоки PIO: маленькие независимые процессоры для работы с выводами. На них пакет делает дополнительные UART, сервоприводы и звук, а библиотека Adafruit NeoPixel — управление светодиодными лентами, не нагружая основные ядра. А с библиотеками Keyboard и Mouse компьютер видит Pico как USB-клавиатуру или мышь.
Какой чип и на какой частоте: проверочный скетч
Скетч ниже печатает, какой чип стоит на плате, на какой частоте он работает, есть ли радио и сколько свободно памяти. Pico по умолчанию работает на 200 МГц: паспортные 133 МГц Raspberry Pi в 2025 году официально подняла до 200, и пакет сразу это использует. Частоту можно поменять в меню CPU Speed.
// Что за плата: какой чип, на какой частоте работает, есть ли радио.
// Печатает раз в 5 секунд в монитор порта (скорость не важна, порт — USB).
void setup() {
Serial.begin(115200);
}
void loop() {
#if defined(PICO_RP2350)
#if defined(__riscv)
Serial.println("Чип: RP2350 (Pico 2), ядра RISC-V Hazard3");
#else
Serial.println("Чип: RP2350 (Pico 2), ядра ARM Cortex-M33");
#endif
#else
Serial.println("Чип: RP2040 (Pico), ядра ARM Cortex-M0+");
#endif
Serial.print("Частота: ");
Serial.print(rp2040.f_cpu() / 1000000);
Serial.println(" МГц");
Serial.print("Радиочип Wi-Fi и Bluetooth: ");
Serial.println(rp2040.isPicoW() ? "есть" : "нет");
Serial.print("Температура чипа: ");
Serial.print(analogReadTemp(), 1); // встроенный датчик, точность — пара градусов
Serial.println(" °C");
Serial.print("Свободно оперативной памяти: ");
Serial.print(rp2040.getFreeHeap() / 1024);
Serial.println(" КБ");
Serial.print("Номер чипа: ");
Serial.println(rp2040.getChipID());
Serial.println();
delay(5000);
}
Ошибки прошивки и сборки
| Сообщение | Что это значит и что делать |
|---|---|
Не удалась загрузка: порт загрузки не указан | Порт не выбран. У новой платы в режиме BOOTSEL COM-порта нет: в Arduino IDE выберите порт «UF2 Board». Если его нет в списке, скопируйте файл .uf2 на диск RPI-RP2 вручную. В английской Arduino IDE — «no upload port provided» |
No drive to deploy. | Перед этим идёт строка «Scanning for RP2040 devices»: программа загрузки 10 секунд ждала диск RPI-RP2 и не дождалась. Плата не перешла в режим прошивки — скетч завис или выключил USB, — или Windows не подключила диск. Переведите плату в режим BOOTSEL кнопкой, выберите порт «UF2 Board» и загрузите снова |
Unable to build drive list | Windows не дала программе загрузки список дисков. Так бывает на компьютерах с ограниченными правами, например на школьных. Скопируйте файл .uf2 на диск RPI-RP2 вручную |
No accessible RP2040/RP2350 devices in BOOTSEL mode were found. | В Upload Method выбран Picotool, а плата не в режиме BOOTSEL — или Windows не даёт picotool до неё добраться без драйвера. Верните Default (UF2): этому способу драйвер не нужен |
'LED_BUILTIN' was not declared in this scope | Выбран пункт платы без обычного светодиода, например «Waveshare RP2040 Zero». Возьмите скетч для цветного светодиода или укажите номер вывода сами |
Failed to install platform: 'arduino:mbed_rp2040:…' | Рядом — строка «403 Forbidden»: сервер Arduino не отдал пакет Arduino Mbed, из России так бывает. Ставьте пакет Earle Philhower: он полнее, а в Trema IDE ставится с российского зеркала |
Общие беды загрузки — кабель без линий данных, порт занят другой программой — разобраны в статье про ошибки загрузки.
Raspberry Pi Pico или ESP32
Обе платы недорогие и быстрые, а берут их для разного. ESP32 — плата для сети: Wi-Fi есть почти у всех её вариантов, а примеров для умного дома, MQTT и Telegram-ботов под неё больше всего. Pico берут за блоки PIO, два ядра без фоновых задач радио, USB прямо в чипе, через который плата становится клавиатурой или мышью, и загрузчик в самом чипе, который не испортить никаким скетчем. Нужна сеть — берите ESP32 или Pico W, нужны точные сигналы, много выводов и USB — Pico.
Чем программировать
Raspberry Pi Pico в Trema IDE
Trema IDE — русская среда, совместимая с Arduino IDE: те же скетчи .ino и тот же пакет Earle Philhower. Он ставится из окна плат с российского зеркала, без ручных ссылок и VPN. Частота, объём флеш-памяти, USB Stack и другие пункты меню открываются кнопкой «Параметры платы», а ошибки сборки объясняются по-русски, с переходом к нужной строке.
- Пакет Raspberry Pi Pico/RP2040/RP2350 ставится с российского зеркала
- CPU Speed, Flash Size и USB Stack — кнопкой «Параметры платы»
- Скетчи .ino из Arduino IDE открываются без переделки
- Ошибки сборки — с объяснением по-русски и переходом к строке
Можно ли программировать Raspberry Pi Pico в Arduino IDE?
Да. Нужен пакет «Raspberry Pi Pico/RP2040/RP2350» Earle Philhower: в нём около 150 плат на RP2040 и RP2350, включая Pico, Pico W, Pico 2 и Pico 2 W. Скетчи пишутся так же, как для Uno, — setup(), loop(), digitalWrite(), analogRead(), — и большинство библиотек для датчиков работает без переделки.
Какой пакет ставить для Pico: Arduino Mbed или Earle Philhower?
Earle Philhower. Официальный пакет «Arduino Mbed OS RP2040 Boards» поддерживает только Pico и Arduino Nano RP2040 Connect: ни Wi-Fi на Pico W, ни Pico 2, ни клонов в нём нет. Пакет Philhower ставится по ссылке github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json, в Trema IDE — из окна плат без ссылок.
Как прошить новую Raspberry Pi Pico?
Держите кнопку BOOTSEL, подключите плату кабелем и отпустите кнопку — плата появится как диск RPI-RP2 (у Pico 2 — RP2350). В Arduino IDE выберите плату и порт «UF2 Board» и нажмите «Загрузить». Если такого порта нет, сохраните файл .uf2 через «Скетч → Экспортировать скомпилированный бинарный файл» и скопируйте его на диск вручную. Дальше плата прошивается через свой COM-порт, без кнопки.
Почему у Raspberry Pi Pico нет COM-порта?
COM-порт создаёт скетч Arduino, записанный на плату, а не сама плата. Поэтому его нет у новой платы и когда скетч завис, упал или выключил USB. У платы с MicroPython порт есть, но это порт MicroPython. В любом из этих случаев держите BOOTSEL при подключении кабеля и прошейте плату через порт «UF2 Board» — после этого появится порт Arduino.
Что такое BOOTSEL и файл UF2?
BOOTSEL — кнопка на плате. Если держать её при подключении USB, Pico открывается как флешка RPI-RP2. UF2 — формат файла прошивки: скопированный на эту флешку файл .uf2 записывается в плату, и она сразу перезапускается. Загрузчик зашит в чип, поэтому испортить его неудачным скетчем нельзя.
Какие выводы у Raspberry Pi Pico аналоговые?
GP26, GP27 и GP28 — в скетче A0, A1 и A2. АЦП 12-битный, analogRead() по умолчанию отдаёт 0–1023, а после analogReadResolution(12) — 0–4095 на 0–3,3 В. Реальная точность АЦП RP2040 около 8–9 бит; для точных измерений берут внешний АЦП.
Можно ли подключать к Pico модули на 5 вольт?
Питать модуль от 5 В можно — от вывода VBUS, пока плата подключена к USB. Но у модулей I²C резисторы подтяжки идут к их питанию, и на SDA и SCL тогда окажется 5 В: такие модули питайте от 3V3. Сигнал 5 В на выводы GP подавать нельзя: у RP2040 рабочий верх — 3,3 В, а с 3,8 В чип уже портится. RP2350 в Pico 2 формально выдерживает 5 В, но с оговорками, поэтому и с Pico 2 лучше ставить делитель или преобразователь уровней.
Чем Pico W отличается от Pico?
У Pico W есть Wi-Fi на 2,4 ГГц и Bluetooth — классический и LE. Выводы те же, но светодиод подключён к радиочипу, а не к GP25: LED_BUILTIN работает, а GP25 у Pico W — линия радиочипа, и трогать её в скетче не нужно. В меню нужно выбирать «Raspberry Pi Pico W».
Почему на Pico W не подключается Wi-Fi?
Чаще всего в меню выбрана плата «Raspberry Pi Pico», а не «Raspberry Pi Pico W»: скетч с Wi-Fi тогда собирается без ошибок, но радио в нём не работает. Вторая причина — сеть на 5 ГГц: Pico W видит только 2,4 ГГц. И проверьте имя сети и пароль: в них большие и маленькие буквы различаются.
Работает ли Raspberry Pi Pico 2 в Arduino IDE?
Да, в пакете Earle Philhower есть пункты «Raspberry Pi Pico 2» и «Raspberry Pi Pico 2W». Пунктом CPU Architecture можно выбрать, на каких ядрах работать: ARM Cortex-M33 или RISC-V. В пакете Arduino Mbed Pico 2 нет.
Какую плату выбрать в меню для RP2040-Zero?
«Waveshare RP2040 Zero». Обычного светодиода у неё нет, только цветной WS2812 на GP16, поэтому Blink с LED_BUILTIN не соберётся — нужен скетч с библиотекой Adafruit NeoPixel. Для прошивки держите BOOT, нажмите и отпустите RESET, отпустите BOOT.
Как вернуться с MicroPython на Arduino?
Прошейте скетч из Arduino через режим BOOTSEL: держите кнопку при подключении кабеля, выберите порт «UF2 Board» и загрузите. Скетч займёт место MicroPython. Обратно — так же: в режиме BOOTSEL скопируйте на диск файл MicroPython с сайта Raspberry Pi.
Raspberry Pi Pico или ESP32 — что выбрать?
Для сети и умного дома удобнее ESP32: Wi-Fi есть почти у всех её вариантов, и примеров больше. Pico берут за блоки PIO, два ядра без фоновых задач радио, USB прямо в чипе, через который плата становится клавиатурой или мышью, и загрузчик, который не испортить никаким скетчем. Если нужен Wi-Fi на Pico — есть Pico W.
Нужен ли драйвер для Raspberry Pi Pico в Windows?
Для обычной прошивки — нет: Windows 10 и 11 сами видят и диск RPI-RP2, и COM-порт платы. Драйвер понадобится, только если в пункте Upload Method выбрать Picotool.
Raspberry Pi Pico за вечер: от пакета до веб-страницы на Pico W
Скачайте Trema IDE и поставьте пакет Raspberry Pi Pico с российского зеркала — скетчи из этой статьи соберутся без правок. Дома — бесплатно навсегда.
