ESP32 WROOM DevKit v1: распиновка, схема подключения и программирование

ESP32 DevKit — это универсальная платформа для разработки IoT-решений.

../../_images/esp32-wroom-wifi-devkit-v1.1.jpg

Программирование на C++

../../_images/esp32-wroom-wifi-devkit-v1_c.png
  1. Для начала работы с платформой ESP32 DevKit на языке C++ скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.

  2. По умолчанию среда IDE настроена только на AVR-платы. Для платформы ESP32 DevKit добавьте в менеджере плат поддержку платформ на модуле ESP32.

  3. Выберите платформу ESP32 DevKit: Инструменты → Плата → DOIT ESP32 DEVKIT V1.

После выполненных действий плата ESP32 DevKit готова к программированию через Arduino IDE.

Подробности о функциях и методах работы ESP32 на языке C++ читайте на ESP32 Arduino Core.

Примеры работы для Arduino

ESP32 может подключиться к Wi-Fi сети, создать собственную точку доступа, представляться сервером и клиентом, формировать GET и POST запросы. Также микроконтроллер имеет два АЦП и датчик Хола.

Пример WebClient

GET-запрос по URL-адресу в Интернете.

webClient.ino

// библиотека для работы с HTTP-протоколом
#include <HTTPClient.h>
// вводим имя и пароль точки доступа
const char* ssid = "WIFINAME";
const char* password = "WIFIPASSWORD";

void setup() {
    // иницилизируем монитор порта
    Serial.begin(115200);
    // запас времени на открытие монитора порта — 5 секунд
    delay(5000);
    // подключаемся к Wi-Fi сети
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Connecting to Wi-Fi..");
    }
    Serial.println("Connected to the Wi-Fi network");
}

void loop() {
    // выполняем проверку подключения к беспроводной сети
    if ((WiFi.status() == WL_CONNECTED)) {
        // создаем объект для работы с HTTP
        HTTPClient http;
        // подключаемся к тестовому серверу с помощью HTTP
        http.begin("http://httpbin.org/");
        // делаем GET запрос
        int httpCode = http.GET();
        // проверяем успешность запроса
        if (httpCode > 0) {
            // выводим ответ сервера
            String payload = http.getString();
            Serial.println(httpCode);
            Serial.println(payload);
        }
        else {
            Serial.println("Error on HTTP request");
        }
        // освобождаем ресурсы микроконтроллера
        http.end();
    }
    delay(10000);
}

После подключения к Wi-Fi микроконтроллер напишет в COM порт ответ от сервера.

../../_images/clientmonitor.png

Пример Analog WebServer

ESP32 имеет 15 аналоговых пинов. Выведем через веб-интерфейс значения с 36, 39 и 34 пина.

analogWebServer.ino

// подключяем библиотеку для работы с Wi-Fi server
#include <WiFi.h>
// вводим имя и пароль точки доступа
const char* ssid     = "WIFINAME";
const char* password = "WIFIPASSWORD";
// инициализируем сервер на 80 порте
WiFiServer server(80);
// заводим буфер и счетчик для буфера
char lineBuf[80];
int charCount = 0;

void setup() {
    // инициализируем монитор порта
    Serial.begin(115200);
    // запас времени на открытие монитора порта — 5 секунд
    delay(5000);
    // инициализируем аналоговые пины
    pinMode(36, INPUT);
    pinMode(39, INPUT);
    pinMode(34, INPUT);
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);
    // подключаем микроконтроллер к Wi-Fi сети
    WiFi.begin(ssid, password);
    while(WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("");
    Serial.println("Wi-Fi connected");
    Serial.println("IP-address: ");
    Serial.println(WiFi.localIP());
    // запускаем сервер
    server.begin();
}

