Руководства · 14 мин чтения

Симулятор Arduino в Tinkercad: схемы, код и виртуальный мультиметр

Симуляция Arduino в Tinkercad шаг за шагом: регистрация, схемы со светодиодом и датчиками на макетной плате, блочный и текстовый код, монитор порта, виртуальный мультиметр и Wokwi.

Симуляция Arduino в Tinkercad — самый простой способ собрать схему на Arduino и запустить её код, ещё не имея ни одной детали. В бесплатном браузерном Tinkercad Circuits от Autodesk ты подключаешь Arduino Uno к виртуальной макетной плате, добавляешь светодиоды, резисторы, кнопки и датчики, пишешь код и нажимаешь Start Simulation («Начать моделирование»): светодиод загорается, сервопривод поворачивается, а данные идут в монитор порта. Ни один светодиод не сгорит и ни одна плата не пострадает от неправильного подключения, ведь всё происходит на экране. Поэтому так много школьных курсов по Arduino начинаются с Tinkercad.

В этом руководстве ты начнёшь с создания аккаунта, соберёшь первую схему на макетной плате, разберёшься в разнице между блочным и текстовым кодом, посмотришь данные датчика в мониторе порта и на графике и измеришь напряжение, ток и сопротивление виртуальным мультиметром. Затем узнаешь о классах для учителей, о том, какие детали в Tinkercad есть, а каких нет, чем симуляция отличается от настоящей схемы и почему для ESP32 и Raspberry Pi Pico стоит перейти на Wokwi.

Плата Arduino Uno R3
Tinkercad симулирует плату Arduino Uno R3, поэтому собранная схема и написанный код переносятся на настоящую Uno с теми же пинами.

Что такое Tinkercad Circuits и как он работает?

Tinkercad — бесплатное веб-приложение Autodesk, объединяющее инструменты для 3D-моделирования, электроники и программирования. Его раздел электроники, Circuits, — преемник 123D Circuits, закрытого в 2017 году, и работает в любом современном браузере без установки. Проекты хранятся в облаке, так что схему, начатую на школьном компьютере, можно продолжить дома. Tinkercad не просто выполняет код, он ещё и рассчитывает электрическое поведение схемы: ток через резистор, напряжение на светодиоде, напряжение в любом узле. Программируемые платы — Arduino Uno R3, ATtiny и BBC micro:bit. Код для Arduino компилируется так же, как настоящим компилятором Arduino, и выполняется на виртуальном ATmega328P, поэтому код, работающий в Tinkercad, работает и на настоящей плате.

ПараметрTinkercad Circuits
ЦенаБесплатно (нужен аккаунт Autodesk)
УстановкаНе нужна; работает в браузере, проекты сохраняются в облаке
Программируемые платыArduino Uno R3, ATtiny, BBC micro:bit
ПрограммированиеБлоки, блоки + текст, текст (Arduino C++)
Встроенные библиотекиОколо 11: Servo, LiquidCrystal, Adafruit NeoPixel, IRremote, Keypad, Wire, SoftwareSerial, EEPROM и другие
ПриборыМультиметр, осциллограф, генератор сигналов, регулируемый источник питания
Готовые примерыStarters: базовые схемы, схемы с Arduino и micro:bit
Управление классомTinkercad Classrooms, до 250 учеников в классе
Переход на настоящую платуСкачай код как файл .ino и загрузи через Arduino IDE

Как создать аккаунт в Tinkercad?

  1. Открой в браузере tinkercad.com и нажми кнопку Sign Up («Регистрация») в правом верхнем углу.
  2. Выбери подходящий путь: личный аккаунт, если учишься самостоятельно, аккаунт учителя (Educators), если преподаёшь, или Join Class («Присоединиться к классу»), если учитель дал код класса.
  3. Для личного аккаунта продолжи с адресом электронной почты или аккаунтом Google. Аккаунт Tinkercad — это на самом деле аккаунт Autodesk, так что тот же вход подходит и для других сервисов Autodesk.
  4. После входа открой раздел Circuits в меню слева на главной панели и начни новую схему кнопкой Create («Создать»).
  5. Проект сохраняется автоматически. Tinkercad даёт ему случайное забавное имя; щёлкни по имени слева вверху и введи что-нибудь понятное, например «Светодиод и кнопка», чтобы потом его найти.

Ученикам младше 13 лет проще всего входить по коду класса и псевдониму, которые выдаёт учитель: электронная почта и пароль не нужны. Ученик нажимает Join Class на tinkercad.com, вводит код, а затем выданный псевдоним. При регистрации личного аккаунта у младших пользователей могут попросить согласие родителей. Подробности об аккаунтах учителей — в отдельном разделе ниже.

