RP2040-Zero: компактный микроконтроллер Raspberry Pi для Arduino и MicroPython

RP2040-Zero: компактный микроконтроллер Raspberry Pi для Arduino и MicroPython

Подробное руководство по Waveshare RP2040-Zero: характеристики RP2040, распиновка, питание, прошивка через BOOT, Arduino IDE, MicroPython, CircuitPython и готовые примеры кода

RP2040-Zero часто покупают как альтернативу Arduino Nano, ESP32-C3 SuperMini или Raspberry Pi Pico: она компактна, недорога, имеет современный USB-C и достаточно производительна для датчиков, дисплеев, светодиодных лент, USB-устройств, MIDI-контроллеров и нестандартной периферии на PIO.

Важно не путать названия. RP2040 — это сам микроконтроллер, разработанный Raspberry Pi. RP2040-Zero — конкретная плата разработки Waveshare, построенная вокруг этого микроконтроллера. У других производителей есть свои платы на том же чипе: Raspberry Pi Pico, Seeed XIAO RP2040, Adafruit QT Py RP2040 и десятки других. Код для RP2040 часто переносим между ними, но распиновка, размер Flash, встроенные светодиоды и питание у плат отличаются.

Что внутри RP2040-Zero

Основа платы — RP2040. Это двухъядерный Arm Cortex-M0+ микроконтроллер с частотой до 133 МГц, 264 КБ встроенной SRAM и богатым набором периферии. Сам чип не содержит Flash-памяти для программы: она вынесена на плату отдельной микросхемой QSPI. В версии Waveshare RP2040-Zero обычно установлено 2 МБ Flash.

ХарактеристикаRP2040-Zero
МикроконтроллерRaspberry Pi RP2040
Процессор2 × Arm Cortex-M0+ до 133 МГц
Оперативная память264 КБ SRAM
Flash для программы2 МБ QSPI NOR Flash
Логические уровни GPIO3,3 В
USBUSB-C, USB 1.1 device/host на уровне RP2040
Выводы на гребёнке20 многофункциональных GPIO-контактов
АЦПДо 4 каналов 12 бит у RP2040; на гребёнку этой платы выведены GPIO26, GPIO27, GPIO28 и GPIO29
Интерфейсы2 × UART, 2 × I2C, 2 × SPI, PWM, PIO
Особенности платыBOOT, RESET, адресный RGB WS2812, castellated-площадки
Рабочая температура чипа−40…+85 °C по спецификации RP2040

RP2040 предоставляет 30 GPIO, но не все выведены на контактную гребёнку маленькой RP2040-Zero. На её основных краевых контактах доступны 20 многофункциональных GPIO; дополнительные линии, включая часть служебных сигналов, могут быть доступны через мелкие площадки. Для обычных проектов с кнопками, датчиками, I2C, SPI и дисплеями выводов обычно хватает.

Raspberry Pi заявляет для RP2040 два UART, два SPI, два I2C, 16 PWM-каналов, USB 1.1 с поддержкой host/device и восемь state machine программируемого ввода-вывода PIO. Именно PIO — особенность, из-за которой RP2040 выделяется среди похожих микроконтроллеров: она позволяет реализовывать точные нестандартные протоколы и временные последовательности независимо от основного кода.

Чем RP2040 отличается от Arduino и ESP32

RP2040-Zero — не «маленький Raspberry Pi с Linux». Это микроконтроллерная плата: она запускает одну прошивку, не имеет привычной ОС, окон, браузера и файловой системы как у Raspberry Pi Zero 2 W.

Плата/семействоСильная сторонаЧто учитывать
Arduino Uno/NanoПростота, огромное число базовых примеров, 5-вольтовая логика у классических AVRЗначительно меньше RAM и вычислительной мощности
ESP32Wi-Fi, Bluetooth, удобен для IoTGPIO только 3,3 В, Wi-Fi повышает потребление и усложняет тайминги
RP2040-ZeroUSB, PIO, два ядра, предсказуемые тайминги, компактностьНет встроенных Wi-Fi/Bluetooth, все GPIO — 3,3 В
Raspberry Pi ZeroLinux-компьютер, HDMI, сеть, многозадачностьЭто одноплатный компьютер, а не прямой аналог микроконтроллера

