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

План урока по ESP32: подготовка к первому занятию и ход урока на 40 минут

План урока по ESP32: на первом занятии каждая группа загружает код и зажигает светодиод. Чек-лист подготовки, материалы на 24 ученика, ход урока на 40 минут, код и 8 быстрых решений.

Когда составляешь план урока по ESP32, сведи первое занятие к одной цели: к концу урока каждая группа загружает код в свою ESP32 и зажигает светодиод. Wi-Fi, датчики и управление с телефона — дело следующих уроков. Хватит ли 40 минут, зависит не столько от того, что происходит на уроке, сколько от того, что сделано до него: установлен ли драйвер USB-UART-преобразователя, есть ли в Arduino IDE пакет плат ESP32 и действительно ли кабель на парте передаёт данные? Если эти три пункта готовы, первая загрузка занимает пять минут; если нет, половина урока уходит на «порт не виден».

В этой статье — комплект, который можно взять на урок уже завтра: чек-лист для копирования на неделю до урока, на день до него и на утро урока, таблица материалов, ход 40-минутного урока по минутам, два скетча, которые компилируются без ошибок, пять отличий ESP32 от Arduino Uno, решения за минуту для восьми самых частых проблем и вопросы на выходе. Допустим, в классе 24 ученика и ты делишь их на 8 групп по три человека; все числа ниже рассчитаны на это. Если урок длится 45 или 50 минут, лишнее время — твой запас. Если ESP32 для тебя пока в новинку, сначала загляни в статью «Что такое ESP32?».

Плата ESP32 DevKit на 30 пинов: порт Micro-USB, кнопки BOOT и EN, модуль ESP32-WROOM-32 и два ряда пинов
Плата для первого урока — ESP32 DevKit на 30 пинов. Перед началом найди вместе с учениками на плате USB-порт, кнопки BOOT и EN и пины D5, GND и 3V3.

Цель первого урока: почему всего один светодиод?

На первом уроке по ESP32 есть два пути: показать впечатляющий проект с Wi-Fi или дать каждому своими руками запустить что-то маленькое. Второй путь учит гораздо большему. Чтобы зажечь светодиод, ученику нужно один раз пройти всю цепочку от начала до конца: открыть код, выбрать плату и порт, скомпилировать, загрузить, собрать схему, увидеть результат, затем изменить значение и загрузить снова. Когда эта цепочка работает, на следующих уроках добавляются только новые детали. Если перейти к Wi-Fi раньше, пароли от сети, драйверы и кабели наслаиваются друг на друга, и понять, что из них вызывает ошибку, становится почти невозможно. Поэтому в этом плане на первом уроке сети нет: сначала встроенный светодиод платы, потом один внешний светодиод на макетной плате, а для быстрых групп — оба по очереди.

Чек-лист подготовки к уроку

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

  • Пересчитай платы и проверь модель. Этот план написан для ESP32 DevKit на 30 пинов (с модулем ESP32-WROOM-32); на платах с 38 пинами код тот же, отличается только порядок пинов.
  • Прочитай надпись на маленькой микросхеме рядом с USB-портом платы: CP2102, CH340 или CH9102? От этого зависит, какой драйвер нужен.
  • Пусть на компьютеры в классе установят Arduino IDE 2. Для установки на школьных компьютерах обычно нужны права администратора, так что договорись о времени с системным администратором.
  • В Arduino IDE установи пакет esp32 by Espressif Systems через «Менеджер плат» (Boards Manager). Он скачивает сотни мегабайт; если делать это в школьной сети прямо на уроке, 40 минут может не хватить.
  • Установи драйвер USB-UART-преобразователя, подключи плату и проверь, что в меню «Инструменты › Порт» (Tools › Port) появляется новый порт.
  • Проверь кабели: загрузи скетч в плату через каждый из них, отложи кабели только для зарядки, а кабели с передачей данных отметь цветной изолентой.
  • Вставь ESP32 в макетную плату и посмотри, остаются ли свободные отверстия с обеих сторон. Если нет, каждой группе понадобятся две макетные платы.
  • Узнай ограничения школьной сети: ESP32 подключается только к Wi-Fi 2,4 GHz, а с корпоративными сетями, которые спрашивают имя пользователя и пароль, справиться трудно. На первом уроке Wi-Fi не понадобится, но для следующих уроков эти сведения нужны уже сейчас.