Знакомство с интерфейсом: рабочая область, детали и горячие клавиши

В редакторе схем слева большая рабочая область, а справа панель компонентов. По умолчанию панель показывает самые популярные базовые детали (Basic Components); чтобы увидеть всё, выбери в выпадающем меню All Components («Все компоненты») или введи в поиске название вроде «servo» или «ultrasonic». Ниже на панели в разделе Starters лежат около двух десятков готовых схем на Arduino. Перетащить одну из них в рабочую область, запустить симуляцию и прочитать её код — самый быстрый способ освоить новую деталь. Кнопки на верхней панели переключают вид схемы, автоматически нарисованную принципиальную схему и список компонентов.

КлавишаЧто делает
FВписывает всю схему в экран (Zoom to fit)
RПоворачивает выбранную деталь
N и Shift + NДобавляет заметку; скрывает или показывает заметки
Цифровые клавиши 0–9Меняют цвет выбранного провода
Shift + щелчокВыбирает сразу несколько деталей
Колесо мышиПриближает и отдаляет
DeleteУдаляет выбранную деталь или провод

Первая схема: светодиод, резистор и кнопка на макетной плате

Макетная плата
Настоящая макетная плата соединена внутри так же, как в Tinkercad: длинные шины по краям несут питание, а ряды по пять отверстий посередине держат детали.
  1. Перетащи с панели компонентов Arduino Uno R3 и макетную плату (Breadboard) и поставь их рядом. Если не знаешь, как макетная плата соединена внутри, сначала прочитай Что такое макетная плата?
  2. Поставь на макетную плату светодиод (LED). У светодиода в Tinkercad изогнутая ножка — анод (+), прямая — катод (−); наведи курсор на ножку, и Tinkercad покажет её название. Выбрав светодиод, можно сменить его цвет в открывшейся панели.
  3. Добавь резистор и подключи его последовательно с анодом светодиода. Выбрав резистор, укажи на панели значение 220 и единицу Ω; по умолчанию стоит 1 kΩ. Подходящий номинал для своего светодиода найдёшь в калькуляторе резистора для светодиода.
  4. Поставь кнопку (Pushbutton) поперёк выемки посередине макетной платы, чтобы противоположные ножки оставались разделёнными.
  5. Чтобы провести провод, щёлкни по пину или отверстию, затем по месту назначения; щелчки по пустым местам по пути изгибают провод. Свободный конец резистора подключи к D9, катод светодиода — к GND, одну ножку кнопки — к D2, а противоположную по диагонали — к GND.
  6. Раскрась провода: если питание красное, а земля чёрная, искать ошибки гораздо проще. Затем введи код ниже и нажми Start Simulation.
ПодключениеArduino Uno (Tinkercad)ESP32Raspberry Pi Pico
Анод светодиода (через 220 Ω)D9GPIO 18GP14
Катод светодиодаGNDGNDGND
Кнопка (другая ножка к GND)D2GPIO 4GP2
Движок потенциометраA0GPIO 34GP26 (ADC0)
Средний вывод TMP36 (Vout)A1GPIO 35GP27 (ADC1)
Питание потенциометра и TMP365V и GND3V3 и GND3V3(OUT) и GND
Две самые частые ошибки — вставить светодиод наоборот и забыть резистор. Перевёрнутый светодиод никогда не загорится. Если навести курсор на светодиод без резистора, Tinkercad покажет предупреждение, что ток превышает рекомендованные 20 mA, а светодиод, подключённый прямо к батарейке, «сгорает» с маленьким значком взрыва. А если случайно выбрать 220 kΩ вместо 220 Ω, светодиод светится так слабо, что кажется выключенным.

Пишем код: режимы Blocks, Blocks + Text и Text

Кнопка Code («Код») справа вверху открывает панель кода. Выпадающее меню наверху панели предлагает три режима. В режиме Blocks («Блоки») перетаскиваешь и соединяешь цветные блоки в стиле Scratch, так что пропущенная точка с запятой или опечатка невозможны. В режиме Blocks + Text («Блоки + текст») блоки остаются слева, а справа в реальном времени появляется код на Arduino C++, который Tinkercad из них генерирует; меняешь блок — и текст мгновенно меняется. Этот режим — лучший мост от блоков к настоящему коду. В режиме Text («Текст») пишешь на C++ напрямую, как в Arduino IDE. Блоки сгруппированы по цветам: Output, Input, Notation, Control, Math и Variables.

