Начало работы с ESP32-C3 Super Mini

ESP32-C3 Super Mini — это компактная отладочная плата на базе чипа Espressif ESP32-C3, входящего в семейство ESP32. Её основные преимущества перед другими платами ESP32 — малый размер и низкое энергопотребление в режиме глубокого сна. В этом руководстве мы познакомимся с ESP32-C3 Super Mini, рассмотрим её характеристики и распиновку, покажем, как программировать её с помощью Arduino IDE, и запустим несколько примеров для тестирования платы.

Начало работы с ESP32-C3 Super Mini

Знакомство с ESP32-C3 Super Mini

ESP32-C3 Super Mini — это компактная отладочная плата с чипом ESP32-C3, имеющим встроенный Wi-Fi и Bluetooth. В отличие от других моделей плат ESP32, этот чип — одноядерный. Плата имеет очень маленький форм-фактор и оптимизирована для низкого энергопотребления, потребляя всего около 43 мкА в режиме глубокого сна, согласно даташиту. На плате 16 контактов, из которых 11 программируемых GPIO поддерживают ADC, PWM, UART, I2C и SPI.

ESP32-C3 Super Mini

На плате есть кнопки RST (сброс) и BOOT. Кнопка BOOT используется для перевода платы в режим загрузчика (bootloader) для загрузки кода, а кнопка RST сбрасывает плату — полезно для перезапуска и выполнения только что загруженного кода.

ESP32-C3 Super Mini USB-C интерфейс

Плата также оснащена интерфейсом USB-C, который можно использовать для питания платы, загрузки кода или последовательной связи. В качестве альтернативы можно запитать плату от внешнего источника 5В через контакты 5V и GND — но обратите внимание, что порт USB-C не следует использовать одновременно с внешним источником питания.

Как и многие другие модели плат ESP32, она оснащена встроенным светодиодом. Но в данном случае он подключён к GPIO 8 (а не к GPIO 2, как у большинства плат).

Технические характеристики ESP32-C3 Super Mini

Вот краткое описание технических характеристик ESP32-C3:

  • Процессор: 32-битный RISC-V CPU с тактовой частотой до 160 МГц

  • Протоколы IEEE 802.11b/g/n WiFi и Bluetooth 5 (LE)

  • 400 КБ SRAM, 384 КБ ROM и встроенная 4 МБ flash-память

  • Компактная SMD-антенна

  • 11 GPIO, поддерживающих следующие интерфейсы:

    • 4 контакта ADC

    • PWM

    • UART

    • I2C

    • SPI

  • Встроенный светодиод на GPIO 8

  • Кнопки Reset и Boot

  • Сверхнизкое энергопотребление: всего 43 мкА в режиме глубокого сна

  • Малый форм-фактор

Вы также можете ознакомиться со следующей таблицей:

Микроконтроллер (процессор)

Espressif ESP32-C3 (32-бит RISC-V, одноядерный, до 160 МГц)

Flash-память

4 МБ (встроенная SPI flash)

SRAM

400 КБ

ROM

384 КБ

Wi-Fi

802.11 b/g/n, 2.4 ГГц, до 150 Мбит/с

Bluetooth

Bluetooth 5.0 LE

Контакты GPIO

11 доступных GPIO

Аналоговые входы (ADC)

2 x 12-бит SAR ADC, до 6 каналов

Каналы PWM

6 каналов

SPI

3 x SPI интерфейса (SPI0, SPI1 зарезервированы)

I2C

1 x I2C интерфейс

UART

2 x UART интерфейса

I2S

1 x I2S интерфейс

USB-интерфейс

USB-C, поддержка USB CDC

Питание

5В через USB-C или 3.3В–6В через контакт VIN (5V); встроенный регулятор 3.3В (до 500 мА)

Рабочее напряжение

3.3В (логический уровень для GPIO)

Режим глубокого сна

43 мкА

Кнопки

1 x кнопка Reset, 1 x кнопка Boot (GPIO9)

Светодиод

1 x встроенный светодиод (на GPIO8, активный низкий)

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

