Raspberry Pi Pico на МК RP2040: начало и первые шаги. Что есть поесть за $4

  • Tutorial

Начало


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 × I2C
  • 16 × PWM каналов
  • Встроенный сенсор температуры
  • Всего 30 GPIO пинов (3,3 вольта)
  • MicroUSB B порт с USB 1.1 контроллером и поддержкой хоста
  • 2 × PIO блока для своих собственных интерфейсов
  • 2 x PLL (один для USB, второй для остального)
  • Поддержка UF2 для загрузки бинарников
  • Поддержка SWD для загрузки и отладки
  • Поддержка спящих режимов и пониженной частоты для снижения потребления

RP2040 декодируется как:

RP: Raspberry Pi
2: два ядра
0: ядра M0+
4: минимум 256 КБ памяти
0: нет встроенной флеш-памяти

PIO блоки дают возможность создавать свои интерфейсы. Например, можно запрограммировать интерфейс WS2812, добавить I2S, SDIO или VGA и т.п.

Ещё одна интересная штука: ядро Cortex-M0+ не содержит в себе блока вычислений с плавающей запятой. Обычно это эмулируется библиотеками GCC, но тут Raspberry Pi использует более быстрое оптимизированное решение от автора Qfplib, которое лицензировано для использования на RP2040.

Более подробный datasheet на плату Pico
Тут можно найти datasheet на сам 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

Варианты на Python'е имеют много своих ограничений, по большей части которые связаны с ограничением памяти микроконтроллера, но для многих быстрых прототипов на коленке этого должно хватить.

Попробую вкратце пройтись по каждому из этих подходов.

Постараюсь не особо заострять внимание на установку и конфигурацию для каждого способа, так как каждый из них потянет на отдельную статью. Вместо этого расскажу некоторые особенности и приведу примеры кода для них.

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):

git clone https://github.com/raspberrypi/pico-setup.git
pico-setup/pico_setup.sh


У меня все Raspberry Pi 4 оказались в каких-то своих тёмных делах, да и как-то привычнее разрабатывать на более удобных компах. По этой причине был выбран путь установки окружения вручную. Тем более, это оказалось не таким уж и сложным.

Весь процесс начальной подготовки сводится к следующим шагам (в данном случае шаги выполнялись на macOS и Linux):

# Создать общую директорию для всего:
mkdir pico && cd pico
# Забрать Pico SDK:
git clone --recursive https://github.com/raspberrypi/pico-sdk.git
# Забрать примеры:
git clone https://github.com/raspberrypi/pico-examples.git
# Linux: установить необходимые инструменты для сборки через "apt":
apt update && apt install cmake gcc-arm-none-eabi build-essential
# OSX: установить инструменты используя "brew" (список может немного меняться в зависимости от текущих установленных пакетов):
# (gcc-arm-embedded будет установлен в /usr/local/bin. Эта информация нужна будет при конфигурировании Visual Studio Code)
brew install cmake gcc-arm-embedded
# Настроить переменную PICO_SDK_PATH (можно занести значение во что-то типа .profile по вкусу):
export PICO_SDK_PATH=`pwd`/pico-sdk

Пример кода для мигания светодиодом с использованием Pico SDK:

#include "pico/stdlib.h"

int main() {
    // Конфигурация пина со светодиодом
    const uint LED_PIN = 25;
    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);

    // Наш рабочий бесконечный цикл
    while (true) {
        // Переключить светодиод
        gpio_put(LED_PIN, 1);
        sleep_ms(250);
        gpio_put(LED_PIN, 0);
        sleep_ms(250);
    }
}

Можно попробовать собрать эту мигалку из примеров:

cd pico-examples
mkdir build
cd build
cmake ..

cd blink
make -j8

