micro:bitのUARTを使って、PCとシリアル通信するのを試してみた

micro:bitのUARTを使って、PCとシリアル通信するのを試してみた。

microPythonで以下のようなプログラムを書いた。

from microbit import display, Image, uart

display.show(Image.HAPPY)
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.read() # read 1 byte
        uart.write(s) # echo back
        display.show(chr(s[0])) # show to led

このあたりのuartについての公式サイトの情報を参考にした。
UART — BBC microbit MicroPython 0.5.0 ドキュメント

uart.initでシリアルポートを初期化するのだが、このときに使うpinを指定することもできる。
逆に、pinを指定しない場合にはmicro:bitのUSB-UART機能を使用することができ、PCとUSBケーブルで繋げた状態でPCとシリアル通信をすることができる。
ただし、microPythonのコンソール機能として普段は使われているので、デバッグ用などにmicroPythonのコンソールを使うことができなくなるので注意が必要だ。

機能としては、s=uart.read()で1バイトを受信し、uart.write(s)でそれをエコーバックとして送信し、同時にLED表示部にdisplayで表示をしている。
display.show(s)とはできない。(sがbytes型というbyteの配列なので、文字列としては使えないため)

PC側は、TeraTermなどでmicro:bitに対応したCOMポートを、9600bps,8ビット,パリティなし,ストップビットなしという設定にすれば、通信をすることができる。
PCとmicro:bitの通信がつながった状態で、一度micro:bitのリセットボタンを押せば、最初に「*** UART tesst ***」という通信がPCに送られてきて表示される。
そのあと、PC側でキーボードから例えば「a」と1文字入力すると、micro:bit側からエコーバックで「a」が帰ってきて表示される。
それと同時に、micro:bitのLED表示部にも「a」と表示される。

うまく動作するものが書けたようだ。ちょっと変更すれば、micro:bitどうしの通信をすることもできる。


次は、radioによる無線通信と組み合わせて、uartからradioを使った通信のブリッジみたいなものを作ってみたい。

つづく




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

− 5 = 2