Это руководство по началу работы с платой Seeed XIAO ESP32-C3 от компании Seeed Studio. Недавно Seeed Studio выпустила самую маленькую в мире плату ESP32 под названием XIAO ESP32 C3. Эта мини-плата разработки IoT на базе двухрежимного чипа Espressif ESP32-C3 WiFi/Bluetooth.
Основное различие между платами ESP32 и ESP32-C3 заключается в процессоре и версии BLE. ESP32 имеет процессор Tensilica Xtensa LX6 32-бит Dual-Core, работающий на частоте 160/240 МГц, тогда как плата ESP32-C3 работает на RISC-V 32-бит Single-Core, работающем на тактовой частоте 160 МГц. При сравнении части BLE, ESP32 имеет 4.2 BR/EDR + BLE, а ESP32-C3 имеет 5.0 + BLE, которая является улучшенной версией по сравнению с 4.2.
В данной статье мы узнаем об общих принципах работы платы XIAO ESP32-C3, а также о ее функциях, возможностях, распиновке и приложениях. Сначала мы рассмотрим базовое использование, например, мигание светодиода и считывание данных датчика DHT11. В категории использования WiFi мы создадим простой веб-сервер, на котором данные датчика можно будет просматривать на веб-сервере. Наконец, в части использования BLE мы просканируем устройства Bluetooth поблизости, используя функцию Bluetooth этой платы.
Необходимые компоненты
- Плата Seeed Studio XIAO ESP32C3 (купить на AliExpress).
- Светодиод 5мм любого цвета (купить на AliExpress).
- Резистор 200 Ом.
- Датчик температуры и влажности DHT11 (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Seeed Studio XIAO ESP32-C3
Seeed Studio XIAO ESP32-C3 несет в себе полную систему Wi-Fi вместе с функцией Bluetooth Low Energy. Благодаря изысканному дизайну и возможности WiFi+BLE она идеально подходит для различных сценариев управления IoT (Интернет вещей) и сложных переносимых приложений.
ESP32-C3 — это 32-битный RISC-V CPU, который включает FPU (Floating Point Unit) для 32-битной арифметики одинарной точности с мощной вычислительной мощностью. Она имеет превосходную производительность, поддерживая протоколы IEEE 802.11 b/g/n WiFi и Bluetooth 5 (BLE). Эта плата поставляется с внешней антенной для увеличения мощности сигнала для ваших беспроводных приложений. Она также имеет небольшой и изысканный форм-фактор в сочетании с односторонним поверхностным монтажом.
Возможности Seeed Studio XIAO ESP32-C3
- Мощный процессор: ESP32-C3, 32-битный одноядерный процессор RISC-V, работающий на частоте до 160 МГц.
- Полная подсистема WiFi: соответствует протоколу IEEE 802.11b/g/n и поддерживает режим станции, режим SoftAP, режим SoftAP + станции и смешанный режим.
- Подсистема Bluetooth LE: поддерживает функции Bluetooth 5 и Bluetooth Mesh.
- Сверхнизкое энергопотребление: потребление энергии в режиме глубокого сна составляет около 43 мкА.
- Улучшенные радиочастотные характеристики: в комплект входит внешняя радиочастотная антенна.
- Микросхема зарядки аккумулятора: поддерживает управление зарядом и разрядом литиевых аккумуляторов.
- Впечатляющие ресурсы на кристалле: 400 КБ SRAM и 4 МБ встроенной флэш-памяти.
- Сверхкомпактный размер: размером с большой палец (20×17,5 мм) — классический форм-фактор серии XIAO для носимых устройств и небольших проектов.
- Надежные функции безопасности: криптографические аппаратные ускорители, поддерживающие AES-128/256, Hash, RSA, HMAC, цифровую подпись и безопасную загрузку.
- Широкий набор интерфейсов: 1xI2C, 1xSPI, 1xI2S, 2xUART, 11xGPIO(PWM), 4xADC, 1xJTAG-интерфейс.
- Односторонние компоненты, конструкция для поверхностного монтажа.
Компоненты на передней и задней стороне платы
На передней стороне платы находится чип ESP32-C3, установленный на поверхности SMD печатной платы. Как и другие платы ESP32, эта плата также имеет кнопку загрузки и сброса. Она также оснащена светодиодом зарядки, который указывает на зарядку батареи во время зарядки батареи. Она поддерживает интерфейс USB-Type C для UART/последовательной связи. Плата имеет разъем UFL для внешней антенны для увеличения мощности сигнала для любых беспроводных приложений.
На задней стороне платы находится интерфейс JTAG для доступа к функциям отладки/эмуляции. Порт разъема батареи предназначен для подключения литий-ионной батареи 3,7 В для портативных приложений. На задней стороне платы также предусмотрена термопрокладка, которую можно использовать в качестве системы охлаждения при чрезмерном использовании ЦП, что может приводить к выделению тепла.
Распиновка Seeed XIAO ESP32-C3
Плата Seeed XIAO ESP32-C3 имеет общее количество контактов 14. Из 14 контактов она имеет 11 цифровых контактов (D0-D10) и 4 аналоговых контакта (A0-A3). Эти контакты также поддерживают протоколы I2C, SPI, I2S и пару протоколов UART.
Плата имеет 5 В, 3,3 В и GND в качестве вывода питания. Вывод USB - это выход 5 В. Вывод платы используется как вход напряжения, но должен иметь какой-то диод (Шоттки, сигнальный, силовой) между внешним источником питания и этим выводом с анодом к батарее, катодом к выводу 5 В. Плата также выводит стабилизированный выход 3,3 В от встроенного регулятора и может потреблять ток до 700 мА.
Антенна XIAO ESP32-C3
XIAO ESP32-C3 имеет разъем UFL для подключения антенны. Внешняя антенна с частотой 2,4 ГГц может использоваться для приложений WiFi и BLE.
Поэтому подключите внешнюю антенну, чтобы увеличить мощность сигнала.
Начало работы с платой Seeed XIAO ESP32-C3
Перед использованием платы ESP32-C3 нам нужно настроить Arduino IDE. Arduino IDE не имеет предустановленной платы ESP32-C3. Поэтому нам нужно сначала установить эту плату.
Сначала откройте Arduino IDE и перейдите в File > Preferences (Файл > Настройки) и заполните “Additional Boards Manager URLs” («URL-адреса дополнительных плат») следующим URL-адресом:

Перейдите в Tools > Board > Boards Manager (Инструменты > Плата > Менеджер плат), введите ключевое слово «esp32» в поле поиска, выберите последнюю версию и установите ее.
После установки платы перейдите в Tools > Board > ESP32 Arduino и выберите «XIAO_ESP32C3». Список плат немного длиннее, и вам нужно прокрутить вниз, чтобы добраться до него.
Перейдите в меню Tools > Port (Инструменты > Порт) и выберите имя последовательного порта, к которому подключенна XIAO ESP32C3.
Теперь ваша плата XIAO ESP32-C3 готова к программированию и запуску проекта.
Мигание светодиода
Первая программа, которую мы реализуем, это мигание светодиода. Вот схема подключения для этого проекта.
Подключите положительный вывод светодиода к GPIO2 платы, а отрицательный вывод светодиода к GND платы через резистор 200 Ом. Для сборки схемы можно использовать макетную плату.
Исходный код программы
Скопируйте следующий код и загрузите его на плату ESP32-C3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#define LED_BUILTIN 2 // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } |
После загрузки кода светодиод будет включаться и выключаться с интервалом в 1 секунду.
Чтение данных датчика DHT11
Вторая программа, которую мы собираемся реализовать, это чтение данных датчика влажности и температуры DHT11. Вот схема подключения для этого проекта.
Подключите выводы DHT11 VCC, GND и его выходной контакт к контактам 3,3 В, GND и GPIO5 платы XIAO ESP32-C3. Для сборки схемы можно использовать макетную плату.
Исходный код программы
Для компиляции кода требуется библиотека для работы с датчиками DHT11 . Поэтому сначала загрузите и установите библиотеку с помощью менеджера библиотек. Затем скопируйте следующий код и загрузите его на плату ESP32-C3.
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 |
#include "DHT.h" #define DHTPIN 5 // Digital pin connected to the DHT sensor #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println(F("DHTxx test!")); dht.begin(); delay(2000); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t)) { Serial.println(F("Failed to read from DHT sensor!")); return; } Serial.print(F("Humidity: ")); Serial.print(h); Serial.println("%"); Serial.print(F("Temperature: ")); Serial.print(t); Serial.println(F("°C ")); Serial.println(""); delay(2000); } |
После загрузки кода откройте Serial Monitor (окно монитора последовательной связи) - он отобразит данные о влажности и температуре.
Использование WiFi на плате XIAO ESP32-C3
Теперь давайте посмотрим, как мы можем использовать функцию WiFi платы Seeed XIAO ESP32-C3. Для этого мы будем использовать ту же аппаратную настройку, что и выше. Вместо отображения данных датчика DHT11 на последовательном мониторе мы будем отображать значение температуры и влажности на веб-сервере.
Веб-сервер ESP32-C3 может использоваться для обработки и управления HTTP-запросами и ответами с веб-страницы.
Исходный код программы
Вот полный код для веб-сервера на ESP32 с чтением данных датчика DHT11. Код снова требует библиотеку DHT11.
В следующих двух строках измените SSID и пароль WiFi, чтобы ESP32 мог подключиться к вашей сети WiFi, используя указанные учетные данные.
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 |
#include <WiFi.h> #include <WebServer.h> #include "DHT.h" #define DHTTYPE DHT11 // DHT 11 /*Put your SSID & Password*/ const char* ssid = "************"; // Enter SSID here const char* password = "************"; //Enter Password here WebServer server(80); // DHT Sensor uint8_t DHTPin = 5; // Initialize DHT sensor. DHT dht(DHTPin, DHTTYPE); float Temperature; float Humidity; void setup() { Serial.begin(115200); delay(100); pinMode(DHTPin, INPUT); dht.begin(); Serial.println("Connecting to "); Serial.println(ssid); //connect to your local wi-fi network WiFi.begin(ssid, password); //check wi-fi is connected to wi-fi network while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected..!"); Serial.print("Got IP: "); Serial.println(WiFi.localIP()); server.on("/", handle_OnConnect); server.onNotFound(handle_NotFound); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); } void handle_OnConnect() { Temperature = dht.readTemperature(); // Gets the values of the temperature Humidity = dht.readHumidity(); // Gets the values of the humidity server.send(200, "text/html", SendHTML(Temperature,Humidity)); } void handle_NotFound(){ server.send(404, "text/plain", "Not found"); } String SendHTML(float Temperaturestat,float Humiditystat) { String ptr = "<!DOCTYPE html> <html>\n"; ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n"; ptr +="<title>ESP32 Webserver</title>\n"; ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n"; ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n"; ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n"; ptr +="</style>\n"; ptr +="</head>\n"; ptr +="<body>\n"; ptr +="<div id=\"webpage\">\n"; ptr +="<h1>ESP32 Webserver</h1>\n"; ptr +="<p>Temperature: "; ptr +=(int)Temperaturestat; ptr +=" C</p>"; ptr +="<p>Humidity: "; ptr +=(int)Humiditystat; ptr +="%</p>"; ptr +="</div>\n"; ptr +="</body>\n"; ptr +="</html>\n"; return ptr; } |
После загрузки кода откройте Serial Monitor (окно монитора последовательной связи) - в нем отобразится IP-адрес ESP32 после успешного подключения к сети WiFi.
Откройте любой веб-браузер на ПК или мобильном телефоне, введите указанный выше IP-адрес и нажмите Enter. Появится веб-страница, на которой будут показаны значения влажности и температуры.
Использование Bluetooth (BLE) на плате XIAO ESP32-C3
В этом примере мы будем использовать плату XIAO ESP32-C3 для сканирования доступных Bluetooth-устройств вокруг нее.
В случае ESP32-C3 BLE данные во время связи организованы с использованием профиля, называемого GATT (Generic Attributes). По сути, есть два протокола, которые важны для связи между двумя устройствами BLE: GAP и GATT. GAP — это аббревиатура от Generic Access Profile, и он управляет соединениями и рекламой (делает устройство видимым и открытым для подключения) в Bluetooth. GATT — это аббревиатура от Generic Attribute Profile, и он определяет, как два устройства Bluetooth Low Energy передают данные друг другу, используя концепции, называемые Services и Characteristics.
Исходный код программы
Скопируйте следующий код и вставьте его в Arduino IDE. Затем вы можете загрузить его на плату ESP32-C3.
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 |
#include <BLEDevice.h> #include <BLEUtils.h> #include <BLEScan.h> #include <BLEAdvertisedDevice.h> int scanTime = 5; //In seconds BLEScan* pBLEScan; class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { void onResult(BLEAdvertisedDevice advertisedDevice) { Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str()); } }; void setup() { Serial.begin(115200); Serial.println("Scanning..."); BLEDevice::init(""); pBLEScan = BLEDevice::getScan(); //create new scan pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster pBLEScan->setInterval(100); pBLEScan->setWindow(99); // less or equal setInterval value } void loop() { // put your main code here, to run repeatedly: BLEScanResults foundDevices = pBLEScan->start(scanTime, false); Serial.print("Devices found: "); Serial.println(foundDevices.getCount()); Serial.println("Scan done!"); pBLEScan->clearResults(); // delete results fromBLEScan buffer to release memory delay(2000); } |
Загрузите коды и откройте Serial Monitor, чтобы начать сканирование устройств Bluetooth. Serial Monitor отобразит количество доступных устройств поблизости.
Вот как можно использовать плату Seeed XIAO ESP32-C3 для проектов Интернета вещей и других приложений.
С применением другой библиотеки все нормально заработало.
/*
Read Temperature and Humidity
DHT11 Library
Author: Bonezegei (Jofel Batutay)
Date : November 2023
Tested using ESP32-WROOM32
*/
#include
//param = DHT11 signal pin
Bonezegei_DHT11 dht(2);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
if (dht.getData()) { // get All data from DHT11
float tempDeg = dht.getTemperature(); // return temperature in celsius
float tempFar = dht.getTemperature(true); // return temperature in fahrenheit if true celsius of false
int hum = dht.getHumidity(); // return humidity
String str = "Temperature: ";
str += tempDeg;
str += "°C ";
str += tempFar;
str += "°F Humidity:";
str += hum;
Serial.println(str.c_str());
//Serial.printf("Temperature: %0.1lf°C %0.1lf°F Humidity:%d \n", tempDeg, tempFar, hum);
}
delay(2000); //delay atleast 2 seconds for DHT11 to read tha data
}
К сожалению, такое иногда бывает. Но я рад что у вас получилось. Ссылку на библиотеку на гитхабе с которой у вас получилось не могли бы написать? Это поможет другим пользователям
При компиляции скетча с датчиком DHT11 выскакивает ошибка "avr/pgmspace.h: No such file or directory"
и в версию Arduino IDE v2.3.4 эта библиотека не устанавливается.