Блок (что делает)Эквивалент в режиме Text
Установить на пине HIGH или LOWdigitalWrite(9, HIGH);
Подождать заданное времяdelay(1000);
Прочитать цифровой пинdigitalRead(2)
Прочитать аналоговый пинanalogRead(A0)
Вывести в монитор портаSerial.println(value);
Повернуть сервопривод на уголservo.write(90); (с библиотекой Servo)
Повтор, если и иначеЦикл for, if и else
Создать и изменить переменнуюint counter = 0; counter = counter + 1; (переменная-счётчик)
Переход от блоков к тексту — улица с односторонним движением: изменения, сделанные в режиме Text, обратно в блоки не превращаются, а если вернуться к блокам, текстовый код пропадёт. Перед переключением сделай копию проекта (Duplicate), чтобы блочная версия осталась резервной и оба подхода можно было сравнить рядом.

Первая программа текстовым кодом: кнопка, светодиод и монитор порта

C++ (Arduino IDE)
1// Tinkercad ilk program: buton, LED ve Seri Monitör / First Tinkercad sketch: button, LED and Serial Monitor
2const int LED_PIN = 9;      // LED + 220 ohm direnç / LED + 220 ohm resistor
3const int BUTON_PIN = 2;    // butonun diğer ucu GND'de / other button leg goes to GND
4
5int basmaSayisi = 0;        // basma sayacı / press counter
6int oncekiDurum = HIGH;     // önceki buton durumu / previous button state
7bool ledAcik = false;       // LED durumu / LED state
8
9void setup() {
10  pinMode(LED_PIN, OUTPUT);
11  pinMode(BUTON_PIN, INPUT_PULLUP);   // basılınca LOW okunur / reads LOW when pressed
12  Serial.begin(9600);
13  Serial.println("Hazir / Ready");
14}
15
16void loop() {
17  int durum = digitalRead(BUTON_PIN);
18  if (durum != oncekiDurum) {                       // durum değişti / state changed
19    if (durum == LOW) {                             // yeni basış / new press
20      basmaSayisi++;
21      ledAcik = !ledAcik;                           // LED'i tersine çevir / toggle the LED
22      digitalWrite(LED_PIN, ledAcik ? HIGH : LOW);
23      Serial.print("Basma / Presses: ");
24      Serial.println(basmaSayisi);
25    }
26    delay(50);                                      // basma ve bırakmada debounce / debounce on press and release
27    oncekiDurum = durum;
28  }
29}

Кнопка читается с INPUT_PULLUP: резистор примерно 20–50 kΩ внутри Arduino держит пин в HIGH, а нажатие кнопки притягивает его к GND, и он читает LOW, так что дополнительный резистор не нужен. Программа реагирует только на переход из HIGH в LOW, то есть на новое нажатие, и каждый раз переключает светодиод. После запуска симуляции нажми кнопку Serial Monitor внизу панели кода и щёлкай мышью по кнопке: счётчик растёт на единицу с каждым нажатием. Как собрать ту же схему на настоящей плате, подробно описано в статье Как подключить кнопку к Arduino.

Монитор порта и график: следим за данными датчиков

Самое приятное в датчиках Tinkercad — их значения можно менять мышью. Во время симуляции щёлкни по датчику температуры TMP36, и появится ползунок, которым температура задаётся от −40 до 125 °C. Так же меняются уровень освещённости у фоторезистора и влажность у датчика влажности почвы, а у ультразвукового датчика расстояния и PIR-датчика движения перетаскиваешь появляющуюся перед ними цель, имитируя расстояние или движение. TMP36 выдаёт 0,5 V при 0 °C и прибавляет 10 mV на градус, так что при 25 °C даёт 0,75 V. Средний вывод подключи к A1, а крайние — к 5V и GND; код ниже читает это напряжение и переводит его в градусы Цельсия:

C++ (Arduino IDE)
1// TMP36 ile sıcaklık: Seri Monitör ve grafik / Temperature with TMP36: Serial Monitor and graph
2const int TMP36_PIN = A1;   // TMP36 orta ucu (Vout) / TMP36 middle pin (Vout)
3
4void setup() {
5  Serial.begin(9600);
6}
7
8void loop() {
9  int ham = analogRead(TMP36_PIN);         // 0-1023 arası ham değer / raw value 0-1023
10  float volt = ham * 5.0 / 1023.0;         // gerilime çevir / convert to volts
11  float sicaklik = (volt - 0.5) * 100.0;   // 0,5 V = 0 °C ve 10 mV/°C / 0.5 V = 0 °C and 10 mV/°C
12  Serial.println(sicaklik, 1);             // yalnız sayı: grafik için / number only: for the graph
13  delay(500);
14}

