[ロボスイープ] 異なるマイコン間の通信に挑戦!ボーレートの選出

ロボスイープ

今回は、前回の実験の先行実験です。去年に実験した内容をいまさら投稿しようと思います!

背景・概要

マイコン(NUCLEO-F446RE,以下 Nucleo)と汎用コンピュータ(Raspberry Pi 4B,以下ラズベリーパイ4B)の間で通信を行います。通信のプロトコルにはUARTを使用しますが、ボーレートを設定する必要があります。ボーレートが小さいと、あまり多くの情報を送ることができず、大きいとマイコンで処理が難しくなってしまいます。また、通信の品質も同時に確認します(一時期文字化けが発生していたので)。

実験の方法

ラズベリーパイ4BとNucleoをジャンプワイヤで繋ぎ、その間にオシロスコープのプローブを繋いだ。

画像が汚くて申し訳ないです…
プローブのつなげ方が良く分からなかったので、スズメッキ線でわっかを作って間に挟んでいます…

測定精度の評価方法

測定の精度を数値化して評価しやすいように、2種類の指標を用意しました。

目標誤差Et … 目標ボーレートに対する、実際のボーレートの相対誤差。

送受信誤差𝐸𝑟𝑥𝑡𝑥 … 送信側のボーレートと受信側のボーレートがどれだけ離れているかを表す指標。
目標とするボーレートと計算値の偏差を目標値と計算値の相加平均で割って表す。

結果

測定の結果を以下に示します。

目標誤差が完全に0になることはなかったが、送受信誤差が0になるボーレートはいくつかありました。送受信時の文字化けを無くすためには、送受信誤差が小さいほうがいいので、57600と460800が有力候補です。

また、観測された波形はボーレートによってかなり異なる結果となりました。

Nucleoが生成する信号には必ずオーバーシュートが含まれ、ラズベリーパイ4Bが生成する信号は若干横幅が大きくなりました。また、ボーレートを大きくしていくと、どんどん波形が歪んでゆき、最終的にはとても使えない波形になってしまいました。

※なお、この後の実験ではこれほどひどい波形は観測されていないので、おそらく測定系の構築の仕方が結果に影響を及ぼしていると考えられます。

まとめ

今回は、UARTで使用するボーレートの選定をするための実験を行った。いくつか候補となるボーレートを選んだので、今後はこれらの値を使って実験を行っていくつもりです。

コメント

タイトルとURLをコピーしました