![見出し画像](https://assets.st-note.com/production/uploads/images/147963407/rectangle_large_type_2_cbb2259d31152c02a3a98e81d93c20f9.jpeg?width=1200)
自作GPSスピードメーターの話
最近、GPSスピードメーターを自作しています。
だいたいこんな見た目。
![](https://assets.st-note.com/img/1721495813583-4NseYK2fwd.png?width=1200)
![](https://assets.st-note.com/img/1721495827240-R0lW5PuoYA.png?width=1200)
経緯
なぜこんなものを作ろうかと思ったかというと、スマホのナビ(ツーリングサポーター)を使っていて、速度表示が出てるのですが、メーター速度との差が気になったためです。
巷でよく言われることですが、車両のメーターの速度は実際の速度に対してオーバースピードに表示されることが多いです。
制限速度を守りたいライダーとして、可能な限り正確な速度を見たいわけですが、スマホのナビにおまけ程度に小さく表示されているものを注視すると当然安全上問題があるわけで、「バイク自体についているメーターと同じくらい見やすい大きな表示のGPSメーターがほしい」と考えたわけです。
機材の選定
さて、とりあえず最初は汎用品を探しますが、ありません。
一般車用は中国製のがいくらでもありますが、当然車内で使う用なので防水性がありません。
バイクで使うなら、最低限、雨風の中でも使える必要があります。
(普段はしまっておくとしても)ツーリングの最中はバイクに取り付けっぱなしにするわけです。
さらに、以前作ったハンドルリモコンを統合したいです。
ネットで調べてなんとなくこういうのが作りたいな~と思い。
toripoyo/M5Stack_GPSSpeed: M5Stack GPS Speed Meter (github.com)
では自作しようとなるわけですが、いくつか要件を決めました。
・デカく数字が出せること
・防雨・防塵・耐紫外線ケースであること
・安定性と機動速度を鑑みて組み込みマイコンであること(Linuxは使わない)
・USB電源で動くこと
・電源連動するためにバッテリーを搭載しないこと
・Bluetoothを積んでいること
で、探してみるとそもそも防雨・防塵・耐紫外線ケースに入ったマイコンとなると、M5Toughくらいしかもう選択肢がありません。
それ以外となると、タカチのケースにいれることになります。
ハンドルリモコンはM5 Atom(EPS32)で作っているので、同じくEPS32を積んでいるM5Toughは相性が良いものでした。
他のM5シリーズと違ってバッテリーを積んでないのもありがたいポイント。
M5Toughを使おう
思い立ったが吉日というわけで、秋月へGO
![](https://assets.st-note.com/img/1721497893049-Gk2e0nGnUM.png?width=1200)
確か閉店ギリギリに入って、残り在庫1のM5Toughと、GPSモジュールを購入しました。
(本当は、10Hz取得とかできて災危通報など取れるu-bloxのモジュールが良かったのですが終売してました。むき出しのモジュールは扱いが面倒なのでケース入りのモジュールがいい。)
動作確認を実施
![](https://assets.st-note.com/img/1721498141075-vtMX1DdbhQ.png?width=1200)
ハードの組み立て
防水処理されたネジを外して
![](https://assets.st-note.com/img/1721498166630-QHzVb1aM8b.png?width=1200)
中身はこんな感じで2層構造
![](https://assets.st-note.com/img/1721498182093-eB97QbhOrK.png?width=1200)
USBは実は1系統が2コネクタあり、組み立てた状態ではアクセスできないところにコネクタやリセットボタンがあります。多分開発用です。
TFカードスロットもここにあります。
![](https://assets.st-note.com/img/1721498223343-olndiIM8h0.png?width=1200)
このUSBケーブルが通っているコネクタはPG7と呼ばれる防水・防塵コネクタらしく、それを知ってすぐにAmazonで購入。
GPSモジュールやハンドルリモコンを結線。
あらかじめケースに固定することで簡単に嵌合できるコネクタ基板があるので、そこにコネクタが刺さるようにユニバーサル基板をはんだ付け。
![](https://assets.st-note.com/img/1721498774039-jnDs7wAEnZ.png?width=1200)
![](https://assets.st-note.com/img/1721498812423-yEW1lfmMdV.png?width=1200)
ハンドルリモコンの4線はそのままではどうやっても通らないので、ミニジャックのところに抵抗ラダー回路を組み、アナログ値にすることで回避。
奇しくも車両の汎用ステアリングリモコンと似たような方式になった。
とりあえずバッテリーとGPSモジュール、スイッチの動作確認を実施。
![](https://assets.st-note.com/img/1721498962137-12zaLI9VdR.png)
これでハード面は完成しました。
ソフトの開発
Arduino IDEでスケッチを開発していきます。
今回はもう完全にソース非公開の自分用なので、好き勝手作っていきます。
TaskManage、M5Unified、TinyGPS++、ESP32-BLE-Keyboard、NIMBLEを導入して"えいや"と行ってこんな感じ。
![](https://assets.st-note.com/img/1721499458636-3Cnu5HcnbI.png?width=1200)
まだハンドルリモコンの移植はしてない状態で試走。
GPSアンテナも宙ぶらりんで結束バンドで固定。
GPS速度がスマホの表示と合うか、車速とどの程度差があるのかなどを確認して、問題ないことを確認できました。
なおこの後大雨に降られ、耐雨性も検証できました。
![](https://assets.st-note.com/img/1721499510261-0IPdSpDqHK.png?width=1200)
漢字表示を入れたり、夜中と昼で画面の明るさを変えるようにしたり、スピードバーを入れてみたり(後廃止)
新東名を走れるように120km/hまで保証。
![](https://assets.st-note.com/img/1721499914263-5P2oI0vLxi.png?width=1200)
デバッグモードを実装したり、速度チャイムを実装したり。
(音はハンドルリモコン同様、Bluetoothキーボード扱いで通知され、スマホ経由でインカムから鳴ります)
ちゃんとGPSアンテナを固定してこんな感じです。
なお電源は、ジクサーに増設したUSB電源から取っています。
![](https://assets.st-note.com/img/1721500408426-86BFqMyM3F.png?width=1200)
活躍
静岡行ったり、新潟行ったり、富士山行ったりして大活躍しました。
![](https://assets.st-note.com/img/1721500326213-Bh3ekVq311.png?width=1200)
![](https://assets.st-note.com/img/1721500530162-WvrC8P6xe9.png)
GPSロガー化
ところで、せっかくツーリングするなら走行の履歴を取りたいなーって思いました。
スマホにも色々と走行履歴を取るアプリや機能がありますが、生データを取り出せるようなものがあんまりありません。精度が悪かったり、エクスポートできなかったり不自由だったりというのがありました。
そもそもスマホのバックグラウンドアプリというのは、メモリ諸々あり安定して動きません。
一方でスタンドアロンGPSロガーは、なんか16MBとかの超小容量しか取れなかったり、浮気追跡用のよくわからないのだったりで、買う気が起きません。
で、今回作っているGPSスピードメーターは当然GPS情報を全部生(NMEA0813)で取得しているわけです。
TFカードスロットもあります。16GBまで対応しています。
車両から電源を取っているのでバッテリー切れの心配もありません。
というわけで、新しくGPSロガー機能をつけました。
バッテリーを積んでないので、時速5km/h以上になったらGPS日時に基づいたファイルを作成、5km/h未満になったときにファイルを閉じるようにしてファイル破損を防ぐ感じにしています。
いちいちネジを外してカードを取り出すのもイケてないので、こちらを一部不具合修正したうえで、無線LAN経由で簡易FTPサーバーとして機能するようにして、無線で取り出し・削除できるようにしています。robo8080/ESP32_FTPServer_SD: ESP32 FTP Server (github.com)
NMEAのデータをそのまま記録しているので、「轍 Wadachi」などのツールで1秒単位で位置や速度・高度、トリップなどを自由に処理できます。
![](https://assets.st-note.com/img/1721501269925-gDaWx0KfHg.png?width=1200)
![](https://assets.st-note.com/img/1721501682329-Lb0u10hOzI.png)
今後のバイクライフが楽しみです。
![](https://assets.st-note.com/production/uploads/images/147964566/picture_pc_dfa18d246624337e4e231e4e75b98d24.png?width=1200)