Ловушка кабеля только для зарядки: часть кабелей Micro-USB и USB-C из ящика рассчитана только на зарядку, и проводов для данных в них нет. С таким кабелем светодиод питания на плате загорается, ученику кажется, что плата работает, но порт в Arduino IDE так и не появляется. Первое, что должна сделать группа со словами «порта нет», — заменить кабель. Отметь проверенные кабели с передачей данных и не используй на первом уроке кабели, принесённые учениками из дома.

Накануне каждый компьютер должен быть готов к уроку: цель в том, чтобы на уроке не осталось ни одного шага установки, который делается впервые. Выдели десять минут и утром в день урока. Оба списка собраны в одном месте:

  • Накануне: сделай пробную загрузку на каждом компьютере. Подключи плату, выбери ESP32 Dev Module и порт, загрузи скетч со встроенным светодиодом и убедись, что светодиод мигает. Первая компиляция может занять больше минуты; эта проба заодно ускоряет следующие компиляции.
  • Накануне: в Windows наклей сбоку на компьютер наклейку с номером порта (COM3, COM5 и т. д.). Одна и та же плата в одном и том же USB-разъёме обычно получает тот же номер.
  • Накануне: собери коробки для групп: плата, кабель, макетная плата, два светодиода, два резистора 220 Ω, четыре перемычки. Запасной набор держи на столе учителя.
  • Накануне: сохрани оба скетча на рабочий стол каждого компьютера; если интернет начнёт тормозить, ученики откроют код оттуда.
  • Накануне: проверь, что проект «Мигание встроенным светодиодом ESP32» открывается в BlueGrays на проекторе.
  • Утром в день урока: включи компьютеры, открой Arduino IDE и проверь, что плата по-прежнему выбрана как ESP32 Dev Module.
  • Утром в день урока: нарисуй на доске простую схему платы: USB-порт, BOOT, EN, GND, 3V3 и GPIO5 (на плате подписан как D5).
  • Утром в день урока: напиши в углу доски одну строку: «Застряло на Connecting...? Держи BOOT».
  • Утром в день урока: в последний раз пересчитай светодиоды и резисторы в коробках и положи кабели сверху.

Драйвер, пакет плат и BOOT: что нужно знать

В «Менеджере плат» Arduino IDE можно увидеть два пакета ESP32. Для школьных плат правильный — пакет esp32 от Espressif; пакет «Arduino ESP32 Boards» предназначен для собственной платы Arduino — Nano ESP32. После установки выбери ESP32 Dev Module в меню «Инструменты › Плата › esp32». Если пакета нет в списке, нужно добавить адрес пакета Espressif в поле «Дополнительные ссылки для Менеджера плат» в меню «Файл › Настройки» (File › Preferences); шаги описаны в статье «Что такое ESP32?». Скетчи для ESP32 компилируются дольше, чем для Uno: даже для мигания светодиодом первая компиляция может занять больше минуты. Скажи об этом ученикам заранее, иначе они будут снова и снова нажимать «Загрузка» (Upload), пока индикатор выполнения будто стоит на месте. Какой драйвер ставить, определяет USB-UART-преобразователь на плате:

USB-UART-преобразовательКак узнать на платеИмя порта в WindowsПримечание
CP2102 / CP2104Маленькая квадратная микросхема рядом с USB-портом, с надписью CP2102 или SiLabsSilicon Labs CP210x USB to UART Bridge (COMx) в разделе «Порты»Windows часто устанавливает драйвер автоматически; если нет, нужен драйвер CP210x от Silicon Labs
CH340 (CH340C, CH340G)Прямоугольная микросхема с надписью CH340USB-SERIAL CH340 (COMx) в разделе «Порты»Нужен драйвер CH340 от WCH; иногда его автоматически ставит Центр обновления Windows
CH9102Маленькая квадратная микросхема на новых платах, с надписью CH9102USB-Enhanced-SERIAL CH9102 (COMx) в разделе «Порты»Нужен драйвер CH9102/CH343 от WCH; драйвер CH340 эту микросхему не распознаёт

