Skip to main content

Introducción a Seeed Studio XIAO ESP32C3


Introducción

Seeed Studio XIAO ESP32C3 es una placa de desarrollo mini IoT basada en el chip de modo dual WiFi/Bluetooth ESP32-C3 de Espressif, que cuenta con una CPU RISC-V de 32 bits que ofrece un potente rendimiento de cómputo con su arquitectura eficiente. Tiene un excelente rendimiento de radiofrecuencia, soportando WiFi IEEE 802.11 b/g/n y protocolos Bluetooth 5 (BLE). Esta placa incluye una antena externa para aumentar la intensidad de la señal para sus aplicaciones inalámbricas. También tiene un factor de forma pequeño y exquisito combinado con un diseño montable en superficie de un solo lado. Está equipada con interfaces ricas y tiene 11 E/S digitales que pueden usarse como pines PWM y 4 E/S analógicas que pueden usarse como pines ADC. Soporta cuatro interfaces serie como UART, I2C y SPI. También hay un pequeño botón de reset y un botón de modo bootloader en la placa. XIAO ESP32C3 es totalmente compatible con el Grove Shield para Seeeduino XIAO y la placa de expansión Seeeduino XIAO excepto por la placa de expansión Seeeduino XIAO, los contactos de resorte SWD en la placa no serán compatibles.

Con respecto a las características destacadas anteriormente, XIAO ESP32C3 se posiciona como una placa de desarrollo mini IoT de alto rendimiento, bajo consumo y costo efectivo, adecuada para aplicaciones IoT de bajo consumo y aplicaciones inalámbricas portátiles.

¡Esta wiki te mostrará cómo puedes comenzar rápidamente con XIAO ESP32C3!

Especificaciones

ElementoSeeed Studio XIAO ESP32C3Seeeduino XIAOSeeed XIAO RP2040Seeed XIAO nRF52840Seeed XIAO nRF52840 Sense
ProcesadorESP32-C3 32-bit RISC-V @160MHzSAMD21 M0+@48MHzRP2040 Dual-core M0+@133MhznRF52840 M4F@64MHznRF52840 M4F@64MHz
Conectividad InalámbricaWiFi y Bluetooth 5 (BLE)N/AN/ABluetooth 5.0/BLE/NFCBluetooth 5.0/BLE/NFC
Memoria400KB SRAM, 4MB Flash integrada32KB SRAM 256KB FLASH264KB SRAM 2MB Flash integrada256KB RAM, 1MB Flash 2MB Flash integrada256KB RAM,1MB Flash 2MB Flash integrada
Sensores IntegradosN/AN/AN/AN/AIMU 6 DOF (LSM6DS3TR-C), Micrófono PDM
InterfacesI2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPI
Pines PWM/Analógicos11/411/1111/411/611/6
Botones IntegradosBotón Reset/ BootN/ABotón Reset/ BootBotón ResetBotón Reset
LEDs IntegradosLED de CargaN/ARGB a todo color/ LED 3 en 1LED 3 en 1/ LED de CargaLED 3 en 1/ LED de Carga
Chip de Carga de BateríaETA4054S2FN/AN/ABQ25101BQ25101
Lenguajes de ProgramaciónArduino/ MicroPythonArduino/ CircuitPythonArduino/ MicroPython/ CircuitPython

