Установка платы ESP32 в Arduino IDE
Микроконтроллер ESP32 быстро стал одной из самых популярных плат среди любителей, инженеров и людей, интересующихся Интернетом вещей (IoT). Он мощный, доступный по цене и оснащён встроенными Wi-Fi и Bluetooth, что делает его идеальным для проектов, требующих беспроводной связи или высокой производительности в реальном времени.
Но прежде чем вы сможете начать создавать с ним проекты, вам нужно настроить среду программирования. Самый простой способ сделать это — особенно для начинающих — использовать Arduino IDE. Хотя это не самый продвинутый инструмент для работы с ESP32, он знаком многим людям, что значительно упрощает начало работы.
В этом руководстве вы узнаете, как пошагово настроить Arduino IDE для работы с ESP32.
Шаг 1: Установка или обновление Arduino IDE
Первый шаг в процессе настройки — установить последнюю версию Arduino IDE на ваш компьютер. Если у вас её ещё нет, скачайте и установите её прямо сейчас с официального сайта Arduino. Наличие последней версии гарантирует, что у вас есть все новейшие функции и исправления ошибок.
Шаг 2: Установка драйвера USB-to-Serial моста
Большинство плат ESP32 поставляются с микросхемой USB-UART моста. Эта микросхема позволяет вашему компьютеру взаимодействовать с ESP32 через USB-кабель. Разные платы ESP32 используют разные микросхемы моста. Например, ESP32 DevKit V1 часто использует микросхему CP2102, тогда как WeMos ESP32 Lite использует микросхему CH340G.
Если ваша плата использует одну из этих микросхем, вам может потребоваться установить драйвер, прежде чем ваш компьютер сможет распознать плату. Вот ссылки для скачивания нужных драйверов:
Однако если у вас более новая плата ESP32 с моделями ESP32-S2, ESP32-S3 или ESP32-C3, вам повезло. Эти платы имеют встроенную поддержку USB, которую ваш компьютер распознаёт автоматически, поэтому вы можете пропустить установку драйверов и перейти к следующему шагу.
Шаг 3: Добавление платы ESP32 в Arduino IDE
Arduino IDE использует «определения плат» (board definitions) для связи с конкретным оборудованием. Эти определения содержат файлы конфигурации, библиотеки и настройки компилятора, которые указывают IDE, как компилировать и загружать код на конкретную плату. Поскольку ESP32 не включена по умолчанию, вам нужно добавить её вручную через Менеджер плат (Board Manager).
Для этого откройте Arduino IDE и перейдите в File > Preferences
Появится окно. Найдите поле с надписью «Additional Board Manager URLs». В это поле добавьте следующий URL:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Этот URL указывает IDE на репозиторий Espressif, который содержит все файлы, необходимые для поддержки плат ESP32.
Если в этом поле уже есть другие URL-адреса, например для ESP8266, не беспокойтесь. Просто нажмите на маленький значок рядом с полем, и откроется новое окно. Введите каждый URL на отдельной строке. Когда закончите, нажмите OK, чтобы сохранить и закрыть окно.
Теперь найдите значок платы в левой части окна Arduino IDE и нажмите на него. Откроется Менеджер плат (Boards Manager). Подождите немного, пока загрузится список доступных плат. Если вы используете более старую версию Arduino IDE, перейдите в Tools > Board > Boards Manager… вместо этого.
В строке поиска введите «esp32». Вы должны увидеть запись «esp32 by Espressif Systems». Нажмите на неё, затем нажмите кнопку Install. IDE начнёт загрузку и установку определений платы esp32. Это может занять несколько минут в зависимости от скорости вашего интернет-соединения. Когда установка завершится, вы увидите слово «INSTALLED» рядом с названием пакета.
Шаг 4: Выбор платы и порта
Теперь, когда всё установлено, возьмите USB-кабель и подключите вашу плату ESP32 к компьютеру.
В Arduino IDE нажмите на выпадающее меню вверху и выберите пункт «Select Other Board and Port». Если вы используете более старую версию IDE, перейдите в Tools > Board вместо этого.
Появится список плат. Найдите и выберите вариант, соответствующий вашей конкретной плате ESP32. Если вы не уверены, какая у вас плата, просто выберите «ESP32 Dev Module» как безопасный вариант по умолчанию.
Затем выберите COM-порт, соответствующий вашему подключённому ESP32. Если вы не уверены, какой порт правильный, попробуйте такой трюк: отключите ESP32 и посмотрите, какой порт исчезнет из списка. Затем подключите его обратно и выберите этот порт.
Вот и всё! Теперь вы готовы начать писать код для вашего ESP32, используя Arduino IDE.
Шаг 5: Тестирование установки
Чтобы убедиться, что всё настроено правильно, давайте протестируем установку с помощью классического примера Blink.
Эта простая программа заставляет встроенный светодиод на вашей плате включаться и выключаться поочерёдно. Светодиод обычно подключён к пину D2, но это может варьироваться в зависимости от вашей платы.
int ledPin = 2;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
Когда скетч Blink будет готов, нажмите кнопку Upload. Если всё загрузится успешно, вы должны увидеть, как светодиод на вашей плате начнёт мигать. На некоторых платах ESP32 вам может потребоваться нажать кнопку «EN», чтобы программа начала выполняться.
Поздравляем! Вы успешно настроили Arduino IDE для работы с ESP32 и запустили свою первую программу. Теперь вы готовы исследовать и начать создавать собственные IoT-проекты.
Устранение неполадок
Иногда всё работает не идеально с первого раза, и это совершенно нормально. Одна из самых распространённых проблем, с которой вы можете столкнуться, — это сообщение об ошибке «A fatal error occurred: Failed to connect to ESP32… failed uploading: uploading error: exit status 2»
Не паникуйте, если это произойдёт с вами. Вот что происходит. Некоторые платы ESP32 автоматически переключаются в режим программирования при попытке загрузки кода, и всё работает гладко. Однако другие платы требуют, чтобы вы вручную перевели их в режим программирования. Когда это происходит, вы увидите сообщение об ошибке.
Чтобы исправить эту проблему, выполните следующие шаги внимательно.
Нажмите кнопку Upload в Arduino IDE, чтобы начать загрузку скетча.
Как только вы увидите сообщение «Connecting…» в консоли в нижней части IDE, нажмите и удерживайте кнопку BOOT на вашей плате ESP32.
Продолжайте удерживать её, пока не увидите сообщение вроде «Writing at 0x00001000… (2%)». В этот момент вы можете отпустить кнопку BOOT.
IDE продолжит загрузку вашей программы, и когда процесс завершится, вы увидите сообщение «Done uploading».
После этого нажмите кнопку EN (Enable) на вашем ESP32, чтобы перезагрузить его и запустить только что загруженную программу.
Помните, вам нужно будет повторять эту последовательность нажатий кнопок каждый раз при загрузке нового скетча. Поначалу это может показаться раздражающим, но вы быстро привыкнете, и это станет второй натурой.
Больше примеров ESP32
Теперь, когда вы знаете, как загружать код на ESP32, вам будет приятно узнать, что Arduino IDE поставляется с множеством примеров программ, специально разработанных для ESP32. Эти примеры показывают, как делать самые разные интересные вещи — от сканирования ближайших WiFi-сетей до создания собственного веб-сервера, к которому можно получить доступ с телефона или компьютера.
Чтобы найти эти примеры, откройте Arduino IDE и перейдите в File > Examples > ESP32. Вы увидите целую коллекцию примеров программ. Не стесняйтесь нажимать на любой из них. Код загрузится в вашу IDE, и вы сможете загрузить его на плату и посмотреть, что он делает. Это отличный способ учиться на практике.
Пример ESP32: сканирование WiFi
Давайте попробуем запустить один из этих примеров вместе. Мы будем использовать пример WiFi Scan, который идеально подходит для начинающих. Эта программа заставляет ваш ESP32 искать все WiFi-сети вокруг вас и отображать информацию о них — точно так же, как когда вы ищете WiFi на телефоне.
Чтобы найти этот пример, перейдите в File > Examples > WiFi > WiFiScan.
#include "WiFi.h"
void setup() {
Serial.begin(115200);
// Enable Station Interface
WiFi.STA.begin();
Serial.println("Setup done");
}
void ScanWiFi() {
Serial.println("Scan start");
// WiFi.scanNetworks will return the number of networks found.
int n = WiFi.scanNetworks();
Serial.println("Scan done");
if (n == 0) {
Serial.println("no networks found");
} else {
Serial.print(n);
Serial.println(" networks found");
Serial.println("Nr | SSID | RSSI | CH | Encryption");
for (int i = 0; i < n; ++i) {
// Print SSID and RSSI for each network found
Serial.printf("%2d", i + 1);
Serial.print(" | ");
Serial.printf("%-32.32s", WiFi.SSID(i).c_str());
Serial.print(" | ");
Serial.printf("%4ld", WiFi.RSSI(i));
Serial.print(" | ");
Serial.printf("%2ld", WiFi.channel(i));
Serial.print(" | ");
switch (WiFi.encryptionType(i)) {
case WIFI_AUTH_OPEN: Serial.print("open"); break;
case WIFI_AUTH_WEP: Serial.print("WEP"); break;
case WIFI_AUTH_WPA_PSK: Serial.print("WPA"); break;
case WIFI_AUTH_WPA2_PSK: Serial.print("WPA2"); break;
case WIFI_AUTH_WPA_WPA2_PSK: Serial.print("WPA+WPA2"); break;
case WIFI_AUTH_WPA2_ENTERPRISE: Serial.print("WPA2-EAP"); break;
case WIFI_AUTH_WPA3_PSK: Serial.print("WPA3"); break;
case WIFI_AUTH_WPA2_WPA3_PSK: Serial.print("WPA2+WPA3"); break;
case WIFI_AUTH_WAPI_PSK: Serial.print("WAPI"); break;
default: Serial.print("unknown");
}
Serial.println();
delay(10);
}
}
// Delete the scan result to free memory for code below.
WiFi.scanDelete();
Serial.println("-------------------------------------");
}
void loop() {
Serial.println("-------------------------------------");
Serial.println("Default wifi band mode scan:");
Serial.println("-------------------------------------");
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 2)
WiFi.setBandMode(WIFI_BAND_MODE_AUTO);
#endif
ScanWiFi();
#if CONFIG_SOC_WIFI_SUPPORT_5G
// Wait a bit before scanning again.
delay(1000);
Serial.println("-------------------------------------");
Serial.println("2.4 Ghz wifi band mode scan:");
Serial.println("-------------------------------------");
WiFi.setBandMode(WIFI_BAND_MODE_2G_ONLY);
ScanWiFi();
// Wait a bit before scanning again.
delay(1000);
Serial.println("-------------------------------------");
Serial.println("5 Ghz wifi band mode scan:");
Serial.println("-------------------------------------");
WiFi.setBandMode(WIFI_BAND_MODE_5G_ONLY);
ScanWiFi();
#endif
// Wait a bit before scanning again.
delay(10000);
}
Загрузите скетч на вашу плату ESP32, используя тот же процесс, который вы изучили ранее. После успешного завершения загрузки откройте Serial Monitor и установите скорость передачи данных на 115200. Теперь нажмите кнопку EN на вашей плате ESP32, чтобы перезагрузить её и запустить программу.
Если всё работает правильно, вы увидите список ближайших Wi-Fi сетей в Serial Monitor. Довольно круто, правда?