Skip to main content

Primeros Pasos con Seeed Studio XIAO MG24(Sense)

Seeed Studio XIAO MG24Seeed Studio XIAO MG24 Sense

Introducción

Seeed Studio XIAO MG24 es una placa de desarrollo mini basada en el MG24 de Silicon Labs. XIAO MG24 está basado en el núcleo ARM Cortex-M33, arquitectura RISC de 32 bits con una velocidad de reloj máxima de 78MHz, soportando instrucciones DSP y operaciones de punto flotante FPU, poseyendo potente capacidad de cómputo, y con acelerador de hardware AL/ML MVP integrado, que puede procesar eficientemente algoritmos de IA/aprendizaje automático. En segundo lugar, tiene excelente rendimiento RF, con una potencia de transmisión de hasta +19.5 dBm y una sensibilidad de recepción tan baja como -105.4 dBm. Soporta múltiples protocolos IoT y de transmisión inalámbrica como Matter, Thread, Zigbee, Bluetooth LE 5.3, Bluetooth mesh etc.

Especificaciones

ElementoSeeed Studio XIAO MG24Seeed Studio XIAO MG24 Sense
ProcesadorSilicon Labs EFR32MG24
ARM Cortex-M33 @ 78MHz
InalámbricoPropietario 2.4 GHz
Protocolos Zigbee PRO/Green Power
BLE: Bluetooth 5.3, Bluetooth mesh
Sensores Integrados - IMU de 6 Ejes (LSM6DS3TR-C)
Micrófono Analógico (MSM381ACT001)
Memoria256kB RAM & 1538KB + 4MB Flash256kB RAM & 1538KB + 4MB Flash
Interfaz2x UART, 1x IIC, 2x SPI, 18x Analógico, 18x Digital, TODO PWM, 1x LED de Usuario, 1x LED de Carga
1x Botón de Reset,
2x UART, 1x IIC, 2x SPI, 18x Analógico, 18x Digital, TODO PWM, 1x LED de Usuario, 1x LED de Carga
1x Botón de Reset,
Dimensiones21 x 17.8mm21 x 17.8mm
AlimentaciónVoltaje de entrada (Type-C): 5V@14mA
Voltaje de entrada (BAT): 3.7V@7mA
Corriente de carga de batería: 200mACorriente de carga de batería: 200mA
Modelo de Bajo ConsumoNormal: 3.7V/6.71 mA
Modo Sleep: 3.7V/1.91mA
Modo Deep Sleep: 3.7V/1.95μA
Normal: 3.7V/6.71 mA
Modo Sleep: 3.7V/1.91mA
Modo Deep Sleep: 3.7V/1.95μA
Temperatura de Trabajo-20°C ~ 70°C

Características

  • CPU Potente: Núcleo ARM Cortex-M33, con una velocidad de reloj máxima de 78MHz, compatible con instrucciones DSP y operaciones de punto flotante FPU, arquitectura RISC de 32 bits.
  • Ultra Bajo Consumo: Corriente RX 4.6mA/Corriente TX 5mA (0dBm), múltiples modos de suspensión de bajo consumo
  • IA Potente: Acelerador de hardware AI/ML MVP integrado, capaz de procesar eficientemente algoritmos de IA/aprendizaje automático.
  • Transmisión inalámbrica multiestilo: Transceptor inalámbrico multiprotocolo de 2.4GHz integrado, compatible con múltiples protocolos IoT como Matter, OpenThread, Zigbee, Bluetooth LE 5.3, Bluetooth mesh, etc.
  • Mejor Rendimiento RF: Excelente rendimiento RF, con una potencia de transmisión de hasta +19.5 dBm y una sensibilidad de recepción tan baja como -105.4 dBm (250kbps DSSS)
  • Seguridad Potente: Características de seguridad potentes de Secure Vault, incluyendo arranque seguro, cifrado, generación de números aleatorios, a prueba de manipulación, depuración segura, etc.
  • Tamaño ultra pequeño: 21 x 17.8mm.
  • Recursos en chip abundantes: Máximo 1536KB Flash y 256KB RAM, con amplio espacio de almacenamiento.
  • Interfaces abundantes: Integrado con ADC de 12 bit 1Msps, sensor de temperatura, comparador analógico, DCDC y otros periféricos abundantes, y hasta 22 Pin, 2 USART, 2 UART de bajo consumo, 1 IIC y otras interfaces.