Características

  • CPU Potente: ESP32-C3, procesador de núcleo único RISC-V de 32 bits que opera hasta 160 MHz
  • Subsistema Wi-Fi completo: Cumple con el protocolo IEEE 802.11b/g/n y soporta modo Station, modo SoftAP, modo SoftAP + Station, y modo promiscuo
  • Subsistema Bluetooth LE: Soporta características de Bluetooth 5 y Bluetooth mesh
  • Ultra Bajo Consumo: El consumo en modo de sueño profundo es de aproximadamente 43μA
  • Mejor rendimiento RF: Antena RF externa incluida
  • Chip de carga de batería: Soporta gestión de carga y descarga de batería de litio
  • Recursos ricos en chip: 400KB de SRAM, y 4MB de memoria flash integrada
  • Tamaño ultra pequeño: Tan pequeño como un pulgar (21x17.8mm) factor de forma clásico de la serie XIAO para dispositivos portátiles y proyectos pequeños
  • Características de seguridad confiables: Aceleradores de hardware criptográfico que soportan AES-128/256, Hash, RSA, HMAC, firma digital y arranque seguro
  • Interfaces ricas: 1xI2C, 1xSPI, 2xUART, 11xGPIO(PWM), 4xADC, 1xJTAG interfaz de pad de conexión
  • Componentes de un solo lado, diseño de montaje en superficie

Descripción general del hardware

*A3(GP105) - Usa ADC2, que puede volverse inoperativo debido a señales de muestreo falsas. Para lecturas analógicas confiables, usa ADC1(A0/A1/A2) en su lugar. Consulta la hoja de datos del ESP32-C3.

Diagrama de indicación frontal XIAO ESP32C3
Diagrama de indicación trasera XIAO ESP32C3
Lista de Pines XIAO ESP32C3

Mapa de Pines

Pin XIAOFunciónPin del ChipFunciones AlternativasDescripción
5VVBUSEntrada/Salida de Energía
GND
3V33V3_OUTSalida de Energía
D0AnalógicoGPIO2ADC1_CH2,GPIO, ADC
D1AnalógicoGPIO3ADC1_CH3GPIO, ADC
D2AnalógicoGPIO4ADC1_CH4, FSPIHD, MTMSGPIO, ADC
D3AnalógicoGPIO5ADC2_CH0, FSPIWP, MTDIGPIO, ADC
D4SDAGPIO6FSPICLK, MTCKGPIO, Datos I2C
D5SCLGPIO7FSPID, MTDOGPIO, Reloj I2C
D6TXGPIO21U0TXDGPIO, Transmisión UART
D7RXGPIO20U0RXDGPIO, Recepción UART
D8SCKGPIO8GPIO, Reloj SPI
D9MISOGPIO9GPIO, Datos SPI
D10MOSIGPIO10FSPICS0GPIO, Datos SPI
MTDOGPIO7JTAG
MTDIGPIO5JTAG, ADC
MTCKGPIO6JTAG, ADC
MTMSGPIO4JTAG, ADC
ResetCHIP_ENEN
BootGPIO9Entrar Modo Boot
U.FL-R-SMT1LNA_INAntena UFL
LightVCC_3V3CHG-LED

Pines de Alimentación

  • 5V - Esta es la salida de 5v del puerto USB. También puedes usar esto como entrada de voltaje, pero debes tener algún tipo de diodo (schottky, señal, potencia) entre tu fuente de alimentación externa y este pin con ánodo a la batería, cátodo al pin 5V.
  • 3V3 - Esta es la salida regulada del regulador integrado. Puedes extraer 700mA
  • GND - Tierra de alimentación/datos/señal

Pines de Configuración

Según el manual del chip ESP32C3, GPIO2, GPIO8 y GPIO9 en el chip son Pines de Configuración, las configuraciones de nivel alto y bajo de estos pines pueden permitir que el chip entre en diferentes modos de arranque, por favor presta atención a este punto cuando uses estos pines, de lo contrario puede evitar que tu XIAO cargue o ejecute el programa todo el tiempo.

Introducción

Primero, vamos a conectar el XIAO ESP32C3 a la computadora, conectar un LED a la placa y cargar un código simple desde Arduino IDE para verificar si la placa está funcionando bien haciendo parpadear el LED conectado.

Preparación del Hardware

Necesitas preparar lo siguiente:

tip