Arduino IDE, ESP-IDF, MicroPython, PlatformIO/pioarduino

Где купить ESP32-C3 Super Mini?

Плата ESP32-C3 Super Mini широко доступна во многих магазинах. Перейдите по следующей ссылке, чтобы сравнить цены в разных магазинах:

Периферийный интерфейс ESP32-C3 Super Mini

ESP32-C3 Super Mini имеет 16 контактов, 11 из которых — программируемые GPIO, которые можно использовать для управления периферийными устройствами и считывания датчиков. Поддерживаются следующие периферийные интерфейсы:

  • Цифровой ввод/вывод

  • PWM

  • ADC

  • PWM

  • UART

  • I2C

  • SPI

Распиновка ESP32-C3 Super Mini

На следующем рисунке показана распиновка платы ESP32-C3 Super Mini. Обратите внимание, что распиновка может незначительно отличаться в зависимости от производителя. Поэтому сверьтесь с маркировкой на шёлкотрафарете вашей платы.

Распиновка ESP32-C3 Super Mini

В следующей таблице описано назначение контактов и их функции.

Контакт

Функция

3V3

Выход/вход 3.3В (выходное напряжение от встроенного регулятора или вход для внешнего источника питания 3.3В)

5V

Вход/выход 5В (подключён к USB-C 5В или внешнему источнику 5В)

GND

Контакт земли

GPIO 0

GPIO общего назначения, ADC1, PWM

GPIO 1

GPIO общего назначения, ADC1, PWM

GPIO 2

GPIO общего назначения, ADC1, Strapping Pin (режим загрузки) (избегайте для общего использования)

GPIO 3

GPIO общего назначения, PWM

GPIO 4

GPIO общего назначения, PWM, по умолчанию контакт SPI SCK

GPIO 5

GPIO общего назначения, PWM, по умолчанию контакт SPI MISO

GPIO 6

GPIO общего назначения, PWM, по умолчанию контакт SPI MOSI

GPIO 7

GPIO общего назначения, PWM, по умолчанию контакт SPI SS

GPIO 8

Подключён к встроенному светодиоду (активный низкий); Strapping Pin (избегайте для общего использования); по умолчанию контакт I2C SDA

GPIO 9

Подключён к кнопке BOOT (LOW для входа в загрузчик), Strapping Pin (избегайте для общего использования); по умолчанию контакт I2C SCL

GPIO 10

GPIO общего назначения, PWM

GPIO 20

GPIO общего назначения, PWM, по умолчанию контакт UART RX

GPIO 21

GPIO общего назначения, PWM, по умолчанию контакт UART TX

Strapping-контакты

  • GPIO 2: strapping-контакт для входа в режим загрузчика — избегайте для общего использования.

  • GPIO 8: подключён к встроенному синему светодиоду (инвертированная логика/активный LOW); также является strapping-контактом;

  • GPIO 9: подключён к кнопке BOOT — избегайте для общего использования;

Вы по-прежнему можете использовать strapping-контакты в своих проектах, однако учитывайте колебания состояния этих GPIO при сбросе ESP32 или переходе в режим загрузчика.

Контакты питания

Для питания доступны контакты 5V, 3V3 и GND.

Контакт 3V3 обеспечивает напряжение 3.3В от встроенного регулятора или принимает 3.3В от внешнего источника питания. Аналогично, контакт 5V можно использовать как вход для питания платы, или он выдаёт 5В от USB-источника.

PWM

Все GPIO общего назначения могут выводить ШИМ-сигналы (PWM).

Аналоговые (ADC) контакты

GPIO 0, 1, 2, 3, 4 и 5 поддерживают аналоговое считывание:

  • GPIO 0: ADC1_CH0

  • GPIO 1: ADC1_CH1

  • GPIO 2: ADC1_CH2

  • GPIO 3: ADC1_CH3

  • GPIO 4: ADC1_CH4

  • GPIO 5: ADC1_CH5

UART, I2C и PWM

Благодаря функции мультиплексирования ESP32, интерфейсы UART, SPI и I2C могут быть назначены практически на любой GPIO.

Однако при использовании Arduino IDE и выборе платы ESP32 C3 в меню Boards по умолчанию используются следующие контакты:

  • UART: по умолчанию GPIO 20 (RX) и GPIO 21 (TX)

  • SPI: по умолчанию GPIO 6 (MISO), GPIO 7 (MOSI), GPIO 10 (SCK) и GPIO 5 (SS)

  • I2C: по умолчанию GPIO 8 (SDA) и GPIO 9 (SCL)

Даташит платы

Для получения дополнительной информации о плате ознакомьтесь с её даташитом по ссылке ниже:

Программирование ESP32-C3 Super Mini с Arduino IDE

Вы можете программировать ESP32-C3 Super Mini с помощью Arduino IDE, как и любой другой модуль ESP32. Для этого выполните следующие шаги.

1) Установка Arduino IDE

Сначала установите Arduino IDE и платы ESP32.

Перейдите на сайт Arduino и скачайте версию для вашей операционной системы.

Arduino IDE 2 — скачивание и установка
  • Windows: запустите скачанный файл и следуйте инструкциям мастера установки (для Windows мы рекомендуем первый вариант).

  • Mac OS X: скопируйте скачанный файл в папку Applications.

  • Linux: распакуйте скачанный файл и откройте файл arduino-ide, который запустит IDE.

Arduino IDE 2.0 — установка завершена успешно (Windows, Mac OS X, Linux)

Если у вас возникнут вопросы, обратитесь к Руководству по установке Arduino.

Нужна плата ESP32-C3 Super Mini? Вы можете купить её здесь.

Рекомендуем прочитать: ESP32 Development Boards Review and Comparison

2) Установка плат ESP32 в Arduino IDE

Чтобы установить платы ESP32 в Arduino IDE, выполните следующие инструкции.

Откройте Boards Manager. Перейдите в Tools > Board > Boards Manager… или просто нажмите на значок Boards Manager в левом боковом меню.

Arduino IDE 2 — Boards Manager

Найдите ESP32 и нажмите кнопку установки для esp32 by Espressif Systems version 3.X.

Установка ESP32 в Arduino IDE 2

Вот и всё. Установка завершится через несколько секунд.

3) Перевод ESP32-C3 Super Mini в режим загрузчика

Подключите ESP32-C3 Super Mini к компьютеру в режиме загрузчика (Bootloader Mode) — готовом для загрузки кода через USB. Возможно, вам нужно будет сделать это при первом подключении платы к компьютеру.

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

Выполните следующие шаги:

  1. Удерживайте кнопку BOOT.

  2. Нажмите и отпустите кнопку RESET (продолжая удерживать BOOT).

  3. Затем отпустите кнопку BOOT.

4) Загрузка кода на ESP32-C3 Super Mini

Скопируйте следующий код в Arduino IDE. Этот код просто мигает встроенным светодиодом (подключённым к GPIO 8) и выводит в Serial Monitor текущее состояние GPIO.

/*********
  Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/getting-started-esp32-c3-super-mini/
*********/

// ESP32 C3 Super Mini on-board LED (works with inverted logic)
const int ledPin = 8;

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  Serial.println("LED OFF");
  delay(1000);
  digitalWrite(ledPin, LOW);
  Serial.println("LED ON");
  delay(5000);
}

Исходный код

Теперь выберите плату и COM-порт. Нажмите на выпадающее меню вверху и выберите ESP32C3 Dev Module. Затем выберите соответствующий COM-порт.

Arduino IDE — выбор ESP32-C3 SuperMini

Затем включите следующую опцию в меню Tools > USB CDC on Boot.

Наконец, нажмите кнопку загрузки для загрузки кода.

Arduino IDE 2 — кнопка загрузки

Нажмите кнопку RST на плате, чтобы она начала выполнять только что загруженный код.

Встроенный светодиод будет мигать каждую секунду.

ESP32-C3 Super Mini — мигание встроенного светодиода (включён) ESP32-C3 Super Mini — мигание встроенного светодиода (выключен)