Если проекту нужны Wi-Fi или Bluetooth «из коробки», обычно проще взять ESP32. Если нужен компактный USB-MIDI-контроллер, клавиатура, HID-устройство, генерация необычного протокола, адресные светодиоды с точным таймингом или просто быстрая плата без радиомодуля — RP2040-Zero очень удачный кандидат.

Распиновка RP2040-Zero

Ниже приведены основные краевые контакты платы. Нумерация ориентирована для варианта, когда USB-C находится сверху, а плата лежит компонентами вверх. У некоторых продавцов встречаются изображения с другой ориентацией — перед подключением всегда сверяйтесь с маркировкой на текстолите.

Контакт платыСигнал RP2040Частое применение
5VVBUS/USB 5 ВПитание от USB или 5-вольтовый вход/выход с оговорками
GNDЗемляОбщий провод
3V3Стабилизированные 3,3 ВПитание 3,3-вольтовых датчиков
GP29ADC3Аналоговый вход, GPIO
GP28ADC2Аналоговый вход, GPIO
GP27ADC1Аналоговый вход, GPIO
GP26ADC0Аналоговый вход, GPIO
GP15GPIOЦифровой ввод/вывод, PWM
GP14GPIOЦифровой ввод/вывод, PWM
GP13GPIOЦифровой ввод/вывод, PWM
GP12GPIOЦифровой ввод/вывод, PWM
GP11GPIOSPI1 TX по распространённой конфигурации
GP10GPIOSPI1 SCK по распространённой конфигурации
GP9GPIOSPI1 CS по распространённой конфигурации
GP8GPIOSPI1 RX по распространённой конфигурации
GP7GPIOI2C1 SCL по распространённой конфигурации
GP6GPIOI2C1 SDA по распространённой конфигурации
GP5GPIOI2C0 SCL по распространённой конфигурации
GP4GPIOI2C0 SDA по распространённой конфигурации
GP3GPIOЦифровой ввод/вывод, PWM
GP2GPIOЦифровой ввод/вывод, PWM
GP1UART0 RX по распространённой конфигурацииUART, цифровой ввод/вывод
GP0UART0 TX по распространённой конфигурацииUART, цифровой ввод/вывод

Один и тот же GPIO на RP2040 можно назначать разным интерфейсам. Например, I2C0 не «приклеен» навсегда к GP4/GP5 — это просто удобная и распространённая пара. Однако начинайте с типовых назначений: готовые примеры, схемы и библиотеки обычно предполагают именно их.

Встроенный RGB-светодиод

На RP2040-Zero установлен адресный RGB-светодиод семейства WS2812. Это не обычный одиночный LED, который включают digitalWrite(): цвет передаётся последовательностью импульсов по одному GPIO. В большинстве примеров для этой платы используется GP16.

GP16 не выведен на основную гребёнку как свободный контакт, поскольку уже соединён со встроенным RGB-светодиодом. Это удобно для первого теста, но учитывайте его при выборе пинов для своего проекта.

У недорогих клонов и ревизий платы возможны отличия. Если пример с RGB не работает, сначала проверьте маркировку платы, схему продавца и распиновку именно вашей ревизии.

Питание: что можно и чего нельзя

RP2040 — 3,3-вольтовый микроконтроллер. Его GPIO не рассчитаны на 5 В. Это главное правило платы.

Куда подаём питаниеЧто происходитОграничения
USB-CНормальный способ питания и прошивкиНужен USB-кабель с передачей данных
Контакт 5VСвязан с USB-питанием на многих платах; подходит для 5 В при понимании схемы питанияНе подавайте одновременно несколько источников 5 В без развязки
Контакт 3V3Питание 3,3-вольтовой частиПодавайте только стабильные 3,3 В; не подключайте сюда 5 В
GPIOСигналы 0…3,3 В5 В на GPIO может повредить RP2040

Питание от батареи

В документации Waveshare указано, что VSYS на RP2040-Zero соединён с VUSB (контакт 5V). Если питать плату батареей через эту линию, нужен диод для защиты от обратного тока в USB. Питание через 3V3 возможно только от уже стабилизированных 3,3 В. Не подключайте Li-Ion/LiPo аккумулятор 4,2 В напрямую к 3V3: для него нужен стабилизатор 3,3 В.

