Seeed Studio XIAO SAMD21 com MicroPython
Introdução ao MicroPython
MicroPython é um interpretador Python com recurso parcial de compilação para código nativo. Ele oferece um subconjunto dos recursos do Python 3.5, implementado para processadores embarcados e sistemas com recursos limitados. Ele é diferente do CPython e você pode ler mais sobre as diferenças aqui.

Primeiros Passos
Primeiro, vamos conectar o Seeed Studio XIAO SAMD21 ao computador e enviar um código simples em MicroPython para verificar se a placa está funcionando bem.
Configuração de Hardware
- Seeed Studio XIAO SAMD21 x1
- Cabo Type-C x1
- PC x1
Configuração de Software
- Passo 1. Baixe e instale a versão mais recente do Thonny editor de acordo com o seu sistema operacional

-
Passo 2. Inicie o Thonny
-
Passo 3. Clique em "Tools-->Options" para abrir as configurações.

- Passo 4. Escolha a interface "Interpreter" e selecione o dispositivo como "MicroPython(generic)" e a porta como "Try to detect port automatically"

Conecte o Seeed Studio XIAO SAMD21 ao PC e acenda-o
- Passo 1. Pressione e segure o botão "BOOT" e então conecte o Seeed Studio XIAO SAMD21 ao PC por meio do cabo Type-C. Se funcionar bem, um disco "Arduino" será exibido no PC.

- Passo 2. Grave o firmware
Basta acessar o link oficial e baixar o firmware mais recente
Também é possível compilar seu próprio firmware para garantir segurança e suporte aos recursos mais recentes, mas isso não é necessário.
Desenvolvimento de Software
Tabela de atribuição de pinos do SEEED XIAO SAMD21
| Pin | GPIO | Xiao Pin name | 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 | * |
Envie seu código
Envie os códigos clicando no botão "Run current script". Na primeira vez, o Thonny perguntará onde você quer salvar seu arquivo de código. Tanto This Computer quanto MicroPython device funcionam.
Se você quiser usar o programa offline, deve salvar o programa no XIAO SAMD21
Pressione e segure Ctrl + Shift + S ao mesmo tempo, depois selecione salvar em MicroPython device

TESTE GPIO (LED)
Precisamos preparar:
Copie os códigos a seguir para o Thonny.
Podemos ver que o RX_LED azul acende e pisca uma 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)

Controle de relés via GPIO
Precisamos 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)
Detecção de presença humana para controle automático
Precisamos preparar:
- Doppler radar for human detection
- Seeeduino-XIAO-Expansion-Board
- Grove-Relay
- 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)
Suporte a 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))

A familiaridade com micropython permite que você faça mais; estamos ansiosos para criar mais valor para você. Sinta-se à vontade para compartilhar seus projetos conosco também!
Suporte a DAC
Obrigado a Aleksei Tertychnyi por enviar o código; todas as funcionalidades relacionadas foram desenvolvidas e contribuídas por ele.
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)
A tensão no pino A0 começará a aumentar gradualmente; após atingir o máximo em aproximadamente 3.3V, cairá para 0V e o ciclo se repetirá.
Suporte a ADC
Exemplo de código MicroPython para ADC:
from machine import Pin, Timer, ADC
led = Pin(18, Pin.OUT) # digital output for blinking
counter = 0 # simple counter for LED toggle
ADC_CONVERT_V = 1.0 / 65535.0 # conversion factor: raw ADC (16-bit) → voltage (vref=1.0V)
adc = ADC(4, vref=0) # ADC reads on pin A4, using internal 1.0V reference
adcVoltage = 0.0 # variable to store measured voltage
def fun(tim):
global counter, adcVoltage # make sure we update the global variables
counter += 1 # increment counter
adcVoltage = adc.read_u16() * ADC_CONVERT_V # read ADC and convert to voltage
print(adcVoltage) # print voltage to REPL
led.value(counter % 2) # toggle LED every callback (blink)
tim = Timer(-1) # create a virtual timer
tim.init(period=1000, # callback period in milliseconds (1000 ms = 1 s)
mode=Timer.PERIODIC, # periodic callback
callback=fun) # function to call
Console de Dispositivo MicroPython
Nosso parceiro Neil escreveu um programa de console de linha de comando para o XIAO usando MicroPython. Com este programa, você pode facilmente enviar, baixar e excluir arquivos. Agradecemos a ele por sua contribuição ao XIAO!
Suporte Técnico & Discussão de Produto
Obrigado por escolher nossos produtos! Estamos aqui para lhe fornecer diferentes formas de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.