Пошаговая инструкция для Raspberry Pi Pico/Pico W, Linux Mint и macOS.
В результате получится окружение, в котором можно:
- писать MicroPython-код в Zed;
- подключаться к интерактивной консоли платы;
- запускать текущий файл без сохранения во flash-память;
- загружать
main.pyна Pico; - автоматически запускать программу при включении платы.
Актуальность инструкции: 5 августа 2026 года.
1. Разбираемся в отличиях MicroPython от Pico SDK #
При использовании Pico SDK исходники C/C++ компилируются на компьютере в файл .uf2. MicroPython работает иначе:
- На Pico один раз устанавливается готовая прошивка-интерпретатор MicroPython.
- Программы
.pyпередаются во внутреннюю файловую систему платы. - Код можно выполнять интерактивно, без полной перекомпиляции прошивки.
Для обычной MicroPython-разработки не нужны:
- ARM GCC;
- CMake;
- Ninja;
- компиляция Pico SDK.
Они могут оставаться установленными для C/C++-проектов и не конфликтуют с MicroPython.
2. Скачиваем правильную прошивку #
Для обычного Raspberry Pi Pico:
Для Raspberry Pi Pico W:
Выбираем последний стабильный Release, а не Preview. На 5 августа 2026 года актуальным стабильным выпуском является MicroPython 1.28.0.
Для сторонней платы на RP2040 находим именно её сборку в каталоге загрузок MicroPython. Прошивка для обычного Pico не всегда учитывает распиновку и объём flash-памяти сторонней платы.
3. Устанавливаем MicroPython на Pico #
- Отключаем Pico от компьютера.
- Зажимаем кнопку
BOOTSEL. - Не отпуская кнопку, подключаем USB-кабель.
- Отпускаем
BOOTSEL. - Дожидаемся появления в системе накопителя
RPI-RP2. - Копируем на него скачанный файл MicroPython
.uf2. - Дожидаемся автоматического отключения накопителя и перезагрузки платы.
После перезагрузки Pico больше не отображается как накопитель. Вместо этого MicroPython создаёт USB-последовательный порт с интерактивной консолью REPL.
Если RPI-RP2 не появляется:
- проверяем, что USB-кабель поддерживает передачу данных;
- пробуем другой USB-порт;
- убеждаемся, что
BOOTSELбыла нажата до подключения кабеля.
Официальное описание процесса: MicroPython в документации Raspberry Pi.
4. Устанавливаем mpremote #
mpremote — официальный инструмент MicroPython для подключения к REPL, запуска файлов и работы с файловой системой платы.
Рекомендуется установить его как изолированный инструмент через uv:
uv tool install mpremote
Если mpremote уже установлен, обновляем его:
uv tool upgrade mpremote
Проверяем установку:
mpremote --version
mpremote connect list
Если команда uv отсутствует, сначала устанавливаем её:
macOS #
brew install uv
Linux Mint #
curl -LsSf https://astral.sh/uv/install.sh | sh
После установки uv закрываем и снова открываем терминал, затем выполняем:
uv tool install mpremote
Документация инструмента: MicroPython mpremote.
5. Настраиваем доступ к USB-порту в Linux Mint #
На macOS дополнительная настройка обычно не требуется.
На Linux сначала выполняем:
mpremote connect list
Если появляется ошибка Permission denied, добавляем пользователя в группу dialout:
sudo usermod -aG dialout "$USER"
После этого полностью выходим из пользовательского сеанса и входим снова. Простого перезапуска терминала может быть недостаточно.
Проверяем группы:
groups
В списке должна присутствовать dialout.
6. Проверяем REPL #
Подключаем Pico и выполняем:
mpremote connect auto repl
Должно появиться приглашение MicroPython:
>>>
Смотрим информацию о прошивке:
import sys
print(sys.implementation)
Проверяем встроенный светодиод:
from machine import Pin
led = Pin("LED", Pin.OUT)
led.on()
led.off()
Полезные сочетания клавиш в REPL:
Ctrl+C— остановить выполняющуюся программу;Ctrl+D— выполнить мягкую перезагрузку MicroPython;Ctrl+]— выйти изmpremote.
7. Создаём проект #
mkdir -p "$HOME/Developer/rp2040-micropython/.zed"
cd "$HOME/Developer/rp2040-micropython"
zed .
Структура проекта:
rp2040-micropython/
├── .zed/
│ └── tasks.json
├── boot.py
└── main.py
Назначение файлов:
boot.pyвыполняется первым и используется для начальной настройки устройства;main.pyзапускается автоматически послеboot.pyпри включении или перезагрузке Pico.
Для небольшого проекта boot.py можно оставить практически пустым.
boot.py #
# Начальная настройка устройства.
main.py #
from machine import Pin
from time import sleep_ms
led = Pin("LED", Pin.OUT)
while True:
led.toggle()
sleep_ms(500)
8. Настраиваем Zed #
Создаём .zed/tasks.json:
[
{
"label": "MicroPython: devices",
"command": "mpremote",
"args": ["connect", "list"],
"cwd": "$ZED_WORKTREE_ROOT",
"reveal": "always"
},
{
"label": "MicroPython: REPL",
"command": "mpremote",
"args": ["connect", "auto", "repl"],
"cwd": "$ZED_WORKTREE_ROOT",
"reveal": "always"
},
{
"label": "MicroPython: run current file",
"command": "mpremote",
"args": ["connect", "auto", "run", "$ZED_FILE"],
"cwd": "$ZED_WORKTREE_ROOT",
"reveal": "always"
},
{
"label": "MicroPython: upload project",
"command": "mpremote",
"args": [
"connect", "auto",
"fs", "cp", "boot.py", "main.py", ":",
"+", "reset"
],
"cwd": "$ZED_WORKTREE_ROOT",
"reveal": "always"
},
{
"label": "MicroPython: list files",
"command": "mpremote",
"args": ["connect", "auto", "fs", "ls"],
"cwd": "$ZED_WORKTREE_ROOT",
"reveal": "always"
}
]
Открываем список задач:
- macOS:
Cmd+Shift+R; - Linux:
Ctrl+Shift+R.
9. Выстраиваем рабочий цикл разработки #
Временно выполняем текущий файл #
Открываем нужный .py в Zed и запускаем:
MicroPython: run current file
Команда выполняет локальный файл на плате, но не сохраняет его как постоянную программу. Это удобно для быстрых экспериментов.
Выполняем эквивалентную команду в терминале:
mpremote connect auto run main.py
Сохраняем проект на плате #
Запускаем:
MicroPython: upload project
После копирования файлов плата перезагрузится и автоматически выполнит main.py.
Выполняем эквивалентную команду в терминале:
mpremote connect auto fs cp boot.py main.py : + reset
Просматриваем файлы на плате #
mpremote connect auto fs ls
Читаем сохранённый main.py:
mpremote connect auto fs cat main.py
Копируем его обратно на компьютер:
mpremote connect auto fs cp :main.py main-from-pico.py
10. Подключаемся к конкретной плате #
Если подключено несколько MicroPython-устройств, connect auto может выбрать не то.
Смотрим список:
mpremote connect list
Пример подключения на Linux:
mpremote connect /dev/ttyACM0 repl
Пример подключения на macOS:
mpremote connect /dev/cu.usbmodem1101 repl
Имена портов могут отличаться. Используем значение, показанное командой mpremote connect list.
11. Устанавливаем библиотеки #
MicroPython использует собственные пакеты, рассчитанные на микроконтроллеры. Обычные пакеты CPython из PyPI могут не работать из-за различий API и ограниченной памяти.
Устанавливаем пакет из micropython-lib:
mpremote connect auto mip install ИМЯ_ПАКЕТА
Пример для Pico W:
mpremote connect auto mip install requests
Копируем локальную папку lib на плату:
mpremote connect auto fs cp -r lib :
Обычно сторонние модули размещаются в /lib на файловой системе Pico.
12. Восстанавливаем работу при зависании main.py #
Если программа содержит бесконечный цикл, это нормально. Для остановки:
mpremote connect auto repl
Затем нажимаем Ctrl+C.
Если подключиться не удаётся:
- Отключаем Pico.
- Зажимаем
BOOTSEL. - Подключаем USB.
- Снова устанавливаем MicroPython
.uf2.
Загрузчик BOOTSEL находится в ROM микроконтроллера, поэтому обычной программой его невозможно стереть.
13. Разбираемся с MicroPython и USB HID #
Актуальный MicroPython для RP2040 предоставляет низкоуровневый API machine.USBDevice, позволяющий создавать собственные USB-функции, включая HID.
Документация:
14. Проверяем готовое окружение #
Окружение готово, если выполняются все пункты:
- на Pico установлена правильная MicroPython-прошивка;
mpremote --versionработает;mpremote connect listпоказывает плату;mpremote connect auto replоткрывает>>>;- текущий файл запускается задачей Zed;
boot.pyиmain.pyкопируются на плату;- после отключения и повторного подключения Pico автоматически выполняет
main.py.

Добавить комментарий