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

Платформа Raspberry Pi Pico поставляется в двух вариантах исполнения:
Программирование на MicroPython

Рассмотрим программирование Raspberry Pi Pico на языке MicroPython с помощью ПК на OS Windows.
Подключение и настройка
Примеры работы
Рассмотрим несколько примеров работы программирования Pico на MicroPython.
Маячок
Для начала мигнём встроенным светодиодом LED на 25 пине.
Что понадобится
Код для MicroPython
После запуска скрипта, светодиод начнёт мигать раз в секунду.
Гирлянда
Главная фишка Пико — возможность программируемого ввода-вывода через блоки PIO, на которых можно реализовать произвольный интерфейс. В следующем примере заставим Pico рулить светодиодами WS2812.
Что понадобится
Схема устройства

Код для MicroPython
Для работы примера скачайте и установите библиотеку MicroPython Neopixel Pi Pico.
После прошивки управляющей платформы, вы увидите заполнение по очереди каждого светодиода матрицы из красного, зелёного и синего цветов.
Вывод информации на дисплей
Что понадобится
Схема устройства

Код для MicroPython
Для работы примера скачайте и установите библиотеку MicroPython ST7032
После прошивки управляющей платформы, на дисплее отобразится приветствующий текст. 
Программирование на С++ через Arduino IDE

Рассмотрим программирование Raspberry Pi Pico на языке C++ в среде Arduino IDE с помощью ПК на OS Windows.
Подключение и настройка
В Arduino IDE выберите плату Raspberry Pi Pico: Инструменты Плата Arduino Mbed OS RP2040 Boards Raspberry Pi Pico 
В Arduino IDE выберите COM-порт: Инструменты Порт COMx , где x — номер текущего порта.
Примеры работы
Рассмотрим несколько примеров работы программирования Pico на C++ через Arduino IDE.
Маячок
Для начала мигнём встроенным светодиодом LED на 25 пине.
Код для Arduino
После прошивки скетча, светодиод начнёт мигать раз в секунду.
Гирлянда
Главная фишка Пико — возможность программируемого ввода-вывода через блоки PIO, на которых можно реализовать произвольный интерфейс. В следующем примере заставим Pico рулить светодиодами WS2812.
Что понадобится
Схема устройства

Код для Arduino
Для работы примера скачайте и установите библиотеку Adafruit NeoPixel.
После прошивки управляющей платформы, вы увидите заполнение по очереди каждого светодиода матрицы из красного, зелёного и синего цветов.
Вывод информации на дисплей
Что понадобится
Схема устройства

Код для Arduino
Для работы примера скачайте и установите библиотеку TroykaTextLCD.
После прошивки управляющей платформы, на дисплее отобразится приветствующий текст. 
Запись загрузчика
Режимы загрузки
Raspberry Pi Pico поддерживает два метода загрузки: штатный режим и режим загрузчика.
Штатный режим
Платформа загружается с внешней Flash-памяти, распаянной на плате Raspberry Pi Pico. В диспетчере устройств OS Windows плата отображается как виртуальный COM-порт с именем Устройство с последовательным интерфейсом USB . 
Активация режима происходит простым подключением плате по USB. 
Режим загрузчика
Платформа загружается с внутренней памяти микроконтроллера RP2040. В диспетчере устройств OS Windows плата отображается как съёмный накопитель с именем RPI-RP2 . Режим служит для загрузки прошивки в формате UF2 простым перемещением файла с одного носителя на другой. 
Активация режима происходит с помощью кнопки BOOTSEL:
Элементы платы