Descripción general del hardware

Diagrama de indicación XIAO MG24 Sense
Diagrama de indicación XIAO MG24
Lista de Pines XIAO MG24/ XIAO MG24(Sense)
tip

La diferencia entre las dos placas de desarrollo es que MG24 Sense tiene un sensor de micrófono y un sensor de aceleración de seis ejes, mientras que MG24 no los tiene.

  • 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 de 5V.
  • 3V3 - Esta es la salida regulada del regulador integrado.
  • GND - Tierra de alimentación/datos/señal

Primeros pasos

Para permitirte comenzar con el XIAO MG24 más rápido, por favor lee la preparación de hardware y software a continuación para preparar el XIAO.

Procedimiento de fábrica

Pre-programamos cada nuevo XIAO MG24 y XIAO MG24 Sense con un programa de fábrica simple.

  1. XIAO MG24

El programa de fábrica preestablecido en la versión regular es Luz Parpadeante. Cuando enciendes el XIAO, el indicador de usuario naranja se encenderá.

  1. XIAO MG24 Sense

El programa de fábrica preestablecido en la versión regular es Mientras más fuerte grites, más brillante será la luz.

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 verificar Seeed USB Type-C support USB 3.1.

Preparación de Software

La herramienta de programación recomendada para el XIAO MG24 es el Arduino IDE, por lo que necesitas completar la instalación de Arduino como parte de la preparación de software.

tip

Si esta es tu primera vez usando Arduino, te recomendamos encarecidamente que consultes Getting Started with Arduino.

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

  • Paso 2. Inicia la aplicación Arduino.
  • Paso 3. Añade el paquete de placa XIAO MG24 al Arduino IDE y haz clic en OK.
  • Paso 4. Cierra el Arduino IDE y ábrelo nuevamente.

Añadir la Placa XIAO MG24

Para instalar la placa XIAO MG24, sigue estos pasos:

https://siliconlabs.github.io/arduino/package_arduinosilabs_index.json 
  1. Añade la URL del gestor de placas anterior a las preferencias de tu Arduino IDE.
  1. Descarga el paquete de placa XIAO MG24.
tip

Si no puedes encontrarlo después de ingresar, por favor reabre el Arduino IDE.

  1. Opta por la variante XIAO_MG24.

Ahora disfruta programando ✨.

  • Paso 1. Inicia la aplicación Arduino.

  • Paso 2. Navega a File > Examples > 01.Basics > Blink, abre el programa.

  • Paso 3. Selecciona el modelo de placa XIAO MG24, y selecciona el número de puerto correcto para cargar el programa.

Una vez que el programa se haya cargado exitosamente, verás el siguiente mensaje de salida y podrás observar que el LED naranja en el lado derecho del XIAO MG24 está parpadeando.

Código BLink MG24Visualización LED BLink

Uso de la Batería

El XIAO MG24 tiene un chip de gestión de energía integrado que permite al XIAO MG24 ser alimentado de forma independiente usando una batería o cargar la batería a través del puerto USB del XIAO MG24.

Si deseas conectar la batería para el XIAO, te recomendamos que compres una batería de litio recargable de 3.7V calificada. Al soldar la batería, ten cuidado de distinguir entre los terminales positivo y negativo. El terminal negativo de la fuente de alimentación debe estar en el lado más cercano al puerto USB, y el terminal positivo de la fuente de alimentación está en el lado alejado del puerto USB.

pir
caution

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 las baterías:

  1. Por favor usa baterías calificadas que cumplan con las especificaciones.
  2. El XIAO puede conectarse a tu dispositivo informático a través del 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 MG24 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 MG24 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 restante de la batería a través del 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 la batería.

Al mismo tiempo, diseñamos una luz indicadora roja para la carga de la batería, a través de la pantalla de la luz indicadora para informar al usuario del estado actual de la batería en la carga.

  1. Cuando el XIAO MG24 no está conectado a la batería, la luz roja se enciende cuando se conecta el cable Type-C y se apaga después de 30 segundos.
  2. La luz roja parpadea cuando la batería está conectada y el cable Type-C está conectado para cargar.
  3. Cuando se conecta Type-C para cargar completamente la batería, la luz roja se apaga.

Lectura del Voltaje de la Batería

Código de software

/*
AnalogReadSerial

Reads an analog input on pin 0, prints the result to the Serial Monitor.
Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu).
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.

https://www.arduino.cc/en/Tutorial/BuiltInExamples/AnalogReadSerial
*/

// the setup routine runs once when you press reset:
void setup() {
Serial.begin(115200);
pinMode(PD3, OUTPUT);
digitalWrite(PD3, HIGH);
}

void loop() {
int voltageValue = analogRead(PD4);
float voltage = voltageValue * (5.0 / 4095.0);

Serial.print("Voltage: ");
Serial.print(voltage, 2);
Serial.println(" V");
delay(1000); // delay in between reads for stability
}

Mostrar Resultado

pir

Ejemplo de Sueño Profundo y Sueño

Demo1 : Modo de Sueño y despertar


/*
ArduinoLowPower timed sleep example

The example shows the basic usage of the Arduino Low Power library by putting the device to sleep for a period of time.
The device will enter sleep mode for 2000ms. During sleep the CPU is stopped but the RAM retains its contents.

This example is compatible with all Silicon Labs Arduino boards.

Author: Tamas Jozsi (Silicon Labs)
*/

#include "ArduinoLowPower.h"

void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
Serial.println("Sleep with timed wakeup");
}

void loop()
{
digitalWrite(LED_BUILTIN, LED_BUILTIN_ACTIVE);
delay(500);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
delay(500);

Serial.printf("Going to sleep at %lu\n", millis());
LowPower.sleep(2000);
Serial.printf("Woke up at %lu\n", millis());
}

Demo2 : Deep Sleep Mode and wake-up

/*
ArduinoLowPower deep sleep example with external or timed wakeup

The example shows the basic usage of the Arduino Low Power library by putting the device into deep sleep.
The device will remain in deep sleep until the sleep timer expires.
During deep sleep the whole device is powered down except for a minimal set of peripherals (like the Back-up RAM and RTC).
This means that the CPU is stopped and the RAM contents are lost - the device will start from the beginning of the sketch after waking up.

This example is compatible with all Silicon Labs Arduino boards.

Author: Tamas Jozsi (Silicon Labs)
*/

#include "ArduinoLowPower.h"

void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
Serial.println("Deep sleep timed wakeup");
}

void loop()
{
digitalWrite(LED_BUILTIN, LED_BUILTIN_ACTIVE);
delay(500);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
delay(500);

Serial.printf("Going to deep sleep for 10s at %lu\n", millis());
LowPower.deepSleep(10000);
}


Demo3 : Modo de Sueño Profundo con flash y despertar

tip

Si quieres configurar el flash en modo de sueño profundo, necesitas habilitar el registro 0xb9

/*
ArduinoLowPower deep sleep example with external or timed wakeup

The example shows the basic usage of the Arduino Low Power library by putting the device into deep sleep.
The device will remain in deep sleep until the sleep timer expires.
During deep sleep the whole device is powered down except for a minimal set of peripherals (like the Back-up RAM and RTC).
This means that the CPU is stopped and the RAM contents are lost - the device will start from the beginning of the sketch after waking up.

This example is compatible with all Silicon Labs Arduino boards.

Author: Tamas Jozsi (Silicon Labs)
*/
#include <Arduino.h>
#include "ArduinoLowPower.h"

