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

micro:bitのUARTを使って、micro:bitどうしでシリアル通信するのを試してみた。(昨日の続き)

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

from microbit import display, Image, button_a, button_b, uart, pin0, pin1

display.show(Image.HAPPY)
uart.init(baudrate=9600, bits=8, parity=None, stop=1,tx=pin0,rx=pin1)
while True:
    if button_a.was_pressed():
        uart.write("A")
    if button_b.was_pressed():
        uart.write("B")
    if uart.any():
        s=uart.read() # read 1 byte
        display.show(chr(s[0])) #show to led

昨日のUART通信のプログラムを少し変更して書いた。
UARTの初期化の処理が、uart.init(baudrate=9600, bits=8, parity=None, stop=1,tx=pin0,rx=pin1)と変わっている。
tx=pin0,rx=pin1というのが追加されている。
これは、UARTの送信用にP0という端子を使用し、UARTの受信用にP1という端子を使用するという設定だ。(それ以外の端子を使う場合、こちらを参照)

そのあとの処理は、
(1) ボタンAが押されたら、uart.write(“A”)で「A」をUARTに送信する
(2) ボタンBが押されたら、uart.write(“B”)で「B」をUARTに送信する
(3) UARTに受信データがある場合、s=uart.read()で受信し、display.show()でそのデータをLED表示部に表示する
という動作をしている。

2台のmicro:bitに同じプログラムを書き込んで、2つのmicro:bitの通信用の配線を接続する。
1つめのmicro:bitのP0端子を、2つめのmicro:bitのP1端子につなぐ。
1つめのmicro:bitのP1端子を、2つめのmicro:bitのP2端子につなぐ。
(つまり、クロス配線をする)
そして、2つのmicro:bitのGND端子どうしをつなぐ。

1つめのmicro:bitのAボタンを押すと、UARTでデータが送られて、2つめのmciro:bitで受信したデータ(この場合A)が表示される。
2つめのmicro:bitのBボタンを押すと、UARTでデータが送られて、1つめのmciro:bitで受信したデータ(この場合B)が表示される。

注意点としては、自分はICクリップ付きの電線で2つのmicro:bitをつないだのだが、基板のLED表示側の面からICクリップを引っかけると、裏側のリング状の基板パターンと基板エッジのパターンとの間の隙間に当たってしまい、うまく導通しないことがあった。
ICクリップではなく、バナナ端子などを使うとよいだろう。


次は、このUART通信のプログラムと、無線版のmicro:bit間の通信プログラムと合体させてみる。

つづく

コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.

3 + 7 =