Микроконтроллер RP2040
Платформа Pi Pico выполнена на чипе собственной разработки RP2040 от компании Raspberry Pi Foundation. Кристалл содержит двухъядерный процессор на архитектуре ARM Cortex M0+ с тактовой частотой до 133 МГц. На RP2040 также расположились часы реального времени, датчик температуры и оперативная память на 264 КБ.
Внешняя Flash-память
Внешняя Flash-память распаяна на отдельном чипе W25Q16JVUXIQ объёмом 2 МБ.
Порт micro-USB
Разъём USB Micro предназначен для прошивки и питания платформы Raspberry Pi Pico. Для подключения к ПК понадобится кабель USB (A — Micro USB).
Светодиодная индикация
Пользовательский светодиод на 25 пине микроконтроллера. При задании значения высокого уровня светодиод включается, при низком – выключается.
Преобразователь напряжения
На плате расположен универсальный преобразователь питания SMPS (Switch Mode Power Supply) на чипе RT6150-33GQW, который обеспечивает питание микроконтроллера RP2040 и другой логики платы.
Диапазон входного напряжения — от 1,8 до 5,5 вольт: при низком входном напряжении регулятор поднимет питание до 3,3 вольт, а при высоком — понизит до 3,3 вольт. Максимальный выходной ток 800 мА. Выходное напряжение с регулятора можно снять с пина 3V3(OUT) .
Кнопка BOOTSEL
На плате Pi Pico расположена кнопка, которая служит для перевода платформы в режим загрузчика.
Распиновка
В описании контактов будем использовать нумерацию GPx, где x — номер контакта.
First of all, what’s a microcontroller?
![]()
A Microcontroller is a small computer system on a single chip. They contain just enough memory, power, and I/O required to perform small tasks. There are different microcontroller architectures and vendors, a few notable ones include — ARM’s Cortex-M, Microchip’s AVR and PIC, NXP’s LPC, STM’s STMx, and Intel’s 8051.
Raspberry Pi’s RP2040
RP2040 is a microcontroller chip developed by the Raspberry Pi foundation. It actually runs not one but two 32 bit ARM Cortex-M0+ cores clocked at 133MHz. It adds a generous amount of SRAM and 8 × Programmable I/O (PIO) state machines for custom peripheral support that will likely mean that you never have to bit-bang again. (Covered later in this article).
Raspberry Pi Pico
A microcontroller is just an IC chip and is only useful to us in the form of a development board and the Pi foundation delivers with the Pico that houses the RP2040 microcontroller.
The Pico board also adds a whopping 2MB of flash memory, a temperature sensor, USB connectivity that allows both device and host support, and great power management.
If you’d like to buy one or know more, check it out here.
An excellent article by hackaday mentioned great hardware conveniences such as the existence of 30 GPIOs being in one register so we don't need to have Ports and Pins. All the registers are 32 bit with a memory map that lets you set, clear, or XOR any bit. It stores memory on an external flash but runs code directly from the flash as if it were on internal memory.
When you plug the Pico in holding down the BOOTSEL button, it shows up as a USB mass storage device due to the UF2 bootloader, and you can just copy your code across, with no programmer. If you copy the Pico’s MicroPython binary across, however, you’ll never need the bootloader again. The mask ROM also contains some fast routines that support integer and floating-point math, and all of the contents are open source as mentioned above.
The PIO
The Programmable I/O is the real star of the show. Generally on most microcontrollers, working with peripherals requires “bit-banging” which requires one of the processing cores to turn the pins on and off directly. This approach works for the most part but can fall apart during high-speed IO or while using interrupts as if can take a lot of processing resources.
The Pico has Programmable I/O along with the two main Cortex cores. There are two PIO blocks that each have 4 state machines. Each state machine has 2 FIFO(First In First Out) structures, for data coming in and out respectively.
When you need to send data via a PIO state machine, you push it to the FIFO, and when your state machine is ready for the next chunk of data, it pulls it. This way, your PIO state machine and program running on the main core don’t have to be perfectly in-sync.
PIO is a really fancy hardware block that lets you make your own digital communication peripheral on the fly due to its very fast IO capability.
If you want to program another UART, for instance, it’s trivial. But so is Manchester-encoded UART, or a grey code encoder/decoder, or even fancier tricks. One of the example applications is a DPI video example, with one state machine handling the scanline timing and pixel clock, while another pushes out the pixel data and run-length encodes it.
These are the sort of simple-but-fast duties that can bog down a CPU, leading to timing glitches, so dedicated hardware is the right solution.
Getting Started (The Tutorial):
I got my Raspberry Pi Pico extremely quickly as I pre-ordered one on the day of release. Your mileage may vary according to the supply/demand. My particular Pico came without the Berg pins so I had to buy and solder them myself. I also had a Micro-USB cable lying around which I used to program the Pico.
Development Env
I’m using the Pico off a Ubuntu machine atm. You can pretty much use any device with the best option being a Raspberry Pi. You can easily setup/program/debug on the Pi and all of it is set up by a convenience script pico_setup.sh which can be accessed by following the guide given on the Pico website. Similarly, you can set up environments on Windows and macOS as well.
Blink
First, make a directory for the pico workspace and clone both the pico_examples and the pico_sdk in this folder. The Pico SDK provides the headers, libraries, and build system necessary to write programs for RP2040-based devices such as Raspberry Pi Pico in C, C++, or Arm assembly language.
Note: If you’re using ROS or generally using an older version of Ubuntu (18.04 in my case), you’ve to install cmake from source and use that version. (If any of you face that issue, please comment so that I could help out)
We’re setting the CMake generator path as PICO_SDK_PATH for setting the necessary build files for pico. To build and run the blink example:
This exports a blink.hex, blink.elf and blink.uf2. We’re interested in the blink.uf2 file, which we then just drag and drop into the Pico acting as a mass storage device. The Pico acts as a mass storage device when plugged in while pressing the BOOTSEL button.
Creating your own project and using VSCode
Ideally, for a project, you’re going to need a decent code editor, and what better editor to use than the universally supported Microsoft VSCode. Eclipse and a few other IDEs are supported too, check out their docs on how to set it up!
First of all, you’re gonna download VSCode. Then run these three commands in a terminal window or install the extensions manually on the market.
Then in the pico workspace, create a new directory, for example, test.
Now, this opens up a VSCode Workspace. Make a new file test.c
Make another file called CMakeLists.txt
Finally, we need to copy a file
When we enable the CMakeTools extension, it asks us if we want to configure the project. If it hasn’t then restart the editor.
You’ll then be prompted to select a compiler. Select arm-none-eabi.
That’s it! If you wanna build then click the cogwheel that says build at the bottom of the screen and you’ll find the test.uf2 file that you drag and drop into the microcontroller.
A Simpler Process
You needn’t set up the whole folder manually. The folks over at the Pi foundation have made a code generator written in python that autogenerates the folder + boilerplate code for you.
You can add specific features to your project by selecting them from the checkboxes on the GUI. This will ensure the build system adds the appropriate code to the build, and also adds simple example code to the project showing how to use the feature.
Conclusion
The Raspberry Pi Pico is an excellent microcontroller that undercuts most on the market while delivering unique features. There’s also a lot of thought that’s gone into designing this board and its build system. Not to mention the exhaustive documentation that goes along with it.
I myself am planning to use the Pico in projects immediately, using the PIO with encoders from differential drive motors would be an interesting project as I’m already using the Raspberry Pi as a ROS node. The motor encoders usually use hardware interrupts due to their high tick rate so the PIO might be a good alternative.
I’ll probably make more blogs with the stuff I make with the Pico! Follow if y’all are interested!
What do you guys think about the Pi Pico? Lemme know via the replies or on Twitter!
Начало работы с Raspberry Pico