Кнопка BOOT подключена к пину GPIO0 ESP32. В начале загрузки плата должна войти в режим программирования; большинство DevKit делают это автоматически с помощью двух сигналов от USB-UART-преобразователя. С некоторыми сочетаниями платы и кабеля это автоматическое переключение не срабатывает: точки после «Connecting...» в выводе всё тянутся, и в итоге появляется ошибка «Failed to connect to ESP32». Решение: зажать BOOT, как только появится «Connecting...», и отпустить, когда побегут строки прогресса, начинающиеся с «Writing at». Кнопка EN перезапускает плату; если загрузка завершена, а код как будто не работает, достаточно один раз нажать EN. Если на одной и той же плате проблема повторяется, обычно помогает снизить Upload Speed в меню «Инструменты» с 921600 до 115200. В macOS имя порта обычно начинается с cu.usbserial или cu.SLAB_USBtoUART.

Не используй Wi-Fi на первом уроке. ESP32 подключается только к сетям 2,4 GHz; школьные сети часто требуют имя пользователя и пароль или открывают в браузере страницу входа, а ESP32 через такие страницы не проходит. Когда дойдёт очередь до урока по Wi-Fi, самый практичный путь — точка доступа на телефоне учителя, настроенная на диапазон 2,4 GHz. Это тоже проверь накануне на своей плате.

Список материалов: на группу и на класс из 24 учеников

Если разделить 24 ученика на группы по три, получится 8 групп; с одним запасным набором нужно подготовить 9 наборов. Если удобнее работать парами, нужно 12 групп и запасной набор, то есть 13 наборов, и соответственно больше компьютеров. Паять ничего не нужно. Почему по два светодиода и по два резистора на группу, объяснить просто: светодиод, вставленный наоборот или со сломанной ножкой, на первом уроке встречается очень часто, а заставлять группу ждать не хочется.

Что нужноНа группуНа класс (8 групп + 1 запасной набор)Примечание
ESP32 DevKit (30 пинов, ESP32-WROOM-32)19Только одна модель: при разных моделях путается порядок пинов
USB-кабель с передачей данных (Micro-USB или USB-C, в зависимости от платы)1112 запасных кабеля; все проверены и помечены
Макетная плата (830 отверстий)192 на группу, если плата не помещается (18 на класс)
Красный светодиод 5 мм220Красный светодиод без труда горит от 3,3 V
Резистор 220 Ω220Цветные полосы: красный-красный-коричневый
Провод-перемычка «папа–папа»4около 40Для GND всегда бери чёрный
Компьютер с Arduino IDE и пакетом ESP3218 + компьютер учителяС наклейкой с номером порта
Телефон или планшет с открытым BlueGrays1 (по желанию)8Чтобы смотреть схему и код; подойдёт и проектор
Коробка или пакет для деталей19В конце урока пересчитай всё и забери обратно
ESP32 DevKit на 30 пинов занимает почти всю стандартную макетную плату и оставляет только один ряд отверстий с одной стороны. Вставь плату так, чтобы свободные отверстия остались со стороны пинов D5 и GND, и собирай светодиод с резистором на этой стороне. На этой плате D5, GND и 3V3 находятся в одном ряду, поэтому схема первого урока помещается на одной стороне. Если места всё равно нет, поставь две макетные платы рядом и вставь один ряд пинов платы в одну, а второй — в другую. Вынимая плату, поднимай её ровно за оба конца, чтобы не погнуть пины.

Ход урока на 40 минут