Открыв монитор порта, нажми на панели кнопку графика, чтобы увидеть приходящие числа в виде линейного графика; двигай ползунок датчика и смотри, как кривая поднимается и опускается. Для чистого графика выводи в каждой строке только число; если добавить подпись вроде «Temp: 24.5», график может сломаться или вовсе не нарисоваться. В поле внизу монитора можно ещё и ввести текст, отправить его и прочитать в коде через Serial.read(), то есть написать программу, которая включает светодиод с клавиатуры. Всё о последовательной связи — в статье Монитор порта Arduino.

Измеряем напряжение, ток и сопротивление виртуальным мультиметром

Главное отличие Tinkercad от Arduino IDE в том, что он рассчитывает схему электрически, поэтому измерять можно так же, как настоящим мультиметром. Перетащи с панели компонентов Multimeter (мультиметр); из двух клемм внизу чёрная — COM (−), а красная — измерительная (+). Щёлкни по мультиметру, чтобы выбрать режим измерения в открывшейся панели; значение появляется на его дисплее во время симуляции:

  • Напряжение: подключи щупы параллельно к двум точкам, между которыми хочешь измерить, например красный к движку потенциометра, а чёрный к GND.
  • Ток: разорви цепь в одной точке и включи мультиметр последовательно, например между D9 и резистором. Мультиметр в режиме тока, подключённый параллельно детали, — это короткое замыкание.
  • Сопротивление: отключи деталь, которую хочешь измерить, или оставь её без питания и подключи щупы к двум её ножкам. Резисторы в Tinkercad нарисованы с настоящими цветными полосками; тренироваться их читать можно в утилите «Цветовой код резисторов».
C++ (Arduino IDE)
1// Potansiyometre ile LED parlaklığı ve multimetre karşılaştırması
2// Potentiometer LED brightness and multimeter comparison
3const int POT_PIN = A0;   // potansiyometre orta ucu / potentiometer wiper
4const int LED_PIN = 9;    // PWM destekli pin / PWM-capable pin
5
6void setup() {
7  pinMode(LED_PIN, OUTPUT);
8  Serial.begin(9600);
9}
10
11void loop() {
12  int ham = analogRead(POT_PIN);                // 0-1023
13  float volt = ham * 5.0 / 1023.0;              // multimetreyle karşılaştır / compare with the multimeter
14  int parlaklik = map(ham, 0, 1023, 0, 255);    // PWM değeri / PWM value
15  analogWrite(LED_PIN, parlaklik);
16
17  Serial.print(ham);
18  Serial.print("  ");
19  Serial.print(volt, 2);
20  Serial.println(" V");
21  delay(300);
22}

Для этого опыта добавь в схему потенциометр: крайние выводы к 5V и GND, движок к A0. Когда ручка ровно посередине, мультиметр показывает 2,50 V, а монитор порта — сырое значение около 511 и 2,50 V, потому что 2,5 / 5 × 1023 ≈ 511. Увидеть, как оба значения совпадают, — лучший опыт, чтобы понять, как analogRead превращает напряжение в число. Теперь переключи мультиметр в режим тока, поставь его последовательно между D9 и резистором и выкрути потенциометр до конца: с красным светодиодом и 220 Ω будет примерно (5 − 2) / 220 ≈ 14 mA. Тот же расчёт можно сделать в калькуляторе закона Ома. В промежуточных положениях D9 выдаёт сигнал PWM, который постоянно включается и выключается; чтобы его увидеть, добавь осциллограф (Oscilloscope) и подключи красный щуп к D9, а чёрный к GND. На пине 9 у Uno частота PWM около 490 Hz, а analogWrite(128) рисует меандр, который половину времени в высоком уровне. Идея PWM объяснена в статье Что такое PWM?

Пошаговая отладка кода отладчиком

Если код не компилируется, Tinkercad автоматически открывает консоль ошибок под панелью кода и подсвечивает проблемную строку; сообщения похожи на сообщения Arduino IDE. Если код компилируется, но ведёт себя неправильно, используй отладчик (debugger): в режиме Text щёлкни по номеру строки, чтобы поставить точку останова, и запусти симуляцию. Программа остановится, дойдя до этой строки, а при наведении на переменную видно её текущее значение. Кнопки над панелью кода позволяют перейти к следующей строке или продолжить выполнение. Это гораздо быстрее, чем добавлять Serial.print в каждую строку, когда нужно выяснить, почему кнопка считается дважды или почему условие if никогда не выполняется. Значения частых сообщений компилятора собраны в статье Ошибки компиляции Arduino.

Какие детали есть в Tinkercad, а каких нет?

