TeraTeam(WinPC/親機)とMicro:bit(子機)の文字データ送受信
概要
UART通信でWinPCのTeraTeamにコマンドを送信すると、Micro:bitは、受信したコマンドに応じてデータを送信します。ここでのUART通信の電文(コマンド)は改行コード付きです。
基本的な接続
以下のようにMicro:bitとWin PCとを接続します。なお、Win PCはTera Termをあらかじめインストールします。
TeraTeamとマクロ
以下の順に説明します。
- フロー
- コード
フロー
フローを以下に示します。
- 開始コメントを表示
- ループ開始
- "TEMP"コマンドを送信したら、データを受信するまで待つ
- 受信した温度データを表示
- "LLVL"コマンドを受信したら、データを受信するまで待つ
- 受信した明るさデータを表示
- 10回のループしたら、完了する
- 1.に戻る
コード
コードを以下に示します。
dispstr 'Test Start'#$0A i = 10 ; 10回繰り返す。 while i>0 dispstr 'TEMP=' ;温度データ取得のコマンドを送信 sendln 'TEMP' timeout = 1 waitln '#' ; 受信した温度データを表示 dispstr 'LLVL=' ;明るさデータ取得のコマンドを送信 sendln 'LLVL' timeout = 1 waitln '#' ; 受信した明るさデータを表示 i = i - 1 endwhile dispstr 'Test End'#$0A
MicropythonとMicro:bit
以下の順に説明します。
- フロー
- コード
- 動作結果
フロー
フローを以下に示します。
- UARTポートを設定
- 200 ms毎に、コマンドの受信を確認
- コマンドを受信した場合、そのコマンドを解析し、それに応じたデータを送信
- 2に戻る(ループ)
コード
コードを以下に示します。
from microbit import * uart.init(baudrate=9600, bits=8, parity=None, stop=1) uart.write("\r\n*** UART test ***\r\n") while True: if uart.any(): s = uart.readline() s_str = s.strip() if s_str == b'TEMP': uart.write(str(temperature()) + '\r\n') elif s_str == b'LLVL': uart.write(str(display.read_light_level()) + '\r\n') else: uart.write('NG\r\n') sleep(200)
動作結果
UART送受信の結果を以下に示します。TereTeamのマクロを実行すると、Micro:bitが計測した温度と明るさのデータが表示されます。
※購入するときは、乾電池ボックス、USBケーブルが付いているか確認することをおすすめします。