Introducción a XIAO SAMD21 de Seeed Studio
El Seeed Studio XIAO SAMD21, antes llamado Seeeduino XIAO, es el primer modelo de la familia Seeed Studio XIAO, una serie de poderosas placas de desarrollo del tamaño de un pulgar compatibles con Arduino. Utiliza el potente ATSAMD21G18A-MU, un microcontrolador de bajo consumo. Por otro lado, esta pequeña placa tiene un buen rendimiento en procesamiento pero consume menos energía. Está diseñada en un tamaño compacto y puede usarse en dispositivos portátiles y proyectos pequeños.
Seeed Studio XIAO SAMD21 tiene 14 pines, que se pueden usar para 11 interfaces digitales, 11 interfaces analógicas, 10 interfaces PWM (d1-d10), 1 pin de salida DAC en D0, 1 interfaz SWD, 1 interfaz I2C, 1 interfaz SPI, 1 interfaz UART, indicador de comunicación serial (T/R), y una luz de parpadeo (L) a través de la multiplexación de pines. Los colores de los LEDs (Power, L, RX, TX) son verde, amarillo, azul y azul. Además, Seeed Studio XIAO SAMD21 tiene una interfaz Type-C que puede suministrar energía y cargar el código. Tiene dos botones de reinicio; puedes cortocircuitarlos para reiniciar la placa.
Documentación
Existen dos documentos sobre el uso del XIAO SAMD21 de Seeed Studio que se centran en diferentes áreas. Consulta la tabla a continuación para obtener más detalles:
Documentación de Seeed | Documentación de Nanase |
---|---|
Diagrama de pines | Interfaz |
Introducción al XIAO SAMD21 de Seeed Studio | XIAO SAMD21 de Seeed Studio con MicroSD Card (SPI) |
Uso de GPIO en XIAO SAMD21 de Seeed Studio | XIAO SAMD21 de Seeed Studio con GPS (UART) |
Recursos de XIAO SAMD21 de Seeed Studio | Single Cycle IOBUS |
CircuitPython en XIAO SAMD21 de Seeed Studio
- Comienza con CircuitPython en XIAO SAMD21 de Seeed Studio.
Características
- Potente CPU: Microcontrolador ARM® Cortex®-M0+ de 32 bits a 48 MHz (SAMD21G18) con 256 KB de Flash y 32 KB de SRAM.
- Compatibilidad flexible: Compatible con el IDE de Arduino.
- Operación fácil del proyecto: Compatible con protoboard.
- Tamaño pequeño: Tan pequeño como un pulgar (21 x 17,8 mm) para dispositivos portátiles y proyectos pequeños.
- Múltiples interfaces de desarrollo: 11 pines digitales/analógicos, 10 pines PWM, 1 salida DAC, 1 interfaz SWD, 1 interfaz I2C, 1 interfaz UART, 1 interfaz SPI.
Especificaciones
Elemento | Valor |
---|---|
CPU | CPU ARM Cortex-M0+ (SAMD21G18) que funciona hasta 48 MHz |
Memoria Flash | 256 KB |
SRAM | 32 KB |
Pines I/O Digitales | 11 |
Pines I/O Analógicos | 11 |
Interfaz I2C | 1 |
Interfaz SPI | 1 |
QTouch | 7 (A0, A1, A6, A7, A8, A9, A10) |
Interfaz UART | 1 |
Interfaz de alimentación y carga | Tipo-C |
Alimentación | 3.3V/5V DC |
Dimensiones | 21 x 17,8 x 3,5 mm |
Resumen de Hardware
Para los pines de entrada/salida generales: El voltaje de trabajo del MCU es de 3.3V. Conectar un voltaje superior a 3.3V a los pines de entrada/salida generales puede dañar el chip.
Para los pines de alimentación: El circuito integrado DC-DC incorporado puede convertir el voltaje de 5V a 3.3V, lo que permite alimentar el dispositivo con una fuente de 5V a través de los pines VIN y 5V.
El XIAO SAMD21 actualmente solo admite alimentación por batería y no se puede conectar al puerto Type-C mientras una batería esté conectada, ya que podría representar un riesgo de seguridad.
Por favor, ten cuidado al usarlo y evita levantar la cubierta del shield.
Entrar en Modo Bootloader
A veces, el puerto del Seeed Studio XIAO SAMD21 puede desaparecer si ocurre un error durante la programación. Podemos solucionar este problema con el siguiente procedimiento:
- Conecta el Seeed Studio XIAO SAMD21 a tu computadora.
- Usa unas pinzas o un cable para hacer corto en los pines RST dos veces rápidamente.
- El LED naranja parpadeará y luego permanecerá encendido.
En este punto, el chip entra en modo Bootloader y el puerto de grabación volverá a aparecer.
El chip SAMD21 tiene dos particiones: una para el Bootloader y otra para el programa del usuario. El dispositivo sale de fábrica con un Bootloader pregrabado en la memoria del sistema. Podemos alternar entre estos modos siguiendo los pasos anteriores.
Reinicio
Si deseas reiniciar el XIAO SAMD21, sigue estos pasos:
- Conecta el XIAO SAMD21 a tu computadora.
- Usa unas pinzas o un cable para hacer corto en los pines RST solo una vez.
- El LED naranja parpadeará y luego permanecerá encendido.
Nota: El comportamiento del LED integrado es inverso al de un Arduino. En el Seeed Studio XIAO SAMD21, el pin debe estar en bajo para encender el LED, mientras que en otros microcontroladores debe estar en alto.
Interrupciones
Todos los pines del XIAO SAMD21 de Seeed Studio admiten interrupciones, excepto los pines 5 y 7, que no pueden usarse simultáneamente. Para más detalles sobre interrupciones, consulta este enlace.
Multiplexación de Pines
No es necesario configurar manualmente los pines. Después de usarlos, puedes llamarlos directamente mediante una función.
Entrada y Salida Digital
- Para usar el pin 6 como entrada/salida digital:
const int buttonPin = 6; // número del pin del botón pulsador
const int ledPin = 13; // número del pin del LED
int buttonState = 0; // variable para leer el estado del botón pulsador
void setup() {
// inicializar el pin del LED como salida:
pinMode(ledPin, OUTPUT);
// inicializar el pin del botón pulsador como entrada:
pinMode(buttonPin, INPUT);
}
void loop() {
// leer el estado del botón pulsador:
buttonState = digitalRead(buttonPin);
// verificar si el botón pulsador está presionado. Si lo está, buttonState será HIGH:
if (buttonState == HIGH) {
// encender el LED:
digitalWrite(ledPin, HIGH);
} else {
// apagar el LED:
digitalWrite(ledPin, LOW);
}
}
AnalogRead
- Usa el pin 6 como pin analógico:
void setup() {
// declarar ledPin como una SALIDA:
pinMode(ledPin, OUTPUT);
}
void loop() {
// leer el valor del sensor:
sensorValue = analogRead(sensorPin);
// encender el ledPin:
digitalWrite(ledPin, HIGH);
// detener el programa durante <sensorValue> milisegundos:
delay(sensorValue);
// apagar el ledPin:
digitalWrite(ledPin, LOW);
// detener el programa durante <sensorValue> milisegundos:
delay(sensorValue);
}
Serial
- Usa el pin 6 como TX de UART (RX de UART es el pin 7):
void setup() {
Serial1.begin(115200);
while (!Serial);
}
void loop() {
Serial1.println("Hola Mundo");
delay(1000);
}
I2C
- Usa el pin 5 como SCL de IIC (SDA de IIC es el pin 4):
// Escritor Maestro de Wire
// por Nicholas Zambetti <http://www.zambetti.com>
// Demuestra el uso de la biblioteca Wire
// Escribe datos en un dispositivo esclavo I2C/TWI
// Consulta el ejemplo "Wire Slave Receiver" para su uso con este
// Creado el 29 de marzo de 2006
// Este código de ejemplo es de dominio público.
#include <Wire.h>
void setup()
{
Wire.begin(); // unirse al bus I2C (la dirección es opcional para el maestro)
}
byte x = 0;
void loop()
{
Wire.beginTransmission(4); // iniciar transmisión al dispositivo #4
Wire.write("x is "); // envía cinco bytes
Wire.write(x); // envía un byte
Wire.endTransmission(); // detener la transmisión
x++;
delay(500);
}
SPI
- Usa el pin 8 como SCK de SPI (MISO es el pin 9, MOSI es el pin 10).
#include <SPI.h>
const int CS = 7;
void setup (void) {
digitalWrite(CS, HIGH); // deshabilitar la selección del esclavo (Slave Select)
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV8); // dividir la velocidad del reloj por 8
}
void loop (void) {
char c;
digitalWrite(CS, LOW); // habilitar la selección del esclavo (Slave Select)
// enviar una cadena de prueba
for (const char * p = "¡Hola Mundo!\r" ; c = *p; p++) {
SPI.transfer(c);
}
digitalWrite(CS, HIGH); // deshabilitar la selección del esclavo (Slave Select)
delay(2000);
}
QTouch
Para utilizar QTouch, proporcionamos un proyecto de ejemplo: Cómo hacer un piano de frutas con la función Q-Touch del Seeed Studio XIAO SAMD21.
Entrada y Salida Analógica
Aunque el SAMD21 todavía tiene "salidas analógicas" basadas en PWM, también presenta una verdadera salida analógica en forma de un convertidor digital a analógico (DAC). Este módulo puede producir un voltaje analógico entre 0 y 3.3V. Se puede utilizar para producir audio con un sonido más natural o como una especie de "potenciómetro digital" para controlar dispositivos analógicos.
El DAC solo está disponible en el pin A0 de Arduino y se controla usando analogWrite(A0, <valor>
). El DAC se puede configurar con una resolución de hasta 10 bits (asegúrate de llamar a analogWriteResolution(10) en tu función setup), lo que significa que los valores entre 0 y 1023 ajustarán el voltaje a un rango entre 0 y 3.3V.
Además del DAC, los canales ADC del SAMD21 se destacan frente al ATmega328: están equipados con una resolución de hasta 12 bits. Esto significa que los valores de entrada analógica pueden variar de 0 a 4095, representando un voltaje entre 0 y 3.3V. Para usar los ADC en modo de 12 bits, asegúrate de llamar a analogReadResolution(12) en tu función setup.
Gráfico de Datos del DAC a través del Serial Plotter
Aquí tienes un ejemplo que demuestra tanto el DAC como el ADC. Para configurar el experimento, conecta A0 a A1 — impulsaremos A0 con un voltaje analógico y luego lo leeremos con A1. Es el circuito más simple que hemos usado en un tutorial:

El Seeed Studio XIAO SAMD21 usando la placa de expansión Seeed Studio XIAO SAMD21
Este sketch genera una señal de onda senoidal en A0, con valores que van de 0 a 3.3V. Luego, utiliza A1 para leer esa salida en su ADC y convertirla en un voltaje entre 0 y 3.3V.
Por supuesto, puedes abrir el monitor serial para ver los valores de voltaje transmitidos. Pero si la onda senoidal es difícil de visualizar a través del texto, prueba el nuevo Serial Plotter de Arduino, yendo a Herramientas > Plotter Serial.


Código
#define DAC_PIN A0 // Hacer que el código sea un poco más legible
float x = 0; // Valor del cual calcular el seno
float increment = 0.02; // Valor por el que se incrementa x en cada ciclo
int frequency = 440; // Frecuencia de la onda sinusoidal
void setup()
{
analogWriteResolution(10); // Establecer la resolución de salida analógica al máximo, 10 bits
analogReadResolution(12); // Establecer la resolución de entrada analógica al máximo, 12 bits
Serial.begin(9600);
}
void loop()
{
// Generar un valor de voltaje entre 0 y 1023.
// Escalamos una onda sinusoidal entre esos valores:
// Desplazar 511.5 y luego multiplicar el seno por 511.5.
int dacVoltage = (int)(511.5 + 511.5 * sin(x));
x += increment; // Incrementar el valor de x
// Generar un voltaje entre 0 y 3.3V.
// 0 = 0V, 1023 = 3.3V, 512 = 1.65V, etc.
analogWrite(DAC_PIN, dacVoltage);
// Leer A1 (conectado a A0) y convertir ese valor
// del ADC de 12 bits a un voltaje entre 0 y 3.3V.
float voltage = analogRead(A1) * 3.3 / 4096.0;
Serial.println(voltage); // Imprimir el voltaje.
delay(1); // Retraso de 1 ms
}
Empezando
Hardware
Materiales requeridos
- Seeed Studio XIAO SAMD21 x1
- Computadora x1
- Cable USB tipo C x1
Algunos cables USB solo pueden suministrar energía y no transferir datos. Si no tienes un cable USB o no sabes si tu cable USB puede transmitir datos, puedes verificar el soporte USB 3.1 de Seeed para USB tipo C.
Paso 1. Prepara un Seeed Studio XIAO SAMD21 y un cable Tipo-C.
Paso 2. Conecta el Seeed Studio XIAO SAMD21 a tu computadora. Luego, el LED amarillo de encendido debería encenderse.
Software
Si es la primera vez que usas Arduino, te recomendamos encarecidamente que consultes Comenzando con Arduino.
- Paso 1. Necesitas instalar el software de Arduino.
Inicia la aplicación de Arduino
Haz doble clic en la aplicación de Arduino (arduino.exe) que has descargado previamente.
Si el software de Arduino se carga en un idioma diferente, puedes cambiarlo en el diálogo de preferencias. Consulta la página de Software de Arduino (IDE) para más detalles.
- Paso 2. Abre el ejemplo Blink
Abre el sketch del ejemplo Blink: Archivo > Ejemplos > 01.Básicos > Blink.
- Paso 3. Agrega Seeeduino a tu Arduino IDE
Haz clic en Archivo > Preferencias y completa el campo URLs adicionales del Administrador de Placas con la URL a continuación:
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
Haz clic en Herramientas -> Placa -> Gestor de Placas..., escribe la palabra clave "Seeed Studio XIAO SAMD21" en el campo de búsqueda. Aparecerá "Seeed SAMD Boards". Instálalo.
- Paso 4. Selecciona tu placa y puerto
Después de instalar la placa, haz clic en Herramientas -> Placa, busca "Seeed Studio XIAO" y selecciónala. Ahora ya has configurado la placa Seeed Studio XIAO SAMD21 para el Arduino IDE.
Selecciona el dispositivo serial de la placa Arduino desde el menú Herramientas | Puerto Serial. Es probable que sea COM3 o superior (COM1 y COM2 suelen estar reservados para puertos seriales de hardware). Para averiguarlo, puedes desconectar tu placa Arduino y volver a abrir el menú; la entrada que desaparezca debería ser la placa Arduino. Vuelve a conectar la placa y selecciona ese puerto serial.
- Paso 5. Sube el programa
Ahora, simplemente haz clic en el botón "Subir" en el entorno. Espera unos segundos y si la carga es exitosa, aparecerá el mensaje "Subida completada." en la barra de estado.
Unos segundos después de que termine la carga, deberías ver que el LED en el pin 13 (L) de la placa comienza a parpadear (en color naranja). ¡Si es así, felicidades! Has logrado poner en marcha Arduino. Si tienes problemas, consulta las sugerencias de solución de problemas.
El tamaño máximo de la memoria flash es de 8 KB. Más información en la hoja de datos del ATSAMD218A-MU en los recursos.
Ejemplos de Aplicación
Cómo usar Seeed Studio XIAO SAMD21 para iniciar sesión en tu Raspberry Pi
Cómo recuperar un XIAO muerto usando Raspberry Pi. Gracias a John_Doe por compartirlo.
Recursos
[Ebook] XIAO: Gran potencia, placa pequeña - Dominando Arduino y TinyML
🔗 [Kicad] Footprint de Seeed Studio XIAO SAMD21
Recursos del curso

Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte 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.