void loop() {
    // анализируем канал связи на наличие входящих клиентов
    WiFiClient client = server.available();
    if (client) {
        Serial.println("New client");
        memset(lineBuf, 0, sizeof(lineBuf));
        charCount = 0;
        // HTTP-запрос заканчивается пустой строкой
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println("Connection: close");
            client.println();
            // формируем веб-страницу
            String webPage = "<!DOCTYPE HTML>";
            webPage += "<html>";
            webPage += "  <head>";
            webPage += "    <meta name=\"viewport\" content=\"width=device-width,";
            webPage += "    initial-scale=1\">";
            webPage += "  </head>";
            webPage += "  <h1>ESP32 - Web Server</h1>";
            webPage += "  <p>";
            webPage += "     AnalogPin 36 = ";
            webPage +=               analogRead(36);
            webPage += "     <br>";
            webPage += "     AnalogPin 39 = ";
            webPage +=               analogRead(39);
            webPage += "     <br>";
            webPage += "     AnalogPin 34 = ";
            webPage +=               analogRead(34);
            webPage += "     <br>";
            webPage += "  </p>";
            webPage += "</html>";
            client.println(webPage);
            break;
        }
        // даем веб-браузеру время для получения данных
        delay(1);
        // закрываем соединение
        client.stop();
        Serial.println("client disconnected");
    }
}

Когда микроконтроллер подключится к Wi-Fi сети, в монитор порта будет выведен IP-адрес веб-страницы с данными. Получить к ней доступ можно из локальной сети, перейдя по указанному IP-адресу.

../../_images/monitor.png

Скопируйте IP-адрес из монитора порта и вставьте в адресную строку браузера. Если вы подключены к той же локальной сети, что и ESP32, то вы увидите веб-интерфейс.

../../_images/analog_browser_2_.png

Программирование на JavaScript

../../_images/esp32-wroom-wifi-devkit-v1_js.png
  1. Для старта с платформой Wi-Fi Slot на языке JavaScript скачайте и установите интегрированную среду разработки — Espruino Web IDE.

  2. Установите прошивку интерпретатор JavaScript на ESP32.

Подробнее о функциях и методах работы ESP32 на языке JavaScript читайте документацию на Espruino.

Элементы платы

../../_images/esp32-wroom-wifi-devkit-v1_annotation-preview.png

Мозг платформы

Платформа для разработки ESP32 DevKit основана на модуле ESP32-WROOM с чипом ESP32-D0WDQ6 от Espressif.

../../_images/esp32-wroom-wifi-devkit-v1_composed.png

Чип ESP32-D0WDQ6

Чип ESP32-D0WDQ6 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле), в которую входит 2-ядерный 32-битный процессор Tensilica Xtensa LX6 с блоками памяти ROM на 448 КБ и SRAM на 520 КБ. В кристалле также расположены беспроводные технологии Wi-Fi/Bluetooth, радио-модуль, датчик Холла и сенсор температуры.

Для работы с чипом необходима внешняя Flash-память и другая электронная обвязка. Кристалл ESP32-D0WDQ6 является основой на базе которой выпускаются модули с необходимой периферией: например ESP32-WROOM или ESP32-WROVER.

Модуль ESP32-WROOM

ESP32-WROOM — модуль с чипом ESP32-D0WDQ6, Flash-памятью на 4 МБ и всей необходимой обвязкой, которые спрятаны под металлическим кожухом. Pins SCK/CLK, SDO/SD0, SDI/SD1, SHD/SD2, SWP/SD3 and SCS/CMD, namely, GPIO6 to GPIO11 are connected to the integrated SPI flash integrated on the module and are not recommended for other uses.

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

Модуль является основной, на которой выполняются промышленные устройства или отладочные платы, например: ESP32 DevKit или ESP32-Sense Kit.

USB-UART преобразователь

Преобразователь USB-UART на микросхеме CP2102 обеспечивает связь модуля ESP32-WROOM с USB-портом компьютера. При подключении к ПК — платформа ESP32 DevKit определяется как виртуальный COM-порт.

Разъём micro-USB

Разъём micro-USB предназначен для прошивки и питания платформы ESP32 DevKit с помощью компьютера.

Светодиодная индикация

Светодиод

Назначение

ON

Индикатор питания платформы.

LED

Пользовательский светодиод на 2 пине микроконтроллера. При задании значения «высокого уровня» светодиод включается, при «низком» — выключается.

