Платы и направления

Какие платы есть и чем они отличаются в работе.

ESP32

Основная плата, ради которой всё затевалось. Два ядра Xtensa LX6, исполняется настоящая прошивка, собранная настоящим arduino-cli.

Что смоделировано, а что нет — на отдельной странице: «Что эмулятор умеет и чего не умеет». Прочитать её стоит до того, как тратить вечер на поиск ошибки у себя: несмоделированный блок не роняет прошивку, скетч соберётся, запустится и просто ничего не покажет.

Arduino Uno, Nano и Mega 2560

Работают: ставятся на схему, запускаются, есть в отборе галереи и в примерах.

Поддержка AVR — это не «ещё одна плата», а второй эмулятор: другая система команд, гарвардская память, другая периферия целиком, отдельный путь сборки под .hex. Общего с ядром ESP32 там ноль строк.

Отсюда две особенности, которые видны в работе.

У Arduino есть перемотка времени, у ESP32 нет. Состояние ATmega328P — два с половиной килобайта, сотня снимков занимает четверть мегабайта. У ESP32 состояние полмегабайта, и сотня снимков съела бы полсотни мегабайт памяти вкладки. См. «Отладчик».

На Arduino другие ограничения по выводам. ШИМ есть не на всех выводах, прерывания — только на 2 и 3. Разбор схемы про это знает и скажет; подсказки в редакторе тоже — они не предложат ledcWrite там, где его нет.

Схемы без контроллера

Два направления, в которых платы нет вовсе.

12 В постоянного тока — лампы, светодиоды, реле, предохранители, моторы, приборы, а также замок зажигания, генератор и реле-прерыватель поворотников. На этом объясняют электричество и собирают проводку автомобиля. См. «Схемы 12 В».

230 В переменного тока — ввод (одно- и трёхфазный), счётчик, автоматы, УЗО, дифавтоматы, шины N и PE, выключатели, розетки, контакторы. Квартирный щиток целиком. См. «Схемы 230 В».

Кабель там — отдельная деталь с сечением, длиной и материалом жилы: из них считаются допустимый ток и потеря напряжения.

Прошивки в таких проектах нет: есть схема, расчёт и ход времени.

Bluetooth

Нет и не планируется — по той же причине, что и радиочасть Wi-Fi: контроллер работает через двоичные библиотеки Espressif, исходников и описания регистров нет. Исполнять там нечего.

Wi-Fi при этом работает — но через виртуальную сеть, подменённую на уровне сокетов, а не на уровне WiFi.begin(). Прикладной код примера остаётся настоящим, поэтому урок про NTP учит NTP.