Skip to main content

Seeed Studio XIAO ESP32C3 入门指南


介绍

Seeed Studio XIAO ESP32C3 是一款基于乐鑫 ESP32-C3 WiFi/蓝牙双模芯片的物联网迷你开发板,采用 32位 RISC-V CPU,凭借其高效的架构提供强大的计算性能。它具有出色的射频性能,支持 IEEE 802.11 b/g/n WiFi蓝牙 5 (BLE) 协议。该开发板配备外置天线,以增强无线应用的信号强度。它还具有 小巧精致的外形单面可贴装设计。它配备了丰富的接口,拥有 11个数字I/O 可用作 PWM引脚4个模拟I/O 可用作 ADC引脚。它支持四种串行接口,如 UART、I2C 和 SPI。板上还有一个小的 复位按钮 和一个 引导加载程序模式按钮。XIAO ESP32C3 完全兼容 Grove Shield for Seeeduino XIAOSeeeduino XIAO 扩展板,但对于 Seeeduino XIAO 扩展板,板上的 SWD 弹簧触点将不兼容。

基于上述突出的特性,XIAO ESP32C3 定位为 高性能、低功耗、高性价比的物联网迷你开发板,适用于 低功耗物联网应用和无线可穿戴应用

本wiki将向您展示如何快速开始使用XIAO ESP32C3!

规格参数

项目Seeed Studio XIAO ESP32C3Seeeduino XIAOSeeed XIAO RP2040Seeed XIAO nRF52840Seeed XIAO nRF52840 Sense
处理器ESP32-C3 32位 RISC-V @160MHzSAMD21 M0+@48MHzRP2040 双核 M0+@133MhznRF52840 M4F@64MHznRF52840 M4F@64MHz
无线连接WiFi 和蓝牙 5 (BLE)N/AN/A蓝牙 5.0/BLE/NFC蓝牙 5.0/BLE/NFC
内存400KB SRAM,4MB 板载闪存32KB SRAM 256KB FLASH264KB SRAM 2MB 板载闪存256KB RAM,1MB Flash 2MB 板载闪存256KB RAM,1MB Flash 2MB 板载闪存
内置传感器N/AN/AN/AN/A6轴 IMU (LSM6DS3TR-C),PDM 麦克风
接口I2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPI
PWM/模拟引脚11/411/1111/411/611/6
板载按钮复位/启动按钮N/A复位/启动按钮复位按钮复位按钮
板载LED充电LEDN/A全彩RGB/三合一LED三合一LED/充电LED三合一LED/充电LED
电池充电芯片ETA4054S2FN/AN/ABQ25101BQ25101
编程语言Arduino/MicroPythonArduino/CircuitPythonArduino/MicroPython/CircuitPython

特性

  • 强大的CPU: ESP32-C3,32位RISC-V单核处理器,运行频率高达160 MHz
  • 完整的Wi-Fi子系统: 符合IEEE 802.11b/g/n协议,支持Station模式、SoftAP模式、SoftAP + Station模式和混杂模式
  • 蓝牙LE子系统: 支持蓝牙5和蓝牙mesh功能
  • 超低功耗: 深度睡眠功耗约43μA
  • 更好的RF性能: 包含外部RF天线
  • 电池充电芯片: 支持锂电池充放电管理
  • 丰富的片上资源: 400KB SRAM和4MB板载闪存
  • 超小尺寸: 拇指大小(21x17.8mm) XIAO系列经典外形规格,适用于可穿戴设备和小型项目
  • 可靠的安全特性: 支持AES-128/256、Hash、RSA、HMAC、数字签名和安全启动的加密硬件加速器
  • 丰富的接口: 1个I2C、1个SPI、2个UART、11个GPIO(PWM)、4个ADC、1个JTAG焊盘接口
  • 单面元件,表面贴装设计

硬件概述

*A3(GP105) - 使用ADC2,可能由于错误采样信号而无法工作。为了可靠的模拟读取,请使用ADC1(A0/A1/A2)。请参考ESP32-C3数据手册。

XIAO ESP32C3 正面指示图
XIAO ESP32C3 背面指示图
XIAO ESP32C3 引脚列表

电源引脚

  • 5V - 这是来自USB端口的5V输出。您也可以将其用作电压输入,但必须在外部电源和此引脚之间使用某种二极管(肖特基、信号、功率),阳极连接电池,阴极连接5V引脚。
  • 3V3 - 这是板载稳压器的稳压输出。您可以获得700mA电流
  • GND - 电源/数据/信号地

