Skip to main content

Seeed Studio XIAO SAMD21 with MicroPython

MicroPython の紹介

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

入門ガイド

まず、Seeed Studio XIAO SAMD21 をコンピューターに接続し、MicroPython から簡単なコードをアップロードして、ボードが正常に動作しているかどうかを確認します。

ハードウェアセットアップ

ソフトウェアセットアップ

  • ステップ 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 ピン割り当て表

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

コードのアップロード

"Run current script" ボタンをクリックしてコードをアップロードします。初回時、Thonny はコードファイルをどこに保存するかを尋ねます。This ComputerMicroPython 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 への貢献に感謝します!

技術サポート & 製品ディスカッション

私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験ができるだけスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを用意しています。

Loading Comments...