Algunos cables USB solo pueden suministrar energía y no pueden transferir datos. Si no tienes un cable USB o no sabes si tu cable USB puede transmitir datos, puedes verificar Seeed USB Type-C support USB 3.1.

  • Paso 1. Conecta el XIAO ESP32C3 a tu computadora mediante un cable USB Type-C.
  • Paso 2. Conecta un LED al pin D10 como se muestra a continuación

Nota: Asegúrate de conectar una resistencia (aproximadamente 150Ω) en serie para limitar la corriente a través del LED y prevenir el exceso de corriente que puede quemar el LED

Preparación del Software

  • Paso 1. Descarga e instala la última versión de Arduino IDE según tu sistema operativo

  • Paso 2. Inicia la aplicación Arduino

  • Paso 3. Agrega el paquete de placas ESP32 a tu Arduino IDE

Navega a File > Preferences, y completa "Additional Boards Manager URLs" con la url de abajo: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

Navega a Tools > Board > Boards Manager..., escribe la palabra clave "esp32" en el cuadro de búsqueda, selecciona la última versión de esp32, e instálala.

  • Paso 4. Selecciona tu placa y puerto

Placa

Navega a Tools > Board > ESP32 Arduino y selecciona "XIAO_ESP32C3". La lista de placas es un poco larga y necesitas desplazarte hasta abajo para encontrarla.

Puerto

Navega a Tools > Port y selecciona el nombre del puerto serie del XIAO ESP32C3 conectado. Es probable que sea COM3 o superior (COM1 y COM2 generalmente están reservados para puertos serie de hardware).

  • Paso 1. Copia el código de abajo al Arduino IDE

Asegúrate de que tu D10 esté conectado a un LED como se muestra en el diagrama anterior.


// 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
}
  • Paso 2. Haz clic en el botón Upload para cargar el código a la placa

Una vez cargado, verás el LED conectado parpadeando con un retraso de 1 segundo entre cada parpadeo. Esto significa que la conexión es exitosa y ahora puedes explorar más proyectos con el XIAO ESP32C3!

Uso de Batería

El XIAO ESP32C3 es capaz de usar una batería de litio de 3.7V como entrada de alimentación. Puedes consultar el siguiente diagrama para el método de cableado.

pir
caution

Por favor ten cuidado de no cortocircuitar los terminales positivo y negativo y quemar la batería y el equipo al soldar.

Instrucciones sobre el uso de baterías:

  1. Por favor usa baterías calificadas que cumplan con las especificaciones.
  2. El XIAO puede conectarse a tu dispositivo computadora mediante cable de datos mientras usa la batería, ten la seguridad de que el XIAO tiene un chip de protección de circuito integrado, que es seguro.
  3. El XIAO ESP32C3 no tendrá ningún LED encendido cuando esté alimentado por batería (a menos que hayas escrito un programa específico), por favor no juzgues si el XIAO ESP32C3 está funcionando o no por la condición del LED, por favor júzgalo razonablemente por tu programa.
  4. Lo sentimos, actualmente no tenemos forma de ayudarte a verificar el nivel de batería restante a través de software (porque no hay más pines de chip disponibles), necesitas cargar la batería regularmente o usar un multímetro para verificar el nivel de batería.

Verificar el voltaje de la batería

Debido a la limitación del número de pines en el ESP32C3, los ingenieros no tenían pines adicionales para asignar a la batería para medición de voltaje con el fin de asegurar que el XIAO ESP32C3 tenga el mismo número de GPIOs que las otras series XIAO disponibles.

Pero si prefieres usar un pin separado para medición de voltaje de batería, puedes consultar la operación genial de msfujino. También nos gustaría dar un agradecimiento especial a msfujino por toda la experiencia y esfuerzos compartidos para el XIAO ESP32C3.

La idea básica de operación es: El voltaje de la batería fue dividido por 1/2 con 200k y conectado al puerto A0 para que el voltaje pudiera ser monitoreado.

pir