Если всё прошло без ошибок, то в результате мы получим файлы, среди которых будет 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 достаточно проста:

  1. Скачать файл UF2 файл с CircuitPython'ом на circuitpython.org/board/raspberry_pi_pico
  2. Перевести Pico в режим UF2 удержанием BOOTSEL во время подачи питания USB
  3. Скопировать файл из #1 на флешку RPI-RP2, после чего Pico перезапустится автоматически

После этого из системы уйдёт RPI-RP2 и вместо него появится новый накопитель CIRCUITPY. На этом новом накопители должен быть файл code.py, с которого начинается выполнение кода. Так же там будет пустая директория «lib», куда можно добавлять сторонние и свои библиотеки.
Файл code.py можно изменять прямо на этом накопителе в своём любимом редакторе. Adafruit советует использовать свой MU Editor, но у меня он зависает при запуске. Наверно, это даже к лучшему, так как я всё равно пользовался бы чем-то другим.

Так же доступна консоль на последовательном порту с параметрами 115200 8n1. При подключении можно получить доступ к интерактивному Python'у и выводу в консоль через «print» в скриптах.

Наша мигалка на CircuitPyhon будет выглядеть примерно так:

import board
import time
from digitalio import DigitalInOut, Direction

# Конфигурация пина со светодиодом
led = DigitalInOut(board.LED)
led.direction = Direction.OUTPUT

# Наш рабочий бесконечный цикл
while True:
    # Переключить светодиод
    led.value = not led.value
    time.sleep(1)

Adafruit предлагает достаточно большой набор библиотек для работы с разным оборудованием.
Можно скачать .zip архив со всеми официальными доступными библиотеками для CircuitPython на circuitpython.org/libraries

Рекомендуется забирать .mpy версию. Это готовый байт-код, который откомпилирован под нужную версию CircuitPython.

MicroPython


MicroPython и CircuitPython достаточно близки друг к другу, но с некоторыми особенностями для отладки и API.

Установка MicroPython тоже достаточно проста:

  1. Скачиваем UF2 со свежим релизом тут (вкладка «Getting started with MicroPython»)
  2. Переводим Pico в режим UF2 удерживанием BOOTSEL во время подачи питания USB
  3. Копируем .uf2 файл из первого шага на RPI-RP2

На этот раз RPI-RP2 уходит, но новый накопитель не появляется. Можно подключиться терминалом на только что появившийся порт (115200 8n1), по которому будет доступна интерактивная консоль Python'а.

Для работы с кодом предполагается использование Thonny (возможно, есть и другие варианты). Это минималистичный IDE, который может редактировать код напрямую на плате микроконтроллера.

Скачать Thonny можно тут

После установки Thonny в настройках надо подключить Pico. Это сделать можно через меню Tools — Options, потом в закладке «Interpreter» выбрать «MicroPython (Raspberry Pi Pico)» в поле «Which interpreter or device», а в поле «Port» выбрать порт, на котором подключена плата Pico.



Настройку лучше выполнять при подключенной Pico, что бы Thonny мог найти нужный порт.

Пример для мигания на MicroPython:

import time
from machine import Pin

# Конфигурация пина со светодиодом
led = Pin(25, Pin.OUT)
led.value(0)

# Наш рабочий бесконечный цикл
while True:
    # Переключить светодиод
    led.toggle()
    time.sleep(1)

Выводы (на этот раз не контроллера)


На мой взгляд для такого свежего и нового микроконтроллера уже есть достаточно инструментов для начала экспериментов.

Уверен, что фанатам Arduino не придётся долго ждать когда Pico будет портирован на их любимую платформу. Зато пока есть хороший повод поиграться с Python'ом.

PIO выглядит очень интересной фишкой и я надеюсь заняться этим плотнее по мере появления свободного времени.

Ещё недавно я наткнулся на TensorFlow Lite Micro для Pico для запуска моделей машинного обучения.

В целом, я очень рад за новый продукт в линейке Raspberry Pi и надеюсь, что ему предстоит много приятных приключений и открытий в нашем мире.

