Справочник платы

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.

Raspberry Pi Pico (и Pico H с впаянными ножками)Пункт меню«Raspberry Pi Pico»ЧипRP2040: два ядра ARM Cortex-M0+, 264 КБ оперативнойпамяти, 2 МБ флеш-памятиЧастотаИзначально 133 МГц; с 2025 года Raspberry Pi официальноразрешает 200 МГц, и пакет ставит их по умолчаниюСветодиодGP25 (LED_BUILTIN)РадиоНетДиск в режиме BOOTSELRPI-RP2Самая простая плата для начала
Прошивка для RP2040 на RP2350 не запустится, и наоборот, поэтому сначала посмотрите надпись на чипе. Пункты меню — из пакета «Raspberry Pi Pico/RP2040/RP2350» Earle Philhower, версия 6.3.0.

У нас в магазине есть 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. Программировать её можно и так и так:

ArduinoMicroPython
ЯзыкC++, как у Uno и ESP32Python
Скоростьпрограмма компилируется в машинный код — быстрокоманды выполняет интерпретатор — заметно медленнее
Библиотекитысячи библиотек 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 делает это сама — нужно только правильно выбрать порт. Каким он будет, зависит от того, что сейчас на плате:

Новая плата или плата с MicroPythonCOM-портУ новой платы нет: порт создаёт скетч Arduino, а его наплате ещё нет. У MicroPython порт свой, и первый скетчнадёжнее загрузить через BOOTSELЧто сделатьДержите BOOTSEL, подключите кабель и отпустите кнопку —появится диск RPI-RP2 (у Pico 2 — RP2350)Порт в Arduino IDE«UF2 Board», затем «Загрузить»Если такого порта нетСкопируйте файл .uf2 на диск RPI-RP2 вручную — как егополучить, рассказано нижеКнопка нужна один раз: дальше прошивка пойдёт через COM-порт
Так прошиваются Pico, Pico W, Pico 2 и Pico 2 W с пунктом Upload Method «Default (UF2)». У RP2040-Zero и YD-RP2040 вместо BOOTSEL кнопка BOOT, а в режим прошивки их переводят так: держите BOOT, нажмите и отпустите RESET, затем отпустите BOOT.

По шагам для новой платы:

  1. Нажмите и держите BOOTSEL, подключите плату кабелем к компьютеру и отпустите кнопку — появится диск RPI-RP2.
  2. В меню «Инструменты → Плата» выберите свою плату, например «Raspberry Pi Pico».
  3. В «Инструменты → Порт» выберите «UF2 Board» и нажмите «Загрузить».
  4. Когда в окне вывода внизу появятся строки «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. Если нажать на пункт легенды, нужные выводы подсветятся, а под схемой появится пояснение.

Распиновка Raspberry Pi Pico — схема выводовmicro-USBLED GP25BOOTSELфлешRP2040или RP23501TX · GP02RX · GP13GND4GP25GP36SDA · GP47SCL · GP58GND9GP610GP711GP812GP913GND14GP1015GP1116GP1217GP1318GND19GP1420GP1540VBUS39VSYS38GND373V3_EN363V335ADC_VREF34GP28 · A233AGND32GP27 · A131GP26 · A030RUN29GP2228GND27GP2126GP2025GP19 · MOSI24GP18 · SCK23GND22GP17 · CS21GP16 · MISOSWCLKGNDSWDIOплощадки отладки

Плата лежит разъёмом 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:

ЧтоВыводыКак обратиться в скетче
SerialUSBМонитор порта; выводы не занимает
Serial1GP0 — TX, GP1 — RXSerial1.begin(9600)
Serial2GP8 — TX, GP9 — RXSerial2.begin(9600)
I²C (Wire)GP4 — SDA, GP5 — SCLWire.begin()
Второй I²C (Wire1)GP26 — SDA, GP27 — SCLWire1.begin(); выводы те же, что у A0 и A1
SPIGP16 — MISO, GP17 — CS, GP18 — SCK, GP19 — MOSISPI.begin()
Второй SPI (SPI1)GP12 — MISO, GP13 — CS, GP14 — SCK, GP15 — MOSISPI1.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> &nbsp; <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 listWindows не дала программе загрузки список дисков. Так бывает на компьютерах с ограниченными правами, например на школьных. Скопируйте файл .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

Не нашли ответа? Спросите нас

Можно ли программировать 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 с российского зеркала — скетчи из этой статьи соберутся без правок. Дома — бесплатно навсегда.