M5 stackで作るバイク(等)ロガー製作 随時更新

2020年11月19日IT,M5stackDIY,バイク

前回色々情報を集めたバイク用ロガーをすこしずつ作っていきます。

随時更新なのでたまに情報が増えてるかもしれません。

raspberry piやJetsonでも似たようなの作れると思いますが今回は開発が簡単なM5stackで作っていきます。

IMUが最初から入っているgrayを使います。姿勢データとりたいし

集めた資料はこちら

1.バイクの停車位置発信装置

  • 電源投入時GPSとリンクさせる
  • リンク完了後3Gでslackにgoogle mapアドレスを送る
  • 電源が落ちたあとどうするか…
  • slackは最初の一回だけ。あとはSDカードに記録しておく
  • GPSの時刻情報は使う

広い駐輪場に置いたり何かの拍子に移動してしまったバイクの位置をslackなどに送信しておく機能をつけたいと思います。

ネット越しにバイクの位置情報データを送る

Soracom 3Gモデム

sigfox

soracom 3Gモジュールについて

ピンアサインの16,17は、port.Cと衝突するためGPS関連が使えなくなる。

soracom 3Gを使うのは開発工数が増えるのでやめます。sigfoxに変更

soracom ボードを買うときは

3Gはsoracomの出してる3Gボード使います。小売店はほぼ完売なのでsoracomで注文するしかなさそう

僕はアキバのマルツでラス1買いました。

https://soracom.jp/products/kit/3g_module_m5stack/

simカードも忘れずに soracomのsimは従量制です。

チュートリアルはここ

slackとの接続について

slackとの接続は直接API叩きたい(IFTTTが有料化してよくわからんくなったので)

httpsの証明書をハードコートすればいけるらしい

GPS moduleを使っているのですが電波を拾ってくれないのでUnitに切り替えます。

それに伴ってエンコーダモジュールも必要になります。(現在取り寄せ中)

2.ホーム画面

最近のバイクに無い情報を出しておきたい

無難なのは時計?

通常時は時計(mode0)

ラップタイム(停止、結果表示 mode1)

ラップタイム作動中(mode2)

として作っていきます。

IMU入ってるのでバンクと前後Gをとる

その他、外気温と気圧計つけたら天気の変わり目が分かっていいかも

グラフ表示できるようにしたい。

UI

MFDっぽい感じで

ボタンを押すと四角で囲む

IMU情報表示

ラップタイムとかGPSそっちのけでIMU表示作ったらいい感じになってしまった

グラフはsprite機能を使って流してるのでログってるわけではない

バンク表示は作ってる会社ある

https://www.protec-products.co.jp/products/bankmeter/

せっかくなのでアナログ風表示にしてみた。過去にADI作ったときと違いptichやrollを計算してくれるライブラリが入ってる。

計算内容はmahonyquaternionなので僕がADI作ったときと同じ

バンク表示の傾き方向とかはバイクが傾いた方にインジケータが傾く方式にした。

IMU数値の補正にカルマンフィルタ使いたい。ログ取るとき厳密な方がいいし

ロボット工学のセンサ系の本いくつか読んでみる事にする。

ラップタイムについて

メイン+スプリットタイム?

操作は手動停止?→まずは手動で動くようにする

http://n-and-u.jugem.jp/?eid=1020503

参考になりそうなサイト。ラップタイマーの各計測方法が解説されてる。

大きなサーキットには磁石が入っててラップタイマーを操作するらしい。センサーは9軸IMU使えば磁力変化とれるけどもっとシンプルなのかも

GPSならログと一緒にとれるかも

周回判定まわりのプログラムどうしよう。当たり判定と同じでいいのかな?

ラップタイムプログラミングについて

表示は 分分:秒秒.ミリ秒

スタートとストップ機能が必要。スプリットタイムはどうしよう。周回ごとのタイムを表示するスペースもある

M5stackでストップウォッチを作るにはいくつか手段がある。

Ticker

ハードウェア・タイマ

millis()

Tickerは簡単に実装できる。ハードウェアタイマ(timer_系)の方が精度は高い

ガチラップタイマーってわけではないのでガチ計測は必要ないものの一応メモ

ハードウェアタイマーで作りたい場合、サンプルプログラムESP32-RepeatTimer を参考にすること

millis()で実装するのが早そう

外気温計

Adafruit_BMP280

Adafruit_SHT31

のライブラリを使用すればすぐ動く

広告