ГруппаЕсть в TinkercadНет (чем заменить)
ПлатыArduino Uno R3, ATtiny, BBC micro:bitArduino Nano и Mega, ESP32, ESP8266, Raspberry Pi Pico (проверяй на Uno или используй Wokwi)
ДатчикиДатчик температуры TMP36, фоторезистор, ультразвуковой датчик расстояния (3 и 4 вывода), PIR, датчики влажности почвы, газа, наклона, изгиба и силы, ИК-приёмникDHT11, DHT22 и MPU6050 (для температуры используй TMP36)
Дисплеи и светСветодиод, RGB-светодиод, LCD 16x2 (параллельный и I2C), 7-сегментный индикатор, лента и кольцо NeoPixelДисплеи OLED (SSD1306) и TFT (попробуй вместо них LCD)
Моторы и выходыDC-мотор, мотор с редуктором, микросервопривод, вибромотор, пьезозуммер, реле, H-мост L293DМодуль драйвера моторов L298N (используй L293D)
Элементы вводаКнопка, ползунковые и DIP-переключатели, потенциометр, клавиатура 4x4, ИК-пультRFID-считыватель RC522 и датчик отпечатков пальцев
Микросхемы и базовые деталиРезистор, конденсатор, катушка индуктивности, диод, стабилитрон, транзисторы NPN и PNP, MOSFET, 555, 74HC595, логические элементы, ОУ LM741, стабилизатор 7805Почти все базовые детали есть
СвязьСоединение нескольких Uno по последовательному порту (TX/RX) и I2CМодули Wi-Fi, Bluetooth (HC-05), nRF24L01 и GSM
Измерения и питаниеМультиметр, осциллограф, генератор сигналов, источник питания, батарейки 9 V, AA и таблеточныеРазряд батареек со временем и нагрев деталей
Фоторезистор (LDR)
Фоторезистор (LDR)
PIR-датчик движения
PIR-датчик движения
Ультразвуковой датчик HC-SR04
Ультразвуковой датчик HC-SR04
Сервопривод SG90
Сервопривод SG90

Чтобы добавить библиотеку, нажми в панели кода кнопку библиотек (значок с коробкой для файлов); когда выбираешь одну из примерно одиннадцати библиотек в списке, строка #include добавляется в начало кода. Если вписать библиотеку, которой нет в списке, например DHT.h, компилятор сообщит, что не может найти файл; загружать внешние библиотеки в Tinkercad нельзя. Содержимое файлов .h и .cpp небольших библиотек можно вставить прямо в код, но библиотека для оборудования, которого в Tinkercad нет, не заработает и так. Ещё одна важная деталь: в примерах I2C LCD в Tinkercad управляется библиотекой Adafruit_LiquidCrystal, а покупные модули на PCF8574 обычно работают с библиотекой LiquidCrystal_I2C и адресом 0x27 или 0x3F. При переходе на настоящую плату эти строки придётся поменять; подробности — в статье Дисплей I2C LCD.

Ограничения симуляции: чем она отличается от настоящей схемы

  • Время: симуляция идёт в браузере, поэтому при большой схеме или медленном компьютере она может идти медленнее реального времени. Тогда delay(1000) на экране длится дольше секунды, а millis() считает по собственным часам симуляции.
  • Идеальные детали: кнопки в Tinkercad не дребезжат, провода никогда не отходят, а аналоговые показания не так шумят, как в настоящей схеме. На настоящей плате нужны антидребезг и усреднение нескольких измерений.
  • Пределы питания: мотор или много светодиодов, которые прекрасно работают в симуляции, могут заставить настоящую Arduino перезагружаться или перегреть её стабилизатор. Возьми за правило брать с пина не больше примерно 20 mA и питать моторы от отдельного источника.
  • Выглядит подключённым — не значит подключено: если ножка плохо села в отверстие макетной платы, провод выглядит подключённым, но схема не работает. Наведи курсор на отверстие и проверь, подсвечиваются ли соединённые отверстия той же полоски.
  • Один файл, мало библиотек: код живёт в одной вкладке, а внешние библиотеки добавить нельзя, поэтому большие проекты организовывать трудно.
  • Особые символы: монитор порта не полностью поддерживает UTF-8, поэтому символы с диакритикой и не-английские буквы могут отображаться искажённо. Безопаснее всего ограничиться в последовательном выводе обычным ASCII.
  • Нет беспроводной связи: Wi-Fi, Bluetooth и интернет не симулируются, поэтому Tinkercad не подходит для проектов интернета вещей (IoT).