Ход урока построен на двух бесплатных проектах BlueGrays: сначала «Мигание встроенным светодиодом ESP32» (без схемы, только плата и кабель), затем «Мигающий светодиод на ESP32» (GPIO5, резистор 220 Ω и светодиод). В обоих проектах список деталей, схема, код, блоки и Разбор кода открыты бесплатно. Раздай в каждой группе три роли и меняй их на каждом этапе: клавиатура, сборка схемы, чтение схемы и кода с телефона или проектора. Так никто не проводит все 40 минут, просто наблюдая.

МинутыЭтапУчительУченики
0–4Вступление и цельПоднимает плату и называет единственную цель: «До звонка каждая группа загрузит свой код и зажжёт светодиод». Упоминает, что в плате, как и в телефонах, есть Wi-Fi, но сегодня он не понадобится.Распределяют роли, открывают коробку, пересчитывают детали.
4–9Знакомство с платойПо рисунку на доске показывает USB-порт, кнопки BOOT и EN и пины GND, 3V3 и GPIO5; предупреждает про 3,3 V.Находят эти места на своей плате и отмечают, где встроенный светодиод.
9–17Первая загрузка: встроенный светодиодОткрывает на проекторе проект «Мигание встроенным светодиодом ESP32», один раз показывает выбор платы и порта, напоминает про BOOT.Открывают или копируют код, выбирают ESP32 Dev Module и порт, загружают; светодиод мигает раз в секунду.
17–21Изменить одно значениеСпрашивает: «Что будет, если вместо 1000 написать 200?» — и сначала просит прогноз.Делают прогноз, меняют оба значения delay(), загружают снова и сравнивают результат с прогнозом.
21–31Схема с внешним светодиодомВыводит на проектор схему проекта «Мигающий светодиод на ESP32», показывает длинную ножку светодиода и место резистора, обходит группы и проверяет каждую схему при отключённом USB.Отключают USB, собирают цепь GPIO5 → 220 Ω → длинная ножка светодиода, короткая ножка → GND, после одобрения учителя загружают код.
31–35Мини-заданиеДаёт быстрым группам дополнительное задание: пусть встроенный и внешний светодиоды мигают по очереди. У групп, где что-то не получается, сначала проверяет кабель и направление светодиода.Делают оба пина выходами, выключают один, пока горит другой; группы, у которых всё готово, переходят к заданию «Твоя очередь» в «Разборе кода».
35–38УборкаПросит всех отключить USB и пересчитать детали.Разбирают схему и, пересчитывая, складывают детали в коробку.
38–40Вопросы на выходеПишет четыре вопроса на доске или задаёт их устно.Пишут короткие ответы на листке и сдают их на выходе из класса.
Блоки проекта «Мигание встроенным светодиодом ESP32» на английском: определение BUILTIN_LED_PIN = 2, пин становится выходом в setup, в цикле записываются HIGH и LOW с ожиданием 1000 мс
Блоки первой загрузки. Покажи это изображение на проекторе рядом с кодом, и ученики сразу увидят, что блок определения соответствует строке int, блок настройки — функции setup(), а повторяющийся блок — loop().

Код: встроенный и внешний светодиод

Два скетча ниже используют те же пины и задержки, что и проекты в приложении, и сразу компилируются, если в Arduino IDE выбрана ESP32 Dev Module. Первый мигает светодиодом на плате раз в секунду. На большинстве плат ESP32 DevKit этот синий светодиод подключён к GPIO2. На Arduino Uno встроенный светодиод находится на пине 13; ученики, знакомые с Uno, могут по привычке написать 13, так что заранее обрати внимание на эту разницу.

C++ (Arduino IDE)
1// ESP32 Dahili LED Yakma / ESP32 built-in LED blink
2// Çoğu ESP32 DevKit kartında dahili LED GPIO2'dedir / On most ESP32 DevKit boards the built-in LED is on GPIO2
3int BUILTIN_LED_PIN = 2;   // Kartına göre değişebilir / May differ on your board
4
5void setup() {
6  pinMode(BUILTIN_LED_PIN, OUTPUT);   // Pini çıkış yap / Set the pin as output
7}
8
9void loop() {
10  digitalWrite(BUILTIN_LED_PIN, HIGH);   // LED'i yak / Turn the LED on
11  delay(1000);                           // 1 saniye bekle / Wait 1 second
12  digitalWrite(BUILTIN_LED_PIN, LOW);    // LED'i söndür / Turn the LED off
13  delay(1000);                           // 1 saniye bekle / Wait 1 second
14}
15

