こんにちは、「MAKO」と言います。
今回の記事は、Raspberry Piの「Pico」と「Pico W」の判別をMicroPythonで行うプログラムをMicroPythonで書いてみました。
「Pico」と「Pico W」の違いは無線チップが乗っているかどうかの違いですので、Wi-Fiモジュールの初期化が成功するか、例外が発生するかで判断しようとしましたが、「Pico」の場合はその前段階の「network」パッケージのimport の段階で 「ImportError」の例外が発生しました。
そもそも「Pico」はネットワークの機能をもっていないので、「Pico」用のMycroPythonの実行環境のuf2 ファイルには含まれていないのでしょうね。。
よって、性格な判断だとちょっとなんだかなという感じもしますが、 「import network」で例外が発生した場合には、「Pico」、そうでない場合(+WIFIモジュールの初期化も成功の場合)に「Pico W」と判断するプログラムを作ってみました。
「Pico」の場合は3秒間隔、「Pico W」の場合は1秒間隔で内蔵LEDを点滅させています。
# micropythonを使ってRaspberry Pi picoとpico w を区別するプログラム
import machine
import time
# Wi-Fiモジュールの有無をチェックする関数
def check_wifi():
try:
# networ を importする
import network
except:
# pico の場合は network のパッケージが存在しないため ImporError でException する
return False
try:
# Wi-Fiモジュールを初期化する
wifi = network.WLAN(network.STA_IF)
# Wi-FiモジュールがあればTrueを返す
return True
except:
# Wi-FiモジュールがなければFalseを返す
return False
# Wi-Fiモジュールの有無をチェックする
wifi = check_wifi()
if wifi:
print("This is pico w")
# LEDを制御するためのピンを設定する
led = machine.Pin("LED", machine.Pin.OUT)
while True:
led.toggle()
time.sleep(1)
else:
print("This is pico")
# LEDを制御するためのピンを設定する
led = machine.Pin(25, machine.Pin.OUT)
while True:
led.toggle()
time.sleep(3)
内蔵LEDの点滅についてはいかに記事にしていますので、併せてごらんになって頂ければありがたいです。