Primeros pasos con Seeed Studio XIAO SAMD21

El Seeed Studio XIAO SAMD21, que solía llamarse Seeeduino XIAO, es la primera aparición de la familia Seeed Studio XIAO, una serie de potentes placas de desarrollo del tamaño de un pulgar compatibles con Arduino. Incorpora el potente ATSAMD21G18A-MU, que es un microcontrolador de bajo consumo. Por otro lado, esta pequeña placa tiene un buen rendimiento de procesamiento pero necesita menos energía. Está diseñada en un tamaño diminuto y puede utilizarse para dispositivos wearables y proyectos pequeños.
Seeed Studio XIAO SAMD21 tiene 14 pines, que pueden utilizarse para 11 interfaces digitales, 11 interfaces analógicas, 10 interfaces PWM (d1-d10), 1 pin de salida DAC D0, 1 interfaz de pad SWD, 1 interfaz I2C, 1 interfaz SPI, 1 interfaz UART, indicador de comunicación serie (T/R), luz de parpadeo (L) mediante multiplexación de pines. Los colores de los LED (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 descargar código. Hay dos botones de reinicio, puedes cortocircuitarlos para reiniciar la placa.
Documentaciones
Hay dos documentos sobre el uso de Seeed Studio XIAO SAMD21 que se centran en diferentes áreas, consulta la siguiente tabla como referencia:
| Documentación de Seeed | Documentación de Nanase |
|---|---|
| Diagrama de pines | Interfaz |
| Primeros pasos con Seeed Studio XIAO SAMD21 | Seeed Studio XIAO SAMD21 con tarjeta MicroSD (SPI) |
| Uso de GPIO de Seeed Studio XIAO SAMD21 | Seeed Studio XIAO SAMD21 con GPS (UART) |
| Recursos de Seeed Studio XIAO SAMD21 | IOBUS de ciclo único |
CircuitPython en Seeed Studio XIAO SAMD21
- Comienza con **CircuitPython en Seeed Studio XIAO SAMD21 **.
Características
- Potente CPU: microcontrolador ARM® Cortex®-M0+ de 32 bits a 48 MHz (SAMD21G18) con 256KB de Flash y 32KB de SRAM.
- Compatibilidad flexible: Compatible con Arduino IDE.
- Operación sencilla de proyectos: Compatible con protoboard.
- Tamaño pequeño: Tan pequeño como un pulgar (21x17.8mm) para dispositivos wearables y proyectos pequeños.
- Múltiples interfaces de desarrollo: 11 pines digitales/analógicos, 10 pines PWM, 1 salida DAC, 1 interfaz de pad SWD, 1 interfaz I2C, 1 interfaz UART, 1 interfaz SPI.
Especificaciones
| Nombre del producto | Seeed Studio XIAO SAMD21 |
|---|---|
| Chipset | Microchip SAMD21G18 |
| Procesador | Procesador ARM Cortex-M0+ funcionando hasta 48 MHz |
| RAM | 32KB SRAM |
| Flash | 256KB Flash |
| Interfaz | Pin GPIO x14 Pin digital x11 Pin analógico x11 DAC x1 I2C x1 UART x1 SPI x1 |
| Integrado en placa | LED de usuario x1 LED de encendido x1 LED de estado para comunicación serie (indicadores TX/RX) x2 |
| Conectividad inalámbrica | / |
| Alimentación | Tensión de entrada (Type-C): 5V Tensión de entrada (BAT): 5V |
| Salida máxima | 5V@500mA 3.3V@200mA |
| Compatibilidad de software | Arduino, PlatformIO, MicroPython, CircuitPython, Zephyr Exposición para la Serie XIAO - Seeed Studio Wiki |
| Temperatura de trabajo | -40 a 85°C |
| Dimensiones | 21×17.8mm |
| Variantes | Seeed Studio XIAO SAMD21 (Pre-Soldered) - Seeed Studio Seeed Studio XIAO SAMD21 - Arduino Microcontroller - SAMD21 Cortex M0+ (3 PCs) - Seeed Studio |
Descripción general del hardware




Para los pines de E/S generales: El voltaje de trabajo del MCU es 3.3V. Un voltaje de entrada conectado a los pines de E/S generales puede causar daños al chip si es superior a 3.3V.
Para los pines de alimentación: El circuito convertidor DC-DC integrado capaz de cambiar el voltaje de 5V a 3.3V permite alimentar el dispositivo con una fuente de 5V a través de VIN-PIN y 5V-PIN.
Es fundamental entender que las almohadillas VIN y GND en la parte posterior del XIAO SAMD21 no están diseñadas para conectar directamente una batería, especialmente una batería recargable de litio (LiPo/Li-Ion). La placa carece del circuito esencial de gestión de batería necesario para un funcionamiento seguro. Estas almohadillas son simplemente un punto de entrada de alimentación alternativo que evita el diodo de protección integrado de la placa. Si deseas alimentar tu proyecto con una batería, debes utilizar un módulo externo de gestión de batería dedicado que proporcione carga y protección, y luego conectar la salida regulada de ese módulo al pin de 5V o 3V3 del XIAO.
Por favor, presta atención al uso, no levantes la cubierta de protección.
Mapa de pines
| Pin XIAO | Función | Pin del chip | Descripción |
|---|---|---|---|
| 5V | VBUS | Entrada/Salida de alimentación | |
| GND | |||
| 3V3 | 3V3_OUT | Salida de alimentación | |
| D0 | Analógico | PA02 | GPIO, ADC |
| D1 | Analógico | PA04 | GPIO, ADC |
| D2 | Analógico | PA10 | GPIO, ADC |
| D3 | Analógico | PA11 | GPIO, ADC |
| D4 | Analógico,SDA | PA08 | GPIO, datos I2C, ADC |
| D5 | Analógico,SCL | PA09 | GPIO, reloj I2C, ADC |
| D6 | Analógico,TX | PB08 | GPIO, transmisión UART, ADC |
| D7 | Analógico,RX | PB09 | GPIO, recepción UART, ADC |
| D8 | Analógico,SPI_SCK | PA07 | GPIO, reloj SPI, ADC |
| D9 | Analógico,SPI_MISO | PA05 | GPIO, datos SPI, ADC |
| D10 | Analógico,SPI_MOSI | PA06 | GPIO, datos SPI |
| Reset | RES | RESET | |
| TX_LED | PA19 | TX_LED | |
| RX_LED | PA18 | RX_LED | |
| Power_LED | VBUS | CHG-LED_Red | |
| USER_LED | PA17 | Luz de usuario_Amarillo |
Entrar en modo Bootloader
A veces el puerto de Seeed Studio XIAO SAMD21 puede desaparecer cuando falla el proceso de programación del usuario. Podemos resolver este problema mediante la siguiente operación:
- Conecta el Seeed Studio XIAO SAMD21 a tu ordenador.
- Usa pinzas o cables cortos para cortocircuitar los pines RST del diagrama dos veces.
- Los LED naranjas parpadean y se encienden.
En este punto, el chip entra en modo Bootloader y el puerto de grabación vuelve a aparecer. Debido a que el chip samd21 tiene dos particiones, una es el Bootloader y la otra es el programa de usuario. El producto grabará un código de bootloader en la memoria del sistema cuando salga de fábrica. Podemos cambiar de modo realizando los pasos anteriores.

Reiniciar
Si quieres reiniciar el Seeed Studio XIAO SAMD21, realiza los siguientes pasos:
- Conecta el Seeed Studio XIAO SAMD21 a tu ordenador.
- Usa pinzas o cables cortos para cortocircuitar los pines RST solo una vez
- Los LED naranjas parpadean y se encienden.
Ten en cuenta: El comportamiento del LED integrado es el inverso al de un Arduino. En el Seeed Studio XIAO SAMD21, el pin tiene que ponerse en nivel bajo, mientras que en otros microcontroladores tiene que ponerse en nivel alto.
Interrupción
Todos los pines de Seeed Studio XIAO SAMD21 admiten interrupciones, pero hay dos pines que no pueden utilizarse al mismo tiempo: el pin 5 y el pin 7. Para más detalles sobre las interrupciones, consulta aquí.
Multiplexación de pines
No necesitamos configurar los pines nosotros mismos, después de usar los pines, puedes llamar directamente a una función.
Entrada y salida digital
- Usa el pin 6 como pin digital:
const int buttonPin = 6; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
AnalogRead
- Usa el pin 6 como pin analógico:
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}
Serial
- Usa el pin 6 como pin TX de UART (el pin RX de UART es el pin 7):
void setup() {
Serial1.begin(115200);
while (!Serial);
}
void loop() {
Serial1.println("Hello,World");
delay(1000);
}
I2C
- Usa el pin 5 como pin SCL de IIC (el pin SDA de IIC es el pin 4):
// Wire Master Writer
// by Nicholas Zambetti <http://www.zambetti.com>
// Demonstrates use of the Wire library
// Writes data to an I2C/TWI slave device
// Refer to the "Wire Slave Receiver" example for use with this
// Created 29 March 2006
// This example code is in the public domain.
#include <Wire.h>
void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
}
byte x = 0;
void loop()
{
Wire.beginTransmission(4); // transmit to device #4
Wire.write("x is "); // sends five bytes
Wire.write(x); // sends one byte
Wire.endTransmission(); // stop transmitting
x++;
delay(500);
}
SPI
- Usa el pin 8 como pin SCK de SPI (el pin MISO de SPI es el pin 9, el pin MOSI de SPI es el pin 10):
#include <SPI.h>
const int CS = 7;
void setup (void) {
digitalWrite(CS, HIGH); // disable Slave Select
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8);//divide the clock by 8
}
void loop (void) {
char c;
digitalWrite(CS, LOW); // enable Slave Select
// send test string
for (const char * p = "Hello, world!\r" ; c = *p; p++) {
SPI.transfer (c);
}
digitalWrite(CS, HIGH); // disable Slave Select
delay(2000);
}
QTouch
Para saber cómo usar QTouch, proporcionamos un proyecto de ejemplo: How to Make a Fruit Piano on Seeed Studio XIAO SAMD21 ’s Q-Touch Function.
Entrada y salida analógica
Aunque todavía tiene "salidas analógicas" basadas en PWM, el SAMD21 también incorpora una verdadera salida analógica en forma de un convertidor digital‑analógico (DAC). Este módulo puede producir un voltaje analógico entre 0 y 3,3 V. Se puede usar 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, <value>). El DAC se puede configurar hasta una resolución de 10 bits (asegúrate de llamar a analogWriteResolution(10) en tu configuración), lo que significa que los valores entre 0 y 1023 ajustarán el voltaje a algún punto entre 0 y 3,3 V.
Además del DAC, los canales ADC del SAMD21 también se diferencian de los del ATmega328: están equipados con hasta 12 bits de resolución. Eso significa que los valores de entrada analógica pueden ir de 0 a 4095, representando un voltaje entre 0 y 3,3 V. Para usar los ADC en modo de 12 bits, asegúrate de llamar a analogReadResolution(12) en tu configuración.
Trazado serie del DAC
Aquí hay un ejemplo que demuestra tanto el DAC como el ADC. Para configurar el experimento, conecta A0 a A1: aplicaremos a A0 un voltaje analógico y luego lo leeremos con A1. Es el circuito más simple que hemos puesto nunca en un tutorial:

El Seeed Studio XIAO SAMD21 utiliza la placa de expansión Seeed Studio XIAO SAMD21
Este sketch produce una onda sinusoidal en la salida A0, con valores que van de 0 a 3,3 V. Luego usa A1 para leer esa salida en su ADC y convertirla en un voltaje entre 0 y 3,3 V.
Por supuesto, puedes abrir el monitor serie para ver el flujo de valores de voltaje. Pero si la onda sinusoidal es difícil de visualizar mediante texto, prueba el nuevo Serial Plotter de Arduino, yendo a Tools > Serial Plotter.


DAC
Gracias a Aleksei Tertychnyi por enviar el código; todas las funcionalidades relacionadas fueron desarrolladas y aportadas por él.
#define DAC_PIN A0 // Make code a bit more legible
float x = 0; // Value to take the sin of
float increment = 0.02; // Value to increment x by each time
int frequency = 440; // Frequency of sine wave
void setup()
{
analogWriteResolution(10); // Set analog out resolution to max, 10-bits
analogReadResolution(12); // Set analog input resolution to max, 12-bits
Serial.begin(9600);
}
void loop()
{
// Generate a voltage value between 0 and 1023.
// Let's scale a sin wave between those values:
// Offset by 511.5, then multiply sin by 511.5.
int dacVoltage = (int)(511.5 + 511.5 * sin(x));
x += increment; // Increase value of x
// Generate a voltage between 0 and 3.3V.
// 0= 0V, 1023=3.3V, 512=1.65V, etc.
analogWrite(DAC_PIN, dacVoltage);
// Now read A1 (connected to A0), and convert that
// 12-bit ADC value to a voltage between 0 and 3.3.
float voltage = analogRead(A1) * 3.3 / 4096.0;
Serial.println(voltage); // Print the voltage.
delay(1); // Delay 1ms
}
Resultado

