
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への差し込み状況によって異なるが、詳細はここでは触れない。
コード作成後に実行してみたら、
pi@raspberrypi:~ $ python3 /path/to/dir/temp.py 30
Rasbperry Pi側で無事に室温の30℃を出力することができた。
USB経由のシリアル通信はシリアルポート経由よりも手続きが少ない事がわかった。
USB自体が汎用性が高いので、シリアル通信の際は他のモジュールのGPIOの使用状況を判断して適宜採用することにしよう。
関連記事