#define CS_PIN PA6
#define CLK_PIN PA3
#define MOSI_PIN PA5
#define MISO_PIN PA4

#define READ_DATA 0x03
#define WRITE_ENABLE 0x06
#define PAGE_PROGRAM 0x02
#define SECTOR_ERASE 0x20

void sendSPI(byte data) {
for (int i = 0; i < 8; i++) {
digitalWrite(MOSI_PIN, data & 0x80);
data <<= 1;
digitalWrite(CLK_PIN, HIGH);
delayMicroseconds(1);
digitalWrite(CLK_PIN, LOW);
delayMicroseconds(1);
}
}

void writeEnable() {
digitalWrite(CS_PIN, LOW);
sendSPI(WRITE_ENABLE);
digitalWrite(CS_PIN, HIGH);
}

void setup()
{
//Serial.begin(115200);
pinMode(PA7, OUTPUT);
digitalWrite(PA7, LOW);

pinMode(CS_PIN, OUTPUT);
pinMode(CLK_PIN, OUTPUT);
pinMode(MOSI_PIN, OUTPUT);
pinMode(MISO_PIN, INPUT);


//SW
pinMode(PD3, OUTPUT);
pinMode(PB5, OUTPUT);
pinMode(PB1, OUTPUT);
pinMode(PB0, OUTPUT);
pinMode(PA6, OUTPUT);
digitalWrite(PD3, LOW); //VBAT
digitalWrite(PB5, LOW); //RF_SW
digitalWrite(PB1, LOW); //IMU
digitalWrite(PB0, LOW); //MIC
digitalWrite(PA6, HIGH); //FLASH

//Serial.println("Deep sleep timed wakeup");
writeEnable();
digitalWrite(CS_PIN, LOW);
sendSPI(0xB9);
digitalWrite(CS_PIN, HIGH);
}

void loop()
{
delay(12000);
digitalWrite(PA7, HIGH);
delay(500);

//Serial.printf("Going to deep sleep for 10s at %lu\n", millis());
LowPower.deepSleep(600000);
}

Prevenir que el XIAO MG24 se Bloquee Durante el Sueño Profundo

El XIAO MG24 es una potente placa microcontroladora de Seeed Studio, pero los usuarios han reportado problemas donde el dispositivo se vuelve no responsivo ("bloqueado") después de entrar en modo de Sueño Profundo. Este tutorial explica la causa del problema, proporciona un método de recuperación detallado y ofrece medidas preventivas para evitar bloquear tu XIAO MG24.

El XIAO MG24 entra en un modo de Sueño Profundo (EM4) para conservar energía, pero en algunos casos, falla al despertar correctamente, impidiendo que se suban nuevos sketches. A diferencia de otras placas XIAO, el MG24 no tiene un botón BOOT dedicado o un método documentado para entrar en modo boot, haciendo que la recuperación sea desafiante.

Medidas Preventivas

Para evitar bloquear tu XIAO MG24 mientras usas el modo de Sueño Profundo, sigue estos pasos:

  1. Usar el Pin de Escape (PC0)

El XIAO MG24 tiene un mecanismo de escape incorporado para prevenir el bloqueo. Si PC0 se pone en LOW durante el reset, el dispositivo entra en un bucle infinito, permitiéndote subir un nuevo sketch.

  • Conecta PC0 a GND antes de resetear el dispositivo.
  • Después de resetear, sube tu sketch mientras el dispositivo está en el bucle.
  1. Modificar tu Sketch Añade el siguiente código a tu sketch para detectar un interruptor de usuario y entrar en un bucle infinito si se presiona. Esto te permite subir un nuevo sketch mientras el dispositivo está en bucle:
