XIAO SAMD21 de Seeed Studio con MicroPython
Introducción a MicroPython
MicroPython es un intérprete de Python con una característica de compilación de código nativo parcial. Ofrece un subconjunto de las características de Python 3.5, implementado para procesadores embebidos y sistemas con recursos limitados. Es diferente de CPython, y puedes leer más sobre las diferencias aquí.

Empezando
Primero, vamos a conectar la Seeed Studio XIAO SAMD21 al computador y cargar un código simple desde MicroPython para verificar si la placa funciona correctamente.
Configuración de Hardware
- Seeed Studio XIAO SAMD21 x1
- Cable Tipo-C x1
- PC x1
Configuración de Software
- Paso 1. Descarga e instala la versión más reciente del editor Thonny según tu sistema operativo.

Paso 2. Inicia Thonny.
Paso 3. Haz clic en "Herramientas-->Opciones" para abrir la configuración.

- Paso 4. Elige la interfaz "Intérprete" y selecciona el dispositivo como "MicroPython (genérico)" y el puerto como "Intentar detectar el puerto automáticamente".

Conectar la Seeed Studio XIAO SAMD21 al PC y encenderla
- Paso 1. Mantén presionado el botón "BOOT" y luego conecta la Seeed Studio XIAO SAMD21 al PC mediante el cable Tipo-C. Si todo funciona correctamente, debería aparecer un escritorio llamado "Arduino" en el PC.

- Paso 2. Flashear el firmware
Para Windows:
Copia el firmware de Seeed XIAO SAMD21 para soporte de MicroPython y colócalo en esta carpeta.
Para Linux:
wget "https://micropython.org/resources/firmware/SEEED_XIAO-20220618-v1.19.1.uf2"
cp SEEED_XIAO-20220618-v1.19.1.uf2 /media/$USER/Arduino/
También es posible compilar tu propio firmware para asegurar la seguridad y soporte de las últimas características, pero esto no es necesario.
Desarrollo de Software
Tabla de asignación de pines de SEEED XIAO SAMD21
Pin | GPIO | Nombre de Pines de XIAO | IRQ | ADC |
---|---|---|---|---|
2 | PA02 | 0 | 2 | 0 |
4 | PA04 | 1 | 4 | 4 |
10 | PA10 | 2 | 10 | 18 |
11 | PA11 | 3 | 11 | 19 |
8 | PA08 | 4 | * | 16 |
9 | PA09 | 5 | 9 | 17 |
40 | PB082 | 6 | 8 | 2 |
41 | PB09 | 7 | 9 | 3 |
7 | PA07 | 8 | 7 | 7 |
5 | PA05 | 9 | 5 | 5 |
6 | PA06 | 10 | 6 | 6 |
18 | PA18 | RX_LED | 2 | * |
30 | PA30 | SWCLK | 10 | * |
31 | PA31 | SWDIO | 11 | * |
19 | PA19 | TX_LED | 3 | * |
Cargar tu código
Carga el código haciendo clic en el botón "Ejecutar script actual". La primera vez, Thonny te preguntará dónde deseas guardar el archivo del código. Tanto Este Computador como Dispositivo MicroPython son válidos.
Si deseas usar el programa sin conexión, deberías guardar el programa en el XIAO SAMD21.
Mantén presionadas las teclas Ctrl + Shift + S al mismo tiempo, luego selecciona guardar en Dispositivo MicroPython.

PRUEBA GPIO (LED)
Necesitamos preparar:
Copia el siguiente código en Thonny.
Podemos ver que el LED azul RX_LED se enciende y parpadea una vez por segundo.
from machine import Pin, Timer
led = Pin(18, Pin.OUT)
Counter = 0
Fun_Num = 0
def fun(tim):
global Counter
Counter = Counter + 1
print(Counter)
led.value(Counter%2)
tim = Timer(-1)
tim.init(period=500, mode=Timer.PERIODIC, callback=fun)

Control GPIO con Relés
Necesitamos preparar:
from machine import Pin, Timer
output_4 = Pin(8, Pin.OUT)
detect_1 = Pin(4, Pin.IN, Pin.PULL_UP)
output_value = Pin(2, Pin.OUT)
Counter = 0
def fun(tim):
global Counter
Counter = Counter + 1
output_4.value(Counter%2)
print(Counter%2,detect_1.value())
if detect_1.value() :
output_value.value(1)
else:
output_value.value(0)
tim = Timer(-1)
tim.init(period=200, mode=Timer.PERIODIC, callback=fun)
Detección de humanos para control automático
Necesitamos preparar:
- Radar Doppler para detección de humanos
- Seeeduino-XIAO-Expansion-Board
- Grove-Relé
- Seeed Studio XIAO SAMD21
from machine import Pin, Timer
led = Pin(8, Pin.OUT)
input_value_1 = Pin(4, Pin.IN, Pin.PULL_UP)
input_value_2 = Pin(10, Pin.IN, Pin.PULL_UP)
output_value = Pin(2, Pin.OUT)
Counter = 0
Fun_Num = 0
def fun(tim):
global Counter
Counter = Counter + 1
led.value(Counter%2)
print(input_value_1.value(),input_value_2.value())
if input_value_1.value() :
output_value.value(1)
else:
output_value.value(0)
tim = Timer(-1)
tim.init(period=50, mode=Timer.PERIODIC, callback=fun)
Compatibilidad I2C
from machine import Pin, SoftI2C
i2c = SoftI2C(scl=Pin(9), sda=Pin(8), freq=100000)
devices = i2c.scan()
for device in devices:
print("Dirección decimal: ",device," | Dirección hexadecimal: ",hex(device))
i2c.writeto(0x51, 'b')
print(i2c.readfrom(0x51, 4)) # leer 4 bytes del dispositivo con dirección 0x51
i2c.writeto(0x51, 'a') # escribir 'a' al dispositivo con dirección 0x51
print(i2c.readfrom(0x51, 4)) # leer 4 bytes del dispositivo con dirección 0x51
i2c.writeto(0x51, 'b')
print(i2c.readfrom(0x51, 4))

La familiaridad con MicroPython te permite hacer mucho más, ¡esperamos crear más valor para ti! No dudes en compartir tus proyectos con nosotros también.
Consola de Dispositivo MicroPython
Nuestro socio Neil ha escrito un programa de consola de línea de comandos para XIAO usando MicroPython. Con este programa, puedes cargar, descargar y eliminar archivos fácilmente. ¡Le agradecemos su contribución a XIAO!
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte soporte en diferentes formas para 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.