Некоторые компании уже объявили о выходе своих плат на этом микроконтроллере (в том числе и с беспроводным интерфейсом), что должно дать больше возможностей.

Комментарии 54

    +1
    Мне интересно собственный чип RP2040 это хорошо или нет?
    К примеру на основе дизайна плат Arduino можно создавать свои платы под конкретные задачи и все компоненты широко доступны, а где искать RP2040?
      0
      По большей части собственный чип это хорошо для нормальной конкуренции.
      В своё время создание оригинального одноплатника Raspberry Pi подстегнуло других производителей снижать цены и выпускать что-то интересное.

      Я не пробовал искать сам чип, но несколько компаний уже анонсировали выпуск своих плат на базе этого чипа. Не думаю, что они будут бросаться обещаниями если не могут организовать поставки. Время покажет.
        +2
        А как он в сравнении с ESP32?
          +2
          Смотря что сравнивать. А то получается как при выборе яблока или апельсина.
          Например, тех же блоков PIO (ради них я взял поиграться) на ESP32 нет. Так же на ESP32 нет такого количества железных PWM. Ещё на ESP32 количество и разрешение ADC меньше, так же нет поддержки USB.
          Зато на ESP32 есть WiFi и Bluetooth. Есть много проектов, где нужен WiFi, но не нужно ADC и USB. Там ESP32 лучше подойдёт, конечно.
          Если уметь использовать изюминку каждого микроконтроллера по назначению, то этот микроконтроллер будет особенно подходящим.
            +3

            У новой esp32-s2 уже есть usb.

              +1
              И это очень классно. Для проектов, где это нужно.
                +2
                В S2 к сожалению вырезали Bluetooth
                  +1
                  Плохо вырезают. В их datasheet'е есть пару упоминаний Bluetooth, но не в списках фич. Явно пропустили когда скопировали из документа от ESP32.
                    +3
                    Вот за это я и не люблю кошек Китай. Сегодня пропустили в документации, завтра пропустят в кристалле. А ты вынужден тратить свое драгоценное время (которое=деньги), пока разберешься что к чему.
                      +2
                      Особенно классно, когда разные куски доков скопипастили из разных мест, и сиди гадай, в каком правильно.
                +1
                тех же блоков PIO (ради них я взял поиграться) на ESP32 нет

                PIO блоки дают возможность создавать свои интерфейсы. Например, можно запрограммировать интерфейс WS2812, добавить I2S, SDIO или VGA и т.п.

                ULP-RISC-V в esp32-s2 случайно не позволяет делать то же самое?


                UPD: частота у него слишком маленькая конечно для VGA, это скорее для другого, да.

                  +1
                  ULP на ESP32 вроде как обычный проц, но с акцентом на потребление.
                  PIO в RP2040 заточен на I/O и за счёт этого может получить интересные скорости, которые не влияют от производительности основного камня. То есть, VGA как раз реально.
                  Цитата из datasheet'а (страница 325):
                  When outputting DPI, PIO can sustain 360 Mb/s during the active scanline period when running from a 48 MHzsystem clock.
                +4
                А как он в сравнении с ESP32?

                Вопрос на мой взгляд не имеет особого смысла. Логичнее было бы спросить, — этот продукт — продукт рынка плат разработчика Cortex-M0+, в первую очередь, а малина-шмалина — это уже второй вопрос. Cortex-M0+ — это самый бюджетный край армов, далеко не всем он интересен, а кому интересен, так у них выбор среди тысяч самых разных плат этого класса, есть дешевле, есть дороже. В чем конкретная фишка по отношению к продукции хотя бы основных игроков на этом рынке, каковых наверное десяток-два? Могли бы пробежаться по каждому игроку и разъяснить, в чем их переплюнули. У этой шмалины большой портфель типов плат и они могут предложить ступенчатый апгрейд, как для STM32 c Cortex-M0+ до STM32H7? Или уникальный набор периферии на все случаи жизни? Или у них 32-битные таймеры для частот до гигагерца, или что-то еще? Микроконтроллеры — это про hardware, не про Питон. Питон — всего лишь один из очень многих инструментов, не более того.
                  +3

                  Возможно, я не прав и опыта в микроконтроллерах у меня нет, но для домашних целей с нуля создать проект для stm32 мне показалось сложным (с ESP32 не пробовал, с arduino — пробовал, там тоже несложно, но сама arduino слабая по характеристикам).
                  В данном случае, судя по описанию, установка простая и писать на микропитоне можно без особой подготовки. А то что стоит 4 доллара — ну и ладно, для штучных экспериментов сэкономленное время будет ценнее.

                    +1
                    Зависит от опыта. Мои первые попытки что-то делать под МК были как раз на STM32. У меня тогда зашло без проблем.
                    Пожалуй, ESP32 было позамороченнее и это спустя несколько лет как я пробовал STM32.
                    Не совсем понял, что значит «Arduino слабая». В чём слабость платформы? Для прототипов подходит, порог вхождения ниже если сравнивать с тем же STM32. Большой парк плат и МК (в том числе STM32 и ESP32).
                      +1
                      Можно еще реалтековские контроллеры поковырять, там еще больше заморочек, но главным образом на этапе первоначальной настройки и за счет закрытых бинарников.
                        +1
                        Верно. Одна из фишек RP2040 — бОльшая открытость. Сам кристал не является Open Source, но всё остальное вроде как открыто.
                      +1
                      Ардуино, это среда разработки и некоторая «экосистема», прежде всего. Так что она не может быть «слабой по характеристикам». Там можно и под тот же stm32 писать и под x86, если уж так.

                      У неё проблема в низком уровне вхождения — те кто ей пользуются, зачастую, мало что знают о конкретных микроконтроллерах и о том, как вообще надо их использовать. И в том, что от вас там пытаются скрыть слишком много сложностей. А также в качестве библиотек и.т.п. Но не в том, что можно писать под довольно слабые AVR. Даже «родные» для неё платы есть на довольно мощных ARM.
                        +2
                        У любой системы есть характеристики. И по ним их можно сравнивать. Сравнивать arduino как ide можно с чем угодно. И она слабая. Сравнивать arduino как hal можно с mbed. mbed даёт больше гибкости, так что тут arduino так же слабая. В arduino есть и OS. Так же слабая, в сравнении с промышленными стандартами. Единсьвенное сильное место arduino — комунити.
                        К слову, про библиотеки не согласен: многие библиотеки из экосистемы arduino очень даже хороши.
                          +1
                          Не думаю, что это имелось в виду.
                          К тому же, в перечисленных вами «слабостях» ардуино её же сила — всё предельно упрощено, и именно поэтому то комюнити… =)
                            0
                            IDE для Arduino — на выбор пользователя. Можно в Visual Studio Code если привычнее.
                            OS (когда она есть) в Arduino скрыто от пользователя. Вроде как для ESP используется FreeRTOS внутри. Но фишка Arduino как раз в полной абстракции от OS и это хорошо.
                            Для многих проектов не нужны такие усложнения и невостребованная гибкость. Тут важнее «Time-to-Market».
                          +2
                          Возможно, я не прав и опыта в микроконтроллерах у меня нет, но для домашних целей с нуля создать проект для stm32 мне показалось сложным

                          «Для домашних целей с нуля», как вариант, можно зайти на os.mbed.com/platforms/, посмотреть платформа какого производителя больше нравится, например, STMicroelectronics — 50 плат, выбрать конкретную плату, например NUCLEO-F446RE Cortex-M4 +, FPU, 180MHz, 512KB Flash, 128KB SRAM, купить ее где-нибудь, подключить по USB к компьютеру, дать mbed.com ее распознать, выбрать какой-нибудь пример кода на C, клацнуть на него, тем самым загрузить его в онлайн, то есть в браузере среду разработки, скомпилировать и перебросить результат на эту NUCLEO, которая видна как flash drive. Все, отключили плату, включили — код работает, проще трудно придумать. (Все это по памяти, давно этим не занимался, может сейчас еще проще) Сообщество по этим STM32 не уступает таковому по малине, насколько я знаю. Не уступает ни по количеству народа, ни по качеству общения.
                            0
                            На малиновском МК сообщество пока не особо в силу его новизны и возраста.
                            Но чем больше разных хороших сообществ, тем лучше и проще в плане выбора МК под какие-то определённые задачи.
                    +1
                    На основе этого чипа будет довольно много сторонних плат, в том числе с WiFi/Bluetooth, в том числе от Arduino, с портированными библиотеками. Так что да, свои платы можно будет создавать.
                    +3

                    И где же купить за 4$? Поделитесь ссылочкой. А то чёт не нашёл.

                      +2
                      У меня есть возможность купить в offline. В online они только начинают появляться.
                      На rs-online есть. Adafruit уже продаёт (вчера вроде не было). Во многих европейских магазинах уже появились.
                      Тут можно посмотреть где купить за $4: www.raspberrypi.org/products/raspberry-pi-pico
                      В списке нет России, но можно найти в соседних странах с доставкой. Сама доставка, конечно, будет не бесплатная.
                      К сожалению, я не знаю кто в Казани может продавать похожее локально.
                      +3
                      А что за PIO? Можно для ардуинщиков тех кто в танке поподробней?
                        +2
                        В грубом приближении с помощью PIO можно реализовать свои протоколы, которые будут работать как новая периферия без нагрузки на центральный проц.
                        Например, надо управлять WS2812 — можно запрограммировать PIO на этот протокол и теперь он будет. По скорости это будет намного быстрее, чем делать bit-bang самому, а свободное время процессора потратить на что-то более важное.
                          +3
                          и как это работает? почему киллер фича не описана? Ведь можно было вдохновиться например этой статьей hackspace.raspberrypi.org/articles/what-is-programmable-i-o-on-raspberry-pi-pico
                            0
                            Пишется мелкий код на чем-то подобном асме специально для PIO блока.
                            Почему не описано? Я же не выдумал это. Есть официальное описание в datasheet'ах, которые я привёл в статье. В datasheet'е от RP2040 есть целая глава 3 с подробным и увлекательным описанием.
                            Тут небольшое введение на эту тему.
                          +5
                          PIO — это сопроцессор ввода-вывода — простой процессор со своей системой команд, который можно программировать на ассемблере, чтобы реализовать протокол какого-то интерфейса без задействования основных ядер
                          +5
                          Спасибо за обзор. Если бы на борту был WiFi, была бы бомба, а так, функциональность получается заметно ограниченной. Проект, где ничего не нужно принимать/отдавать по сети, сейчас уже редкость :)
                            +1
                            Не всегда нужен WiFi на борту. Но вроде как Arduino объявила о выходе своей платы на RP2040 с WiFi.

                            По поводу проектов: автоматическая подсветка, регулировка температуры/влажности, автономный робот и прочее.
                            0

                            Спасибо за статью! PIO тоже очень заинтересовал с момента анонса контроллера, было бы интересно почитать опыт работы с ним. В частности интересно, можно ли на нем достаточно эффективно реализовать 1-wire, про другие протоколы часто упоминают как примеры для PIO, а этот — нет. Особенно учитывая, что 1-wire ни в одном из популярных контроллеров аппаратно не поддержан.
                            Два ядра — тоже необычность, хотелось бы услышать про то, какие средства синхронизации есть, как работает обработка прерываний, поддержка со стороны SDK, прочие особенности.

                              +2
                              Автор меня опередил, стал писать обзорку этой платы исключительно по документации. Самому интересно было про синхронизацию. 2 FIFO однонаправленных C0->C1, C1->C0 и 32 «аппаратных мьютекса». Как предполагаю, надо в код смотреть именно Питона, возможно на 1 ядре сам интерпретатор крутится, а на втором — нативные библиотеки. Там еще много чего интересного. Аппаратный делитель, интерполяторы. Используется в Питоне, судя по документации.
                                +2

                                Ну и что, что "опередил". Не сказать, что статьями прямо "засыпало", тем более если описывать разные аспекты камня и личный опыт. Если есть энергия — всегда лучше всегда писать. (= Сейчас особенно интересно, пока этот камень дойдет до нас (Россия) по адекватной цене и пока до него свои руки дойдут...

                                  +1
                                  Энергия есть, таланта писательского нет:( Обычно, от задумки до релиза проходит несколько месяцев, и тема становится не актуальной…
                                    +1
                                    Надо по свежему идти всегда. У меня в черновиках лежит недописанная статья уже года четыре или пять про самодельную машинку с управлением по Bluetooth. Но она вряд ли увидит свет.
                                    Про Pico я узнал на hackaday (20 января), потом в пятницу метнулся за ними в магазин и выходные игрался. В воскресенье пришла идея написать статью по свежему.
                                0
                                Хорошая идея по поводу 1 wire. У меня есть несколько DS1820. Я попробую поиграться в этом плане с PIO.
                                Для второго ядра у меня пока нет особо идей, да и PIO привлекательнее для экспериментов.
                                +3
                                Лет 5-6 назад эта плата была бы интересной. Сегодня она выглядит, как попытка запрыгнуть в последний вагон уходящего поезда.
                                  +5

                                  Поезд микроконтроллеров никогда не "уйдет", они всегда будут нужны. Выбор разработчика продиктован в основном ценником и качеством экосистемы. Добавить к этому тот факт, что цикл жизни микроконтроллера составляет 10-20 лет и входить в тему можно когда угодно, только составь достойную конкуренцию.

                                    +1
                                    Полностью согласен. Тем более, что требования только растут и производители выпускают что-то новенькие для удовлетворения этих требований.
                                    Особенно когда это не просто МК общего назначения, а ещё какие-то аппаратные фишки и ускорения, что бы задачу можно решить ещё более эффективно.
                                    Например, лет 10 назад МК для машинного обучения был не так нужен как сейчас.
                                    +2
                                    Почему бы и нет. Куча людей выбирает ардуино «ну потому что ардуино», хотя есть и аналоги. Куча людей любит малинку «ну потому что малинка», хотя есть и аналоги. Вот и на этот продукт найдутся любители.
                                      +3
                                      У малинки очень хорошая репутация и сообщество. Я как-то попробовал другой SBC, солазнившись на завленные характеристики, оказалось — выброшенные деньги.
                                      Поэтому уже только поэтому можно надеятся, что даже если не взлетит, провала не будет.
                                        +4
                                        Верно. Это называется «community» или «поддержка». Новичок может чувствовать себя увереннее когда знает, что ему помогут в освоении чего-то совершенно нового. Да и потом охотнее будет делиться своими знаниями с другими.
                                        +1
                                        Почему сегодня она не интересна? Новые микроконтроллеры появляются достаточно часто и всегда есть рынок на это. Хотелки на них только пухнут со временем.
                                        +2
                                        Плата очень похожа на более дешевый аналог teenzy.
                                        А вот, кстати, сравнение с esp:

                                        взято отсюда — www.youtube.com/watch?v=cVHCllbN3bQ&t=4s
                                          0
                                          Что за Teenzy? Если речь про Teensy, то у них слишком много плат, что бы можно было сравнить со всеми. У них даже есть AVR.

                                          А по поводу таблички, то мне кажется, что там очень грамотное сравнение. Можно подумать, что PIO и ULP — это одно и то же. А это не так и потому в одно поле вставлять не совсем верно.
                                          Ещё максимальный Flash у RP2040 будет 16MB и для ESP32 вроде как 16MB, а там указано 2 и 4 только.
                                          Так же написано, что нет I2S и CAN. Это немного вводит в заблуждение, так как PIO может реализовать эти протоколы.
                                            +1
                                            да, речь про teensy. мне напоминает teensy 2.0.
                                            жаль, что pico разобрали так быстро. ждать апреля-мая…
                                              0
                                              Teensy 2.0 на AVR, я бы не сравнивал так. Слишком уж она старая.
                                              Тут лучше сравнивать с тем же Cortex M0+. Например, Teensy-LC.

                                              Да, pico быстро разобрали. Я успел только парочку купить, но зато по промо-скидке.
                                              Думал взять ещё, но уже было поздно. Впрочем, не удивительно. Перекупщики и тут малину испортили.
                                                +1
                                                Сейчас пришла реклама thepihut.com/products/raspberry-pi-pico в наличии.
                                                Вот только своей ниши среди Blue Pill, ESP8266, ESP32, nRF52840 и Ардуино Нано(Pro Mini) у Raspberry Pi Pico я не вижу.
                                                  0
                                                  Сегодня заглянул в магазин, где я покупал. Там уже завезли тоже, я даже купил ещё на опыты. Я так понял, что с поставками проблем нет.

                                                  Почему ниши нет? Pi Pico, например, почти во всём лучше «Arduino Nano(Pro Mini)». Легко может её заменить.
                                                  С Blue Pill вполне можно сравнить, так как у них есть свои плюсы и минусы. Проект может грамотно использоваться плюсы той ли иной платы.
                                                  ESP/Nordic немного о другом и поэтому не совсем правильно сравнивать.
                                                    +1
                                                    Pi Pico, например, почти во всём лучше «Arduino Nano(Pro Mini)». Легко может её заменить.
                                                    Программируется в среде Ардуино с ее разнообразием софта и простотой? Может долговременно работать напрямую от LiIon или CR2032? Ардуино Нано(Pro Mini) идеальна для отладки простых устройств, устройств с низким потреблением, впоследствии легко заменяется ATmega328P в DIP или TQFP с обвязкой из 3х конденсаторов, кварца и резистора.

                                                    ESP/Nordic немного о другом и поэтому не совсем правильно сравнивать.
                                                    Все это платы с микроконтроллерами для прототипирования/встраивания/самоделок, нижнего ценового диапазона, поддерживаемые средой Ардуино.

                                                    Я это именно так вижу.
                                                      0
                                                      Программируется в среде Ардуино с ее разнообразием софта и простотой?

                                                      Не сегодня, но завтра будет. Arduino тоже не сразу портировали на ESP и STM32.

                                                      Может долговременно работать напрямую от LiIon или CR2032?

                                                      Может. Но тут, конечно, зависит от определения слова «долговременно». Уж очень сложно измерить это слово количественно без дополнительной информации.

                                                      … впоследствии легко заменяется ATmega328P в DIP или TQFP с обвязкой из 3х конденсаторов, кварца и резистора.

                                                      Верно, именно так было давно. Сам даже так делал в своё время.
                                                      Но сейчас в DIP делают редко, да и по больше мере это новички в пайке для упрощения процесса. Но они уже перешли на платы (типа той же Нано), что бы даже с DIP'ом не возиться. Нано не сильно больше ATmega328P в DIP корпусе.
                                                      Сейчас возможность сделать на DIP не несёт такой ценности как это было лет 10 назад. Сегодня возможности самого чипа и среды разработки важнее вариаций с корпусом.
                                                      Народ ставить гребёнку 2,54 и делает DIP из всей платы если это необходимо. А это можно поставить практически на любую популярную плату.

                                                      Про ESP/Nordic я сказал так, потому что они дают беспроводное соединение. Нано и RP2040 такого предоставить не могут и потому они в разных категориях применения.
                                                      Конечно, можно использовать ESP32 как обычную Нано для простого управления светом по сенсору, а к Нано добавить WiFi модуль, но мы же говорим про голые МК и платы.

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое