Seeed Studio XIAO SAMD21 with MicroPython
MicroPython の紹介
MicroPython は、部分的なネイティブコードコンパイル機能を持つ Python インタープリターです。組み込みプロセッサーや制約のあるシステム向けに実装された Python 3.5 機能のサブセットを提供します。CPython とは異なり、その違いについてはこちらで詳しく読むことができます。

入門ガイド
まず、Seeed Studio XIAO SAMD21 をコンピューターに接続し、MicroPython から簡単なコードをアップロードして、ボードが正常に動作しているかどうかを確認します。
ハードウェアセットアップ
- Seeed Studio XIAO SAMD21 x1
- Type-C ケーブル x1
- PC x1
ソフトウェアセットアップ
- ステップ 1. お使いのオペレーティングシステムに応じて、Thonny editor の最新版をダウンロードしてインストールします

-
ステップ 2. Thonny を起動します
-
ステップ 3. "Tools-->Options" をクリックして設定を開きます。

- ステップ 4. "Interpreter" インターフェースを選択し、デバイスを "MicroPython(generic)" に、ポートを "Try to detect port automatically" に設定します

Seeed Studio XIAO SAMD21 を PC に接続して点灯させる
- ステップ 1. "BOOT" ボタンを押し続けながら、Type-C ケーブルを通して Seeed Studio XIAO SAMD21 を PC に接続します。正常に動作すれば、PC に "Arduino" デスクが表示されます。

- ステップ 2. ファームウェアをフラッシュします
公式リンクにアクセスして、最新のファームウェアをダウンロードしてください
セキュリティと最新機能のサポートを確保するために独自のファームウェアをコンパイルすることも可能ですが、これは必須ではありません。
ソフトウェア開発
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 | * |
コードのアップロード
"Run current script" ボタンをクリックしてコードをアップロードします。初回時、Thonny はコードファイルをどこに保存するかを尋ねます。This Computer と MicroPython device のどちらでも構いません。
プログラムをオフラインで使用したい場合は、プログラムを XIAO SAMD21 に保存する必要があります
Ctrl + Shift + S を同時に押し続け、MicroPython device への保存を選択します

GPIO テスト (LED)
準備するもの:
以下のコードを Thonny にコピーします。
青い RX_LED が点灯し、1秒に1回点滅することが確認できます
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)

GPIO リレー制御
準備するもの:
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)
自動制御のための人体検知
準備するもの:
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)
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))

MicroPython に慣れることで、より多くのことができるようになります。私たちはあなたにより多くの価値を創造することを楽しみにしています。あなたのプロジェクトもぜひ私たちと共有してください!
DAC サポート
コードを提供してくれた Aleksei Tertychnyi に感謝します。関連するすべての機能は彼によって開発・貢献されました。
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)
ピン A0 の電圧が徐々に上昇し始め、約 3.3V で最大値に達した後、0V まで下降し、このサイクルが繰り返されます。
ADC サポート
ADC サンプル MicroPython コード:
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
MicroPython デバイスコンソール
私たちのパートナーである Neil が、MicroPython を使用した XIAO 用のコマンドラインコンソールプログラムを作成しました。このプログラムを使用すると、ファイルのアップロード、ダウンロード、削除を簡単に行うことができます。XIAO への貢献に感謝します!
技術サポート & 製品ディスカッション
私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験ができるだけスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを用意しています。