Основы · 5 мин чтения

Что такое Raspberry Pi Pico? Установка MicroPython, распиновка и первые проекты

Что такое Raspberry Pi Pico и чем она отличается от Raspberry Pi и Arduino? Возможности RP2040, Pico W и Pico 2, распиновка, установка MicroPython через Thonny и первый код со светодиодом, кнопкой, PWM и АЦП.

Raspberry Pi Pico — очень дешёвая плата-микроконтроллер размером с ладонь на основе RP2040 — микросхемы, которую разработал сам фонд Raspberry Pi. Её главная особенность — программирование на MicroPython, то есть на Python: пишешь код, запускаешь и сразу видишь результат, без ожидания компиляции. Поэтому она отлично подходит ученикам, изучающим Python, и новичкам в электронике. При желании её можно программировать и на C/C++ или в Arduino IDE.

Плата-микроконтроллер Raspberry Pi Pico
Raspberry Pi Pico: квадратная микросхема посередине — RP2040; с одного края разъём micro USB и кнопка BOOTSEL, по 20 пинов вдоль каждой стороны.

Что такое Raspberry Pi Pico? Чем она отличается от Raspberry Pi

Несмотря на похожее название, Pico — не компьютер, как Raspberry Pi 4 или 5. У неё нет операционной системы, выхода HDMI и рабочего стола; как и Arduino, это плата-микроконтроллер, которая выполняет одну программу. Программа запускается сразу после подачи питания, потребление очень маленькое, а такие задачи, как чтение датчиков, управление светодиодами и моторами, выполняются в реальном времени.

ПараметрRaspberry Pi PicoArduino Uno R3Raspberry Pi 4 / 5
ТипПлата-микроконтроллерПлата-микроконтроллерОдноплатный компьютер
Операционная системаНетНетLinux
Язык программированияMicroPython, C/C++, ArduinoC/C++ (Arduino)Python и почти любой язык
Время запускаМгновенноМгновенно20–30 секунд
ПотреблениеОколо 25 mAОколо 45 mAНесколько ватт
Типичное применениеДатчики, светодиоды, моторы, отсчёт времениДатчики, светодиоды, моторыКамеры, серверы, настольный компьютер

Характеристики: Pico, Pico W и Pico 2

ПараметрPicoPico WPico 2
МикросхемаRP2040, два ядра Cortex-M0+, 133 MHzRP2040, два ядра Cortex-M0+, 133 MHzRP2350, два ядра Cortex-M33, 150 MHz
ОЗУ264 КБ264 КБ520 КБ
Flash-память2 МБ2 МБ4 МБ
Беспроводная связьНетWi-Fi (2,4 GHz) + BluetoothНет (есть у Pico 2 W)
Доступные GPIO262626
Аналоговые входы (АЦП)3 канала, 12 бит3 канала, 12 бит3 канала, 12 бит
Рабочее напряжение3,3 V3,3 V3,3 V

Распиновка Pico

Всего у Pico 40 пинов по двум краям. Каждый из 26 пинов GPIO от GP0 до GP28 умеет выдавать PWM, а I2C, SPI и UART можно использовать на нескольких альтернативных пинах. Аналоговый вход есть только на GP26, GP27 и GP28. Полную карту пинов платы можно посмотреть в утилите Распиновка; важные пины питания и специальные пины такие:

ПинНазначение
VBUS5 V от USB
VSYSВход внешнего питания (1,8–5,5 V)
3V3(OUT)Выход 3,3 V для датчиков (примерно до 300 mA)
GNDЗемля (на плате их 8)
GP0–GP22Цифровой вход/выход, PWM, I2C, SPI, UART
GP26–GP28Ещё и аналоговый вход (ADC0–ADC2)
RUNСбрасывает плату при соединении с GND
Пины Pico работают на 3,3 V и не выдерживают 5 V. Не подключай напрямую датчики с выходом 5 V; поставь между ними делитель напряжения. По умолчанию каждый пин отдаёт 4 mA, максимум 12 mA; для светодиода хватит резистора 220–330 Ω, но нагрузки вроде моторов и реле всегда подключай через транзистор.

Установка MicroPython (через Thonny)

  1. Скачай и установи Thonny с сайта thonny.org.
  2. Удерживая кнопку BOOTSEL на Pico, подключи USB-кабель к компьютеру; Pico появится как диск с именем RPI-RP2 (у Pico 2 — RP2350).
  3. В меню интерпретатора в правом нижнем углу Thonny выбери MicroPython (Raspberry Pi Pico), затем через пункт «Install or update MicroPython» установи нужную версию для своей платы (Pico, Pico W или Pico 2). Файл .uf2 можно также скачать с micropython.org и перетащить на диск.
  4. Когда установка закончится, Pico перезапустится. Если в нижней панели Shell в Thonny видно приглашение >>>, всё готово.
  5. Если сохранить код на Pico под именем main.py, он будет запускаться автоматически при каждом включении платы, даже без подключения к компьютеру.

