Плата отличается низким энергопотреблением (43 мкА), встроенным криптографическим ускорителем AES-128/256, RSA, HMAC, а также широким набором интерфейсов. Подключение через USB Type-C делает программирование удобным.
Распиновка

Принципиальная схема
Настройка в 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») и выберите свою плату (в нашем случае это ESP32C3 Dev Module).
7) После выбора платы в меню инструментов измените параметр USB CDC On Boot: на Enabled, чтобы можно было загружать код без необходимости входить в режим загрузки платы.
8) Код для проверки:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#define LED 8 void setup() { pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, LOW); delay(1000); digitalWrite(LED, HIGH); delay(1000); } |
Пример: Обмен данными между смартфоном и ESP32-C3 Super Mini через Bluetooth
В данном демонстрационном примере с помощью Bluetooth-терминала на телефоне будем управлять встроенным светодиодом на плате. Доступные команды: ON (включен), OFF (выключен), STATUS (проверка статуса).
|
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
#include <BLEDevice.h> // Подключаем библиотеку для BLE #include <BLEServer.h> // Для создания BLE сервера #include <BLEUtils.h> // Вспомогательные утилиты BLE #include <BLE2902.h> // Для дескриптора уведомлений #define LED_PIN 8 // Встроенный светодиод на ESP32-C3 Super Mini (GPIO8) #define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" // Уникальный ID сервиса #define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" // Уникальный ID характеристики BLEServer* pServer = NULL; // Указатель на BLE сервер BLECharacteristic* pCharacteristic = NULL; // Указатель на характеристику BLE bool deviceConnected = false; // Флаг подключения устройства // Класс для обработки событий подключения/отключения BLE клиентов class MyServerCallbacks: public BLEServerCallbacks { // Вызывается при подключении клиента void onConnect(BLEServer* pServer) { deviceConnected = true; Serial.println("Bluetooth подключен"); } // Вызывается при отключении клиента void onDisconnect(BLEServer* pServer) { deviceConnected = false; Serial.println("Bluetooth отключен"); // Перезапускаем рекламу, чтобы устройство снова можно было подключить pServer->startAdvertising(); Serial.println("Начинаем рекламацию..."); } }; // Класс для обработки входящих данных от клиента class MyCharacteristicCallbacks: public BLECharacteristicCallbacks { // Вызывается когда клиент отправляет данные (пишет в характеристику) void onWrite(BLECharacteristic* pCharacteristic) { // Получаем отправленное значение (метод getValue() возвращает String) String value = pCharacteristic->getValue(); if (value.length() > 0) { // Приводим команду к нижнему регистру и удаляем пробелы String command = value; command.trim(); command.toLowerCase(); Serial.print("Получена команда: "); Serial.println(command); // Управление светодиодом (инверсная логика - LOW = ВКЛ, HIGH = ВЫКЛ) if (command == "on" || command == "1") { // Включаем светодиод (LOW, так как активный LOW) digitalWrite(LED_PIN, LOW); Serial.println("Светодиод ВКЛЮЧЕН"); // Отправляем подтверждение обратно клиенту pCharacteristic->setValue("LED ON"); pCharacteristic->notify(); // Отправляем уведомление клиенту } else if (command == "off" || command == "0") { // Выключаем светодиод (HIGH) digitalWrite(LED_PIN, HIGH); Serial.println("Светодиод ВЫКЛЮЧЕН"); // Отправляем подтверждение обратно pCharacteristic->setValue("LED OFF"); pCharacteristic->notify(); } else if (command == "status") { // Проверяем текущее состояние светодиода // digitalRead возвращает HIGH или LOW String status = (digitalRead(LED_PIN) == LOW) ? "LED is ON" : "LED is OFF"; pCharacteristic->setValue(status); pCharacteristic->notify(); Serial.println("Отправлен статус: " + status); } else { // Неизвестная команда String response = "Unknown command. Use: ON, OFF, STATUS"; pCharacteristic->setValue(response); pCharacteristic->notify(); } } } }; void setup() { // Инициализация последовательного порта для отладки (скорость 115200 бод) Serial.begin(115200); Serial.println("Запуск ESP32-C3 BLE сервера..."); // Настройка пина светодиода как выхода pinMode(LED_PIN, OUTPUT); // Изначально выключаем светодиод (HIGH для активного LOW) digitalWrite(LED_PIN, HIGH); // Инициализация BLE с заданным именем устройства // Это имя будет видно при сканировании Bluetooth BLEDevice::init("ESP32-C3 LED Control"); // Создаем BLE сервер - центральный узел для управления подключениями pServer = BLEDevice::createServer(); pServer->setCallbacks(new MyServerCallbacks()); // Устанавливаем обработчики событий // Создаем BLE сервис с уникальным UUID BLEService* pService = pServer->createService(SERVICE_UUID); // Создаем характеристику (данные, которыми будем обмениваться) // PROPERTY_READ - клиент может читать // PROPERTY_WRITE - клиент может писать // PROPERTY_NOTIFY - сервер может отправлять уведомления pCharacteristic = pService->createCharacteristic( CHARACTERISTIC_UUID, BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE | BLECharacteristic::PROPERTY_NOTIFY ); // Добавляем дескриптор для поддержки уведомлений (необходим для notify) pCharacteristic->addDescriptor(new BLE2902()); // Устанавливаем обработчик входящих данных pCharacteristic->setCallbacks(new MyCharacteristicCallbacks()); // Устанавливаем начальное значение характеристики pCharacteristic->setValue("Ready. Send ON or OFF"); // Запускаем сервис - делаем его активным pService->start(); // Настраиваем рекламу (делаем устройство видимым для сканирования) BLEAdvertising* pAdvertising = pServer->getAdvertising(); pAdvertising->addServiceUUID(SERVICE_UUID); // Добавляем UUID сервиса в рекламу pAdvertising->setScanResponse(true); // Включаем ответ на сканирование pAdvertising->setMinPreferred(0x06); // Параметры для улучшения подключения с iPhone pAdvertising->setMinPreferred(0x12); // Запускаем рекламу - устройство становится видимым BLEDevice::startAdvertising(); Serial.println("BLE сервер запущен. Ожидание подключения..."); Serial.println("Имя устройства: ESP32-C3 LED Control"); Serial.println("Команды: ON, OFF, STATUS"); } void loop() { // Небольшая задержка для стабильности работы // Основная логика обрабатывается в колбэках, поэтому loop может быть пустым delay(10); } |















