自作ロガープログラムを公開したいなーと思ってますが

今年はコロナ禍の影響でサーキット走行も数えるほどしか行けてなかったですが、逆に家で過ごすことが多かったので、そんな時間を活用してGPS機器の理解から、自作のGPS機器製作までやってみてました。

そんな中見つけたM5Stackというデバイスを使って自作のロガーも作って、今年のサーキット走行は走行スキルアップというより、このデバイスが正しく動いてるか??の確認が中心でした。

ロガー(ラップタイマー)に求める機能は人それぞれあると思いますが、わざわざ市販のロガーを買わずに作ってみたというのは、単に「お金がもったいない」というのもあるんですが(笑)、市販のロガーに満足していないというのもあって。

最初はLAPSHOTでラップが取れるだけでも「すげー!」と感動したものですが、それに慣れるともっと他のことがしたくなるわけです。

市販のGPS機器をいろいろ調べてみると、機器(正確には機器に含まれるGPSモジュール)によって精度がまちまち。私も何種類か試してみましたが、最近ではu-bloxという会社のモジュールが結構良い感じ。Drogger DG-PRO1がu-bloxを使ってるので、市販のGPS機器を買うならこれがいいと思います。

で、それをもっと安く仕上げるには自作しましょうというのを以前のポストに書きました

ただ、これらは「スマホとのBluetooth連携」が必須となり、おそらく私だけじゃ無いと思いますがBluetoothの認識がうまく通らなかったり、いつの間にか切れてたりということもあり。走行直前にそういう状態になるともうイライラするんですよね~(笑) もうグローブはめてヘルメットかぶっちゃったよ~ でもスマホをいじるのにグローブ取らなきゃ・・・ という、あれやこれやするのが面倒だなと。

で、M5Stackの話が出てくるわけです。これだとBluetooth連携は必要なく、SDカードにどんどん書いていってくれるので(というプログラムにしたので)、走行前のイライラをせずに済みます。

このM5Stackがなかなか優秀で、いろんな拡張をすることが出来るんです。例えば測距センサーをつなぐと距離が分かるのでサスストロークを可視化したり、ジャイロや加速度計が入っているのでバンク角を視覚化出来たり(これはまだ道半ばですが)、その気になればバイクのデータ(rpmとか燃調データとか)も取れます。

それでいてお手頃な値段感。この写真のようにGPSデータを取るだけなら1万円もかからないです(M5Stack, GPSモジュール, バッテリーいれて9000円くらい)。

そうすると他のライダーさんの需要を満たせるんじゃとか思って。「興味がある」というお声もいただいているので公開したいんですが、M5Stackもネガ要素があって。一言で言うと、パソコンのように「万人が使える仕様」にはなってなくて、例えばこのロガーアプリを使いたいと思ってもアプリのインストールというのが出来なくて、じゃあどうするかというとお手持ちのPCに開発ソフト(Arduino IDE)を入れて転送(正確にはコンパイル+転送)するという、それだけでも相当敷居が高いものです。

あとデータを視覚化するという部分はRaceChronoというアプリを使う前提でいます。これに自作ロガーのデータを読み込ませ、視覚化。RaceChronoはフリーでも使えるんですが、データを読み込む機能は有料です(2000円くらい)。DashWareという可視化ソフトを使えばフリーで出来ますが、これがまたなかなか使いにくい&出来上がるテイストが古いんですよねぇ。

というように、簡単には万人が使えるというものにはいかないんですが、いちおソースコードは公開したいとは思っています。で、ソフトウェア開発やったことある方なら分かってもらえると思うんですが、いまのソースは汚くて、、、もっと綺麗にした暁には公開しようかなって。「ソースが汚い」というのはイメージ付かないかもしれないんですが、バイクに例えるなら全然洗車していない状態とか、ガムテで補修しまくりのボロボロのカウルとでも言うんでしょうか。それでもまあまあタイム出せるよね?という状態。つまり今のソースは実態はとても汚いんですが、必要な動作はしてくれるという状態。ちょっと見てくれを綺麗にしてから公開しようかなと思ってます。

