あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

GPSロガーをいよいよまじめに作ろうとする

Raspberry Pi Advent Calendar 2020の24日目です。クリスマスですね。特に関係ない話題で行きます。

adventar.org

秋に買ったGPSモジュールでたまに遊んでいましたが、このカレンダーではまだ扱っていなかったので(ああでも1日目にちょっと書いてたか)、今日明日はこの話題でフィニッシュになるかしらん。

初期

前回はとりあえずLCDに座標を出して、それを人力で読み取ってGoogle Mapsで読んでキャッキャしていました。

akkiesoft.hatenablog.jp

ちょっと作り込む

人力で読み取るのは面倒なので、11月末くらいにはPythonスクリプトにWebサーバーを仕込んでHTMLにGoogle MapsのリンクやLCDに出していた情報も出すようにしていました。

f:id:Akkiesoft:20201223230047p:plain

チャリ散歩で使おうとするとこんな感じになり、わりと不審者!

f:id:Akkiesoft:20201223230059j:plain

OSMを埋め込む

ファイル保存周りを書くのが面倒で脱線が続き、OSMで現在位置を表示したり、画面表示中に取得した値を10秒ごとに点で打つなどの昨日をつけて遊んでました。ただし、記録していないのでリロードすると点は消えます。これも11月末くらいの話。

f:id:Akkiesoft:20201223230252p:plain

ファイル保存を作る

ここからが今日の話。やはりファイル保存できないと色々進まないので、作っていきます。

ファイル保存の開始と終了をWebサーバーのAPIとして実装して、GETで特定のURLが叩かれたら開始・終了できるようにしました。WebUIには開始と終了のボタンを用意して、APIをたたけるようにします。

f:id:Akkiesoft:20201223230649j:plain

WebUIでは毎秒GPSの座標を取得するようにしていますが、ここに現在記録中のファイル名を含めることにして、ファイル名があれば記録中、0が入ってたら記録していない、という判定ができるようにしました。Pythonスクリプト側でも記録中かどうかは同じような判定ができます。便利

Python側のファイル保存は、APIが呼ばれた時点でCSVファイル名前ぎめ(日付と時刻)とヘッダーを書き込みをして、それ以降は記録用スレッドが10秒ごとにファイルに追記していくようにしました。

で、説明だけじゃわからんと思うので今日までのスクリプトを一旦ぶんなげました。

github.com

実際に記録してみる

今日はクリスマスだというのに渋谷に出社する用事があったので、渋谷でテスト。と思ったらテザリングの調子が非常に悪く、Web操作が何もできなくなるアクシデントが発生。2.4GHz帯が混雑しているところでの操作は要改善です。LCDがあるのでボタンで操作とかですかね……。

とりあえずつながっている間のスクショ。

f:id:Akkiesoft:20201224133738p:plain

ログファイルはスタートしてしまえばテザリングが切れてしまっても続くので、ちゃんとデータが取れています。

f:id:Akkiesoft:20201224134535j:plain

ただ、座標だけ見せられても正直わからんので、CSVを読み取ってOSMに点を打つ機能がほしいところです。

あと、途中の鷺沼でLCDを写した様子。電車内はGPS拾えませんでした。シビア。

f:id:Akkiesoft:20201224135244j:plain

まとめ

GPSロガーの11月くらいにちょっといじっていた部分の紹介と、昨晩から作ったロガー部分を今日試したというお話でした。

次はCSVをなんかいい感じにする機能で、ちょっとラズピッピから話題がそれちゃいそうなので、もしかしたらあしたはなんか違う話題(シメ的なやつ)にしちゃうかもです。