
市販のバイク用走行ロガーは、記録したデータを専用アプリと月額の契約の中に閉じ込める。shubham030氏はそこを嫌い、部品代およそ30ドルで自作した。基板をシートの下に結束バンドで留め、microSDカードに走行を書き出す。帰宅してカードを抜きPythonのスクリプトを走らせると、走った経路とコーナーごとの傾き、強くブレーキをかけた地点、路面の荒れた区間をまとめた報告書ができる。
使ったのはSeeed StudioのXIAO ESP32-C3で、画面を持たない記録専用と割り切った。加速度と角速度、地磁気、気圧をまとめて測るGY-87に、u-bloxのGPS、時刻を保つDS3231、記録先のmicroSDを組み合わせ、毎秒10回書き込む。
最初に引っかかったのは部品どうしの衝突だった。加速度センサーと時計が、同じ通信路で同じ番地を名乗る。番地を切り替える端子をいじる代わりに、同氏は空いていた2本の足で時計専用の通信路をソフトウェアで作り、5行で解決したという。
傾きの測り方にも工夫がある。コーナーを一定の速度で曲がっている間、加速度センサーには車体が傾いているように見えない。遠心力と重力が合わさった方向が、ちょうど車体の真下を向くからだ。そこで同氏は角速度センサーが返す回転の速さを積み上げて傾きを求め、直線を走っていて加速も減速もしていない間だけ加速度センサーを参照して、積み上げによる誤差を補正する。
停めた状態を基準にすると傾きが狂う点も見つけた。サイドスタンドで駐車すると車体が約15度傾くため、停止中のデータをゼロ点にすると全部のコーナーが片側へずれる。走行中の直線から基準を取り直した。
記録の欠落にも手を打った。木々の下やトンネルではGPSが途切れ、ある長距離走行では距離が約300km足りない結果になった。今は途切れた区間を経路探索で埋めるが、補った区間は欠落として報告書に明示し、勝手に距離を作らない方針を採る。
シートの下という取り出しにくい場所に置く機器ならではの備えもある。ファームウェアの更新はBluetooth経由で流し込み、起動後およそ10秒間まともに動いたことを確認してから新しい版を正規のものとして扱う。途中で失敗すれば自動的に前の版へ戻るため、車体をばらさずに済む。
報告書を作る側はPythonの標準機能だけで動き、追加のインストールが要らない。同氏は最初CSVを列の位置で読んでいて、ファームウェア側に列を1つ足した瞬間に全体がずれたと書いている。今は列の名前で読む。
リポジトリにはファームウェアと報告書の生成ツール、配線図に加え、バイクと400kmの自転車走行の実データが2件入っている。機材がなくても手元で報告書を生成して試せる。ライセンスはPolyForm Noncommercialで、非営利であれば自由に使えて改変も配布もできるが、商用利用には別途許諾が要る。

