Wi-Fi модуль ESP32: возможности и первая программа в Arduino IDE

Wi-Fi модуль ESP32: возможности и первая программа в Arduino IDE

ESP32 — преемник ESP8266 с двумя ядрами, Bluetooth и богатой периферией. Обзор возможностей и запуск платы FireBeetle в Arduino IDE.

Чем ESP32 отличается от ESP8266

Модули ESP8266 стали массовым решением для любительских устройств Интернета вещей, и компания Espressif выпустила следующий микроконтроллер — ESP32. Его вычислительная мощность выросла в четыре раза: вместо одного ядра на 80 МГц здесь два ядра, каждое из которых работает на частоте 160 МГц. Контроллер располагает 520 Кб оперативной и 448 Кб флеш-памяти. Помимо Wi-Fi 802.11n со скоростью до 150 Мбит/с поддерживается Bluetooth 4.2 BR/EDR и Low Energy.

Периферия

Главным недостатком ESP8266 было малое количество контактов. В ESP32 выводов значительно больше, и они многофункциональны: блок ввода-вывода снабжён мультиплексором, который позволяет назначать на один вывод разные функции.

Блок-схема периферии ESP32
Ядра2, по 160 МГц
Оперативная память520 Кб
Flash-память448 Кб
Беспроводные интерфейсыWi-Fi 802.11n до 150 Мбит/с, Bluetooth 4.2 BR/EDR и Low Energy
АЦП / ЦАП18 каналов (12 бит) / 2 канала (8 бит)
Сенсорные входы10
Последовательные интерфейсы3 UART, 2 I2C, 4 SPI, 2 I2S
ПрочееИК-контроллер, CAN 2.0, датчик температуры, датчик Холла
Ток при передаче Wi-Fi или Bluetooth160–260 мА
Ток без Wi-Fi и Bluetooth20 мА
Ток в спящем режиме10 мкА

ШИМ доступна на всех контактах. Для шифрования данных при передаче по Wi-Fi в микроконтроллер встроены криптографические модули AES и SHA.

Модуль WROOM-32 и отладочные платы

Чтобы с микроконтроллером было удобнее работать, выпущен модуль WROOM-32. На нём построено множество отладочных плат, одна из них — FireBeetle от DFRobot; именно она используется в примере ниже.

Модуль ESP-WROOM-32, вид сверху
Модуль ESP-WROOM-32, обратная сторона
Отладочная плата FireBeetle от DFRobot на ESP-WROOM-32

Подготовка Arduino IDE

С завода ESP32, как и ESP8266, поставляется с прошивкой для работы через AT-команды, но плату можно программировать и в Arduino IDE. Для этого выполняют несколько шагов:

  • скачивают zip-архив ESP32 Core для Arduino IDE из репозитория espressif/arduino-esp32 на GitHub и распаковывают его в папку C:\Program Files\Arduino\hardware\espressif — после этого платы ESP32 появляются в меню выбора плат;
  • устанавливают драйвер платы: содержимое файла FireBeetle-ESP32.inf, опубликованного DFRobot, сохраняют в файл с тем же именем, затем в Диспетчере устройств в разделе «Прочие устройства» выбирают FireBeetle-ESP32, запускают обновление драйверов с поиском на этом компьютере и указывают папку с файлом;
  • после подтверждения установки плата появляется в списке COM-портов, и порт становится доступен в Arduino IDE.

Первая программа: подключение к точке доступа

Проверочный скетч подключает плату к Wi-Fi. В нём задаются имя сети и пароль, открывается последовательный порт на скорости 115200 и вызывается WiFi.begin() с этими параметрами. Пока соединение не установлено, раз в секунду в порт выводится точка; после подключения печатаются сообщение об успехе и полученный IP-адрес из WiFi.localIP(). Основной цикл остаётся пустым.

При первой компиляции возможна ошибка: среда не находит компилятор xtensa-esp32-elf. Она устраняется запуском файла get.exe из папки hardware\espressif\esp32\tools в каталоге Arduino, который скачивает и устанавливает недостающие инструменты. После этого скетч компилируется и загружается, а в мониторе последовательного порта видно, что плата подключилась к сети.

Краткая памятка по неполадкам

  • Плата ESP32 не видна в Arduino IDE — нужно установить ESP32 Core.
  • Платы нет в списке портов — не установлен драйвер.
  • Компиляция завершается ошибкой «Cannot run program…» — требуется запустить get.exe из папки tools.

← Все статьи