Вы сможете реализовать на модуле ESP32 разнообразные сетевые проекты:
- поднять веб-сервер и веб-клиент для обработки управляющих запросов;
- сделать приёмник для интернет-радио и музыкального стриминга, подключив внешний динамик к выходу с ЦАП;
- разработать беспроводную метеостанцию со встроенным датчиком температуры и сенсорным управлением;
- собрать мобильного робота с дистанционным управлением по Wi-Fi или Bluetooth BLE;
- и многое другое!
Начинка
Аппаратная часть платы выполнена на модуле ESP-WROOM-32 с однокристальной системой ESP32-D0WDQ6 производства компании Espressif.
Кристалл включает в себя 2-ядерный 32-битный микроконтроллер Tensilica Xtensa LX6, 520 Кб ОЗУ и 448 Кб ПЗУ. Тактовая частота выставляется до 240 МГц в зависимости от режима энергопотребления. Также в чипе есть встроенный датчик температуры, датчик Холла и контроллер сенсорного ввода. Поддерживаются беспроводные стандарты связи Wi-Fi 802.11 b/g/n (2,4 ГГц) и протокол Bluetooth v4.2 с BLE.
Благодаря этим возможностям однокристальная система ESP32 — популярное решение для сетевых задач и интернета вещей, которое отличается низким энергопотреблением с возможностью контроля датчиков и периферии в режиме глубокого сна.
Подключение периферии
C двух сторон платы расположены контактные гребёнки по 15 пинов с шагом 2,54 мм, что позволяет установить её на макетную плату и подключать к платформе электронные компоненты для прототипирования устройства.
Пользователю доступны 25 пинов общего назначения:
- 21 контакт ввода-вывода;
- 4 контакта ввода;
- 15 аналоговых входов с АЦП;
- 2 аналоговых выхода с ЦАП;
- 21 с поддержкой ШИМ-сигнала (до 16 каналов одновременно);
- Все контакты поддерживают прерывания.
На пинах ввода-вывода можно сконфигурировать аппаратные интерфейсы:
- 3 × UART;
- 3 × SPI;
- 2 × I2C;
- 3 × I2S
Управление и индикация
На отладочном модуле расположены две тактовые кнопки:
- Кнопка Boot служит для ручного запуска режима прошивки модуля.
- Кнопка Reset предназначена для ручного перезапуска платы.
Также на плате находится светодиод питания и индикаторный светодиод, подключённый к цифровому пину микроконтроллера, которым может управлять пользователь.
Питание
Плата питается через разъём USB type-C или контакт VIN. Источник определяется автоматически.
При питании через USB используйте зарядник на 5 В совместно с кабелем USB (A — Type C). В случае питания через пин Vin рекомендуется входное напряжение от 5 до 14 В. Преобразователь питания на плате выровняет входное напряжение до необходимых 3,3 В.
Обратите внимание: напряжение логических уровней на пинах — 3,3 В, поэтому подключение 5-вольтовой периферии повредит микроконтроллер!
Программное обеспечение
Для программирования платы ESP-WROOM-32 можно использовать среду Arduino IDE. Для прошивки понадобится USB-кабель, а если настроить платформу, то загрузка данных может проходить прямо по воздуху.
Среди готовых библиотек для ESP32 в Arduino IDE вы найдёте код для запуска веб-сервера и HTTP/HTTPS-клиента, обмена данными по протоколу Bluetooth Low Energy и десятков других практических задач.
Платформа также поддерживает следующие инструменты программирования:
- Espruino – среда разработки на базе JavaScript.
- Espressif IoT Development Framework (ESP-IDF) – официальная среда разработки от производителя чипа.
- Mongoose OS – операционная система для сетевых контроллеров, рекомендованная платформами AWS IoT и Google Cloud IoT.
- .NET nanoFramework – разработка на .NET C# с помощью Visual Studio.
- MicroPython – среда разработки, совместимая с Python 3 и оптимизированная для микроконтроллеров.
Настройка ESP32 в Arduino IDE
Чтобы установить ESP32 в среду Arduino IDE, выполните следующее.
1) Откройте окно настроек в среде Arduino IDE. Выберите пункт меню «Файл > Настройки» («File > Preferences»).
2) В поле «Дополнительные ссылки для Менеджера плат» (Additional Boards Manager URLs) скопируйте адрес:
1 |
https://dl.espressif.com/dl/package_esp32_index.json |
Затем нажмите кнопку «OK». Примечание: если у вас уже есть ссылка для плат с чипом ESP8266, то вы можете разделить ссылки запятой.
3) Откройте менеджер плат. Нажмите «Инструменты > Плата > Менеджер плат» («Tools > Boards > Boards Manager»).
4) Введите в поиске «ESP32» и нажмите кнопку «Установка» (Install) для «ESP32 by Espressif Systems».
5) Готово. Дополнение должно установиться в течение нескольких минут.
6) Теперь можно залить тестовый скетч в нашу плату. Пройдите в меню «Инструменты > Плата» («Tools > Board») и выберите свою плату (в нашем случае это DOIT ESP32 DEVKIT V1):
7) Выберите порт в меню «Порт» («Port») (если вы не видите COM-порт в среде Arduino IDE, то вам необходимо установить драйвер для адаптера CP210x USB to UART Bridge VCP).
8) Откройте следующий пример «Файл > Примеры > WiFi (ESP32) > WiFi Scan» («File > Examples > WiFi (ESP32) > WiFi Scan»).
9) Откроется новый готовый пример. Нажмите кнопку «Загрузка» («Upload») в среде Arduino IDE. Подождите несколько секунд, пока код компилируется.
10) Ошибка: «A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header«, чтобы избавиться от этой ошибки надо в процессе программирования модуля держать кнопку «BOOT» зажатой. Если всё прошло, как ожидается, то вы должны увидеть сообщение «Done uploading» (Загрузка завершена).
11) Откройте окно последовательного COM-порта (Serial Monitor) среды Arduino IDE и настройте скорость передачи на 115 200 бод.
12) Нажмите кнопку «EN» на плате с микроконтроллером ESP32, после этого вы должны увидеть сети, доступные для ESP32.
Обмен данными между смартфоном и ESP32 через Bluetooth
1) Скачайте библиотеку BluetoothSerial и поместите ее в папку libraries директории Arduino.
2) Загрузите скетч ниже (при подачи “1” встроенный светодиод будет включаться, при “0” – выключаться). Не забудьте при загрузке зажать кнопку «BOOT», а после загрузки нажать кнопку «EN».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include "BluetoothSerial.h" // заголовочный файл для последовательного Bluetooth будет добавлен по умолчанию в Arduino BluetoothSerial ESP_BT; // Объект для Bluetooth int incoming; //int LED_BUILTIN = 2; void setup() { Serial.begin(9600); // Запускаем последовательный монитор со скоростью 9600 ESP_BT.begin("ESP32_LED_Control"); // Задаем имя вашего устройства Bluetooth Serial.println("Bluetooth Device is Ready to Pair"); // По готовности сообщаем, что устройство готово к сопряжению pinMode (LED_BUILTIN, OUTPUT);// задаем контакт подключения светодиода как выходной } void loop() { if (ESP_BT.available()) // Проверяем, не получили ли мы что-либо от Bluetooth модуля { incoming = ESP_BT.read(); // Читаем, что получили Serial.print("Received:"); Serial.println(incoming); if (incoming == 49) // Если значение равно единице, включаем светодиод { digitalWrite(LED_BUILTIN, HIGH); ESP_BT.println("LED turned ON"); } if (incoming == 48) // Если значение равно нулю, выключаем светодиод { digitalWrite(LED_BUILTIN, LOW); ESP_BT.println("LED turned OFF"); } } delay(20); } |
3) Осуществляем поиск устройства Bluetooth с названием ESP32_LED_Control в настройках Bluetooth смартфона.
4) Открыв любое терминальное приложение Bluetooth (например: Bluetooth Terminal), мы сможем ввести и отправить “1” или “0” для управления встроенным светодиодом.
Скачать библиотеку BluetoothSerial
Bluetooth Terminal на Google Play
Принципиальная схема
Габаритный чертеж