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 Expansion board,但对于 Seeeduino XIAO Expansion board,开发板上的 SWD 弹簧触点将不兼容。

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

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

规格参数

项目Seeed Studio XIAO ESP32C3Seeeduino XIAOSeeed XIAO RP2040Seeed XIAO nRF52840Seeed XIAO nRF52840 Sense
处理器ESP32-C3 32-bit RISC-V @160MHzSAMD21 M0+@48MHzRP2040 Dual-core M0+@133MhznRF52840 M4F@64MHznRF52840 M4F@64MHz
无线连接WiFi and Bluetooth 5 (BLE)N/AN/ABluetooth 5.0/BLE/NFCBluetooth 5.0/BLE/NFC
内存400KB SRAM, 4MB onboard Flash32KB SRAM 256KB FLASH264KB SRAM 2MB onboard Flash256KB RAM, 1MB Flash 2MB onboard Flash256KB RAM,1MB Flash 2MB onboard Flash
内置传感器N/AN/AN/AN/A6 DOF IMU (LSM6DS3TR-C), PDM Microphone
接口I2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPI
PWM/模拟引脚11/411/1111/411/611/6
板载按钮Reset/ Boot ButtonN/AReset/ Boot ButtonReset ButtonReset Button
板载 LEDCharge LEDN/AFull-color RGB/ 3-in-one LED3-in-one LED/ Charge LED3-in-one LED/ Charge 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
  • 更好的射频性能: 包含外置射频天线
  • 电池充电芯片: 支持锂电池充放电管理
  • 丰富的片上资源: 400KB SRAM 和 4MB 板载闪存
  • 超小尺寸: 拇指大小(21x17.8mm)XIAO 系列经典外形,适用于可穿戴设备和小型项目
  • 可靠的安全功能: 支持 AES-128/256、Hash、RSA、HMAC、数字签名和安全启动的加密硬件加速器
  • 丰富的接口: 1xI2C、1xSPI、2xUART、11xGPIO(PWM)、4xADC、1xJTAG 焊盘接口
  • 单面元件,表贴设计

硬件概述

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

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

引脚映射

XIAO 引脚功能芯片引脚备用功能描述
5VVBUS电源输入/输出
GND
3V33V3_OUT电源输出
D0AnalogGPIO2ADC1_CH2,GPIO, ADC
D1AnalogGPIO3ADC1_CH3GPIO, ADC
D2AnalogGPIO4ADC1_CH4, FSPIHD, MTMSGPIO, ADC
D3AnalogGPIO5ADC2_CH0, FSPIWP, MTDIGPIO, ADC
D4SDAGPIO6FSPICLK, MTCKGPIO, I2C 数据
D5SCLGPIO7FSPID, MTDOGPIO, I2C 时钟
D6TXGPIO21U0TXDGPIO, UART 发送
D7RXGPIO20U0RXDGPIO, UART 接收
D8SCKGPIO8GPIO, SPI 时钟
D9MISOGPIO9GPIO, SPI 数据
D10MOSIGPIO10FSPICS0GPIO, SPI 数据
MTDOGPIO7JTAG
MTDIGPIO5JTAG, ADC
MTCKGPIO6JTAG, ADC
MTMSGPIO4JTAG, ADC
ResetCHIP_ENEN
BootGPIO9进入引导模式
U.FL-R-SMT1LNA_INUFL 天线
LightVCC_3V3CHG-LED

电源引脚

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

引导引脚

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

入门指南

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

硬件准备

您需要准备以下物品:

tip

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

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

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

软件准备

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

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

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

导航到 File > Preferences,并在 "Additional Boards Manager URLs" 中填入以下网址: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

导航到 Tools > Board > Boards Manager...,在搜索框中输入关键词 "esp32",选择最新版本的 esp32,并安装它。

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

开发板

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

端口

导航到 Tools > Port 并选择已连接的 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 转换的结果与万用表测量的电压非常吻合,误差约为 5 mV,在实际使用中没有问题。

此外,在通信过程中特别是会出现尖峰状错误,必须平均 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 ESP32-C3 支持 GPIO 唤醒和定时器唤醒,支持唤醒的引脚为 D0~D3。

故障排除

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

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

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

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

Q3:我想用出厂固件重新刷写引导加载程序

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

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

  • 步骤 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...