Всем привет! Я работаю преподавателем, и в последнее время привычные инструменты для симуляции Arduino стали доступны лишь «через раз».
Я работаю преподавателем, и так уже сложилось что привычные и удобные инструменты симуляции ардуино сейчас доступны через раз. Tinkercad заходит через определенный сервис, Wokwi в последнее время тоже нуждается в нем (по крайней мере у меня). В виду такой ситуации решил попробовать начать делать свой онлайн симулятор, так как это банально удобнее для меня.

Задачи что я поставил перед собой выглядели так:

  • Симуляция должна происходить в реальном времени.

  • Библиотека компонентов должна содержать все нужные мне элементы.

  • Интерфейс должен быть достаточно простым.

Сразу оговорюсь: проект сейчас находится в стадии MVP, но его архитектура уже позволяет собирать схемы и писать код. Любая критика, предложения и комментарии категорически приветствуются!

Описание симуляции электрической части

Переход от логической имитации к расчету по методу MNA (Modified Nodal Analysis) стал для проекта фундаментом. Для решения системы я выбрали метод LU-декомпозиции (исключение Гаусса с частичным выбором ведущего элемента). Выбор пал именно на него, так как он обеспечивает идеальный баланс между вычислительной устойчивостью и производительностью в однопоточном JavaScript-окружении, позволяя обсчитывать матрицы умеренной размерности в

В основе симулятора лежит решение системы линейных уравнений вида:

AV=B

Где:

  • A — матрица проводимостей размерности M×M (M — количество электрических узлов).

  • V — вектор искомых потенциалов в узлах.

  • B — вектор источников тока и внешних воздействий.

Реальный мир нелинеен, увы. Светодиоды нельзя описать простым уравнением I=U/R. Для их симуляции используется кусочно-линейная модель (Piecewise-Linear Model).

Симулятор совершает до 10 итераций на каждый тик времени, чтобы найти точку сходимости. Каждый диод может находиться в двух состояниях:

  1. OFF (Закрыт): Моделируется как разрыв.

  2. ON (Открыт): Представляется как последовательное соединение малого внутреннего сопротивления (Ron​=10 Ом) и источника ЭДС, равного прямому падению напряжения Vf​.

Но это не значит что промежуточных состояний у него нет. Если подключить его к ШИМ (Широтно Импульсная Модуляция) порту и будет менять этот ШИМ, то и светодиод будет менять свою яркость. А так же, если ток, что проходит через светодиод превысит 30 мА, то он будет показан как сгоревший.

Симуляция микроконтроллера

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

Для связи кода с физикой мы эмулируем регистры через Object.defineProperties с реактивными геттерами и сеттерами.

Компонентная база

Конечно без достаточной компонентной базы все сделаное до этого не имело бы особого смысла. Графику для компонентов было решено делать в виде SVG. Вышло вроде сносно. Среди доступных на текущий момент компонентов есть:

  1. Микроконтроллер Arduino Uno R3.

  2. Макетная плата (Breadboard).

  3. Резистор (Resistor).

  4. Светодиод (LED).

  5. Тактильная кнопка (Push Button).

  6. Потенциометр (Potentiometer).

  7. Ультразвуковой дальномер (HC-SR04).

  8. LCD1602.

  9. Датчик температуры и влажности (DHT-11).

  10. Сервопривод.

  11. Коллекторный мотор (DC Motor).

  12. Двухканальный драйвер моторов.

Этого набора компонентов в теории хватит на простые проекты, чтобы пощупать систему и понять, что стоит дорабатывать, а где уже нормально.

Сама система сейчас выглядит так:

Планы на будущее

Я уже начал пытаться сюда добавить симуляцию отечественного микроконтроллера MIK32 АМУР. Понятное дело буду расширять компонентную базу, усиливать возможности эмуляции кода, и в целом продолжать развивать проект по мере сил.

Мне интересно ваше мнение, насколько это сейчас актуально, и что бы вы хотели увидеть в такой системе. Попробовать проект вы можете по ссылке через тунель https://modeled.cloudpub.ru/.

Комментарии (3)


  1. Andreas_Fogel
    29.05.2026 20:44

    Идея отечественного софта конечно интересная, но тогда надо было бы сразу для амура пилить. Если уже существуют, то проектирование актуально, только вот другие инструменты уже есть, надо лишь повторить. Очень сильно отталкивает навайбкоженный дизайн с явными промохами в нем, так как нейронка этого не видит, а просто пишет числа. Советую подумать над светлой темой и ключевыми цветами. Подумать о проектировании через экран смартфона.


  1. kvk-habr
    29.05.2026 20:44

    Идея стимуляции конечно интересно на первом этапе, с самых простых идей. Но хочется чтобы в этом проекте все таки были уже цифровые датчики, как DS18B20. И не ориентироваться только на дисплей LCD. Есть не мало других интересных дисплее TFT . Nextion почему то все время обходят стороной. А ведь на этой базе очень много, что интересного можно сделать.

    А вообще идея создания отечественного симулятора очень интересна и как учебная база, так и отработка в написании скетча.


  1. DungeonLords
    29.05.2026 20:44

    Предлагаю присоединиться к существующему проекту open source симулятора SimulIDE.