Saltar al contenido principal

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 computación 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 montable en superficie por 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 que, para la Seeeduino XIAO Expansion board, los contactos de resorte SWD de 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 inalámbricas vestibles.

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

Especificaciones

ParámetroDescripción
ProcesadorESP32-C3 SoC
Procesador de chip RISC-V monocore 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)
Tensión de entrada (VIN): 5V
Tensión 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 monocore de 32 bits que funciona hasta 160 MHz
  • Subsistema Wi-Fi completo: Cumple con el protocolo IEEE 802.11b/g/n y admite modo Station, modo SoftAP, modo 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 unos 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 vestibles 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, 1xinterfaz de almohadilla de conexión JTAG
  • Componentes en un solo lado, diseño de montaje en superficie

Descripción general del hardware

*A3(GP105) - Utiliza 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.

Parte frontal

Parte trasera

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 tensión, 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 strapping

Según el manual del chip del ESP32C3, GPIO2, GPIO8 y GPIO9 en el chip son pines de strapping; 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 utilices 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 cargar 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 muestra 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 según tu sistema operativo

  • Paso 2. Inicia la aplicación de Arduino

  • Paso 3. Añade el paquete de placa 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,7 V como entrada de alimentación. Puedes consultar el siguiente diagrama para el método de cableado.

pir
precaución

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 ordenador mediante un cable de datos mientras usas la batería; ten la seguridad de que XIAO tiene un chip de protección de circuito incorporado, 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 tuviera 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 operación ingeniosa de msfujino. También nos gustaría dar un agradecimiento especial a msfujino por toda la experiencia y los 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 una conversión AD de escala completa de 2500 mV, pero hay una gran variación de chip a chip, en realidad ±10 %. Mi chip tenía 2700 mV de escala completa.

Afortunadamente, el valor de corrección calibrado para cada chip está escrito en el área de fusibles y, utilizando 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 coinciden 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 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 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 sueño profundo, entonces podrás ver el mensaje de salida como se muestra a continuación. Esto significa que el XIAO está ahora "dormido".

tip

Después de entrar en modo de sueño profundo, el puerto del XIAO desaparecerá y tendrás que despertarlo para volver a ver 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 pulsemos el botón.

precaución

El XIAO ESP32-C3 soporta activación por GPIO y por temporizador, y los pines que soportan activación 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 pulsado el BOOT BUTTON, conecta la placa a tu PC mientras mantienes pulsado el botón BOOT, y luego suéltalo para entrar en 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 flashear el bootloader con el firmware de fábrica

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

  • Paso 1. Mantén pulsado 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 archivo .zip, ve 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 el ChipType, tu puerto COM, 115200 como el 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 MicroPython en GitHub

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...