Схема для второго скетча: от GPIO5 к одному концу резистора 220 Ω, от другого конца резистора к длинной ножке светодиода (анод), а от короткой ножки (катод) к GND. Пин ESP32 выдаёт 3,3 V; на красном светодиоде падает около 2 V, а оставшиеся 1,3 V на 220 Ω дают ток примерно 6 mA. Этого хватает, чтобы светодиод было хорошо видно, и пин не перегружается. Если светодиод другого цвета, проверь резистор в калькуляторе резистора для светодиода. В мини-задании быстрые группы объединяют два скетча: в setup() делают оба пина выходами, а в loop() записывают HIGH в один, пока в другом LOW.

C++ (Arduino IDE)
1// ESP32 ile LED Yakma: harici LED / ESP32 external LED blink
2// Bağlantı: GPIO5 -> 220 Ω direnç -> LED uzun bacak (+), kısa bacak (-) -> GND
3// Wiring: GPIO5 -> 220 ohm resistor -> LED long leg (+), short leg (-) -> GND
4const int LED_PIN = 5;   // Harici LED pini (kartta D5) / External LED pin (D5 on the board)
5
6void setup() {
7  pinMode(LED_PIN, OUTPUT);   // Pini çıkış yap / Set the pin as output
8}
9
10void loop() {
11  digitalWrite(LED_PIN, HIGH);   // Pin 3,3 V verir, LED yanar / Pin outputs 3.3 V, LED on
12  delay(500);                    // Yarım saniye bekle / Wait half a second
13  digitalWrite(LED_PIN, LOW);    // Pin 0 V verir, LED söner / Pin outputs 0 V, LED off
14  delay(500);                    // Yarım saniye bekle / Wait half a second
15}
16
Встроенный светодиод не на каждой плате сидит на GPIO2. На некоторых платах, например на собственной DevKitC от Espressif, есть только красный светодиод питания и вообще нет программируемого светодиода; на других светодиод подключён к другому пину. Если при пробной загрузке светодиод не мигает, посмотри распиновку своей платы; если встроенного светодиода нет, эта группа сразу переходит к этапу с внешним светодиодом. Одна модель на весь классный комплект с самого начала избавляет от таких сюрпризов.

5 отличий ESP32 от Arduino Uno

Возможно, некоторые ученики уже знакомы с Arduino Uno. Код пишется на том же языке Arduino, setup() и loop() на своих местах, но железо другое, и большинство ошибок на первом уроке возникает именно из-за этих различий. Пять пунктов ниже можно разобрать за несколько минут на этапе знакомства с платой. Подробное сравнение — в статье «Arduino или ESP32?».

ТемаArduino UnoESP32 DevKitЧто это значит на уроке
Логическое напряжение5 V3,3 V; пины не выдерживают 5 VНикогда не подавай 5 V на GPIO; перед подключением модуля на 5 V проверь его выходное напряжение
Номера пиновD0–D13 и A0–A5Используются номера GPIO; пин с надписью D5 на плате в коде — это 5Число в коде — это номер GPIO на плате, а не порядковый номер пина от края
Пины только для входаНет; все цифровые пины могут быть выходамиGPIO34, 35, 36 (VP) и 39 (VN) работают только как входы и не имеют встроенных подтягивающих резисторов; GPIO6–11 заняты флеш-памятьюСветодиод на 34 не загорится никогда; на первом уроке используй только GPIO2 и GPIO5
Кнопки BOOT и ENОдна кнопка сброса; загрузка начинается автоматическиBOOT (GPIO0) — для режима программирования, EN — для перезапускаЕсли «Connecting...» затягивается, держи BOOT; если код как будто не работает, нажми EN
Беспроводная связьНетВстроенные Wi-Fi 2,4 GHz и Bluetooth (Classic и BLE)На первом уроке не используется; на следующих уроках её пробуют через точку доступа на телефоне, в зависимости от школьной сети

