Skip to main content

Seeed Studio XIAO SAMD21 con MicroPython

Introducción a MicroPython

MicroPython es un intérprete de Python con una característica de compilación parcial de código nativo. Proporciona un subconjunto de características de Python 3.5, implementado para procesadores embebidos y sistemas restringidos. Es diferente de CPython y puedes leer más sobre las diferencias aquí.

Primeros Pasos

Primero, vamos a conectar el Seeed Studio XIAO SAMD21 a la computadora y cargar un código simple desde MicroPython para verificar si la placa está funcionando bien.

Configuración de Hardware

Configuración de Software

  • Paso 1. Descarga e instala la última versión del editor Thonny según tu sistema operativo
  • Paso 2. Ejecuta Thonny

  • Paso 3. Haz clic en "Tools-->Options" para abrir la configuración.

  • Paso 4. Elige la interfaz "Interpreter" y selecciona el dispositivo como "MicroPython(generic)" y el puerto como "Try to detect port automatically"

Conectar Seeed Studio XIAO SAMD21 a la PC e Iluminarlo

  • Paso 1. Mantén presionado el botón "BOOT" y luego conecta el Seeed Studio XIAO SAMD21 a la PC a través del cable Type-C. Si funciona bien, aparece un escritorio "Arduino" en la PC.
  • Paso 2. Flashear el firmware

Solo ve al enlace oficial y descarga el firmware más reciente

También es posible compilar tu propio firmware para garantizar la seguridad y el soporte para las características más recientes, pero esto no es necesario.

Desarrollo de Software

Tabla de asignación de pines SEEED XIAO SAMD21

PinGPIOXiao Pin nameIRQADC
2PA02020
4PA04144
10PA1021018
11PA1131119
8PA084*16
9PA095917
40PB082682
41PB09793
7PA07877
5PA05955
6PA061066
18PA18RX_LED2*
30PA30SWCLK10*
31PA31SWDIO11*
19PA19TX_LED3*

Sube tu código

Sube los códigos haciendo clic en el botón "Run current script". Por primera vez, Thonny preguntará dónde quieres guardar tu archivo de códigos. Tanto This Computer como MicroPython device están bien.

Si quieres usar el programa sin conexión, debes guardar el programa en XIAO SAMD21

Presiona y mantén Ctrl + Shift + S al mismo tiempo, luego selecciona guardar en MicroPython device

PRUEBA DE GPIO (LED)

Necesitamos preparar:

Copia los siguientes códigos a 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 de Relés GPIO

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 humana para control automático

Necesitamos preparar:

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)

Soporte I2C

from machine import Pin, SoftI2C

i2c = SoftI2C(scl=Pin(9), sda=Pin(8), freq=100000)
devices = i2c.scan()
for device in devices:
print("Decimal address: ",device," | Hexa address: ",hex(device))

i2c.writeto(0x51, 'b')
print(i2c.readfrom(0x51, 4)) # read 4 bytes from device with address 0x51
i2c.writeto(0x51, 'a') # write 'a' to device with address 0x51
print(i2c.readfrom(0x51, 4)) # read 4 bytes from device with address 0x51
i2c.writeto(0x51, 'b')
print(i2c.readfrom(0x51, 4))

La familiaridad con micropython te permite hacer más, esperamos crear más valor para ti. ¡No dudes en compartir tus proyectos con nosotros también!

Soporte DAC

Gracias a Aleksei Tertychnyi por enviar el código, todas las funcionalidades relacionadas fueron desarrolladas y contribuidas por él.

from machine import Pin, Timer, DAC

led = Pin(18, Pin.OUT)
counter = 0

dac = DAC(0) #DAC on A0 output

def loop(tim):
global counter
led.value(counter%2)
print('DAC value: ', end =" ")
print(counter)
dac.write(counter%1024)
counter = counter + 1

tim = Timer(-1)
tim.init(period=1000, mode=Timer.PERIODIC, callback=loop)

El voltaje en el pin A0 comenzará a aumentar gradualmente, después de alcanzar el máximo en aproximadamente 3.3V, caerá a 0V y el ciclo se repetirá.

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 fácilmente subir, descargar y eliminar archivos. ¡Le agradecemos su contribución a XIAO!

Soporte Técnico y Discusión de Productos

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

Loading Comments...