#define USER_SW  PC3   // Example pin for user switch

void setup() {
// Other setup code...

pinMode(USER_SW, INPUT_PULLUP);
if (digitalRead(USER_SW) == LOW) {
Serial.println("Enable to upload new sketch");
while (true) {
digitalWrite(LED_BUILTIN, LOW);
delay(50);
digitalWrite(LED_BUILTIN, HIGH);
delay(50);
}
}
}
  1. Evitar el Sueño Innecesario de la Flash

Asegúrate de que tu sketch no ponga la memoria flash en modo de sueño (Deep Power Down) a menos que sea absolutamente necesario. Esto puede prevenir problemas al subir nuevos sketches.

Reconocimientos

Agradecimientos especiales a la comunidad de Seeed Studio por sus valiosas contribuciones y soluciones a este problema. Los métodos de recuperación y medidas preventivas discutidos en este tutorial fueron desarrollados basándose en las ideas de miembros de la comunidad como msfujino y PJ_Glasso.

Para más detalles y discusiones, visita el hilo original del foro:
DeepSleep bricks XIAO_MG24 - Seeed Studio Forum

Desbloqueo

El XIAO MG24 es actualmente el único modelo XIAO equipado con un chip de puerto serie. A diferencia de otros modelos XIAO, no tiene un botón BOOT o un método de recuperación BOOT. Esta omisión de diseño puede causar problemas cuando el dispositivo entra en modo de sueño o encuentra anomalías de software, haciendo imposible subir un programa a través del puerto serie. Para abordar esto, hemos proporcionado un método para despertar el puerto serie y restaurar la funcionalidad.

Solución para Windows

  1. Descargar y Extraer el Paquete
    • Descarga el archivo ZIP proporcionado.

  • Extrae el contenido a una carpeta en tu computadora.
  1. Conectar el XIAO MG24

    • Usa un cable USB para conectar el XIAO MG24 que no responde a tu computadora.
  2. Ejecutar el Script

    • Abre la carpeta extraída y localiza el script flash_erase.bat.
    • Haz doble clic en el script para ejecutarlo.
    • El script borrará la memoria flash y reiniciará el dispositivo.
  3. Verificar la Recuperación

    • Después de que el script se complete, el XIAO MG24 debería estar restaurado y listo para usar.

Solución para macOS

  1. Descargar y Extraer el Paquete
    • Descarga el archivo ZIP proporcionado (el enlace se añadirá aquí).

  • Extrae el contenido a una carpeta en tu computadora.
  1. Conectar el XIAO MG24

    • Usa un cable USB para conectar el XIAO MG24 que no responde a tu computadora.
  2. Permitir Acceso a Terminal

    • Abre Preferencias del Sistema > Seguridad y Privacidad > Privacidad.
    • Bajo Accesibilidad, asegúrate de que Terminal tenga permitido controlar tu computadora.
    • Si Terminal no está listado, haz clic en el botón + para añadirlo manualmente.
  3. Ejecutar el Script

    • Abre Terminal.

    • Navega a la carpeta extraída usando el comando cd. Por ejemplo:

      cd /ruta/a/carpeta/extraída
    • Ejecuta el script xiao_mg24_erase.sh usando el siguiente comando:

      ./xiao_mg24_erase.sh
    • El script usará OpenOCD para borrar la memoria flash y reiniciar el dispositivo.

  4. Verificar la Recuperación

    • Después de que el script se complete, el XIAO MG24 debería estar restaurado y listo para usar.
note
  • Si macOS falla en reconocer OpenOCD, asegúrate de que OpenOCD esté instalado y que se use la ruta correcta en el script.
  • Los scripts proporcionados están diseñados específicamente para el XIAO MG24 y no deberían usarse con otros modelos XIAO.

Recursos

Para Seeed Studio XIAO MG24 Sense

Para Seeed Studio XIAO MG24

Soporte Técnico y Discusión de Productos

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

Loading Comments...