8 самых частых проблем на уроке и решения за минуту

СимптомВероятная причинаРешение за минуту
Меню «Инструменты › Порт» пустое или неактивноКабель только для зарядки или нет драйвераПопробуй помеченный кабель с передачей данных; если порта всё ещё нет, найди название микросхемы в Диспетчере устройств и проверь плату на компьютере учителя
«Connecting...» затягивается, затем «Failed to connect to ESP32»Плата не входит в режим программирования автоматическиЗапусти загрузку снова, при появлении «Connecting...» держи BOOT, отпусти, когда пойдут строки «Writing at»
В выводе ошибки avrdudeВ качестве платы всё ещё выбрана Arduino UnoВыбери «Инструменты › Плата › esp32 › ESP32 Dev Module» и загрузи снова
Загрузка проходит успешно, но со светодиодом ничего не меняетсяВыбран не тот порт (подключено несколько плат)Отключи плату, посмотри, какой порт исчезает из меню «Порт», подключи её обратно и выбери этот порт; сверь с наклейкой на компьютере
Внешний светодиод вообще не горитСветодиод вставлен наоборот, или резистор и светодиод не в одном ряду макетной платыПереверни светодиод: длинная ножка со стороны резистора, короткая — к GND; проверь, что соединения в одном ряду
Схема выглядит правильно, но светодиод всё равно не горитПровод вставлен в другой пин (например, D4 или D34)Прочитай надпись у пина, в котором провод, и сравни с числом в коде; избегай пинов 34–39
Код загружен, но встроенный светодиод не мигаетНа плате нет программируемого светодиода, или он на другом пинеПосмотри распиновку платы; не теряя времени, переходи к этапу с внешним светодиодом
Светодиод горит постоянно или плата греетсяСветодиод подключён к 5V/VIN или 3V3, либо 3V3 замкнут на GNDСразу отключи USB; перенеси светодиод на GPIO5, найди провод, который даёт замыкание, затем подключи снова
Правило трёх минут: если группа больше трёх минут не может справиться с одной и той же проблемой, замени её плату и кабель на запасной набор, а неисправную деталь посмотри после урока. Если группа из-за плохого кабеля пропустит весь урок, это обойдётся дороже, чем поиск причины на месте. Даже если индикатор выполнения будто завис, не давай нажимать «Загрузка» второй раз: первая компиляция идёт долго. Для более глубокой проверки проблем с портом и драйвером подходят и для ESP32 шаги из статьи «Код не загружается в Arduino».

Вопросы на выходе и что будет на втором уроке

  1. На какой пин платы указывает число 5 в коде? Почему рядом с этим пином на плате может быть написано «D5»?
  2. Что изменилось у светодиода, когда в коде вместо delay(1000) стало delay(200)? Сколько раз в секунду светодиод мигает теперь?
  3. Почему светодиод, вставленный наоборот, не горит? Какая ножка светодиода идёт со стороны резистора?
  4. Какое напряжение выдают пины ESP32? Почему светодиод или модуль нельзя подключать напрямую к пину 5V?

Ответы показывают, какую идею стоит повторить на втором уроке; ответ «2,5» на второй вопрос значит, что тема времени усвоена. На втором уроке к той же схеме добавляется кнопка: в проекте «Управление светодиодом кнопкой на ESP32 (удержание)» светодиод горит, пока кнопка нажата, а в проекте «Управление светодиодом кнопкой на ESP32 (переключение)» каждое нажатие меняет его состояние. Оба проекта бесплатные и с блоками; ученики впервые читают вход и принимают решение с помощью if. На третьем или четвёртом уроке можно перейти к Wi-Fi; для этого урока держи под рукой таблицу кодов состояния из статьи «ESP32 не подключается к Wi-Fi». Проекты ESP32 с Wi-Fi в BlueGrays доступны с Premium; если хочешь перевести на них учеников, в статье «Коды Premium для класса» мы объясняем, как работает выдача каждому ученику кода из пакета для педагогов вместо отдельных подписок.