Raspberry Pi Pico — это недорогая и производительная плата с гибкими цифровыми интерфейсами. Она построена на основе RP2040 — флагманского микроконтроллера, разработанного Raspberry Pi Foundation в Великобритании. Это первое устройство, использующее RP2040, которое отличается от всех предыдущих моделей Raspberry Pi. В этой статье мы расскажем, как начать работу с этой платой и какие возможности она предоставляет.
Что такое Raspberry pi Pico?
Raspberry Pi Pico — это маленькая, быстрая и универсальная плата, которая может использоваться для самых разных приложений и проектов. Она имеет следующие характеристики:
- Двухъядерный процессор Arm Cortex M0+ с гибкой частотой до 133 МГц
- 264 КБ встроенной SRAM и 2 МБ флеш-памяти на борту
- Низкопотребляющие режимы сна и покоя
- Программирование с помощью сохранения файла через USB
- 26 мультифункциональных GPIO-пинов, включая 3 аналоговых входа
- 2 UART, 2 SPI, 2 I2C, 16 каналов управляемого PWM
- Датчик температуры
- 8 программируемых I/O (PIO) для поддержки пользовательских периферийных устройств

Raspberry Pi Pico поставляется в виде модуля с зубчатыми контактами, которые позволяют паять его непосредственно к платам-расширения.
Среди линейки RPI PICO есть несколько вариантов:
- Raspberry pi Pico H — та же плата, что и Pico, но с предварительно припаянными контактами для подключения к макетной плате или другим устройствам.
- Raspberry pi Pico W — новая плата, которая добавляет на борт беспроводной интерфейс Wi-Fi 2.4 ГГц с помощью чипа Infineon CYW43439. Это позволяет подключать Pico к интернету или создавать локальные сети с другими устройствами. Плата имеет встроенную антенну и поддерживает стандарты 802.11n и WPA3.
Как начать работу с Pico?
Для начала работы нужно выбрать язык программирования. Raspberry Pi Pico поддерживает два языка: C и MicroPython. C — низкоуровневый язык, который дает вам полный контроль над аппаратными ресурсами и производительностью. MicroPython — высокоуровневый язык, который облегчает написание кода и имеет множество библиотек.
Так-же еще есть CircuitPython. Это фреймворк основанный на Python, который специально адаптирован для работы с микроконтроллерами, такими как Raspberry pi Pico. CircuitPython имеет множество встроенных и сторонних библиотек и модулей, которые упрощают работу с аппаратурой, а так-же имеет собственную файловую систему которая открывается как новый диск в операционный системе.
В этой статье мы будем использовать MicroPython, так как он более простой и удобный для начала. Для того, чтобы запустить MicroPython на Raspberry Pi Pico, нужно выполнить следующие шаги:
- Скачайте последнюю версию прошивки MicroPython для Raspberry pi Pico с официального сайта. Это файл с расширением .uf2, который содержит все необходимое для запуска MicroPython.
- Подключите Raspberry Pi Pico к компьютеру с помощью USB-кабеля.
- Нажмите и удерживайте кнопку BOOTSEL на плате, пока не появится новый диск с названием RPI-RP2. Это специальный режим загрузки, который позволяет обновлять прошивку платы.
- Перетащите файл .uf2, который вы скачали, на диск RPI-RP2. После этого диск исчезнет, а плата перезагрузится с новой прошивкой.
- Теперь вы можете подключиться к Raspberry pi Pico с помощью программы терминала, например PuTTY или Thonny.
Как настроить связь между Pico и Thonny IDE?
Thonny — это простая и удобная среда разработки для Python и MicroPython, которая имеет встроенную поддержку Raspberry pi Pico. С помощью Thonny вы можете писать, запускать и отлаживать код, а также просматривать и редактировать файлы.
Для того, чтобы установить связь между Raspberry pi Pico и Thonny, вам нужно выполнить следующие шаги:
- Убедитесь, что вы установили MicroPython, как описано в предыдущем разделе.
- Скачайте и установите Thonny для вашей операционной системы с официального сайта. Если вы работаете на Raspberry Pi 3 или 4, то Thonny уже должен быть установлен.
- Подключите Raspberry pi Pico к компьютеру.Запустите Thonny и перейдите в меню Инструменты > Параметры. В открывшемся окне выберите вкладку Интерпретатор и в выпадающем списке выберите MicroPython (Raspberry Pi Pico). Выберите порт с вашей платой, она будет называться Board CDC или же CircutPython, в зависимости от прошивки платы.

