micro:bit Python Editorのシリアルを表示を使ってみよう

マイクロビットでは、温度、周辺の音量や傾き等のデータを取得でき、そのデータを活用して様々な電子工作を行っていきます。

電子工作を進める上で苦戦するのが、マイクロビットが周辺から得られたデータをどのような数値で扱っているのかを知ることで、数値を可視化できる方法を知っておくと便利です。




今回はmicro:bit Python Editorのシリアルを表示というマイクロビットが得たデータをグラフ化する機能を見ていきます。

シリアルを表示は接続でPCとマイクロビットを繋ぐ必要がありますので、事前に設定しておきましょう。




今回はMakeCodeのShow data デバイスを使ってみようでMakeCodeの方で作成しました



をマイクロパイソン(MicroPython)で書き換えます。


from microbit import *

while True:
	lv = microphone.sound_level()
	msg = "vol:"+str(lv)
	print(msg)
	sleep(1000)

マイクロパイソンで簡易的なシリアル通信を行う時は、print関数を使います。

print関数に文字列を渡す事でエディタに文字列を送信します。


上記の内容を踏まえて、各行の詳細を見ていきます。


from microbit import *

でマイクロビットの各機能を用いるライブラリを読み込みます。


while True:

は次の行からのブロックの処理を繰り返します。


lv = microphone.sound_level()

で周辺の音の音量を数値として取得し、

msg = "vol:"+str(lv)

で音量の数値を文字列に変換して、vol:と連結した後、

print(msg)

で文字列を送信します。

sleep(1000)

で1秒(1000ミリ秒)待ち、while True:の次の行に戻ります。




上記で作成しましたコードをUART(Universal Asynchronous Receiver/Transmitter, ユーアート)で書き換えてみます。


from microbit import *

while True:
	lv = microphone.sound_level()
	msg = "vol:"+str(lv)
	uart.write(msg.encode())
	uart.write("\r\n".encode())
	sleep(1000)

UARTのwrite(書き込み)では、文字列をバイト列に変換する必要があります。

※文字列のまま送信も可ですが、常にバイト列に変換しておくと意識しておくと良いです。


msg = "文字列"
b = msg.encode()

で文字列をバイト列に変換して、

uart.write(b)
uart.write("\r\n".encode())

でバイト列 + 改行コードのバイト列を送信します。

改行コードを送信しておかないと、シリアルを表示の画面(コンソール)で、出力内容が直列に並び、値を確認しにくくなります。


print関数の方式と比較するとUARTは難しいですが、コンピュータを理解する為のエッセンスが詰まっています。

プログラミングを続けてコンピュータの理解が進んだ頃にUARTに再度触れると良いでしょう。

UART — BBC micro:bit MicroPython 1.0.1 ドキュメント