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の使用状況を判断して適宜採用することにしよう。
関連記事