Для первого проекта проще и безопаснее питать плату от USB-C. Для автономного устройства используйте подходящий DC-DC/LDO, предусмотрите защиту аккумулятора и измерьте фактическое потребление мультиметром. Базовые принципы питания и запаса по току разобраны в .

Прошивка и файлы UF2

У RP2040 есть встроенный USB-загрузчик. Когда плата запущена в режиме BOOTSEL, компьютер видит её как обычный USB-накопитель, чаще всего с названием RPI-RP2. Прошивка для такого режима хранится в файле с расширением .uf2.

Чтобы установить MicroPython, CircuitPython или свою программу в формате UF2:

  1. Подключите плату кабелем USB-C с передачей данных.
  2. Зажмите кнопку BOOT.
  3. Не отпуская BOOT, кратко нажмите RESET.
  4. Отпустите BOOT.
  5. На компьютере должен появиться USB-диск RPI-RP2.
  6. Скопируйте на него нужный файл .uf2.
  7. Плата автоматически перезагрузится и начнёт выполнять новую прошивку.

Если ваша плата не определяется, попробуйте другой кабель: многие USB-C кабели из комплекта к зарядке передают только питание. Также помогает подключение напрямую в порт компьютера без USB-хаба.

Почему файл UF2 «исчезает» после копирования?

Это нормальное поведение. Загрузчик считывает UF2, записывает прошивку во Flash и сразу перезагружает RP2040. USB-диск RPI-RP2 пропадает, потому что плата уже вышла из режима загрузчика. Если нужно снова увидеть этот диск, повторите комбинацию BOOT + RESET.

Arduino IDE: первый запуск

Для работы с RP2040 в Arduino IDE нужен пакет плат. Один из распространённых вариантов — Raspberry Pi Pico/RP2040 by Earle F. Philhower, III: он поддерживает множество плат на RP2040, включая совместимые варианты Waveshare.

Устанавливаем поддержку RP2040

  1. Откройте Arduino IDE.
  2. Перейдите в File → Preferences.
  3. В поле Additional Boards Manager URLs добавьте:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
  1. Откройте Tools → Board → Boards Manager.
  2. Найдите Raspberry Pi Pico/RP2040.
  3. Установите пакет от Earle F. Philhower, III.
  4. В меню Tools → Board выберите Waveshare RP2040 Zero, если он есть в вашей версии пакета. Если отдельного пункта нет, используйте совместимый профиль Raspberry Pi Pico только для первого теста, но затем проверьте Flash, светодиод и pin mapping для своей платы.

После первого подключения в режиме BOOTSEL загрузка может происходить через USB-накопитель. Когда плата уже получила прошивку, Arduino IDE обычно использует USB-порт, который появляется как последовательное устройство.

Первый скетч: мигаем внешним светодиодом

Подключите:

RP2040-Zero GP15 ----[220–1000 Ом]----|>|---- GND
                                      LED

Анод LED подключается к резистору, катод — к GND.

constexpr int LED_PIN = 15;

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);

  digitalWrite(LED_PIN, LOW);
  delay(500);
}

Если LED мигает, значит плата успешно прошита, GPIO работает, а вы правильно ориентировали выводы.

Проверяем Serial Monitor

Добавьте вывод в порт:

void setup() {
  Serial.begin(115200);
  delay(1500);
  Serial.println("RP2040-Zero запущена");
}

void loop() {
  Serial.println("tick");
  delay(1000);
}

Откройте Serial Monitor на скорости 115200 бод. Если порт не появился, нажмите RESET, закройте другие программы, которые могут удерживать последовательный порт, и проверьте, что выбрана правильная плата в Arduino IDE.

Встроенный RGB WS2812 в Arduino

Для встроенного RGB-светодиода удобно использовать библиотеку Adafruit NeoPixel.

  1. Откройте Sketch → Include Library → Manage Libraries.
  2. Найдите Adafruit NeoPixel.
  3. Установите библиотеку.

Пример для GP16:

#include <Adafruit_NeoPixel.h>

constexpr int RGB_PIN = 16;
constexpr int RGB_COUNT = 1;

Adafruit_NeoPixel pixel(RGB_COUNT, RGB_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixel.begin();
  pixel.setBrightness(20);  // Начинаем с малой яркости.
}

