Rapberry PiとBBC Micro:bitでUARTを試すの記事ではUART経由でシリアル通信を試したが、USB経由でも出来るので触れておく。




今回はRaspberry PiとMicro:bitをUSBケーブルのみで繋いでおく。



Raspberry Pi側では前回触れたシリアルポートの設定は不要。

※上のキャプチャではシリアルポートは有効になっているが、無効にチェックを付けた状態でいい。


最初にMicro:bit側のコードを作成して転送(フラッシング)する。

/path/to/dir/usb.py

from microbit import *

display.show(Image.HAPPY)

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



続いて、Raspberry Piの方を下記のように修正する

/path/to/temp.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)

Serialの第一引数のデバイスの指定を/dev/ttyACM0にし、第二引数のボーレート(通信速度:bps)を115200にする。

※デバイスの指定の/dev/ttyACM0はRaspberry Piへの差し込み状況によって異なるが、詳細はここでは触れない。

tty - Wikipedia

ボー - Wikipedia


コード作成後に実行してみたら、

pi@raspberrypi:~ $ python3 /path/to/dir/temp.py
30

Rasbperry Pi側で無事に室温の30℃を出力することができた。


USB経由のシリアル通信はシリアルポート経由よりも手続きが少ない事がわかった。

USB自体が汎用性が高いので、シリアル通信の際は他のモジュールのGPIOの使用状況を判断して適宜採用することにしよう。


関連記事

環境制御を学ぶ為にMicro:bitでサーボモータを学ぶ