启动引脚

根据ESP32C3的芯片手册,芯片中的GPIO2GPIO8GPIO9是启动引脚,这些引脚的高低电平配置可能会让芯片进入不同的启动模式,在使用这些引脚时请注意这一点,否则可能会导致您的XIAO无法上传或执行程序。

入门指南

首先,我们将把XIAO ESP32C3连接到计算机,将LED连接到开发板,并从Arduino IDE上传一个简单的代码,通过闪烁连接的LED来检查开发板是否正常工作。

硬件准备

您需要准备以下物品:

tip

某些USB线只能供电而无法传输数据。如果您没有USB线或不知道您的USB线是否可以传输数据,您可以查看Seeed USB Type-C支持USB 3.1

  • 步骤1. 通过USB Type-C数据线将XIAO ESP32C3连接到您的计算机。
  • 步骤2. 将LED连接到D10引脚,如下所示

注意: 确保串联连接一个电阻(约150Ω)来限制通过LED的电流,防止过大电流烧坏LED

软件准备

  • 步骤1. 根据您的操作系统下载并安装最新版本的Arduino IDE

  • 步骤2. 启动Arduino应用程序

  • 步骤3. 将ESP32开发板包添加到您的Arduino IDE

导航到文件 > 首选项,在**"附加开发板管理器网址"**中填入以下网址: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

导航到工具 > 开发板 > 开发板管理器...,在搜索框中输入关键词"esp32",选择最新版本的esp32并安装。

  • 步骤4. 选择您的开发板和端口

开发板

导航到工具 > 开发板 > ESP32 Arduino并选择"XIAO_ESP32C3"。开发板列表比较长,您需要滚动到底部才能找到它。

端口

导航到工具 > 端口并选择已连接的XIAO ESP32C3的串口名称。这通常是COM3或更高(COM1COM2通常保留给硬件串口)。

运行您的第一个闪烁程序

  • 步骤1. 将以下代码复制到Arduino IDE

确保您的D10按照上图所示连接到LED。


// define led according to pin diagram in article
const int led = D10; // there is no LED_BUILTIN available for the XIAO ESP32C3.

void setup() {
// initialize digital pin led as an output
pinMode(led, OUTPUT);
}

void loop() {
digitalWrite(led, HIGH); // turn the LED on
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off
delay(1000); // wait for a second
}
  • 步骤 2. 点击 Upload 按钮将代码上传到开发板

上传完成后,您将看到连接的LED以1秒的间隔闪烁。这意味着连接成功,现在您可以使用XIAO ESP32C3探索更多项目!

电池使用

XIAO ESP32C3能够使用3.7V锂电池作为电源输入。您可以参考以下图表了解接线方法。

pir
caution

焊接时请小心不要短路正负极,以免烧坏电池和设备。

电池使用说明:

  1. 请使用符合规格的合格电池。
  2. 在使用电池的同时,XIAO可以通过数据线连接到您的计算机设备,请放心,XIAO内置电路保护芯片,使用安全。
  3. XIAO ESP32C3在电池供电时不会有任何LED亮起(除非您编写了特定程序),请不要通过LED的状态来判断XIAO ESP32C3是否工作,请通过您的程序合理判断。
  4. 抱歉,我们目前无法通过软件帮助您检查剩余电池电量(因为没有更多可用的芯片引脚),您需要定期给电池充电或使用万用表检查电池电量。

检查电池电压

由于ESP32C3引脚数量的限制,工程师为了确保XIAO ESP32C3具有与其他XIAO系列相同数量的GPIO,没有额外的引脚分配给电池进行电压测量。

但如果您希望使用单独的引脚进行电池电压测量,您可以参考msfujino的巧妙操作。我们也要特别感谢msfujino为XIAO ESP32C3分享的所有经验和努力。

基本操作思路是:电池电压通过200k电阻分压1/2并连接到A0端口,这样就可以监测电压。

pir

数据手册显示标称2500mV满量程AD转换,但芯片之间存在很大差异,实际上为±10%。我的芯片是2700mV满量程。

幸运的是,每个芯片的校准修正值都写在熔丝区域中,通过使用函数analogReadMilliVolts(),我可以读取修正后的电压值,无需做任何特殊处理。

AD转换的结果与万用表测量的电压非常吻合,误差约为5mV,在实际使用中没有问题。