void loop() {
  pixel.setPixelColor(0, pixel.Color(255, 0, 0));
  pixel.show();
  delay(700);

  pixel.setPixelColor(0, pixel.Color(0, 255, 0));
  pixel.show();
  delay(700);

  pixel.setPixelColor(0, pixel.Color(0, 0, 255));
  pixel.show();
  delay(700);
}

Если светодиод не меняет цвет, попробуйте временно сменить RGB_PIN согласно документации вашей платы. Не ставьте яркость 255 без причины: даже один WS2812 при белом цвете может потреблять десятки миллиампер, а в автономном проекте это лишний расход батареи.

MicroPython: прошивка и первый код

Для RP2040-Zero существует отдельная официальная сборка MicroPython. Скачивайте именно вариант Waveshare RP2040-Zero, а не UF2 от Raspberry Pi Pico: generic-сборка может работать, но не будет знать особенности конкретной платы так же хорошо.

Устанавливаем MicroPython

  1. Скачайте .uf2 для Waveshare RP2040-Zero со страницы загрузок MicroPython.
  2. Введите плату в режим BOOTSEL комбинацией BOOT + RESET.
  3. Дождитесь накопителя RPI-RP2.
  4. Скопируйте на него файл .uf2.
  5. Дождитесь автоматического перезапуска.

После прошивки можно работать через Thonny, mpremote или последовательный терминал.

Первый код MicroPython: внешний LED

В Thonny откройте новый файл, выберите интерпретатор MicroPython и порт RP2040-Zero, затем выполните:

from machine import Pin
from time import sleep

led = Pin(15, Pin.OUT)

while True:
    led.toggle()
    sleep(0.5)

Для автозапуска сохраните файл на устройство под именем main.py.

MicroPython: встроенный RGB WS2812

from machine import Pin
from neopixel import NeoPixel
from time import sleep

pixel = NeoPixel(Pin(16, Pin.OUT), 1)

while True:
    pixel[0] = (32, 0, 0)
    pixel.write()
    sleep(0.5)

    pixel[0] = (0, 32, 0)
    pixel.write()
    sleep(0.5)

    pixel[0] = (0, 0, 32)
    pixel.write()
    sleep(0.5)

Значения (R, G, B) задают яркость красного, зелёного и синего каналов от 0 до 255. Для первого опыта держите их небольшими: (32, 0, 0) уже хорошо видно в помещении.

Почему main.py важен?

MicroPython выполняет boot.py, если он есть, а затем main.py при каждом включении или перезагрузке платы. В main.py размещают код устройства, который должен работать автономно. Для коротких экспериментов можно запускать строки через REPL, но после отключения питания они исчезнут, если не сохранены в файл.

CircuitPython: вариант с USB-диском CIRCUITPY

CircuitPython тоже поддерживает Waveshare RP2040-Zero. После установки плата обычно появляется как накопитель CIRCUITPY, а основной код лежит в файле code.py. Изменили файл, сохранили — код автоматически перезапустился.

Установка выглядит так же:

  1. Скачайте CircuitPython UF2 для Waveshare RP2040-Zero.
  2. Введите плату в BOOTSEL-режим.
  3. Скопируйте UF2 на RPI-RP2.
  4. После перезапуска откройте диск CIRCUITPY.
  5. Создайте или отредактируйте code.py.

Пример мигания внешним LED:

import time
import board
import digitalio

led = digitalio.DigitalInOut(board.GP15)
led.direction = digitalio.Direction.OUTPUT

while True:
    led.value = not led.value
    time.sleep(0.5)

CircuitPython удобен, когда вы часто пробуете датчики и библиотеки Adafruit: исходник хранится на доступном USB-диске, а большая часть периферии имеет готовые примеры. Подробнее о различиях интерпретаторов читайте в статье .

Подключаем I2C-датчик: BME280 или OLED

I2C позволяет подключить несколько датчиков двумя сигнальными проводами. Для RP2040-Zero распространённая пара — GP4 = SDA и GP5 = SCL.

RP2040-Zero                BME280 / OLED
-----------                ------------
3V3         -------------- VCC
GND         -------------- GND
GP4 (SDA)   -------------- SDA
GP5 (SCL)   -------------- SCL

