UARTについてを知る2までの記事で、UARTの基礎となるシリアル通信の仕方を見てきた。


microbit.uart.init(baudrate=9600, bits=8, parity=None, stop=1, *, tx=None, rx=None)

UART — BBC micro:bit MicroPython 1.0.1 ドキュメント


前回はparity(パリティ・ビット)とstop(ストップ・ビット)に触れた。

今回は残りのbaudrate(ボーレート)について触れる事にしよう。


ボーレートは一秒間に何ビットのデータを送受信するか?の設定で、microbitのMicroPythonのドキュメントによると一般的なボーレートは

  • 9600
  • 14400
  • 19200
  • 28800
  • 38400
  • 57600
  • 115200

であるそうだ。


UARTでは、データを送信時にクロック(時を刻む)のデータを合わせて送信しないため、送受信の双方でボーレートを意識しておかないといけない。

例えば、送信側のボーレートが9600で、受信側のボーレートが115200であった場合、受信側がスタート・ビットの 0 を受信した時に次のビットが一向に送られてこないので、0 が続く値だと認識されつつ、ストップ・ビットの 1 もこないのでひとかたまりのデータとして認識できなくなる。



BBC Micro:bitのUARTの記事の時の受信側であるRaspberry Piの方のコードを見てみると、

import serial

# 9600の値はMicrobitの方のbaudrate(ボーレート)と合わせる
ser = serial.Serial("/dev/ttyS0", 9600, timeout=1)
ser.close()
ser.open()

ボーレートをmicrobitの方と合わせている。


今回の記事で、UARTのA(Asynchronous)の非同期の箇所以外の仕様に触れたことになり、コードを書く時に迷わずに書き進めることができるようになった。