Wokwi: симулятор Raspberry Pi Pico — RP2040 в браузере
Raspberry Pi Pico — самая дешёвая плата семейства и самый любопытный гость в браузере: под ней стоит чип RP2040, который отличается от Uno сильнее, чем Nano от Mega. Обзор самого Wokwi и его разбор против нашего стенда лежит в лендинге Wokwi на русском; здесь — именно Pico: что за зверь этот RP2040, какие языки он понимает и что станет с вашими ардуино-привычками.
Сразу договоримся о честности: интерфейс Wokwi английский, а каталог деталей и ядра там живые и меняются — факты о сервисе ниже сверены на момент проверки. Лобовое сравнение с Tinkercad ведёт отдельный лендинг, переезд готовых скетчей — ещё один; эта страница — про саму плату и то, как на неё перебраться.
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 или C/C++
Wokwi держит оба пути. MicroPython живёт в файле main.py и общается через REPL прямо в браузере: печатаете строку — получаете ответ сразу, без компиляции. C/C++ идёт двумя ветками: голый SDK и Arduino-ядро для RP2040 — на момент проверки ардуино-скетч на Pico в Wokwi собирается именно ядром, и привычные setup()/loop(), digitalWrite и Serial остаются на месте. Стартовая рекомендация простая: знакомитесь с платой — MicroPython, переносите тяжёлый проект — C/C++.
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.
Что переезжает от ардуинщика без переучивания
- Цифровая логика: светодиод, кнопка, подтяжка — один в один; в 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.
Переезд по деталям — копипаста кода, заново собранная схема, проверка каждой библиотеки пробным запуском — расписан в лендинге про импорт скетчей в Wokwi; здесь же держите главный вывод: ардуино-скетч не переносится на Pico переливанием, но и не переписывается с нуля — голова остаётся, обвязка меняется. И проверяйте библиотеки заранее: часть ардуино-классики ещё не знает про RP2040 (на момент проверки).
Границы симуляции Pico
| Проверка | Wokwi | Только настоящая Pico |
|---|---|---|
| GPIO, кнопки, светодиоды, ШИМ | да, в браузере | то же |
| REPL и монитор порта | да, print() виден сразу | то же |
| Wi-Fi на Pico W | модель сети есть (на момент проверки) | реальные роутер и антенна |
| ADC: шум, точность, смещение | нет: модель ровная | да — дрожь и уходы нуля |
| Токи, пределы 3,3 В | нет | да — здесь чип и ломается |
| Фишки RP2040: PIO и два ядра | упрощённо или никак | да — фирменные трюки чипа |
Граница совпадает с общим правилом симуляторов: код и логика проверяются в браузере, электрика и чиповые тонкости — на железе. Для Pico это значит: расписание, пороги, логику автомата и обмен с модулями гоняйте в Wokwi, а первую схему с 3,3-вольтовой обвязкой собирайте вдумчиво — модель прощает то, что чип не переживёт.
8 заданий в симуляции строки меню: от библиотек из реестра до Плоттера порта.
Подгружаем интерактив…
Лаборатория выше — про вторую половину переезда: правка кода и повторный запуск без пересборки схемы. У Wokwi механика та же — отредактировал, запустил, посмотрел в монитор; навык переносится целиком. Если Pico подождёт, а поработать с платой хочется уже сейчас, наш симулятор Arduino крутит Uno, Nano, Mega и ESP32 на русском — привычки, наработанные там, на Pico пригодятся все до единой.