Используйте питание 3,3 В, если модуль рассчитан на него. Многие BME280/OLED-платы умеют работать от 3,3 В и 5 В, но важно проверить, к какому напряжению подтянуты линии SDA/SCL. GPIO RP2040 не рассчитаны на 5-вольтовые уровни.

I2C-сканер для Arduino

#include <Wire.h>

constexpr int SDA_PIN = 4;
constexpr int SCL_PIN = 5;

void setup() {
  Serial.begin(115200);
  Wire.setSDA(SDA_PIN);
  Wire.setSCL(SCL_PIN);
  Wire.begin();
}

void loop() {
  int devices = 0;

  for (uint8_t address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    uint8_t error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C device: 0x");
      if (address < 16) Serial.print('0');
      Serial.println(address, HEX);
      devices++;
    }
  }

  if (devices == 0) {
    Serial.println("I2C-устройства не найдены");
  }

  Serial.println("---");
  delay(3000);
}

Для BME280 обычно появится 0x76 или 0x77, для OLED SSD1306 часто 0x3C. Это не ошибка, если адрес не такой, как в чужом примере: он зависит от конкретного модуля и положения его адресных перемычек.

PWM: плавно регулируем яркость LED

ШИМ (PWM) быстро включает и выключает светодиод. Глаз усредняет вспышки и видит изменение яркости. Подключите LED с резистором к GP15, как в первом примере, и используйте:

constexpr int LED_PIN = 15;

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(LED_PIN, brightness);
    delay(8);
  }

  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(LED_PIN, brightness);
    delay(8);
  }
}

На RP2040 доступны 16 PWM-каналов. Не подключайте светодиод напрямую к GPIO без резистора: PWM не ограничивает ток, он только меняет среднюю яркость. Расчёт резистора есть в .

АЦП: читаем потенциометр

RP2040 имеет 12-битный АЦП. На RP2040-Zero для аналога удобно использовать GP26, GP27, GP28 или GP29. Подключим потенциометр на 10 кОм:

RP2040-Zero                 Потенциометр 10 кОм
-----------                 -------------------
3V3         --------------- Крайний вывод
GND         --------------- Другой крайний вывод
GP26        --------------- Средний вывод (ползунок)

Важно: на ползунке будет напряжение 0…3,3 В. Нельзя подключать к GP26 потенциометр, запитанный от 5 В.

constexpr int POT_PIN = 26;

void setup() {
  Serial.begin(115200);
}

void loop() {
  int raw = analogRead(POT_PIN);
  float voltage = raw * 3.3f / 4095.0f;

  Serial.print("ADC: ");
  Serial.print(raw);
  Serial.print("  Voltage: ");
  Serial.println(voltage, 3);

  delay(250);
}

Некоторые Arduino core и настройки могут отдавать другое разрешение АЦП по умолчанию. Если ожидаете диапазон 0…4095, при необходимости добавьте в setup():

analogReadResolution(12);

PIO: почему RP2040 любят за нестандартные проекты

Обычные микроконтроллеры имеют фиксированный набор периферии: UART, SPI, I2C, PWM. Если нужен интерфейс, которого нет в списке, приходится нагружать процессор точными задержками, писать обработчики прерываний или брать другой чип.

У RP2040 есть восемь PIO state machine — маленьких программируемых автоматов ввода-вывода. Они могут сами формировать или считывать строгую последовательность сигналов, пока ядра Cortex-M0+ занимаются логикой приложения.

PIO используют для:

  • точного управления лентами WS2812/NeoPixel;
  • нестандартных светодиодных матриц;
  • дополнительного UART/SPI-подобного интерфейса;
  • генерации сигналов с жёсткими таймингами;
  • захвата быстрых импульсов;
  • DVI/видеовывода на некоторых более крупных RP2040-платах.

Для первого проекта не нужно писать PIO на ассемблере. Достаточно знать, что библиотека может использовать PIO внутри, а RP2040 при этом не «тормозит» основной код так, как это иногда происходит при программном bit-banging.

Частые проблемы

Компьютер не видит RPI-RP2

  • Проверьте USB-C кабель: он должен передавать данные.
  • Зажмите BOOT и коротко нажмите RESET, затем отпустите BOOT.
  • Попробуйте другой USB-порт без хаба.
  • Если кнопки нажимать неудобно, отключите USB, удерживайте BOOT и подключите кабель снова.
  • Убедитесь, что это именно RP2040-Zero, а не внешне похожая ESP32-плата.