此外,在通信过程中特别是会出现尖峰状错误,必须平均16次才能消除它们。

以下是测试电池电压的程序。

void setup() {
Serial.begin(115200);
pinMode(A0, INPUT); // ADC
}

void loop() {
uint32_t Vbatt = 0;
for(int i = 0; i < 16; i++) {
Vbatt = Vbatt + analogReadMilliVolts(A0); // ADC with correction
}
float Vbattf = 2 * Vbatt / 16 / 1000.0; // attenuation ratio 1/2, mV --> V
Serial.println(Vbattf, 3);
delay(1000);
}
tip

以上内容来自 Seeed Studio 论坛用户 msfujino,原始发布地址: https://forum.seeedstudio.com/t/battery-voltage-monitor-and-ad-conversion-for-xiao-esp32c/267535。 我们建议您在尝试基于上述内容测量电池电压之前,具备良好的动手能力和更好的焊接技能,并谨慎避免电池短路等危险操作。

深度睡眠模式和唤醒

XIAO ESP32C3 设计支持深度睡眠模式和唤醒功能。对于这两个功能的使用,我们提供以下使用示例。

#define BUTTON_PIN_BITMASK 0x200000000 // 2^33 in hex

RTC_DATA_ATTR int bootCount = 0;

/*
Method to print the reason by which ESP32
has been awaken from sleep
*/
void print_wakeup_reason(){
esp_sleep_wakeup_cause_t wakeup_reason;

wakeup_reason = esp_sleep_get_wakeup_cause();

switch(wakeup_reason)
{
case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
}
}

void setup(){
Serial.begin(115200);
delay(1000); //Take some time to open up the Serial Monitor

//Increment boot number and print it every reboot
++bootCount;
Serial.println("Boot number: " + String(bootCount));

//Print the wakeup reason for ESP32
print_wakeup_reason();

esp_deep_sleep_enable_gpio_wakeup(BIT(D1), ESP_GPIO_WAKEUP_GPIO_LOW);

//Go to sleep now
Serial.println("Going to sleep now");
esp_deep_sleep_start();
Serial.println("This will never be printed");
}

void loop(){
//This is not going to be called
}

如果您足够快地在 XIAO 进入深度睡眠之前打开串口监视器,那么您可以看到如下所示的消息输出。这意味着 XIAO 现在处于"睡眠"状态。

tip

进入深度睡眠模式后,XIAO 的端口将消失,您需要唤醒它才能再次看到其端口号!

在程序中,我们使用 D1 低电平来唤醒。这意味着我们可以将按钮连接到引脚 D1,当我们按下按钮时 XIAO 将被唤醒。

caution

目前 XIAO ESP32C3 仅支持 GPIO 唤醒,支持唤醒的引脚只有 D0~D3。此程序可能无法在其他引脚上工作。

故障排除

Q1: 我的 Arduino IDE 在向开发板上传代码时卡住了

您可以首先尝试在开发板连接到 PC 时单击一次 RESET BUTTON 来重置开发板。如果这不起作用,请按住 BOOT BUTTON,在按住 BOOT 按钮的同时将开发板连接到 PC,然后释放它以进入 bootloader 模式

Q2: 我的开发板在 Arduino IDE 中没有显示为串行设备

请按照上面 Q1 的相同答案操作。

Q3: 我想用出厂固件重新刷写 bootloader

您可以简单地通过 USB Type-C 将开发板连接到 PC,并使用 ESP RF Test Tool 用出厂固件重新刷写 bootloader。

  • 步骤 1. 按住 BOOT BUTTON 并将 XIAO ESP32C3 连接到 PC 以进入 bootloader 模式

  • 步骤 2. 连接后,释放 BOOT BUTTON

  • 步骤 3. 访问此页面并下载 ESP RF Test Tool and Test Guide

  • 步骤 4. 解压 .zip 文件,导航到 ESP_RF_Test_EN\ESP_RF_Test_EN\EspRFTestTool_v2.8_Manual 并打开 EspRFTestTool_v2.8_Manual.exe
  • 步骤 5. 选择 ESP32C3 作为 ChipType,您的 COM 端口,115200 作为 BaudRate 并点击 open

您将看到以下输出

  • 步骤 6. 选择 Flash 并点击 Select Bin

刷写成功时您将看到以下输出

MicroPython GitHub 仓库

资源

课程资源

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...