しかし世の中の進歩はすさまじくて、GPSという大きなシステム(衛星打ち上げたり)のおかげというのもありますが、個人レベルでこういうものを作れてしまうというのにも驚きですね。

シェアする

16件のフィードバック

  1. はじめまして。
    ソースコードめっちゃ気になります。見たい…
    本職じゃないので汚い云々気にせず見たいですね!

    エンデューロマシンの中にも入れたら楽しそうですし、
    ツーリングログ残す用にも使えそうで俄然ワクワクします!

  2. 動くパイロン様

    目下ソースコードを整えてますが、もうしばらくお待ちください。現在バンク角の検出に取り組んでて、これ終わってから公開しようかなと思ってます。

    エンデューロで言えば、コマ図ツーリングで使えるような「トリップメーター」というんですかね。最後のチェックポイントから○m走行中と出してくれる+手動の補正も出来るというのもありだなーと考えてました。林道やトンネルだとGPS捕捉出来ないのであくまで簡易版にはなりますが、M5Stackのいいところは物理的なボタン3つ付いているところ。スマホアプリにもコマ図向けアプリありますが、グローブ外して操作なんですよね。M5Stackだとグローブのままボタン押せるので楽だなーと思ってます。

    ツーリングログももちろん行けますね! スマホレベルの精度でよければいろんなアプリがすでに公開されてるので、そっちをお使いいただく方が手っ取り早いかもです。

    正式にソース公開したらご案内します!

    • 返信ありがとうございます。
      やはり物理ボタンであることは大きいですよね。

      エンデューロは坂攻略時の速度のノリや9軸の値でデータをとってみたいなーと思っています。ドロドロ対策に3Dプリンタでケースでも作ろうかと…

      ツーリングログなんですが、スマホ+Garmin等のBluetooth接続GPSを運用しましたが…
      ツーリングとなると、止まって散策をする事もあったりバッテリーの消費であったり…
      と、思ったよりも面倒なことが多いのでバイクに内蔵してしまえるロガーがやはり便利かなと考えた次第です。

      公開楽しみに待ちたいと思います。

  3. 動くパイロンさん、エンデューロよく走ってらっしゃいますか? もし関東近郊にお住まいなら、一度M5Stackと各種センサーもってバイクに取り付けて、どういうデータ取れるか確認してみたいなと思って。いちおいまバンク角とピッチ角は取れるようにしたので、坂のスピード変化、角度、サスストロークも取れるかもと思ってます(ただEDだと振動がものすごいと思うので意味ある角度データ取れないかもしれませんがw)。もし差し支えなければ入力いただいているメアドにご連絡してもいいですか?

    ED/MXは泥対策確かに必要ですね~ あとショック対策も。

    ツーリングでのスマホは確かにそうですね! バイクにスマホ付けっぱなしというわけにもいかないし、やっぱ専用機でログ記録したほうがいいですね。これも考えてみます。

    • エンデューロは友人と行くときに行く程度でそこまで頻繁ではありません…
      これから本格的にチャレンジしようかなと考えているところです。
      拠点が関西~中部なので昨今の状況ですと厳しいかもしれませんね。
      EDの振動は6軸追加で2個付けてノイズ取りするか、前後のストロークを見てノイズ取りするか考えていました。
      メールアドレスの連絡の方大丈夫ですよ!

  4. 初めまして。
    ミニバイクを購入し今年から本格的にサーキット走行をはじめた者です。
    走りに行くたびに毎回計測器を借りるにつれて、毎回お金払って借りるのもなぁ…かといって買うとめちゃくちゃ高いし…という悩みにぶち当たり、もしかして自作できるのでは?と思い立った結果このブログに行き着いた次第です。

    M5Stack、こんなにいいものがあったんですね…!GPSロガーとしても使えるとは、これを使えばものすごく上達が早くなりそうでとてもワクワクします!
    これを見て導入を考えているのですがarduinoは少しだけ触ったことがあるぐらいのプログラミング初心者なので、どんなコードを書けばいいかの参考にソースコードを公開していただけるととても有り難いです…!公開を楽しみにしています!

    • ツバサさん、初めましてー!
      そうなんです、M5Stack。私も去年の秋に初めて存在知りました。そして私も以前、Arduinoベースでロガーを作成しようとして途中で挫折したクチです(笑) M5Stackは最初からケースに入ってるし、画面も付いてるのがやっぱいいですし、IPSなので炎天下でも見やすいんですよね。

      M5StackもArduino IDEを使うのでおそらく問題なくコンパイルしていただけると思います。仕事の傍らではありますが出来るだけ早めに対応しようと思ってますので、もうしばらくお待ちください。基本機能は出来てるのでソースをきれいにするのを進めて、オープンソースのお作法(GPLとか)をちょっと整理してから公開します!

  5. 初めまして。ラップタイマーのあれこれ読ませていただきました。私も電子工作、プログラムなどに、携わっていましたのでとても面白く参考になりました。
    私もレースに出ていまして、パーツを変えた時の加速などを比較を行いたいと思っているのですが、テリーさんが個人的にデータを比較するのに最適なものはなんでしょうか?
    GPSは初めての分野で、どのようなファイル形式でログされているのかさっぱりですが、Excelとかで加速のグラフを重ねられたりしたら便利なのかなと思っていたりします。
    長くなりましたがよろしくお願いします。

    • Shoさん初めまして!

      データ比較ですが、まずはGPSからGPRMCというフォーマットで出力し、それを一般的なWebサービス(例えばhttps://www.gpsvisualizer.com/)に入れると軌跡が分かります。さらにGPRMCには速度情報があるので速度データや加速度(速度の差分)を出してエクセル等で見るのが出来ます。

      が、結構これめんどくさいんですよ(笑) いちいちデータを取り込んで、エクセルに読み込ませてというのが。なのでテストではいいんですが、サーキットでやるにはめんどくさい。なのでRaceChrono(有料版)を使ってデータを読み込ませてます。安いAndroidタブレットにRaceChrono入れて、M5Stackで使ったマイクロSDをタブレットにいれてRaceChronoで読み込むと、いいかんじでグラフ化、ラップ、軌跡全部やってくれます。

      こんな感じで出力すると、RaceChronoで読んでくれます。RC2という行は必須ではなくて、センサー値をグラフ化する時に使います。
      $GPRMC,072551.40,A,3523.52515,N,14005.41699,E,31.630,288.130,250821,,,A*67
      $RC2,072551.40,,,,,,,0.00,0.00,160.00,179.00,160.00,179.00,,*21

      RC2フォーマット詳細は下記に載ってます。
      https://racechrono.com/article/2572

      以上、参考になれば。
      いい加減オープンソース化したいんですが、私自身にオープンソースのお作法知識がないのと、業務でばたばたしてて永遠先延ばし中。

      • 返信ありがとうございます!なるほどですね、、、

        自分自身、電子工作とかプログラミングも楽しみたいなという思いがありますので、M5stackを使ってみようと思います!
        調べてみるとgrayは廃盤になったりGPSはバージョンが上がったりといろいろ新しくなると思いますが笑あと金額もだいぶ上がっちゃいましたねぇ、笑

        オープンソース化楽しみにしています!
        自分も完成したらオープンソース化したいですねえ笑

      • 度々申し訳ありません。
        先日M5Stackが届きまして、早速コンパイルして実装と言いたいところなのですが、GPSが取得出来ませんでした。笑
        サンプルプログラムでは画面出力で、しっかり表示されないので当てにならず、テリーさんのプログラムをメールか何かで頂きたいのですが、大丈夫でしょうか?
        よろしくお願いします。

        • 申し訳ないですがまだ共有できるレベルではないので、公開までお待ちいただけますか?(意味不明なロジックとか、デバッグ用に私の住所の緯度経度情報が入っていたりとかいろいろ)今年中にはがんばって公開するように努力します!

          Arduino IDEでのGPSサンプルプログラムは動きますか?まずはこれが動かないと先に進めません。
          ファイル-スケッチ例-M5Stack-Modules-GPS-FullExample
          を実行してみてください。これを動かすとM5Stack上でGPSの情報が表示されます。日時とか緯度経度とか。動かない場合は、たいていの場合はGPSモジュールとプログラムのボーレートが合ってない場合です。GPSモジュールのデフォルト値は確か9600だと思うので、スケッチ例のまま動くはず。変えている場合はスケッチ例のボーレート指定のところを変えた値にしてみてください。

          あとはGPSモジュールは確か最初内蔵アンテナにつながってると思うので、外部アンテナをつないで、かつ中の配線も外部アンテナにつなぎ替えてください。最初は灰色の線が基板とつながってると思うので、この画像のように黒い線が基板とつながるようにつなぎ直します。
          https://m.media-amazon.com/images/I/71jTgNCzRFL._AC_SX679_.jpg

          • 承知いたしました!公開の方、楽しみに待とうと思います!

            いろいろな情報を丁寧にありがとうございます。
            GPSの方は無事動きまして、ロガーも完成しました。
            ですが、gpsの更新が1Hzになっているので模索しているところです笑
            楽しんで作っていこうと思います

          • お~実装早いですね!
            1Hzというのはもしかしたらu-centerを使った設定を行っていただければ解決すると思います。下記のポストの10番目のステップに書いてありますのでもしよろしければご参考までに。これが出来ていればあとはGPSの読み込みを100msとか200msごと等にやれば出来るはず。すでに対応済みorはずしていたらすみません。

            https://tc2000.blyst.jp/2020/11/10/%e3%83%a9%e3%83%83%e3%83%97%e3%82%bf%e3%82%a4%e3%83%9e%e3%83%bc%e3%81%82%e3%82%8c%e3%81%93%e3%82%8c%e3%80%80%e3%81%9d%e3%81%ae%ef%bc%91%ef%bc%90%e3%80%80%e3%82%b9%e3%83%9e%e3%83%9b%e5%90%91%e3%81%91/

          • 昨晩から、u-centerを使って設定を行っているところでした。
            色々なサイト見ながら試したのですが、ボーレートと周波数を変更したのですが、変更後ロガーをコンパイルしてPCに繋いだままだと変更した設定で動くのですが、PCから切り離す(1度電源が切れる)と設定が初期に戻ってしまう状態です笑テリーさんがM5Stackで作成した際は特にそういった症状はなかったのでしょうか?

          • 私も確か同様の症状起こったような記憶があります。どうやって直したかうろ覚えなのですが、u-centerを使う時はGPSだけをつないでやると良かったような(うろ覚え)。

            いま現在Shoさんがどういうふうに設定しているかにもよるんですが、私はUSBシリアル変換を使ってやりました。同じ上のリンクの7番目のステップです。GPSモジュールの16,17ピンがUARTなのでここにつなぎます。どちらがTxD/RxDだったか忘れてしまいましたが、確か16がTxDだと思います。上手くいかなかったら逆にしてみてください。GPSモジュールをM5Stackにスタックした状態でPCとUSB-Cでつなぎっぱなしでもこの操作はできますが、確かこれだとうまく設定を保存してくれなかったような。とにかくM5Stackとは切り離して、GPSモジュール単体にして、u-centerを使ってみてください。

            あとu-centerのSendとかSave Configも1回だけでなくて3回くらいやってください(笑) 同じリンクの13,14ステップになります。

Sho にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。

コメントする