Tinkercad Classrooms для учителей

  1. При регистрации или в настройках профиля укажи роль учителя; функции классов доступны в аккаунтах учителей.
  2. Перейди на страницу Classes («Классы») из верхнего меню и создай класс кнопкой Create new class, указав название класса, возраст или год обучения и предмет.
  3. Через Add Students («Добавить учеников») введи имена учеников; Tinkercad создаёт для каждого псевдоним, уникальный внутри класса. Длинные списки не обязательно вводить по одному, их можно вставить; в классе может быть до 250 учеников.
  4. Покажи код и ссылку класса кнопкой Class Code. Ученики присоединяются, открыв ссылку и введя свой псевдоним, или введя код через Join Class на tinkercad.com; электронная почта и пароль не нужны.
  5. Следи за работами учеников на вкладке Designs («Проекты») на странице класса; щёлкни по имени ученика, чтобы открыть и отредактировать его проекты.

По умолчанию классы открываются в безопасном режиме (Safe Mode): ученики не могут делать свои проекты публичными, искать в галерее и видеть комментарии. Готовясь к урокам, можно использовать интерактивные уроки по Arduino в разделе Learn и схемы из Starters. Распространённый подход — учитель делится примером схемы, а ученики копируют и дорабатывают его. Если в классе есть физические наборы, сборка схемы сначала в Tinkercad, а потом из настоящих деталей заметно сокращает число перевёрнутых светодиодов и неправильно запитанных плат.

Переход из Tinkercad на настоящую Arduino

  1. Сохрани код на компьютер как файл .ino кнопкой загрузки в панели кода или скопируй текст.
  2. Открой файл в Arduino IDE; если IDE предложит переместить его в папку с тем же именем, соглашайся. Если IDE ещё не установлена, загляни в руководство по установке Arduino IDE.
  3. Выбери Arduino Uno в Инструменты › Плата (Tools › Board) и порт своей платы в Порт (Port), затем нажми «Загрузка» (Upload). Если загрузка не проходит, следуй шагам из статьи Код не загружается в Arduino.
  4. Собери схему с теми же пинами по своему рисунку в Tinkercad; удобно держать принципиальную схему открытой на втором экране.
  5. Исправь различия, которые симуляция не показывает: добавь кнопкам программный антидребезг, смени библиотеку и адрес I2C LCD, а если вместо TMP36 используешь другой датчик, например DHT11, обнови код под него.

ESP32 и Raspberry Pi Pico: Tinkercad или Wokwi?

В Tinkercad нет ни ESP32, ни Raspberry Pi Pico, и он не симулирует ни Wi-Fi, ни MicroPython. Для этих плат подойдёт Wokwi — другой симулятор, работающий в браузере. Помимо Arduino Uno, Mega и Nano Wokwi поддерживает семейство ESP32 и Pico, подключает ESP32 к виртуальной сети Wi-Fi и позволяет использовать большинство библиотек из Менеджера библиотек Arduino. Зато Wokwi не рассчитывает схему электрически: изменение номинала резистора не влияет на ток светодиода, а вместо мультиметра, измеряющего напряжение и ток, есть логический анализатор для цифровых сигналов. Коротко: эффективнее всего изучать основы электроники в Tinkercad, а код для ESP32 и Pico пробовать в Wokwi. Подробный разбор — в статье Симулятор Wokwi.

ПараметрTinkercad CircuitsWokwi
ПлатыArduino Uno R3, ATtiny, micro:bitUno, Mega, Nano, семейство ESP32, Raspberry Pi Pico, STM32 и другие
Электрическая симуляция (ток, напряжение)Да; мультиметр и осциллографОчень ограниченная; есть логический анализатор
Блочное программированиеДаНет
БиблиотекиОколо 11 встроенных библиотекБольшинство библиотек из Менеджера библиотек
Wi-Fi и интернетНетДа, с ESP32 и Pico W
MicroPythonНетДа, на Pico и ESP32
АккаунтОбязателенЧтобы попробовать, не нужен; для сохранения войди
Лучше всего дляОснов электроники, школьных уроков, первых шагов с ArduinoESP32, Pico, IoT и проектов с множеством библиотек

Ниже — версия программы с кнопкой и светодиодом на MicroPython для Raspberry Pi Pico. С подключениями GP14 и GP2 из таблицы пинов её можно запустить в Wokwi или на настоящей Pico через Thonny. На ESP32 можно использовать код для Arduino как есть, просто задав LED_PIN равным 18, а BUTON_PIN — 4. Чтобы начать с Pico, прочитай Что такое Raspberry Pi Pico?, а для ESP32 — Что такое ESP32?

