【パワーメーター2019】ラズパイGPS追加<USBシリアル経由になった>

ラズパイよちよち歩きで、まずは、シリアルでGPSを接続しようかとしたら、最初からはまりました。ラズパイの開発環境は、PCのリモートデスクトップで、プログラム開発しているのですが、
GPIOのシリアルポートを使用するには、リモートデスクトップで使っているシリアルコンソールを犠牲にしないとシリアル接続できないということらしいので、しょうがないので、GPSをUSBシリアル経由でラズパイに接続することにしました。これって、マイコンの世界では、シリアルポートが1個しかないマイコンの場合に発生する課題ですが、まさか、ラズパイでもシリアル不足となるとは思ってもみませんでした。教えていただいたのはこちらのブログ様です。
合シリアルに関しては、手薄なことがわかりました。USBで全部つないでくれと言っているのかなと思います。

●GPSのGPIOシリアル接続は面倒なのでUSBシリアルにした理由

http://mirahouse.jp/n10/
この記事で教えていただいたのは、

a) Bluetoothの運用を止めPL011をシリアルポート用に使う。
b) Bluetoothはmini UARTを使い、PL011をシリアルポート用に使う。
c) Bluetoothはそのままにして、mini UARTのクロックを固定して使う。
最後のc)の方法はmini UARTをシリアルポートとして使うには制限が多いので今後の事を考えて使わないことにします。取れる方法はa)かb)の二択になります。

一番簡単なシリアル接続をGPSで練習しようとしたのですが、何やら手続きが多そうなので、
USBシリアル経由で接続するほうが簡単だろうとということでUSBシリアル基板で接続しました。
マイコンだったら、シリアルポートの代わりにUSBシリアルを使うなどあり得ない選択ですが、
ラズパイだとUSBシリアルが潤沢につなげるので、こういう選択があるのが新鮮でした。

 

●GPSの設定
秋月のみちびき対応モジュールです。説明書きをみながら屋外で20分ほど放置して、慣らし運転してからプログラムで接続しました。USBシリアルのどこのIDに登録されているかは
ls -l /dev/serial/by-id コマンドをターミナルで打ってみればわかります。
GPSはUSB0とかUSB2とかに割り付けられてます。
①他のUSBシリアルが115200bpsの中にgPSの9600bpsをどこに置くか?
 あちこち試行錯誤して結局安定してGPSデータが読めるのは、ロギングLOOP内でした。

➁GPSのUTCをロギングファイルのタイムスタンプに使う
  RTCを接続するのがまだできないので、GPSのGPGLLからのUTCを読み込んでJSTに変換する関数を作って、正確な時刻でファイルを保存することにしました。
NMEAフォーマットは、こちらを参考にさせていただきました。
https://szparts.com/?mode=f9
https://www.hiramine.com/physicalcomputing/general/gps_nmeaformat.html
いろいろセンテンスがあるのですが、緯度経度、時刻、速度がわかればいいので
GPGLLとGPGTAの2個だけにしぼりました。
GPSの設定を秋月の添付ソフトにminiGPSで2個に設定しました。バックアップ電池があるので
この設定でずっと使えて便利です。

③GPSデータのログ結果
パワーメーターデータは10msec間隔で整然と出力されるのですが、GPSのデータは
ぱらぱらと1秒前後で不規則に記録されてました。このばらばらに存在するGPSデータを
どうやって集計するか面倒な処理が増えてしまいました。
■GPGLLとGPVTGに間隔が3個空いているのが通常ですが、

ときどき

まとめてバッファにたまったものが一挙にでてきます。

このような状態なので、GPSデータは関しては、時間精度は±2秒程度はあるという扱いです。

●以後
USBコネクタの塊になってしまったロガーですので、振動による接触不良が大きな課題となりそうです。時間余裕がない中で、基本的な問題がまだ残ってますが、来年以降のこともあるので、コツコツと解決していきます。
ラズパイも全然使えてないので、はまる可能性があるので、あまりごちゃごちゃしないで
シンプルな使い方にしようと思います。

 

 

コメントを残す

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