Датчики для ночника ехали с маркетплейса девять дней. Девять вечеров я смотрел на макетку с одним светодиодом и переписывал логику вслепую, гадая: а что сделает фоторезистор у самого порога? Потом поставил браузерный симулятор, собрал ночник на фоторезисторе на экране за двадцать минут, поймал в нём две ошибки автоматики — и физическая сборка после этого заняла полчаса без единого сюрприза. Доставка с маркетплейса: 5–14 дней. Симулятор в браузере: секунд двадцать до первого запуска. Эта разница и есть предмет урока.
Симулятор не заменяет железо — он его готовит. Ниже: что умеет Wokwi и чем отличаются соседи, где симулятор честен, а где он вас уверенно обманет, и зачем при живом симуляторе всё-таки держать на столе несобираемую макетку-стенд.
Отдельная история — страх «а вдруг я сломаю плату». Новичок боится перепутать плюс и минус настолько, что не подключает ничего. Симулятор этот барьер снимает: там невозможно сжечь ни пин, ни светодиод, и первая схема собирается без единого последствия. Пусть привычка «сначала проверь идею» закрепится на виртуальной макетке — потом она автоматически перенесётся на настоящую, где цена оплошности уже не ноль. И приятный бонус: правки кода в симе применяются мгновенно — никакой заливки по проводу, никакого переподключения, нажал Play и сразу видишь результат.
Wokwi и соседи: кто что умеет
Wokwi — браузерный симулятор с самой широкой линейкой плат: Uno, Mega, Nano, ESP32, Raspberry Pi Pico, STM32 Blue Pill. Схема собирается мышкой из палитры, её состояние хранится в diagram.json, код — обычный скетч, библиотеки подтягиваются из реестра по имени. Запуск — кнопка Play: Serial Monitor и Serial Plotter встроены, к пинам можно подключить логический анализатор и посмотреть фронты, как на настоящем приборе. Проект живёт по ссылке: отправили её в форумную тему — собеседник открыл схему вместе с кодом, без фотографий макетки с четырёх ракурсов. Для Arduino бесплатно, есть расширение для VS Code и консольная утилита для гонок симуляций в автоматизации.
Tinkercad Circuits от Autodesk — второй по узнаваемости: проще, наряднее, компонентов меньше, ESP32 нет. Для первой мигалки и школьной демонстрации — отлично, для ночника с гистерезисом и связкой по UART — тесно. Десктопные SimulIDE и Proteus сильнее в аналоговой части, но Proteus платный, а SimulIDE требует установки и не умеет шарить проекты ссылкой. Моё мнение с границей: для проверки логики ардуинного скетча я беру Wokwi — скорость запуска и обмен ссылками перевешивают; Tinkercad оставляю самым юным ученикам, а десктопные симуляторы трогаю, только когда нужен честный аналоговый узел. И следите за палитрой: компоненты добавляются каждый месяц, то, чего не было год назад, сегодня может стоять в первой строке — перед стартом проекта гляньте список заново, а не по памяти.
Где симулятор честен, а где врёт
Честен он там, где живёт логика: if/else, автомат состояний, Serial-протокол, тайминги на millis — считается тем же кодом, что и на плате. Если в симуляции автомат зависает, он зависнет и в железе; если парсер команд срезает последний символ — он срежет его и на Uno. Протоколы обмена я поэтому и продумываю в симе: там виден каждый байт, и кривую логику видно в первый же прогон. Именно поэтому симулятор — лучшая проверка головы до того, как голова начала жечь пины: ошибки логики там ловятся бесплатно, бесконечно и без запаха горелого.
Врёт симулятор там, где живёт физика. Кнопка в нём идеальна: одно нажатие — один фронт, никакого дребезга, и debounce в симе «не нужен». Светодиод горит без резистора — в железе сгорит. Токи, просадки питания, нагрев стабилизатора, наводки от реле, дребезг контактов — всё это живёт только в железе, и никакая симуляция его не покажет. Отсюда рабочее правило: симулятор проверяет вашу голову, стенд — руки, финальная сборка — нервы. Порядок именно такой, и перепрыгивать через ступеньку можно, но каждый прыжок вы оплатите деталями.
Отдельный слой — тайминги. delay и millis в симуляторе тикают в виртуальном времени, и секунда там — настоящая секунда: скетч с неблокирующей логикой покажет в браузере ровно те же интервалы, что и на плате. А вот узкие места реального UART — буферы, потери при переполнении, ошибки на границе бодов — не воспроизводятся: виртуальный провод идеален и никогда не шумит. Поэтому связки «два устройства по проводу» я проверяю в симе на логику, а на честность канала — только в железе.
Стенд: макетка, которая не разбирается
Стенд — это макетка, которую я собрал год назад и с тех пор не разбирал. На ней постоянно живут: светодиод с резистором 220 Ом на пине 12, кнопка на пине 2 с INPUT_PULLUP, потенциометр на A0. Любой новый скетч сначала заливается сюда: воткнул USB, поправил код, посмотрел. Половина «глюков платы» на самом деле плохой контакт свежесобранной макетки — стенд, прошедший сотню скетчей, такие подозрения отсекает мгновенно, потому что на нём контактам давно не к чему греться.
Собрать его — десять минут и три детали: механику сборки мы проходили в уроке про макетку и при посадке светодиода на breadboard. Порядок работы, который экономит пины и вечера: идея — в симуляторе, первый запуск — на стенде, финальная схема — уже паяльная или витринная. Ошибки логики симулятор ловит бесплатно, ошибки сборки стенд ловит на дешёвых деталях, до финальной сборки доезжает проверенный код. Serial-вывод при этом везде одинаковый: монитор симулятора и монитор порта IDE печатают одно и то же, так что отладка не перезапускается с нуля на каждом этапе.
const int T_ON = 300; // включаем, когда стало темнее этогоconst int T_OFF = 450; // выключаем, только когда посветлело сильно void loop() { int svet = analogRead(A0); if (svet < T_ON) { digitalWrite(12, HIGH); // темно — светим } else if (svet > T_OFF) { digitalWrite(12, LOW); // светло — гасим } // между 300 и 450 ничего не делаем: // это и есть гистерезис, реле не трещит}| Инструмент | Где живёт | Сильная сторона | Граница |
|---|---|---|---|
| Wokwi | браузер | Uno, Mega, Nano, ESP32, Pico; Serial и анализатор; шаринг ссылкой | физику не считает: ток, тепло, дребезг |
| Tinkercad Circuits | браузер | самый простой вход, наглядные схемы | компонентов меньше, ESP32 нет |
| SimulIDE | десктоп | честнее аналоговая часть, AVR и PIC | установка, нет шаринга проектом |
| Proteus | десктоп, платный | промышленный уровень симуляции | цена; для учебной мигалки избыточен |
| Физический стенд | макетка на столе | правда целиком: контакты, токи, дребезг | нужны детали и время; ошибки дороже, чем в симе |
Пришло железо — и это уже не прыжок в темноту: логика проверена, гистерезис прописан, Serial-вывод разложен по полочкам. Переносим схему с экрана на макетку: пины те же, резистор на место, общий GND не забываем — это правило из урока про рельсы питания. Первая заливка и выбор порта — то, что мы проходили при подключении платы, монитор порта пригодится в первую же минуту. А пока посылка едет, симулятор примет ещё десяток гипотез: за вечер их перебирается больше, чем за месяц ожидания доставки. Привычку «подписывать вывод» заберите с собой: пары вида имя=значение, которые мы печатаем ниже, на настоящем Serial Plotter превращаются в опознаваемые линии, а безымянные числа — в кучу одинаковых графиков.
- 1. Где симулятор врёт по сравнению с настоящей платой?
- 2. Ночник в Wokwi работает, а на железе реле трещит на границе света. Что не проверил симулятор?
- 3. Как быстрее всего показать собеседнику на форуме свою симуляцию в Wokwi?
- 4. Что такое физический стенд из этого урока?
- 5. Какой порядок работы даёт меньше сгоревших пинов и потерянных вечеров?
- Wokwi крутит Uno, Mega, Nano, ESP32, Pico в браузере: схема в diagram.json, Serial и анализатор на борту, проект делится ссылкой
- Симулятор честен в логике, протоколах и таймингах millis; дребезг, токи, тепло и наводки он не покажет никогда
- Кнопки и реле в симе «работают» не значит работают: debounce 50 мс добавляйте до стендового запуска
- Tinkercad — самый простой вход, SimulIDE и Proteus — десктоп для аналоговой честности; для логики ардуинного скетча Wokwi вне конкуренции
- Стенд — несобираемая макетка со светодиодом, кнопкой и потенциометром; порядок симулятор → стенд → финальная сборка экономит пины
Частые вопросы по теме урока
- Где симулятор врёт по сравнению с настоящей платой?
- Кнопка в симе идеальна: один клик — один фронт. Реальная дребезжит миллисекунды, и каждый дребезг — событие. Поэтому debounce обязателен в железе независимо от того, что показала симуляция. На дребезге кнопки, токах и наводках — их там просто нет
- Ночник в Wokwi работает, а на железе реле трещит на границе света. Что не проверил симулятор?
- У границы порога фоторезистор в железе плавает от наводок и вспышек лампы — реле трещит. Разные пороги на включение и выключение лечат это; в симе свет меняется ползунком, и эффект не проявляется. Гистерезис: включать ниже 300, выключать выше 450
- Как быстрее всего показать собеседнику на форуме свою симуляцию в Wokwi?
- Проект в Wokwi живёт по URL: собеседник открывает ссылку и получает всю схему и код целиком. Для форумных вопросов это быстрее фотографий макетки с четырёх ракурсов. Отправить ссылку на проект — откроются схема и код
- Что такое физический стенд из этого урока?
- Стенд — несобираемая мини-макетка: воткнул USB, залил скетч, проверил гипотезу за минуту. Симулятор перед ним, пайка после него. Макетка с вечно подключёнными светодиодом, кнопкой и потенциометром — полигон для скетчей
- Какой порядок работы даёт меньше сгоревших пинов и потерянных вечеров?
- Симулятор ловит ошибки логики бесплатно, стенд — ошибки сборки на дешёвых деталях, финальная сборка получает проверенный код. Пины и модули гибнут в основном на сырых схемах, собранных сразу начисто. Сначала логика в симуляторе, потом стенд, потом финальная схема