Первая программа: мигаем встроенным светодиодом

MicroPython
1from machine import Pin
2import time
3
4led = Pin(25, Pin.OUT)      # Pico'da dahili LED; Pico W ve Pico 2 W'de Pin("LED") yaz
5                            # onboard LED on Pico; use Pin("LED") on Pico W / Pico 2 W
6
7while True:
8    led.toggle()            # durumu tersine çevir / flip the state
9    time.sleep(0.5)

Управление светодиодом кнопкой

Подключи светодиод к GP15 через резистор 220 Ω, а кнопку — к GP14. Другая ножка кнопки идёт на GND, и включается внутренняя подтяжка (pull-up) Pico, поэтому отпущенная кнопка читается как 1, а нажатая — как 0:

MicroPython
1from machine import Pin
2
3led = Pin(15, Pin.OUT)
4button = Pin(14, Pin.IN, Pin.PULL_UP)   # butonun diğer ucu GND'de / other leg to GND
5
6while True:
7    led.value(not button.value())        # basılıyken yanar / on while pressed
У микросхемы RP2350 на Pico 2 есть известная проблема (E9) с внутренними подтягивающими к земле резисторами (pull-down): пин иногда может «залипать» в HIGH. Подключать кнопку к GND и использовать PULL_UP — самый надёжный подход и на Pico, и на Pico 2. Подробнее о подключении кнопки читай в статье Как подключить кнопку к Arduino; логика та же.

Яркость светодиода через PWM

Каждый пин GPIO на Pico умеет выдавать PWM. В MicroPython значение заполнения лежит в диапазоне от 0 до 65535. Код ниже медленно разжигает светодиод и начинает заново; идея PWM подробно объяснена в статье Что такое PWM?

MicroPython
1from machine import Pin, PWM
2import time
3
4led = PWM(Pin(15), freq=1000)
5
6while True:
7    for d in range(0, 65536, 1024):   # yavaşça yan / fade in
8        led.duty_u16(d)
9        time.sleep_ms(10)

Аналоговое чтение и встроенный датчик температуры

Подключи средний вывод потенциометра к GP26, а крайние — к 3V3 и GND. read_u16() возвращает значение от 0 до 65535. Внутри Pico есть ещё и датчик температуры, подключённый к 4-му каналу АЦП; показания у него грубые, но это забавный способ измерить температуру без дополнительных деталей:

MicroPython
1from machine import ADC
2import time
3
4pot = ADC(26)                    # GP26 (ADC0) / potansiyometre orta ucu / pot wiper
5sensor = ADC(4)                  # dahili sıcaklık sensörü / internal temperature sensor
6
7while True:
8    value = pot.read_u16()                       # 0–65535
9    volts = sensor.read_u16() * 3.3 / 65535
10    temp = 27 - (volts - 0.706) / 0.001721       # °C (yaklaşık / approximate)
11    print(value, round(temp, 1))
12    time.sleep(1)

Программирование Pico в Arduino IDE

Если тебе ближе C++ и библиотеки Arduino, Pico можно использовать и с Arduino IDE. Добавь https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json в поле дополнительных ссылок для плат в «Файл › Настройки», затем установи пакет Raspberry Pi Pico/RP2040/RP2350 от Earle Philhower через «Менеджер плат». При первой загрузке удерживай кнопку BOOTSEL, подключая плату; дальше загрузка работает как обычно. Пример Blink с LED_BUILTIN и большинство библиотек Arduino работают без проблем.

Pico, ESP32 или Arduino?

Что нужноРекомендуемая плата
Первый проект, датчики на 5 V, больше всего примеров и материаловArduino Uno
Wi-Fi, Bluetooth, интернет, управление с телефонаESP32 или Pico W
Учиться программировать на PythonRaspberry Pi Pico
Очень низкая цена, точные тайминги (PIO)Raspberry Pi Pico
Проекты с камерой и звукомESP32-S3 или ESP32-CAM

Для проектов с беспроводной связью познакомься с ESP32 в статье Что такое ESP32? Сильная сторона, которая есть только у Pico, — блоки PIO (программируемый ввод-вывод): они берут на себя задачи, критичные к таймингам, например светодиодные ленты WS2812B или собственные протоколы связи, не нагружая процессор.