Как использовать BlueGrays на уроке?

  • Найди проект: в разделе «Обзор › Проекты» через Фильтр выбери платформу ESP32, а в разделе Цена — «Бесплатно». Проекты ESP32, подходящие для первых уроков, например светодиод, кнопка, светофор, датчик освещённости и датчик расстояния, открыты полностью.
  • Нужные компоненты и схема: список деталей уже готов, с количеством. Схему можно увеличить и вывести на проектор или сохранить через Сохранить в галерею и распечатать.
  • Исходный код: кнопка Копировать копирует код в буфер обмена. Если проект открыт у ученика на телефоне, Копировать ссылку даёт ссылку, по которой код открывается на компьютере, так что набирать его вручную никому не придётся.
  • Разбор кода: сначала краткое объяснение Что делает этот код?, затем пошаговое объяснение Шаг за шагом, раздел Если не получается и задание Твоя очередь. Это готовый следующий шаг для групп, которые рано справились с мини-заданием.
  • Показать блоками: блочный вид есть во всех бесплатных проектах ESP32. Включи переключатель, и вместо кода появятся блоки той же программы, а вкладка станет Разбор блоков. Блоки нужны для чтения: в приложении их не редактируют и не загружают в плату, в плату всегда попадает настоящий код.
  • Собираем вместе: пошаговый режим, который проводит через этапы: подготовить детали, собрать схему, загрузить код, запустить и проверить. Экран не гаснет, так что группа может идти по шагам, пока телефон лежит на парте; в конце кнопка Работает! отмечает проект как собранный.

Первый урок может показаться всего лишь одним светодиодом, но за эти 40 минут ученики один раз проходят компиляцию, загрузку, номера пинов, ограничение 3,3 V и отладку, и каждый следующий урок по ESP32 строится на этом фундаменте. Все разделы страницы проекта мы подробно разбираем в руководстве по странице проекта. Если перед уроком хочется один раз собрать оба проекта своими руками, открой в приложении BlueGrays проект «Мигание встроенным светодиодом ESP32»: схема, код, блоки и «Разбор кода» уже на месте, и репетиция займёт не больше десяти минут.

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

Что делать на первом уроке по ESP32?

Цель первого урока — чтобы каждая группа загрузила код в свою ESP32 и зажгла светодиод: сначала встроенный светодиод платы, потом внешний светодиод с резистором 220 Ω на макетной плате. Wi-Fi и датчики ждут следующих уроков. Так ученики один раз без проблем проходят компиляцию, загрузку и номера пинов.

Какую плату выбрать для ESP32 в Arduino IDE?

Для универсальных плат вроде ESP32 DevKit установи пакет esp32 от Espressif и выбери ESP32 Dev Module в меню «Инструменты › Плата › esp32». Пакет Arduino ESP32 Boards предназначен для Arduino Nano ESP32. Если в качестве платы по-прежнему выбрана Arduino Uno, загрузка останавливается с ошибкой avrdude.

Почему компьютер не видит ESP32?

Сначала замени кабель: многие USB-кабели предназначены только для зарядки и не передают данные. Затем прочитай надпись на USB-UART-преобразователе платы (CP2102, CH340 или CH9102) и установи подходящий драйвер. В Windows в Диспетчере устройств в разделе «Порты (COM и LPT)» должен появиться новый COM-порт.

Нужно ли нажимать кнопку BOOT при загрузке кода в ESP32?

Большинство DevKit входят в режим программирования автоматически, так что BOOT не нужен. Если «Connecting...» затягивается и появляется «Failed to connect to ESP32», запусти загрузку заново, зажми BOOT при появлении «Connecting...» и отпусти, когда начнётся запись. Если это повторяется, снизь скорость загрузки до 115200.

На каком пине встроенный светодиод ESP32?