Одновременно вы можете открыть Serial Monitor со скоростью 115200 бод. В нём будет отображаться текущее состояние светодиода.

ESP32-C3 Super Mini — мигание светодиода, Serial Monitor

Тестирование Wi-Fi на ESP32-C3 Super Mini (веб-сервер)

Для тестирования Wi-Fi ESP32-C3 Super Mini мы подготовили веб-сервер, управляющий встроенным светодиодом.

1) Скопируйте следующий код в Arduino IDE.

/*********
  Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/getting-started-esp32-c3-super-mini/
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*********/

#include <WiFi.h>
#include <WebServer.h>

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// Assign output variable to GPIO pin
const int output = 8;
String outputState = "OFF";

// Create a web server object
WebServer server(80);

// Function to handle turning GPIO on
void handleGPIOOn() {
  outputState = "ON";
  digitalWrite(output, LOW);
  handleRoot();
}

// Function to handle turning GPIO off
void handleGPIOOff() {
  outputState = "OFF";
  digitalWrite(output, HIGH);
  handleRoot();
}

// Function to handle the root URL and show the current state
void handleRoot() {
  String html = "<!DOCTYPE html><html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">";
  html += "<link rel=\"icon\" href=\"data:,\">";
  html += "<style>";
  html += "html { font-family: Helvetica; text-align: center; background: #f5f7fa; margin: 0; padding: 20px; }";
  html += "body { max-width: 600px; margin: 0 auto; background: white; padding: 20px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }";
  html += "h1 { color: #333; font-size: 28px; margin-bottom: 20px; }";
  html += "p { color: #555; font-size: 18px; margin: 10px 0; }";
  html += ".button { background: #4CAF50; border: none; color: white; padding: 12px 24px; text-decoration: none; font-size: 20px; border-radius: 8px; cursor: pointer; transition: background 0.2s ease; display: inline-block; width: 120px; box-sizing: border-box; }";
  html += ".button:hover { background: #45a049; }";
  html += ".button2 { background: #555555; }";
  html += ".button2:hover { background: #666666; }";
  html += "</style></head>";
  html += "<body><h1>ESP32 Web Server</h1>";

  // Display GPIO controls
  html += "<p>GPIO - State " + outputState + "</p>";
  if (outputState == "ON") {
    html += "<p><a href=\"/off\"><button class=\"button button2\">OFF</button></a></p>";
  } else {
    html += "<p><a href=\"/on\"><button class=\"button\">ON</button></a></p>";
  }

  html += "</body></html>";
  server.send(200, "text/html", html);
}

void setup() {
  Serial.begin(115200);

  // Initialize the output variable as output
  pinMode(output, OUTPUT);
  // Set the onboard LED to LOW (inverted logic)
  digitalWrite(output, HIGH);

  // Connect to Wi-Fi network
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // Set up the web server to handle different routes
  server.on("/", handleRoot);
  server.on("/on", handleGPIOOn);
  server.on("/off", handleGPIOOff);

  // Start the web server
  server.begin();
  Serial.println("HTTP server started");
}

void loop() {
  // Handle incoming client requests
  server.handleClient();
}

Исходный код

2) Вставьте учётные данные вашей Wi-Fi сети в следующие строки.

const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

3) Загрузите код на плату.

Arduino IDE 2 — кнопка загрузки

4) Откройте Serial Monitor со скоростью 115200 бод.

5) Нажмите кнопку RST на плате.

6) IP-адрес будет выведен в Serial Monitor.

ESP32-C3 Super Mini — получение IP-адреса в Serial Monitor

7) Откройте веб-браузер в вашей локальной сети и вставьте IP-адрес. Вы должны получить доступ к веб-серверу. Нажмите кнопку для управления встроенным светодиодом.

ESP32-C3 Super Mini — веб-сервер, управление встроенным светодиодом ESP32-C3 Super Mini — веб-сервер, управление встроенным светодиодом

Режимы сна ESP32-C3 Super Mini