Идеи проектов на Raspberry Pi Pico

  • Светофор: светофор из трёх светодиодов, которые загораются по очереди.
  • Knight Rider: световой эффект, который бегает туда-обратно по шести светодиодам.
  • Кнопки и прерывания (IRQ): код, который ловит нажатие кнопки, не дожидаясь основного цикла.
  • Смена цветов RGB: эффект радуги на RGB-светодиоде тремя каналами PWM.
  • Веб-сервер на Pico W: управляй светодиодом или реле со страницы, открытой на телефоне.
  • Мини-термометр: показывай на OLED-дисплее показания встроенного датчика температуры.

Частые ошибки и как их исправить

  • Диск RPI-RP2 не появляется: плата подключена без удержания BOOTSEL, или кабель только для зарядки; используй кабель с передачей данных.
  • Thonny не находит плату: выбран не тот интерпретатор, или на плате не установлен MicroPython.
  • На Pico W не загорается светодиод: на Pico W встроенный светодиод подключён к беспроводной микросхеме; используй Pin("LED") вместо Pin(25).
  • Подключение сигналов 5 V: GPIO работают на 3,3 V; сигналы 5 V могут повредить пин.
  • Код не работает без компьютера: он не сохранён на Pico под именем main.py.
  • Слишком высокое напряжение на VSYS: VSYS принимает максимум 5,5 V; не подключай адаптер на 9 V или 12 V напрямую.

Благодаря низкой цене и поддержке Python Raspberry Pi Pico — один из самых простых способов соединить программирование и электронику. Основы светодиодов — в статье Что такое светодиод?; в приложении BlueGrays есть пошаговые проекты на Pico со схемами подключения и кодом на MicroPython: мигание светодиодами, светофор, Knight Rider, прерывания от кнопки, «дыхание» через PWM и смена цветов RGB.

Частые вопросы

Raspberry Pi Pico — это компьютер Raspberry Pi?

Нет. Pico — плата-микроконтроллер от фонда Raspberry Pi; у неё нет операционной системы, видеовыхода и рабочего стола. Как и Arduino, она выполняет одну программу. Raspberry Pi 4 и 5 — полноценные компьютеры на Linux.

На каком языке программируют Raspberry Pi Pico?

Чаще всего на MicroPython: его легко установить через Thonny, и любой, кто знает Python, может сразу начать. Можно также использовать официальный C/C++ SDK и Arduino IDE (с пакетом Earle Philhower). Поддерживается и CircuitPython.

Чем Pico отличается от Pico W?

В Pico W добавлена беспроводная микросхема, которая даёт Wi-Fi на 2,4 GHz и Bluetooth; всё остальное одинаково. Встроенный светодиод на Pico W подключён к этой микросхеме, поэтому в коде используют Pin("LED") вместо Pin(25).

Работает ли Raspberry Pi Pico от 5 V?

Плату можно питать от 5 V через USB или напряжением 1,8–5,5 V на пине VSYS. А вот пины GPIO работают на 3,3 V и не выдерживают 5 V, поэтому подавать на них сигналы 5 V напрямую нельзя.

Сколько аналоговых входов у Pico?

Пользователю доступны три аналоговых входа: GP26 (ADC0), GP27 (ADC1) и GP28 (ADC2). 4-й канал АЦП подключён к датчику температуры внутри микросхемы. В MicroPython read_u16() возвращает значение от 0 до 65535.

Можно ли программировать Raspberry Pi Pico в Arduino IDE?

Да. Если установить в Arduino IDE пакет плат Raspberry Pi Pico/RP2040/RP2350 от Earle Philhower, Pico можно программировать командами Arduino и пользоваться большинством библиотек Arduino. При первой загрузке нужно удерживать кнопку BOOTSEL, подключая плату.

Все проекты
Мигание встроенным светодиодом Raspberry Pi Pico (Pico и Pico W)
#147Новичок

Мигание встроенным светодиодом Raspberry Pi Pico (Pico и Pico W)

Первый проект серии Raspberry Pi Pico! Мигаем зелёным встроенным светодиодом, чтобы проверить, что плата работает, — классический первый опыт «Hello World». НИКАКИХ внешних компонентов, только Pico и USB-кабель. Код написан на MicroPython (официальном языке, поддерживаемом Raspberry Pi Foundation). Изучи в Thonny IDE класс machine.Pin, режим Pin.OUT, методы led.on()/off() и time.sleep(). Каждое переключение видно в выводе (REPL).

5.0(1)
10
Raspberry Pi Pico: управление внешним светодиодом (макетная плата)
#148Новичок

Raspberry Pi Pico: управление внешним светодиодом (макетная плата)

