Wokwi: импорт своих скетчей и diagram.json
Схема собрана, скетч отлажен в Arduino IDE — а дальше везде пишут «откройте в Wokwi», будто это одна кнопка. Открывается не сразу: проект Wokwi состоит из кода и описания схемы, и каждый переносится своим путём. Ниже — практическая инструкция: куда вставить свой скетч, что такое diagram.json и как он устроен, откуда берутся библиотеки и на что способен импорт .zip-проекта и ссылок на gist и GitHub (формулирую «на момент проверки»: интерфейс сервиса обновляется, сверяйтесь с его документацией).
Пара слов о границах страницы. Обзор Wokwi с нашим симулятором в главной роли ведёт отдельный лендинг, лоб в лоб с Tinkercad — сравнение Wokwi и Tinkercad; здесь же только переезд: за десять минут перенести свой проект и понимать, что при этом не поедет.
Из чего состоит проект Wokwi
Проект в Wokwi — это минимум два файла. Первый — sketch.ino: обычный ардуиновский скетч, тот же самый, что лежит у вас в папке проекта; редактор Wokwi открывает его во вкладке sketch.ino и компилирует настоящим GCC. Второй — diagram.json: текстовое описание схемы, где перечислены платы, модули и связи между выводами; его можно править мышкой на диаграмме или руками в редакторе. Библиотеки третьим файлом не хранятся: Wokwi подтягивает их из своего реестра по имени из #include — и это главное отличие переезда, о нём ниже.
Шаг 1. Скетч: копипаста во вкладку sketch.ino
Самый надёжный путь — банальная копипаста. Создайте новый проект Wokwi (для Uno, Nano, Mega или ESP32 — плата выбирается при создании), откройте вкладку sketch.ino, выделите весь код своего скетча и вставьте вместо шаблонного. Автосохранение подхватит текст, кнопка Play запустит компиляцию: если скетч без редких библиотек, сборка проходит без сюрпризов. Искать папку проекта на диске не нужно; где она живёт на самом деле, полезно знать для других целей — урок про структуру скетчбука показывает расклад.
// Тестовый скетч для переезда: мигалка и монитор порта.const byte LED = 13;unsigned long moment = 0;bool svet = false; void setup() { pinMode(LED, OUTPUT); Serial.begin(9600); Serial.println("pereezd sostojalsja");} void loop() { if (millis() - moment >= 500) { moment += 500; svet = !svet; digitalWrite(LED, svet); Serial.println(svet ? "svet" : "tma"); }}Шаг 2. Схема: diagram.json по-человечески
diagram.json описывает, что стоит на стенде и что с чем соединено. Два ключевых поля: parts — список деталей с типами (плата, светодиод, резистор, датчик), connections — связи вида «вывод А — вывод Б, цвет провода». Формат не секретный: откройте вкладку diagram.json в любом готовом примере Wokwi и почитайте — имена там человеческие. Учебная мигалка выглядит так (на момент проверки; сервис развивается, сверяйтесь с документацией Wokwi):
{ "version": 1, "author": "pereezd", "editor": "wokwi", "parts": [ { "type": "wokwi-arduino-uno", "id": "uno" }, { "type": "wokwi-led", "id": "led", "attrs": { "color": "red" } } ], "connections": [ [ "uno:13", "led:A", "red", [] ], [ "uno:GND.1", "led:C", "black", [] ] ]}| Что переносится | Как | Подводный камень |
|---|---|---|
| Скетч .ino | копипаста во вкладку sketch.ino | редкие библиотеки — см. шаг 3 |
| Схема: модули и провода | сборка мышкой или правка diagram.json | рисунок с макетки сам не приедет |
| Библиотеки | реестр Wokwi по имени из #include | ограничены реестром сервиса |
| .zip-проект | импорт архива (на момент проверки) | структура папки и библиотеки |
| Ссылка на gist/github | импорт по https-ссылке | репозиторий обязан нести sketch.ino |
Шаг 3. Библиотеки: реестр вместо zip
В Arduino IDE библиотека живёт файлами в папке libraries, а в Wokwi — строкой реестра: менеджер библиотек ищет по имени из #include и ставит кликом. Отсюда правило переезда: прежде чем тащить проект, проверьте, что каждая библиотека есть в реестре Wokwi — ходовые Servo, LiquidCrystal, FastLED, DHT стоят там давно, самописные и мелкие форки могут не найтись. Собственные .h-файлы переносятся вместе со скетчем как файлы проекта. Родная среда ставит библиотеки из zip-архива и менеджера — приёмы разобраны в уроке про zip-библиотеку и уроке про менеджер библиотек.
Импорт по ссылке: gist и GitHub
На момент проверки Wokwi принимает готовые проекты двумя способами: архивом .zip и https-ссылкой на gist или репозиторий GitHub; пункт импорта живёт в меню создания проекта, названия пунктов от версии к версии меняются — ориентируйтесь на слово Import. Ссылка срабатывает, если проект лежит как положено: sketch.ino в корне (или в папке с именем скетча), рядом diagram.json при готовой схеме. Структура репозитория здесь не придирка гит-гуру, а то, что превращает ссылку в рабочую кнопку; разбор папки проекта ведёт урок про git-бэкап проектов.
Порядок переезда: чек-лист на десять минут
- Выпишите все #include из скетча и проверьте каждую библиотеку по реестру Wokwi.
- Создайте проект нужной платы: Uno, Nano, Mega или ESP32 — плату в Wokwi можно заменить и позже, но проще сразу верную.
- Вставьте скетч во вкладку sketch.ino, соберите схему мышкой или вставьте свой diagram.json.
- Запустите компиляцию и прогон: мигалка и Serial расскажут о переезде раньше любых датчиков.
- Сверьте Serial-вывод с тем, что печатала IDE: расхождение означает платформенную разницу, а не промах переезда.
- Сохраните проект под именем и держите локальную копию скетча: аккаунт Wokwi нужен для сохранения, гостевой режим — нет.
Границы переезда. Переносится код и описание схемы, но не опыт IDE: панель «Скетч → Подключить библиотеку», менеджер плат, монитор порта с плоттером — там свои меню, и в первый вечер они путают сильнее самой переездной логики. Навык находить нужное в строке меню тренируется без Wokwi: тренажёр ниже гоняет восемь заданий по меню Arduino IDE — от установки библиотеки из реестра до плоттера, и после него импорт в Wokwi читается как разговор о знакомых вещах.
8 заданий в симуляции строки меню: от библиотек из реестра до Плоттера порта.
Подгружаем интерактив…