В нижней части окна вы должны увидеть оболочку Python (также называемую REPL — Read-Eval-Print Loop), которая показывает, что Pico подключен и работает. Вы можете вводить команды MicroPython в оболочке и видеть результаты их выполнения.

Теперь вы можете создавать, редактировать и запускать скрипты для Pico в Thonny. Для этого перейдите в меню Файл > Новый или нажмите Ctrl+N, чтобы создать новый файл. Для примера возьмем код мигания светодиодом:
Введите код в редакторе и сохраните файл на диске RPI-RP2, нажав CTRL+S. Для запуска скрипта нажмите F5.

После запуска кода вы должны увидеть, как мигает светодиод на плате.
Также можно просматривать и редактировать файлы, которые уже находятся на диске RPI-RP2. Для этого перейдите в меню Файл > Открыть или нажмите Ctrl+O, чтобы открыть файловый менеджер. Выберите диск Raspberry Pi Pico дважды щелкните по файлу, который хотите открыть. Вы можете изменить файл и сохранить его.
Заключение
Raspberry pi Pico — отличная плата для начала знакомства с миром микроконтроллеров. Она имеет множество возможностей и преимуществ, таких как:
- Низкая цена (около 7 долларов за плату)
- Высокая производительность и энергоэффективность
- Простота программирования и отладки
- Богатый выбор интерфейсов и периферии
- Совместимость с различными языками и средами разработки
Если вы хотите узнать больше о Raspberry pi Pico и RP2040, вы можете посетить официальный сайт. Там вы найдете подробную информацию о характеристиках, подключении, программировании и примерах проектов с Raspberry pi Pico.
Спасибо за внимание и удачи в ваших проектах! Надеемся, что эта статья помогла вам познакомиться с Raspberry Pi Pico и замотивировала вас на дальнейшее изучение этой платы.
Raspberry Pi Pico на МК RP2040: начало и первые шаги. Что есть поесть за $4
Raspberry Pi Foundation всегда знает чем порадовать или удивить нас, а так же как подталкивать других производителей на интересные шаги и решения для хорошей конкуренции.
В четверг (рыбный день, кстати) 21-ого января 2021 года был анонсирован выпуск нового микроконтроллера RP2040 и небольшой платы с его применением, которая получила название Raspberry Pi Pico.