На распространённых платах ESP32 DevKit на 30 пинов синий встроенный светодиод подключён к GPIO2. Но это зависит от платы: у DevKitC от Espressif есть только светодиод питания, а на некоторых платах светодиод на другом пине. Если есть сомнения, посмотри распиновку платы или используй внешний светодиод на макетной плате.

Можно ли в школе начинать с ESP32 вместо Arduino Uno?

Да: код пишется на том же языке Arduino, и первый урок со светодиодом почти не отличается. Различия — логический уровень 3,3 V, нумерация GPIO, пины только для входа и кнопка BOOT, и на их объяснение на первом уроке хватает нескольких минут. Подготовка занимает чуть больше времени, чем с Uno, зато на следующих уроках сразу доступны Wi-Fi и Bluetooth.

Все проекты
Мигание встроенным светодиодом ESP32
#106Новичок

Мигание встроенным светодиодом ESP32

Мигание встроенным синим светодиодом на ESP32 DevKit V1. Внешние компоненты не нужны! Первый проект, который стоит попробовать после покупки ESP32. Встроенный светодиод подключён к GPIO 2.

4.8(29)
53
Мигающий светодиод на ESP32
#103Новичок

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

Учит базовой работе с выходами GPIO на ESP32. Эффект мигания получается включением и выключением светодиода с цифрового пина. Это ESP32-версия классического проекта мигания на Arduino UNO; базовые команды мигания в среде Arduino те же, но расположение пинов ESP32 и уровни GPIO 3,3 V отличаются от Arduino UNO.

4.7(37)
99
Управление светодиодом кнопкой на ESP32 (удержание)
#104Новичок

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

Светодиод горит, когда кнопка нажата, и гаснет, когда её отпускают. Показывает, как используются цифровой входной пин ESP32 и встроенный подтягивающий резистор. Режим INPUT_PULLUP избавляет от внешнего резистора.

4.6(36)
55
Управление светодиодом кнопкой на ESP32 (переключение)
#105Новичок

Управление светодиодом кнопкой на ESP32 (переключение)

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

4.6(39)
57
Светофор на ESP32
#107Новичок

Светофор на ESP32

Реалистичная симуляция светофора на 3 светодиодах — красном, жёлтом и зелёном. Тайминги близки к реальной логике движения: красный долго, жёлтый коротко, зелёный долго. Классический пример последовательного управления GPIO.

4.4(21)
44
Измерение освещённости модулем LDR на ESP32
#113Новичок

Измерение освещённости модулем LDR на ESP32

Наблюдение в мониторе порта в реальном времени за сырым значением ADC модуля LDR и относительным процентом освещённости, вычисленным по опорным значениям темноты и света. Этот процент — не измерение в люксах. Учит логике калибровки модуля. Идеально выполнить его перед проектом 10, потому что он нужен для определения порога.

4.6(36)
55
Ультразвуковой датчик расстояния HC-SR04 на ESP32
#116Средний

Ультразвуковой датчик расстояния HC-SR04 на ESP32

Ультразвуковой датчик HC-SR04 вычисляет расстояние по времени, за которое испущенная им звуковая волна отражается от предмета и возвращается (Time of Flight). В этом проекте ESP32 подаёт импульс 10 микросекунд на пин TRIG датчика, а длительность эха читает с пина ECHO через pulseIn(). Вычисленное расстояние в сантиметрах выводится на I2C LCD 16x2. HC-SR04 работает от 5V, поэтому на пине ECHO нужен делитель напряжения.

4.9(28)
45
Температура и влажность с DHT22 на ESP32 (с LCD-дисплеем)
#117Средний

Температура и влажность с DHT22 на ESP32 (с LCD-дисплеем)

Этот проект измеряет температуру и влажность воздуха датчиком DHT22 и в реальном времени показывает данные на I2C LCD 16x2. Данные читаются с датчика по однопроводному протоколу через библиотеку Adafruit DHT. Проект служит основой для IoT-метеостанций, умного дома или систем мониторинга среды в теплицах. Связь с DHT22 идёт через пин GPIO 4 у ESP32.

4.8(38)
56