La hoja de datos dice nominalmente 2500mV conversión AD de escala completa, pero hay una gran variación de chip a chip, realmente ±10%. Mi chip fue de 2700mV escala completa.

Afortunadamente, el valor de corrección calibrado para cada chip está escrito en el área de fusible, y usando la función analogReadMilliVolts(), puedo leer el valor de voltaje corregido sin hacer nada especial.

El resultado de la conversión AD y el voltaje medido por el multímetro concuerdan bien entre sí con un error de aproximadamente 5 mV, lo cual no es un problema en uso práctico.

Además, durante la comunicación en particular, ocurrieron errores tipo pico, que tuvieron que ser promediados 16 veces para eliminarlos.

El siguiente es el procedimiento para probar el voltaje de la batería.

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

Lo anterior es del usuario del foro de Seeed Studio msfujino, publicado originalmente en: https://forum.seeedstudio.com/t/battery-voltage-monitor-and-ad-conversion-for-xiao-esp32c/267535. Recomendamos que tengas buenas habilidades prácticas y mejores habilidades de soldadura antes de intentar medir el voltaje de la batería basándote en lo anterior, y ten cuidado con acciones peligrosas como cortocircuitar baterías.

Modo de sueño profundo y despertar

El XIAO ESP32C3 está diseñado para soportar modo de sueño profundo y funciones de despertar. Para el uso de estas dos funciones, proporcionamos los siguientes ejemplos de uso.

#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
}

Si eres lo suficientemente rápido para activar el monitor serie antes de que el XIAO entre en modo de sueño profundo, entonces puedes ver la salida del mensaje como se muestra a continuación. Esto significa que el XIAO ahora está "dormido".

tip

¡Después de entrar en modo de sueño profundo, el puerto del XIAO desaparecerá y necesitarás despertarlo para ver su número de puerto nuevamente!

En el programa, estamos usando un nivel bajo de D1 para despertar. Esto significa que podemos conectar un botón al pin D1 y el XIAO se despertará cuando presionemos el botón.

caution

Actualmente el XIAO ESP32C3 solo soporta despertar por GPIO, y los únicos pines que soportan despertar son D0~D3. Este programa puede no funcionar en otros pines.

Solución de Problemas

P1: Mi Arduino IDE se queda colgado al subir código a la placa

Puedes intentar primero reiniciar la placa haciendo clic en el BOTÓN RESET una vez mientras la placa está conectada a tu PC. Si eso no funciona, mantén presionado el BOTÓN BOOT, conecta la placa a tu PC mientras mantienes presionado el botón BOOT, y luego suéltalo para entrar en modo bootloader.

P2: Mi placa no aparece como dispositivo serie en Arduino IDE

Sigue la misma respuesta que para P1 arriba.

P3: Quiero volver a flashear el bootloader con el firmware de fábrica

Simplemente puedes conectar la placa a una PC vía USB Type-C y volver a flashear el bootloader con el firmware de fábrica usando ESP RF Test Tool.

  • Paso 1. Mantén presionado el BOTÓN BOOT y conecta el XIAO ESP32C3 a la PC para entrar en modo bootloader

  • Paso 2. Después de que esté conectado, suelta el BOTÓN BOOT

  • Paso 3. Visita esta página y descarga ESP RF Test Tool and Test Guide

  • Paso 4. Extrae el .zip, navega a ESP_RF_Test_EN\ESP_RF_Test_EN\EspRFTestTool_v2.8_Manual y abre EspRFTestTool_v2.8_Manual.exe
  • Paso 5. Selecciona ESP32C3 como ChipType, tu puerto COM, 115200 como BaudRate y haz clic en open

Verás la siguiente salida

  • Paso 6. Selecciona Flash y haz clic en Select Bin

Verás la siguiente salida cuando el flasheo sea exitoso

Repositorio GitHub de MicroPython

Recursos

Recursos del Curso

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...