Одно из главных преимуществ ESP32-C3 Super Mini, помимо малого форм-фактора, — это низкое потребление в режиме сна.

Плата поддерживает режимы глубокого сна (deep sleep) и лёгкого сна (light sleep). Подробнее о функциях сна можно узнать в документации.

У нас есть несколько уроков, объясняющих использование глубокого и лёгкого сна с ESP32 (однако имейте в виду, что некоторые функции внешнего пробуждения отличаются для ESP32-C3 Super Mini).

* в случае внешнего пробуждения для ESP32-C3 Super Mini необходимо использовать функцию esp_deep_sleep_enable_gpio_wakeup() вместо стандартной.

ESP32-C3 Super Mini — глубокий сон с пробуждением по таймеру

Следующий пример — упрощённый код, который переводит ESP32 в режим глубокого сна на одну минуту. После каждой минуты плата просыпается и мигает светодиодом, подключённым к GPIO 8.

/*********
  Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/getting-started-esp32-c3-super-mini/
*********/

#define uS_TO_S_FACTOR 1000000ULL   // Microseconds to seconds
#define TIME_TO_SLEEP 60            // Deep sleep duration in seconds
#define LED_PIN 8                   // LED connected to GPIO 8

void setup() {
  delay(100);
  pinMode(LED_PIN, OUTPUT);

  // Blink LED (on-board LED works with inverted logic)
  digitalWrite(LED_PIN, LOW);
  delay(1000);
  digitalWrite(LED_PIN, HIGH);

  // Set deep sleep timer
  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);

  // Enter deep sleep
  esp_deep_sleep_start();
}

void loop() {

}

Исходный код

Чтобы перевести ESP32 в режим глубокого сна и разбудить его по таймеру, вызовите функцию esp_sleep_enable_timer_wakeup() и передайте количество микросекунд сна в качестве аргумента.

esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);

После настройки источника пробуждения можно перевести ESP32 в режим глубокого сна с помощью esp_deep_sleep_start().

esp_deep_sleep_start();

Для тестирования этого кода убедитесь, что к GPIO 8 подключён светодиод, или используйте встроенный светодиод.

Примечание: мне не удалось использовать Serial Monitor с ESP32-C3 Super Mini в режиме глубокого сна, потому что плата не подключалась к Serial Monitor автоматически после пробуждения.

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

  1. Удерживайте кнопку BOOT.

  2. Нажмите и отпустите кнопку RESET (продолжая удерживать BOOT).

  3. Затем отпустите кнопку BOOT.

Энергопотребление

Используя предыдущий пример на ESP32-C3 Super Mini, я измерил потребление в режиме глубокого сна — приблизительно 600 мкА. Это выше указанных в даташите 40 мкА. Вероятно, это связано с неоптимизированными конфигурациями, такими как плавающие GPIO; или необходимо использовать ESP-IDF для применения более эффективных функций.

Энергопотребление ESP32-C3 Super Mini в режиме глубокого сна

Энергопотребление ESP32-C3 Super Mini в режиме глубокого сна

Плата ESP32 DOIT — энергопотребление в режиме глубокого сна

Плата ESP32 DOIT — энергопотребление в режиме глубокого сна

Тем не менее, по сравнению с обычным ESP32, который потребляет около 10 мА в режиме глубокого сна, измеренные 600 мкА у ESP32-C3 всё равно более эффективны и являются значительным улучшением без каких-либо модификаций кода.

Заключение

Надеемся, это руководство по началу работы с ESP32-C3 Super Mini было для вас полезным. Когда вы познакомитесь с платой и её распиновкой, вы сможете использовать наши другие проекты ESP32 с этой конкретной платой — просто убедитесь, что правильно назначили контакты при необходимости.

Если вы хотите узнать больше об ESP32, обязательно ознакомьтесь с нашими ресурсами:

Источник: :doc:`Getting Started with the ESP32-C3 Super Mini <../getting-started-esp32-c3-super-mini/index>` — Random Nerd Tutorials, Rui Santos & Sara Santos