MicroPython
1# Aynı program Raspberry Pi Pico'da (MicroPython) / The same program on Raspberry Pi Pico (MicroPython)
2from machine import Pin
3import time
4
5led = Pin(14, Pin.OUT)                  # LED + 220 ohm direnç / LED + 220 ohm resistor
6buton = Pin(2, Pin.IN, Pin.PULL_UP)     # butonun diğer ucu GND'de / other button leg goes to GND
7
8basma = 0                               # basma sayacı / press counter
9onceki = 1                              # önceki buton durumu / previous button state
10
11while True:
12    durum = buton.value()
13    if durum != onceki:                 # durum değişti / state changed
14        if durum == 0:                  # yeni basış / new press
15            basma += 1
16            led.toggle()                # LED'i tersine çevir / toggle the LED
17            print("Basma / Presses:", basma)
18        time.sleep_ms(50)               # basma ve bırakmada debounce / debounce on press and release
19        onceki = durum
20    time.sleep_ms(5)

Идеи проектов, которые стоит попробовать в Tinkercad

  • Светофор: перекрёсток с тремя светодиодами и кнопкой для пешеходов; пошаговая сборка — в статье Светофор на Arduino.
  • Ночник: светодиод, который включается, когда темнеет; работа с фоторезистором на настоящей плате описана в статье Фоторезистор (LDR).
  • Парктроник: ультразвуковой датчик и пьезозуммер, который пищит тем чаще, чем ближе препятствие; принцип измерения объяснён в статье Датчик расстояния HC-SR04.
  • Управление сервоприводом: задавай угол сервопривода потенциометром; код из статьи о сервоприводе работает и в Tinkercad.
  • Кодовый замок: дверной замок с клавиатурой 4x4, LCD и сервоприводом; библиотека Keypad из статьи о матричной клавиатуре есть и в Tinkercad.
  • Много светодиодов с немногих пинов: управляй 8 светодиодами с 3 пинов через сдвиговый регистр 74HC595; подробности — в статье 74HC595.
  • Две Arduino разговаривают: соедини крест-накрест линии TX и RX двух Uno и отправляй сообщения с одной на другую; Tinkercad симулирует несколько плат одновременно.
  • Мигалка на 555: собери мигающий светодиод без микроконтроллера и измерь частоту осциллографом; расчёты — в статье Таймер 555.

Частые ошибки и как их исправить

СимптомВероятная причинаРешение
Светодиод совсем не горитСветодиод перевёрнут, или обе ножки в одном ряду макетной платыИзогнутая ножка (анод) идёт к резистору; ставь ножки в разные ряды
Светодиод очень тусклыйРезистор выставлен на 220 kΩ вместо 220 Ω или оставлен на 1 kΩ по умолчаниюВыбери резистор и проверь значение и единицу
Предупреждение или значок взрыва на светодиодеНет резистора, ток выше 20 mAДобавь последовательно со светодиодом резистор 220–330 Ω
Монитор порта пустойНет Serial.begin(), или монитор не открытДобавь Serial.begin(9600) в setup() и открой монитор порта во время симуляции
График ничего не показываетРядом с числом выводится текстОтправляй через Serial.println() только число
Ошибка компиляции: библиотека не найденаПодключена библиотека, которой в Tinkercad нет (например, DHT.h)Используй библиотеку из списка или аналогичную деталь
Кнопка работает наоборотС INPUT_PULLUP пин при нажатии читает LOWПиши условие для LOW или используй внешний стягивающий резистор
Симуляция очень медленнаяМного деталей, длинная лента NeoPixel или очень частый Serial.printУпрости схему, добавь в цикл короткую паузу, закрой другие вкладки
Чтобы не сломать работающую схему, перед добавлением новой функции делай копию проекта и работай с копией. Если что-то пойдёт не так, вернуться к рабочей версии можно одним щелчком, а заодно получится готовый архив, чтобы показать на уроке этапы схемы шаг за шагом.

Tinkercad — лучшее место, чтобы бесплатно и без риска начать изучать Arduino: собираешь схему, измеряешь её, по шагам следишь за кодом и, когда всё готово, загружаешь тот же код в настоящую плату. Каждая схема, заработавшая виртуально, облегчает и первую попытку на столе. В приложении BlueGrays много проектов с пошаговыми схемами и кодом — от зажигания светодиода и светофора до проектов с кнопкой и фоторезистором, измерения расстояния HC-SR04 и общения двух Arduino, — так что схемы, собранные в Tinkercad, можно повторить из настоящих деталей. За вдохновением загляни в наш список идей проектов на Arduino.

Частые вопросы

Tinkercad бесплатный?

Да. Все инструменты Tinkercad, включая Tinkercad Circuits, бесплатны; нужен только аккаунт Autodesk. Ученики могут присоединиться и без электронной почты по коду класса от учителя. Ничего устанавливать не нужно: достаточно современного браузера и подключения к интернету.