Честно говоря, я прочитал эту новость и не планировал ничего делать по этому поводу. Но потом случайно заметил несколько особенностей этого микроконтроллера, что разбудило любопытство во мне и подтолкнуло к покупке пары плат для дальнейших экспериментов. Очень привлекло наличие PIO блоков и множество PWM. Справедливости ради, PWM можно как-то решить, а вот с PIO есть смысл поиграться.
После пары дней занимательной возни я решил поделиться своим небольшим опытом с Хабром и его гостями.
К сожалению, с PIO я недостаточно освоился и поэтому возможности PIO выходят за рамки этой статьи. Но если будет очень интересно сообществу, то возможно продолжение после того, как будет чем поделиться.
Введение
Raspberry Pi Pico является платой с микроконтроллером RP2040.
Надо помнить, что это не компьютер, на котором запущена взрослая ОС типа Linux, а именно микроконтроллер и поэтому цели применения у Pico отличаются от той же Raspberry Pi Zero и других старших продуктов семейства Raspberry Pi.
Приведу часть технических характеристик:
- Два ядра Arm Cortex-M0+ @ 133 МГц
- 264 КБ памяти (284 КБ если отключить XIP кеширование и использовать память USB)
- 2 МБ флеш-память с XIP кешированием. В RP2040 нет встроенной флеш-памяти, поэтому чип распаян на плате. У RP2040 есть поддержка до 16 МБ внешней флеш-памяти
- DMA контроллер
- 4 x 12-разрядных аналоговых входа (на Pico доступно для пользователя 3 из них)
- 2 × UART
- 2 × SPI
- 2 × I 2 C
- 16 × PWM каналов
- Встроенный сенсор температуры
- Всего 30 GPIO пинов (3,3 вольта)
- MicroUSB B порт с USB 1.1 контроллером и поддержкой хоста
- 2 × PIO блока для своих собственных интерфейсов
- 2 x PLL (один для USB, второй для остального)
- Поддержка UF2 для загрузки бинарников
- Поддержка SWD для загрузки и отладки
- Поддержка спящих режимов и пониженной частоты для снижения потребления
RP: Raspberry Pi
2: два ядра
0: ядра M0+
4: минимум 256 КБ памяти
0: нет встроенной флеш-памяти
PIO блоки дают возможность создавать свои интерфейсы. Например, можно запрограммировать интерфейс WS2812, добавить I 2 S, SDIO или VGA и т.п.
Ещё одна интересная штука: ядро Cortex-M0+ не содержит в себе блока вычислений с плавающей запятой. Обычно это эмулируется библиотеками GCC, но тут Raspberry Pi использует более быстрое оптимизированное решение от автора Qfplib, которое лицензировано для использования на RP2040.
Плата
Немного о самой плате Raspberry Pi Pico.
Плата имеет удобный размер 21мм x 51мм. Есть даже отверстия для монтирования, чем может похвастаться не каждая похожая плата.
Можно припаять пины для использования с макеткой или запаять весь модуль поверхностным монтажом на другую плату.

