Skip to main content

Primeros pasos con Seeed Studio XIAO ESP32C3


Introducción

Seeed Studio XIAO ESP32C3 es una placa de desarrollo mini para IoT basada en el chip de doble modo WiFi/Bluetooth ESP32-C3 de Espressif, que incorpora una CPU RISC-V de 32 bits que ofrece un potente rendimiento de cómputo gracias a su arquitectura eficiente. Tiene un excelente rendimiento de radiofrecuencia, compatible con los protocolos IEEE 802.11 b/g/n WiFi y Bluetooth 5 (BLE). Esta placa incluye una antena externa para aumentar la intensidad de la señal en tus aplicaciones inalámbricas. También cuenta con un factor de forma pequeño y exquisito combinado con un diseño de montaje en superficie de un solo lado. Está equipada con interfaces ricas y dispone de 11 E/S digitales que pueden utilizarse como pines PWM y 4 E/S analógicas que pueden utilizarse como pines ADC. Es compatible con cuatro interfaces serie como UART, I2C y SPI. También hay un pequeño botón de reinicio y un botón de modo bootloader en la placa. XIAO ESP32C3 es totalmente compatible con la Grove Shield for Seeeduino XIAO y la Seeeduino XIAO Expansion board excepto por la Seeeduino XIAO Expansion board, cuyos 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 para IoT de alto rendimiento, bajo consumo y rentable, adecuada para aplicaciones IoT de bajo consumo y aplicaciones portátiles inalámbricas.

Este wiki te mostrará cómo puedes empezar rápidamente con XIAO ESP32C3.

Especificaciones

ParámetroDescripción
ProcesadorESP32-C3 SoC
Procesador de chip de un solo núcleo RISC-V de 32 bits con una canalización de cuatro etapas que funciona hasta 160 MHz
InalámbricoSubsistema Wi-Fi completo de 2.4GHz
Bluetooth Low Energy 5.0/ Bluetooth Mesh
Memoria en chip400KB SRAM & 4MB Flash
Interfaz1x UART
1x IIC
1x SPI
11x GPIO(PWM)
4x ADC
1x Botón de reinicio
1x Botón de arranque
Dimensiones21 x 17.8mm
Potencia (típ.)Corriente máxima de salida 3.3V: 500mA
Condición de prueba: Entrada del pin BAT @ 3.8V
Capacidad de fuente: 3A
Corriente de carga: 380mA (rápida) / 40mA (trickle)
Voltaje de entrada (VIN): 5V
Voltaje de entrada (BAT): 3.7V
Consumo de energía en Deep SleepModo Deep Sleep: 44 μA
Consumo de energía con Wi-Fi habilitadoModo activo: 75 mA
Modo Modem-sleep: 25 mA
Modo Light-sleep: 4 mA
Consumo de energía con BLE habilitadoModo Modem-sleep: 27 mA
Modo Light-sleep: 10 mA
Temperatura de trabajo-40°C ~ 85°C

Características

  • CPU potente: ESP32-C3, procesador RISC-V de 32 bits de un solo núcleo que funciona hasta 160 MHz
  • Subsistema WiFi completo: Cumple con el protocolo IEEE 802.11b/g/n y admite los modos Station, SoftAP, SoftAP + Station y modo promiscuo
  • Subsistema Bluetooth LE: Admite funciones de Bluetooth 5 y Bluetooth mesh
  • Ultrabajo consumo de energía: El consumo de energía en deep sleep es de aproximadamente 43μA
  • Mejor rendimiento RF: Incluye antena RF externa
  • Chip de carga de batería: Admite la gestión de carga y descarga de baterías de litio
  • Recursos ricos en chip: 400KB de SRAM y 4MB de memoria flash integrada
  • Tamaño ultrapequeñ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
  • Funciones de seguridad fiables: Aceleradores de hardware criptográfico que admiten AES-128/256, Hash, RSA, HMAC, firma digital y arranque seguro
  • Interfaces ricas: 1xI2C, 1xSPI, 2xUART, 11xGPIO(PWM), 4xADC, 1x interfaz de almohadilla de conexión JTAG
  • Componentes en un solo lado, diseño de montaje en superficie

Descripción general del hardware

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

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

Mapa de pines

Pin XIAOFunciónPin del chipFunciones alternativasDescripción
5VVBUSEntrada/Salida de alimentación
GND
3V33V3_OUTSalida de alimentación
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 en modo Boot
U.FL-R-SMT1LNA_INAntena UFL
LightVCC_3V3CHG-LED

Pines de alimentación

  • 5V - Esta es la salida de 5V desde el puerto USB. También puedes usarla como entrada de voltaje, pero debes tener algún tipo de diodo (schottky, de señal, de potencia) entre tu fuente de alimentación externa y este pin, con el ánodo a la batería y el cátodo al pin de 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 (Strapping Pins)

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

