micro:bitでUARTと無線通信をブリッジし、シリアル通信を無線化するのを試してみた。
先日の無線の話の続きで、UARTのプログラムと組み合わせてみた。
microPythonで以下のようなプログラムを書いた。
import radio from microbit import display, Image, sleep, uart display.show(Image.HAPPY) radio.on() uart.init(baudrate=9600, bits=8, parity=None, stop=1) while True: if uart.any(): s=uart.read() radio.send_bytes(s) t=radio.receive_bytes() if t is not None: uart.write(t)
micro:bitを2つ使って、両方ともこのプログラムを書き込む。
PCを2つ用意して、それぞれのPCにこのプログラムを書き込み済みのmicro:bitをUSBで接続する。
PCにはmicro:bitが接続されているCOM:ポートがあり、そのCOM:ポートをTeraTermなどで開く。
片方のPCから文字を送信すると、もう片方のPCに届いて表示される。
(micro:bitを3つ以上を使った場合は、1台から送信したデータが他のmicro:bitすべてでデータが受信される)
UARTは、PCと繋ぐだけではなく、micro:bitの基板エッジコネクタのピンに割り当てて電気的に取り出すことも可能だ。
そうすれば、PC以外に好きなマイコン等とも通信させることができる。
以前は、UARTを無線化するためには、値段が高いキットを買ったりしていた。
Nordic Semiconductorの独自方式の無線用だと、ケーツー電子工業のキットとかがある。
Bluetoothを使ったものだと、無線化.comのZEALシリーズなどがある。
それに比べると、こちらはmicro:bitを2個使うだけなので、4000円少々でシリアル通信を無線化することができる。
この面でmicro:bitはいろいろ応用ができそうなので、お薦めだ。
難点は、あまり無線の電波が飛ばないため部屋の中かせいぜい隣の部屋くらいまでしか使えないということと、実際に応用する場合には混信対策や通信エラー対策や暗号化処理とかを入れるのでプログラムが複雑になってしまうということだろう。