Arduino IDE не загружает скетч

  • Проверьте выбранную плату и USB-порт в меню Tools.
  • Переведите плату в BOOTSEL и повторите первую загрузку.
  • Закройте Serial Monitor, Thonny и другие программы, которые могут удерживать порт.
  • Убедитесь, что не установлен конфликтующий пакет плат RP2040.
  • Попробуйте снизить скорость загрузки, если такая опция есть в меню платы.

Не работает встроенный RGB

  • Проверьте, что у вашей ревизии действительно есть WS2812.
  • Убедитесь, что используется GPIO16 и библиотека поддерживает NEO_GRB + NEO_KHZ800.
  • Начните с низкой яркости.
  • Проверьте тип платы в Arduino core и документацию продавца: распиновка у клонов может отличаться.

I2C-сканер никого не видит

  • Соедините GND датчика с GND платы.
  • Проверьте, что SDA идёт на GP4, SCL на GP5 и их не перепутали.
  • Питайте датчик от 3V3, если нет гарантии безопасных уровней I2C при 5 В.
  • Проверьте адрес в коде и качество соединений на макетной плате.
  • Не подключайте 5-вольтовые подтяжки SDA/SCL прямо к RP2040.

Плата перезагружается или USB отключается

Частая причина — питание. Светодиодная лента, сервопривод, мотор или реле не должны питаться от 3V3 платы. Используйте отдельный источник для нагрузки, объедините земли и добавьте запас по току. Разбор просадок и выбора питания — в .

Что можно собрать

  • USB-MIDI-контроллер с потенциометрами и кнопками.
  • Макропад или компактную USB-клавиатуру.
  • Контроллер адресной ленты WS2812 с эффектами.
  • Маленькую метеостанцию на BME280 и OLED.
  • Логгер датчиков с SD-картой по SPI.
  • Настольный таймер или часы с DS3231 и OLED.
  • Контроллер для энкодера, дисплея и ручных органов управления.
  • Узел проводной автоматики, где Wi-Fi не нужен или нежелателен.

Что запомнить

  • RP2040-Zero — это плата Waveshare на RP2040, а не одноплатный компьютер Raspberry Pi Zero.
  • RP2040 имеет два Cortex-M0+ до 133 МГц, 264 КБ SRAM, USB, PWM, ADC, I2C, SPI, UART и восемь PIO state machine.
  • У RP2040-Zero обычно 2 МБ Flash, USB-C, BOOT/RESET и встроенный WS2812 на GP16.
  • Все GPIO используют уровни 3,3 В: 5 В на входе может повредить плату.
  • Для установки UF2 зажмите BOOT, нажмите RESET, скопируйте файл на RPI-RP2.
  • Arduino IDE, MicroPython и CircuitPython подходят для старта; выбор зависит от проекта и привычного рабочего процесса.
  • Для I2C удобно начать с GP4 (SDA) и GP5 (SCL), для аналоговых входов — GP26–GP29.

Проверь себя

  1. Можно ли считать RP2040-Zero мини-компьютером с Linux, как Raspberry Pi Zero?
  2. Почему датчик, работающий от 5 В, нельзя автоматически подключать к GPIO RP2040-Zero?
  3. Что произойдёт с файлом UF2 после копирования на диск RPI-RP2?
Показать ответы
  1. Нет. RP2040-Zero — микроконтроллерная плата. Она запускает одну прошивку и не работает под Linux. Raspberry Pi Zero — одноплатный компьютер с процессором, оперативной памятью, операционной системой и файловой системой.
  2. GPIO RP2040 работают с уровнями 0…3,3 В и не рассчитаны на 5 В. Даже если датчик питается от 5 В, его сигнальные линии должны быть 3,3-вольтовыми либо идти через согласователь уровней/делитель, если это допустимо для данного интерфейса.
  3. Загрузчик записывает данные из UF2 во Flash и перезагружает плату. Поэтому диск RPI-RP2 исчезает — это нормальное поведение. Чтобы снова войти в режим загрузчика, используйте BOOT + RESET.