На Pico стоит понижающий преобразователь на 3,3 Вольта. И это не просто линейный преобразователь, которые часто встречаются на недорогих аналогичных платах, а buck-boost SMPS на Richtek RT6150B. Благодаря этому входное питание платы может быть в пределах 1,8 — 5,5 Вольт.
Флеш-память W25Q16JV, хоть, и стоит внешняя, но перепаивать её будет не такой уж и тривиальной задачей, так как чип в корпусе USON-8 (мне лично точно не под силу).
Есть кнопка BOOTSEL и светодиод на GPIO25. Так же выведен SWD для отладки.
Кстати, можно использовать вторую плату Pico как отладчик по SWD.
Входы-выходы
На Raspberry Pi Pico выведено почти все входные-выходные пины (26 из 30). Официальная распиновка платы:

Некоторые пины задействованы для внутреннего применения:
GPIO23: выход для контроля энергосбережения SMPS. Можно регулировать пульсации за счёт изменения КПД преобразователя
GPIO24: вход для VBUS sense (1 если VBUS по MicroUSB подключен)
GPIO25: выход на светодиод, расположенный на плате
GPIO29: аналоговый вход для измерения VSYS/3
Сам USB порт дополнительно выведен на точки TP1, TP2 и TP3 внизу платы.

Разработка
На данный момент официально предлагаются следующие варианты для разработки под RP2040:
- C/C++ с использованием предлагаемого Pico SDK
- CircuitPython для Pico
- MicroPython для Pico
Попробую вкратце пройтись по каждому из этих подходов.
Постараюсь не особо заострять внимание на установку и конфигурацию для каждого способа, так как каждый из них потянет на отдельную статью. Вместо этого расскажу некоторые особенности и приведу примеры кода для них.
RP2040 имеет встроенный загрузчик, который поддерживает UF2 (разработка Microsoft) для загрузки бинарников. Это представляет из себя внешний USB накопитель, на который можно просто скопировать бинарник.
Когда я купил плату в магазине, то во флеш-памяти ничего не было и UF2 активировался автоматически при подключении по USB. Когда программа записана на флеш-памяти, то UF2 режим можно активировать удерживанием кнопки BOOTSEL при подачи питания по USB. Появится накопитель «RPI-RP2», который можно использовать для копирования бинарных файлов uf2.
Для отладки можно использовать SWD. Если нет подходящего отладчика, то можно использовать ещё одну плату Pico с прошитым отладчиком.
Как более простой вариант Pico может выводить данные стандартного вывода на UART или прикидываться USB CDC и выводить в обычный терминал типа PuTTY, minicom или аналогичный с параметрами по-умолчанию 115200 8n1.
C/C++ с Pico SDK
Пожалуй, этот подход получит максимальное использования «железа» на данный момент.
Raspberry Pi опубликовали неплохую документация на данную тему, с которой можно ознакомиться тут.
В своё время для ESP8266 мне пришлось пройти достаточно длинный квест для установки и настройки SDK. Но первоначальная установка окружения для RP2040 мне показалась намного более простой и удобной.
В оригинальном документе достаточно подробно описаны шаги для установки SDK на Linux, macOS и Windows.
Вариант с разработкой на Raspberry Pi 4B или 400 с Linux будет самым простым, так как есть скрипты, которые сделают первоначальную конфигурацию (даже установку Visual Studio Code):
У меня все Raspberry Pi 4 оказались в каких-то своих тёмных делах, да и как-то привычнее разрабатывать на более удобных компах. По этой причине был выбран путь установки окружения вручную. Тем более, это оказалось не таким уж и сложным.
Весь процесс начальной подготовки сводится к следующим шагам (в данном случае шаги выполнялись на macOS и Linux):
Пример кода для мигания светодиодом с использованием Pico SDK:
Можно попробовать собрать эту мигалку из примеров:
Если всё прошло без ошибок, то в результате мы получим файлы, среди которых будет blink.uf2. Этот файл можно скопировать на Pico в режиме UF2 (надо удерживать кнопку BOOTSEL во время подачи питания по USB).
После копирования Pico автоматически перезагрузится и можно наслаждаться «hello world» на микроконтроллере.
В «pico-examples» есть достаточно много интересных примеров. В том числе и примеры с использованием PIO. Выглядит очень интересно. Возможно, расскажу об этом потом, но надо самому разобраться для начала.
Для создания начального шаблона для своего проекта есть инструмент от Raspberry Pi.
Он создаёт шаблоны под Pico SDK, Visual Studio и добавляет поддержку разных библиотек на разную периферию.
CircuitPython
Я много слышал про MicroPython и CircuitPython, но никогда не сталкивался. А тут появилась хорошая возможность пощупать.
CircuitPython является форком MicroPython, но со своими плюшками. Пожалуй, самая заметная плюшка в том, что CircuitPython создаёт USB флешку со своей файловой системой, где можно напрямую редактировать скрипты на Python’е в своём любимом IDE. При любой записи изменённого скрипта происходит автоматический перезапуск платы и выполнение кода.
В терминале можно видеть результат или запустить интерактивный режим для выполнения команд в нём, что тоже помогает в отладке.
Установка CircuitPython достаточно проста:
- Скачать файл UF2 файл с CircuitPython’ом на circuitpython.org/board/raspberry_pi_pico
- Перевести Pico в режим UF2 удержанием BOOTSEL во время подачи питания USB
- Скопировать файл из #1 на флешку RPI-RP2, после чего Pico перезапустится автоматически
Так же доступна консоль на последовательном порту с параметрами 115200 8n1. При подключении можно получить доступ к интерактивному Python’у и выводу в консоль через «print» в скриптах.
Наша мигалка на CircuitPyhon будет выглядеть примерно так:
Adafruit предлагает достаточно большой набор библиотек для работы с разным оборудованием.
Можно скачать .zip архив со всеми официальными доступными библиотеками для CircuitPython на circuitpython.org/libraries
Рекомендуется забирать .mpy версию. Это готовый байт-код, который откомпилирован под нужную версию CircuitPython.
MicroPython
MicroPython и CircuitPython достаточно близки друг к другу, но с некоторыми особенностями для отладки и API.
Установка MicroPython тоже достаточно проста:
- Скачиваем UF2 со свежим релизом тут (вкладка «Getting started with MicroPython»)
- Переводим Pico в режим UF2 удерживанием BOOTSEL во время подачи питания USB
- Копируем .uf2 файл из первого шага на RPI-RP2
Для работы с кодом предполагается использование Thonny (возможно, есть и другие варианты). Это минималистичный IDE, который может редактировать код напрямую на плате микроконтроллера.
После установки Thonny в настройках надо подключить Pico. Это сделать можно через меню Tools — Options, потом в закладке «Interpreter» выбрать «MicroPython (Raspberry Pi Pico)» в поле «Which interpreter or device», а в поле «Port» выбрать порт, на котором подключена плата Pico.

Настройку лучше выполнять при подключенной Pico, что бы Thonny мог найти нужный порт.
Пример для мигания на MicroPython:
Выводы (на этот раз не контроллера)
На мой взгляд для такого свежего и нового микроконтроллера уже есть достаточно инструментов для начала экспериментов.
Уверен, что фанатам Arduino не придётся долго ждать когда Pico будет портирован на их любимую платформу. Зато пока есть хороший повод поиграться с Python’ом.
PIO выглядит очень интересной фишкой и я надеюсь заняться этим плотнее по мере появления свободного времени.
Ещё недавно я наткнулся на TensorFlow Lite Micro для Pico для запуска моделей машинного обучения.
В целом, я очень рад за новый продукт в линейке Raspberry Pi и надеюсь, что ему предстоит много приятных приключений и открытий в нашем мире.
Некоторые компании уже объявили о выходе своих плат на этом микроконтроллере (в том числе и с беспроводным интерфейсом), что должно дать больше возможностей.