Primeros pasos
Hardware
Materiales necesarios
- Seeed Studio XIAO SAMD21 x1
- Ordenador x1
- Cable USB tipo C x1
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. Prepara un Seeed Studio XIAO SAMD21 y un cable Type‑C.
-
Paso 2. Conecta el Seeed Studio XIAO SAMD21 a tu ordenador. Entonces el LED de alimentación amarillo debería encenderse.
Software
Si es la primera vez que usas Arduino, te recomendamos encarecidamente que consultes Getting Started with 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 cuadro de diálogo de preferencias. Consulta la página Arduino Software (IDE) para más detalles.
- Paso 2. Abre el ejemplo Blink
Abre el sketch de ejemplo de parpadeo del LED: File > Examples >01.Basics > Blink.

- Paso 3. Añade Seeeduino a tu Arduino IDE
Haz clic en File > Preference y rellena Additional Boards Manager URLs con la siguiente URL:
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

Haz clic en Tools-> Board-> Boards Manager..., escribe la palabra clave "Seeed Studio XIAO SAMD21" en el cuadro de búsqueda. Aparecerá "Seeed SAMD Boards". Instálalo.

- Paso 4. Selecciona tu placa y tu puerto
Después de instalar la placa, haz clic en Tools-> Board, busca "Seeed Studio XIAO" y selecciónala. Ahora ya has configurado la placa Seeed Studio XIAO SAMD21 para Arduino IDE.