Кнопка EN

Кнопка предназначена для ручного сброса программы — аналог кнопки RESET обычного компьютера.

Кнопка BOOT

Кнопка служит для ручного перевода модуля в режим прошивки:

  1. Зажмите кнопку BOOT;

  2. Нажмите и отпустите кнопку EN;

  3. Отпустите кнопку BOOT

Регулятор напряжения

Линейный понижающий регулятор напряжение AMS1117-3.3 обеспечивает питание микроконтроллера. Выходное напряжение 3,3 вольта с максимальным током 1 А.

Распиновка

../../_images/esp32-wroom-wifi-devkit-v1_pinout-preview.png

Пины питания

  • VIN: Пин для подключения внешнего источника напряжения в диапазоне от 5 до 14 вольт.

  • 3V3: Пин от стабилизатора напряжения с выходом 3,3 вольта и максимальных током 1 А. Регулятор обеспечивает питание модуля ESP32-WROOM.

  • GND: Выводы земли.

Порты ввода/вывода

В отличие от большинства плат Arduino, родным напряжением ESP32 DevKit является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Более высокое напряжение может повредить микроконтроллер!

Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.

  • Цифровые входы/выходы: 21 пин 15, 1219, 2123, 2527, 32 и 33

    Контакты ввода-вывода общего назначения. Пины могут быть настроены на вход или на выход. Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 12 мА.

  • Цифровые входы: 4 пина 3436 и 39

    Контакты ввода общего назначения. Могут быть настроены только на вход.

  • ШИМ: все пины ввода-вывода

    Позволяет выводить аналоговые значения в виде ШИМ-сигнала с разрядность 16 бит. Максимальное количество каналов 16.

  • АЦП: 15 пинов 2, 4, 1215, 2527, 3236 и 39

    Позволяет представить аналоговое напряжение в цифровом виде с разрядностью 12 бит.

  • ЦАП: пины 25(DAC1) и 26(DAC2)

    Аналоговый выход цифро-аналогового преобразователя, который позволяет формировать 8-битные уровни напряжения. Выводы могут использоваться для аудио-выхода.

Интерфейсы

Каждый пин ввода-вывода платформы поддерживает аппаратные интерфейсы.

Интерфейс

Количество

Назначение

I²C

2

Используется для общения с периферией по интерфейсу «I²C».

SPI

3

Для общения с периферией по интерфейсу «SPI».

UART/Serial

3

Для общения с периферией по интерфейсу «UART».

I²S

2

Используется для передачи и приёма цифрового звука.

Принципиальная схема

../../_images/esp32-wroom-wifi-devkit-v1_schematic-preview.png

Габаритный чертёж

../../_images/esp32-wroom-wifi-devkit-v1_design-preview.png

Характеристики

  • Модуль: ESP32-WROOM с чипом ESP32-D0WDQ6

  • Частота беспроводной передачи: 2,4 ГГц

  • Стандарт Wi-Fi: 802.11b/g/n

  • Стандарт Bluetooth: BLE v4.2 BR/EDR

  • Тактовая частота: до 240 МГц

  • Flash-память: 448 КБ

  • Внешняя Flash-память: 4 МБ

  • SRAM-память: 520 КБ

  • Пинов общего назначения: 25 ввода-вывода (GPIO) и 4 ввода (GPI)

  • Контактов с АЦП: 15

  • Разрядность АЦП: 12 бит

  • Контактов с ЦАП: 2

  • Разрядность ЦАП: 8 бит

  • Контактов с ШИМ: 21 (16 каналов)

  • Разрядность ШИМ: 16 бит

  • Контактов с ёмкостным сенсором: 8

  • Пинов с прерываниями: 25

  • Аппаратные интерфейсы: 3×SPI, 3×UART, 2×I²C и 2×I²S

  • Напряжение логических уровней: 3,3 В

  • Максимальный ток с пина или на пин: 12 мА

  • Максимальный выходной ток пина 3V3: 1 А

  • Входное напряжение через пин Vin: 5–14 В

  • Габариты: 51×28 мм

Ресурсы