Primeros pasos

Primero, vamos a conectar XIAO ESP32C3 al ordenador, conectar un LED a la placa y subir un código sencillo desde Arduino IDE para comprobar si la placa funciona correctamente haciendo parpadear el LED conectado.

Preparación de 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 consultar Seeed USB Type-C support USB 3.1.

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

Nota: Asegúrate de conectar una resistencia (alrededor de 150Ω) en serie para limitar la corriente a través del LED y evitar un exceso de corriente que pueda quemar el LED.

Preparación de software

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

  • Paso 2. Inicia la aplicación Arduino

  • Paso 3. Añade el paquete de placas ESP32 a tu Arduino IDE

Ve a File > Preferences, y rellena "Additional Boards Manager URLs" con la siguiente URL: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

Ve 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

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

Puerto

Ve a Tools > Port y selecciona el nombre del puerto serie del XIAO ESP32C3 conectado. Probablemente será COM3 o superior (COM1 y COM2 suelen estar reservados para puertos serie de hardware).

  • Paso 1. Copia el siguiente código en 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 subir el código a la placa

Una vez subido, verás el LED conectado parpadear con un retardo de 1 segundo entre cada parpadeo. Esto significa que la conexión es correcta y ahora puedes explorar más proyectos con XIAO ESP32C3.

Uso de la 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. Utiliza baterías calificadas que cumplan con las especificaciones.
  2. XIAO se puede conectar a tu dispositivo informático mediante un cable de datos mientras usas la batería; ten la seguridad de que XIAO tiene un chip de protección de circuito integrado, lo cual es seguro.
  3. El XIAO ESP32C3 no tendrá ningún LED encendido cuando funcione con batería (a menos que hayas escrito un programa específico), por favor no juzgues si el XIAO ESP32C3 está funcionando o no por el estado del LED, júzgalo razonablemente según tu programa.
  4. Lo sentimos, actualmente no tenemos forma de ayudarte a comprobar el nivel restante de la batería mediante software (porque no hay más pines de chip disponibles), necesitas cargar la batería regularmente o usar un multímetro para comprobar el nivel de la batería.

Comprobar 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 la medición de voltaje, con el fin de garantizar que el XIAO ESP32C3 tenga el mismo número de GPIO que los otros XIAO Serie disponibles.

Pero si prefieres usar un pin separado para la medición del voltaje de la batería, puedes consultar la ingeniosa operación 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 funcionamiento es: El voltaje de la batería se dividió por 1/2 con 200k y se conectó al puerto A0 para que se pudiera monitorizar el voltaje.

pir

La hoja de datos indica nominalmente 2500mV de conversión AD a escala completa, pero hay una gran variación de un chip a otro, en realidad ±10%. Mi chip tenía 2700mV a escala completa.

Afortunadamente, el valor de corrección calibrado para cada chip está escrito en el área de fusibles, 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 unos 5 mV, lo cual no es un problema en el uso práctico.

Además, especialmente durante la comunicación, se produjeron errores en forma de picos, que tuvieron que promediarse 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 proviene 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 que seas cauteloso con acciones peligrosas como cortocircuitar baterías.

Modo de sueño profundo y activación

El XIAO ESP32C3 está diseñado para soportar el modo de sueño profundo y las funciones de activación. 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 encender el monitor serie antes de que el XIAO entre en modo de sueño profundo, entonces podrás ver el mensaje de salida como se muestra a continuación. Esto significa que el XIAO ahora está "dormido".

tip

Después de entrar en el modo de sueño profundo, el puerto del XIAO desaparecerá y tendrás que despertarlo para ver de nuevo su número de puerto.

En el programa, estamos usando un nivel bajo en 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

El XIAO ESP32-C3 admite el despertar por GPIO y por temporizador, y los pines que admiten el despertar son D0~D3.

Solución de problemas

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

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

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

Sigue la misma respuesta que para la P1 anterior.

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

Simplemente puedes conectar la placa a un PC mediante USB Type-C y volver a grabar el bootloader con el firmware de fábrica usando ESP RF Test Tool.

  • Paso 1. Mantén presionado el BOOT BUTTON y conecta el XIAO ESP32C3 al PC para entrar en bootloader mode

  • Paso 2. Después de que esté conectado, suelta el BOOT BUTTON

  • 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 la grabación se haya realizado correctamente

Repositorio de GitHub de MicroPython

Recursos

Diseño de hardware

Mecánico

Software y herramientas

Otros

Recursos del curso

Soporte técnico y debate sobre el producto

Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.

Loading Comments...