【STA24】UDP無線ログESP32ベースでBNO085とRTKデータ<C#Consoleアプリ表示軽い>

正月前半のUDPの基礎実験から、いけそうなので、UDP対応の新しいシステムを正月に組立ました。

●いけそうだと感じた理由
いけそうな理由1:UDPと言えば、データ落ちが問題になりますが、確かに数m離れるとデータ落ちが0.1%以上発生しますが、30cmとか体に装着した場合の至近距離以内では0.016%と桁違いにデータ落ちが減少しました。
いけそうな理由2:BNO085とRTK F9Pセンサデータ合計344byte/100msecの容量だと数msecでUDP転送できてしまうので、システム全体の負荷にならないので、マイコン側にSDカードログをさせないでもよくなった。
いけそいうな理由3:PCVisualStudio C#でのプログラムがUDPはシンプルなコードで作れるし、受信動作が速いのでプログラム全体が作り易い。受信が速いので、Consoleアプリのほうが毎回のログデータが見られます。

●今までのUDPがらみの記事

2024年1月6日

【STA24】UDP採用でシステムを断捨離その1<Teensy廃止ESP32のみでトライ>

SPIをやめてESP32単独でも1Mbps程度
2024年1月1日

【正月実験】SPI->UDP無線送信速度実験<SPI+UDPで1.4Mbpsまで落ちた>

SPIとUDPが同居するとESP32の速度低下が著しい
2024年12月31日

【STA24】SPIマイコン間通信その1<4.6Mbpsまで出たがばらつく>

ESP32へデータ転送する速度アップでSPIを使ってみた
2021年7月19日

【M5】WiFi UDPを初めていじってみた<めっちゃ速い>

 

マイコン間の
UDP通信初めてやった

●今回の試作
 昨日は、GNSS RTK F9Pのデータ172バイトをESP32でログしてUDP経由で、PCへ転送するところまででしたが、本日は、BNO085のデータをログして、RTKデータと時間同期させてからUDP経由でPCへ転送するプログラムをつくりました。更に、PCのC#のプログラムをCONSOLEアプリに変更して、高速表示するようにしました。
●ESP32のBNO085プログラムの備忘録
BNo085のUART RCVモードで最小限のIMUデータだけをログしてます。Adafruitのライブラリーは使わずに
垂れ流しの100Hzのデータから、ヘッダ0xaa,0xaaを検出してデータ配列にため込みます。UDP送信周期は、
100msecなので、10個データたまったらまとめてUDP送信します。この場合RTKのデータとは別に送信します。同期は、GNSSボードからGPSのタイムパルス信号が1秒ごとに正確に入るので、EPS32のピン割り込みでマイコンの時刻と合わせて、真の時刻とデータ受信した時の時刻の差を記録して整理してからUDP送信します。BNOのデータは真の時刻から2~6msecくらいずれてますが、ずっとそのズレ時間を維持したままですので、周期10msecは、正確にでてます。GNSSのRTKデータが遅延が大きく50-60msec真の時刻から遅れてますので、GNSSのデータだけは、いろいろなばらつきを想定して扱うので、単独送信としました。

●ESP32 UDP送信時間
GNSS RTK172ByteのUDP送信時間は、350-700μsecと大きくばらつきます。速度換算で、3.44Mbpsとなります。昨日の測定では1400μsecだったので、何か大きくばらつく原因がありそうです。
いずれにせよ、ESP32のUDPは、1Mbps以上で送信できるのは間違いないです。
ちなみにGNSS RTK172ByteのSerial1 115200bps受信時間が2110μsecですので、
全ループ10msecには未だ余裕があるので、410800bpsまでアップしなくてもいけそうです。

●PCのC#コンソールプログラム
DOBONネット様のサンプルをコピーさせていただきました。バイナリ表記の部分だけオリジナルです。
プログラムの設定、PCのIPアドレスとポート番号をEPS32のプログラムと合わせておきます。
ここでは、PCが192.168.0.9 ポート10000  ESP32が192.168.0.11 ポート5000です。
ポケットWiFi120kbpsの遅いSIMのルーターで接続してますが、3Mbps程度はでてます。
インターネットが120kbpsと遅いですが、ローカルネットワークでは、2.4GHzのWiFiの速度でます。

●プログラムコードはGISTにあります。
ESP32:https://gist.github.com/dj1711572002/983941876f84d2ee07d4abd8eaf926d3

C#ソース:https://gist.github.com/dj1711572002/18c040b1c7941464403aa772ecafa79f

 

●以後
試作から実装基板でのESP32eモジュールへ実装して動作試験していきます。

コメントを残す

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