Selecciona el dispositivo serie de la placa Arduino en el menú Tools | Serial Port. Probablemente será COM3 o superior (COM1 y COM2 suelen estar reservados para los puertos serie 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 serie.

- Paso 5. Sube el programa
Ahora, simplemente haz clic en el botón "Upload" en el entorno. Espera unos segundos y, si la carga se realiza correctamente, aparecerá el mensaje "Done uploading." en la barra de estado.

Unos segundos después de que finalice la carga, deberías ver que el LED del pin 13 (L) en la placa comienza a parpadear (en naranja). Si es así, ¡felicitaciones! Has puesto Arduino en funcionamiento. 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 ATSAMD218A-MU en recursos
La aplicación de ejemplo
-
Cómo usar Seeed Studio XIAO SAMD21 para iniciar sesión en tu Raspberry PI
-
Cómo revivir un XIAO muerto usando Raspberry Pi. Gracias a John_Doe por compartirlo.
Recursos
Diseño de hardware
- 📄[Hoja de datos] Hoja de datos Atmel SAMD21G18
- 📄[Esquemático] Esquemático XIAO SAMD21
- 🗃️[Archivos de diseño de PCB]
- 🗃️[Bibliotecas de diseño de PCB]
- 📄[Hoja de distribución de pines] Hoja de distribución de pines XIAO SAMD21
Diseño mecánico
- 📄[Dimensiones 2D] Dimensiones de XIAO en DXF
- 📄[Modelo 3D] Modelo 3D XIAO SAMD21
Software y herramientas
- 📄[Firmware de fábrica] Firmware de fábrica XIAO SAMD21
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.