View Categories

Wokwi

Wokwi - это онлайн симулятор для Arduino и некоторых других платформ, имитирует как работу самого МК, так и некоторого "железа": позволяет собрать виртуальную схему из модулей и запустить на ней программу:

  • Симуляция очень точная - код выполняется именно так, как он делал бы это на реальном МК, с точностью до такта
  • МК самые ходовые: AVR Arduino и ESP32 с Pi Pico в режимах C++ и Python
  • Из железок доступны самые ходовые модули, их список постоянно пополняется
  • Модули тоже хорошо симулируются - можно работать с ними на самом низком уровне и тестировать библиотеки
  • В программу можно добавлять библиотеки из реестра Arduino
  • Есть инструменты отладки - консоль Serial, плоттер графиков и логический анализатор сигналов с пинов
  • Симулятор может работать как онлайн в браузере, так и локально в VS Code
    • В VS Code дополнительно есть Telnet-сервер для отладки (дублирует Serial) и виртуальный сервер для проектов на ESP32

Вот несколько моих проектов и тестов библиотек:

В браузере #

При работе в браузере компиляция происходит на стороне сервера, а запуск - непосредственно в браузере (программа отправляется на сервер, в ответ приходит бинарник). Когда сервер загружен - компиляция может завершиться по таймауту (около 20 секунд) и симулятор предложит перейти на платный тариф с приоритетной компиляцией. Раньше такое происходило довольно редко, но на момент написания урока инструмент видимо стал популярным и иногда можно ждать компиляции суммарно несколько минут!

Библиотеки #

Для добавления библиотеки нужно просто зайти во вкладку Library Manager и найти нужную библиотеку:

У меня с какого-то момента этот способ перестал работать (кнопка не нажимается), делаю так: в проекте создаю новый файл libraries.txt и в нём с новой строки просто перечисляются библиотеки так, как они называются в менеджере библиотек:

С платной подпиской доступно добавление библиотек архивом, в то же время бесплатно можно создавать в проекте сколько угодно файлов с кодом:

Оффлайн #

В оффлайн режиме код компилируется на компьютере и просто запускается в симуляторе, что очень быстро даже для ESP32. Для работы в оффлайн режиме понадобится VS Code + PlatformIO - по сути разработка под симулятор не отличается от обычной работы с PIO, с любыми библиотеками и всем удобством написания кода в VS Code. Один и тот же проект можно скомпилировать и загрузить в плату, а можно запустить симуляцию - это очень удобно.

Лицензия #

При первом запуске симуляции программа потребует лицензию - нужно перейти в браузер и подтвердить получение лицензии. Она бесплатная.

Редактирование схемы #

Единственное - для редактирования схемы симулятора в бесплатной версии придётся использовать браузер: в него нужно вставить json из файла проекта, отредактировать и вставить обновленный код обратно в файл в VS Code. В платной версии можно редактироватьиз схему в VS Code.

Запуск #

Для запуска нужно скомпилировать прошивку и кликнуть diagram.json, в ней запустить симуляцию. После этого каждая новая компиляция будет автоматически перезапускаться в окне симуляции.

Симуляция работает, пока её окно есть на экране, т.е. если его не видно - она встаёт на паузу. Можно разделить экран, чтобы симуляция всегда была активна

Симуляция сервера #

Оффлайн режим позволяет имитировать работу WiFi в ESP32 - прокидывает его на localhost, т.е. можно заниматься разработкой/отладкой вебсервера и вебморды. Вот полностью сконфигурированный проект-пример для этого.

Плоттер #

В оффлайн режиме монитор порта вынесен в терминал VS Code, а плоттер графиков по Serial отсутствует. Мне как-то он был очень нужен и я рассмотрел три варианта визуализации данных. Они основаны на том, что Wokwi может дублировать Serial (на чтение и отправку) по Telnet:

  • Скрипт на Python, который читает данные и визуализирует их нужным способом (не люблю Python)
  • Скрипт на Python, который читает данные и перенаправляет их по websocket в браузер, где на JS можно написать визуализацию
  • Скетч на Processing, который читает данные и может их визуализировать

Я остановился на третьем варианте, полностью готовый проект для VS Code с плоттером внутри можно скачать с GitHub.

Управление графиком:

  • Отправить текст, начинающийся с # - заголовок графика
  • Отправить текст, разделённый ; или , - названия осей
  • Отправить числа, разделённые ; или , - данные осей
  • Клик ЛКМ - включить и выключить автоматическое движение графика
  • Колесо - масштаб по горизонтали

Полезные страницы #

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Прокрутить вверх