Симулятор Raspberry Pi Pico онлайн: RP2040 в браузере
Raspberry Pi Pico — самая дешёвая плата семейства и самый любопытный гость в браузере: под ней стоит чип RP2040, который отличается от Uno сильнее, чем Nano от Mega. У меня Pico лежал полгода, пока я не решился её прошить: пины назывались GP, питание было 3,3 В, а Arduino-IDE не видела плату без установки ядра arduino-pico. В браузере этого затыка нет — здесь можно потрогать логику MicroPython и Arduino-ядра без установки, а потом уже решать, нужна ли вам эта плата в железе.
Самой платы Pico в каталоге симулятора нет — лендинг текстовый с разбором RP2040, двух языков (MicroPython и Arduino-ядро), что переезжает от ардуинщика без переучивания и что придётся осваивать заново. Для живого сравнения с Wokwi, где Pico поддержана как плата, — лендинг про Wokwi и Raspberry Pi Pico; обзор сервиса на русском — лендинг про Wokwi-альтернативу.
Pico в двух словах
RP2040 — два ядра Cortex-M0+ на 133 МГц, 264 КБ ОЗУ и 2 МБ флеша на самой плате. Для масштаба: у Uno один AVR на 16 МГц, 2 КБ ОЗУ и 32 КБ флеша — Pico сильнее по всем строкам сразу. На гребёнке 26 пинов GP, три аналоговых входа (GP26-GP28) плюс внутренний датчик температуры чипа. Главная строка паспорта для ардуинщика: логика 3,3 В, а не 5.
- Логика 3,3 В: входы не толерантны к 5 В — привычка «подать напрямую, как на Uno» ломает чип. Реле, кнопки и модули от старых схем проверяйте на уровень.
- ADC 12-битный: 0-4095 вместо привычных 0-1023 — показания аналоговых ползунков выше, но и пересчёт другой.
- ШИМ почти везде: 16 аппаратных каналов, и большинство GP-пинов умеет ШИМ — не только шесть «тильд» Uno.
- Прошивка файлом: зажали BOOTSEL, подключили USB, перетащили .uf2 — плата видна компьютеру как флешка.
- Цена: несколько сотен рублей против тысячи за клон Uno — запасная плата «на поиграть» без жалости.
Два языка: MicroPython или Arduino-ядро
В браузере доступны оба пути. MicroPython живёт в файле main.py и общается через REPL: печатаете строку — получаете ответ сразу, без компиляции. Arduino-скетч на Pico собирается ядром arduino-pico: привычные setup()/loop(), digitalWrite и Serial остаются на месте, нужно только установить пакет «Raspberry Pi Pico/RP2040» в Arduino IDE и выбрать плату. Стартовая рекомендация простая: знакомитесь с платой — MicroPython, переносите тяжёлый проект — Arduino-ядро.
from machine import Pin, PWMimport utime led = Pin(25, Pin.OUT) # встроенный светодиодshim = PWM(Pin(15)) # ШИМ на GP15shim.freq(1000) while True: # вместо loop() for duty in range(0, 65536, 4096): shim.duty_u16(duty) # 16-битное заполнение вместо 0-255 led.toggle() utime.sleep(0.05)Здесь виден весь стиль MicroPython: объект Pin вместо pinMode, duty_u16 вместо analogWrite, while True вместо loop() и utime.sleep вместо delay(). Печать через print() падает в REPL — тот же монитор порта, только живой диалог с платой. Хронометр utime.ticks_ms() — прямой аналог millis(): та же механика пересчёта через переполнение, к которой вы привыкли в скетчах без delay.
#define LED 25 // встроенный светодиод Pico на GP25#define SHIM 15 // ШИМ на GP15 void setup() { pinMode(LED, OUTPUT); Serial.begin(115200); analogWriteRange(65535); // 16-битный ШИМ, как в MicroPython} void loop() { for (int d = 0; d <= 65535; d += 4096) { analogWrite(SHIM, d); digitalWrite(LED, !digitalRead(LED)); delay(50); }}Arduino-скетч под Pico собирается через ядро arduino-pico от Earl Philhower: ставится как пакет в Boards Manager, и после этого в Arduino IDE появляются платы Raspberry Pi Pico, Pico W, Pico 2. Скетч пишет в Serial — тот же монитор порта, что у Uno; привычные delay, millis, attachInterrupt — на месте. Разница начинается там, где пины называются GP, а логика 3,3 В не прощает 5-вольтовых модулей.
Что переезжает от ардуинщика без переучивания
- Цифровая логика: светодиод, кнопка, подтяжка — один в один; в MicroPython это Pin(15, Pin.IN, Pin.PULL_UP), в Arduino-ядре — те же pinMode и digitalRead.
- Дисциплина «без delay»: расписание на utime.ticks_ms() переносится с millis()-скетчей почти строка в строку.
- Отладка: print() и Serial.print() дают один и тот же монитор порта — привычка печатать состояние каждой ветки живёт и здесь.
- Шинные модули: дисплеи I2C, датчики, сервоприводы — в Arduino-ядре библиотеки знакомые, адреса и схемы те же.
- Пороговая логика: термостат, сирена, автомат состояний — вся голова проекта переезжает без переделки, меняется только обвязка пинов.
Что придётся переучить
- Нумерация: пины называются GP0-GP28, и «пин 25» на Pico стоит в другом месте, чем на Uno. Держите распиновку под рукой первые пару недель.
- analogWrite уходит: в MicroPython — machine.PWM с duty 0-65535, в Arduino-ядре analogWrite остаётся, но ширина шкалы и набор пинов другие.
- Аналоговые чтения: в MicroPython — read_u16(), привычных 0-1023 нет; пороги из старых скетчей пересчитываются.
- 5 В: входы чипа не переживают старые Uno-уровни; делитель или модуль с согласованием — обязательная строка в схеме.
- Структура скетча: setup()/loop() живут только в Arduino-ядре; в MicroPython всё начинается с main.py и крутится в while True.
Границы симуляции Pico
| Проверка | Браузер (логика) | Только настоящая Pico |
|---|---|---|
| GPIO, кнопки, светодиоды, ШИМ | да, в Arduino-ядре Uno-движка | то же, плюс GP-нумерация и 3,3 В |
| REPL и монитор порта | через Serial как на Uno | то же, плюс живой MicroPython REPL |
| Wi-Fi на Pico W | нет: движок под Uno | да — реальные роутер и антенна |
| ADC 12-битный: шум и смещение | нет: модель ровная | да — дрожь и уходы нуля |
| Токи, пределы 3,3 В | нет | да — здесь чип и ломается |
| Фишки RP2040: PIO и два ядра | упрощённо или никак | да — фирменные трюки чипа |
Браузер держит Arduino-ядро под Uno-движок: скетч под Pico с GP-нумерацией компилируется, но GPIO-номера не совпадают с реальной Pico — у Uno 14 цифрпинов 0-13 и 6 аналоговых A0-A5, у Pico 26 GP0-GP28. Для логики (delay, millis, циклы, Serial) этого достаточно; для сборки схемы с GP15 или GP26 — переходите на плату или в Wokwi, где Pico — нативная плата. Граница совпадает с общим правилом симуляторов: код и логика проверяются в браузере, электрика и чиповые тонкости — на железе.
Грабли Pico для ардуинщика
- 5 В на 3,3-вольтовый вход: плата не переживёт, и diagnoses «перестала отвечать» после подключения 5-вольтового модуля — типичный сценарий. Делитель или модуль с согласователем.
- Забытый BOOTSEL при первой прошивке: плата не видна как COM-порт, но видна как флешка с расширением UF2 — это нормально, перетащите файл прошивки.
- analogWrite на GP без ШИМ: не все GP умеют ШИМ, и на «не-ШИМ» пине analogWrite молчит. Сверяйте с распиновкой.
- WiFi на Pico W не из коробки: нужен Network класс в MicroPython или WiFi.h в Arduino-ядро; «просто WiFi.begin как у ESP32» не работает.
- Библиотеки под Uno не всегда собираются: часть ардуино-классики ещё не знает про RP2040 (на момент проверки). Сверяйте совместимость до установки.