Следующий шаг после встроенного светодиода Pico: подключить внешний светодиод на макетной плате и управлять им через пин GP14. В этом проекте ты узнаешь, как использовать любой пин GPIO общего назначения у Pico как выход, какая полярность у светодиода (длинная ножка = анод/+, короткая = катод/–) и зачем нужен токоограничивающий резистор (220Ω). Без резистора через светодиод пойдёт слишком большой ток, и он может сгореть. Схема очень простая: Pico GP14 → резистор 220Ω → светодиод → GND.

4.5(2)
7
Симулятор светофора на Pico (3 светодиода по очереди)
#150Новичок

Симулятор светофора на Pico (3 светодиода по очереди)

Настоящий светофор на красном, жёлтом и зелёном светодиодах — первый проект серии Pico с 3 светодиодами! Зелёный 4 с «едем», жёлтый 1,5 с «внимание», красный 3 с «стоп» и красный + жёлтый 1 с «приготовиться» (европейская схема светофора). Изучи объявление функций (def all_off()), логику конечного автомата (последовательность) и синхронизацию нескольких GPIO. Простая схема: 3 светодиода на GP11 (зелёный), GP12 (жёлтый), GP13 (красный), у каждого токоограничивающий резистор 220Ω.

4.0(1)
12
Бегущие огни на Pico (6 светодиодов)
#153Новичок

Бегущие огни на Pico (6 светодиодов)

Классическая анимация «бегущие огни» на Pico — версия на 6 светодиодов! 6 светодиодов загораются по очереди слева направо — будто свет идёт по ряду. Изучи список Python, генератор списка ([Pin(p, Pin.OUT) for p in LED_PINS]), цикл for с управлением пинами и enumerate(). 6 светодиодов на GP9–GP14, у каждого токоограничивающий резистор 220Ω. Очень чистый код: вместо объявления 6 светодиодов по одному используется список, и можно добавлять светодиоды по числу свободных пинов GPIO.

0.0(0)
8
Светодиод с управлением кнопкой на Pico (удержание)
#155Новичок
Premium

Светодиод с управлением кнопкой на Pico (удержание)

Первый проект Pico с входом — чтение кнопки! Светодиод горит, пока кнопка нажата, и гаснет после отпускания. Это большой шаг после светодиодных анимаций: сигнал из внешнего мира в Pico. Изучи Pin.IN (режим входа), Pin.PULL_UP (встроенный подтягивающий резистор — стандарт для кнопок) и чтение button.value(). Светодиод на GP14, кнопка на GP2 (встроенный PULL_UP). Нажата = LOW (0), отпущена = HIGH (1) — обратная логика сначала путает, но это промышленный стандарт.

0.0(0)
11
Антидребезг кнопки на Pico: IRQ против программного опроса
#159Средний
Premium

Антидребезг кнопки на Pico: IRQ против программного опроса

Нажимаешь кнопку один раз, а код насчитывает 3–4? Это дребезг контактов — металлические контакты колеблются доли миллисекунды! Сравни в мониторе два способа подсчёта рядом: сырой опрос (ловит дребезг и считает лишнее) и IRQ + программный антидребезг (точно). Изучи физику дребезга, программный антидребезг (ticks_diff() > 50ms), регистрацию прерывания Pin.irq(), триггер IRQ_FALLING, обработчики ISR и безопасность global в ISR.

0.0(0)
12
Плавное затухание светодиода с PWM на Pico (эффект дыхания)
#160Новичок

Плавное затухание светодиода с PWM на Pico (эффект дыхания)

Светодиод больше не просто мигает — он дышит! С помощью PWM (широтно-импульсной модуляции) Raspberry Pi Pico яркость светодиода медленно растёт и медленно падает, как огонёк спящего MacBook. Изучи класс machine.PWM, duty_u16() (16-битная яркость 0–65535), частоту PWM (freq(1000) — 1000 циклов вкл/выкл в секунду, мерцания не видно), циклы range() с шагом (вверх и вниз) и почти аналоговый выход с цифрового пина.

0.0(0)
4
Смена цветов RGB-светодиода на Pico (3 канала PWM)
#161Новичок

Смена цветов RGB-светодиода на Pico (3 канала PWM)

Один светодиод — миллионы цветов! RGB-светодиод содержит 3 светодиода: красный, зелёный и синий. Если управлять каждым своим каналом PWM Pico, цвета смешиваются: красный + зелёный = жёлтый, зелёный + синий = голубой, все три = белый. Светодиод перебирает 8 цветов. Изучи несколько каналов PWM, объявление функций (def set_color(...)), смешивание RGB, перевод 8 бит → 16 бит (x257) и общий катод и общий анод.

0.0(0)
6