マイクロビットとクロスティーニ間でシリアル通信をしてみる

マイクロビットの温度センサーで取得したデータをシリアル通信を介してクロスティーニで受信し温度を出力してみます。


今回の内容を試す場合は、



Board in FS modeを使用できるクロームブックに限ります。




先にマイクロビットに必要なプログラムをフラッシングしておきます。

今回はmicro:bit Python Editorを利用します。


from microbit import *

display.show(Image.HAPPY)

while True:
    tmp = str(temperature())
    if len(tmp) > 0:
        print(tmp)
        sleep(1000)

フラッシング後にパソコンにUSBケーブルで繋いでいるマイクロビットを外し、再度マイクロビットをUSBケーブルで接続します。


この時、



画面右下に上のキャプチャの通知が表示されますので、Linuxに接続を選択しておきます。


コードの簡単な解説ですが、USBケーブルを介して、シリアル通信を行う場合は、

print(文字列)

のみでシリアル通信の値の送信を実現できます。




続いて、クロームブックのクロスティーニを起動し、シリアル通信の受信側のコードを作成します。


下記のパスになるようにファイルを作成します。

/home/******(ユーザ名が入る)/workspace/serial/main.py

import serial

ser = serial.Serial("/dev/ttyACM0", 115200, timeout=1)
ser.close()
ser.open()

tmp = 0
while True:
    line = ser.readline().strip().decode('UTF-8')
    if len(line) > 0:
        if int(line) != tmp:
            tmp = int(line)
            print(tmp)

コードを保存したら、下記のコマンドを実行してみます。

$ python3 ~/workspace/serial/main.py 
15

次の行に周辺の気温らしい数字が出力されることを確認します。


クロスティーニ側で作成しましたコードにある各値に関しましてはマイクロビットからのシリアル通信をラズベリーパイで受信してみるを御覧ください。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。