Есть ли в Tinkercad ESP32 или Raspberry Pi Pico?

Нет. Единственные программируемые платы в Tinkercad — Arduino Uno R3, ATtiny и BBC micro:bit. Для симуляции ESP32, ESP8266 или Raspberry Pi Pico можно использовать Wokwi, который поддерживает ещё и Wi-Fi у ESP32 и MicroPython на Pico.

Можно ли добавлять библиотеки в Tinkercad и использовать DHT11?

Загружать внешние библиотеки в Tinkercad нельзя; доступны только примерно одиннадцать библиотек из списка в панели кода, например Servo, LiquidCrystal, Adafruit NeoPixel, IRremote и Keypad. Датчиков DHT11 и DHT22 нет и в списке деталей. Для измерения температуры используй датчик TMP36 с analogRead.

Работает ли код из Tinkercad на настоящей Arduino?

Да, потому что Tinkercad компилирует стандартный код Arduino C++. Скачай файл .ino из панели кода, открой его в Arduino IDE и загрузи в плату. Может понадобиться только заменить библиотеки, специфичные для Tinkercad (например, Adafruit_LiquidCrystal для I2C LCD), на подходящую для твоего настоящего модуля и добавить кнопкам антидребезг.

Что лучше: Tinkercad или Wokwi?

Каждый силён в своём. Tinkercad рассчитывает схему электрически и предлагает мультиметр и блочное программирование, поэтому лучше подходит для основ электроники и школьных уроков. Wokwi выделяется в продвинутых и IoT-проектах благодаря ESP32, Pico, Wi-Fi и широкой поддержке библиотек.

Как ученики входят в Tinkercad?

Учитель даёт ссылку на класс или код класса и псевдоним. Открой ссылку и введи свой псевдоним либо нажми Join Class на tinkercad.com и введи код, а затем псевдоним. Электронная почта и пароль при этом не нужны; если у тебя уже есть свой аккаунт, войди в него и присоединись к классу с главной панели.

Все проекты
Мигающий светодиод
#1Новичок

Мигающий светодиод

Самое первое «привет» в электронике: включение и выключение одного светодиода. Arduino включает и выключает светодиод через короткие промежутки, поэтому свет быстро мигает. Ты самым простым способом в

4.6(188)
1127
Светофор
#3Новичок

Светофор

Крошечная копия светофора, который ты каждый день видишь на дороге. Красный горит две секунды, жёлтый мигает на мгновение, зелёный горит две секунды, затем через жёлтый снова возвращается красный, и т

4.8(131)
397
Управление светодиодом кнопкой (удержание)
#9Новичок

Управление светодиодом кнопкой (удержание)

Как дверной звонок: свет горит, пока ты нажимаешь, и гаснет, когда отпускаешь. Arduino всё время слушает кнопку; пока она нажата, светодиод горит, а как только ты убираешь палец, он гаснет. Эта просте

4.8(113)
229
Измерение освещённости с LDR
#11Новичок

Измерение освещённости с LDR

Хочешь увидеть яркость своей комнаты в виде числа? LDR — маленькая деталь, реагирующая на свет, — измеряет освещённость вокруг, а Arduino каждые полсекунды выводит значение на экран компьютера. Закрой

4.6(81)
139
Работа с зуммером
#13Новичок

Работа с зуммером

Интересно, как дверной звонок или сигнализация издают звук? Arduino заставляет маленький зуммер пищать через короткие промежутки: пик, пауза, пик, пауза. Ты видишь, как электричество превращается в зв

4.7(89)
161
Измерение расстояния HC-SR04 (вывод в порт)
#27Новичок

Измерение расстояния HC-SR04 (вывод в порт)

Датчик HC-SR04 работает совсем как летучая мышь, которая находит дорогу в темноте: он посылает звук, которого ты не слышишь, слушает эхо и измеряет, насколько далеко предмет перед ним. Arduino каждые

4.6(46)
71
Работа с сервоприводом
#35Новичок
Premium

Работа с сервоприводом

Рычаг маленького сервопривода по очереди поворачивается в три положения: до упора в начало, ровно на середину и до упора в конец, задерживаясь на каждой остановке на две секунды. Arduino сообщает мото

4.7(48)
67
Односторонняя связь между двумя Arduino
#57Средний
Premium

Односторонняя связь между двумя Arduino

Ты заставляешь две Arduino разговаривать по одному проводу: нажми кнопку на одной, и на другой загорится светодиод, нажми снова — погаснет. Плата-передатчик сообщает о нажатии кнопки коротким сообщени

4.4(37)
50