ジョギングの合間に Raspberry Pi Zero WH で M5StickC のログ採取
M5StickC で作っている心拍計のパラメーターを調整するとき、「ジョギングしている時の波形の形はこんな感じかな?」と予想しながら値を決めていたのですが、どうにも予想と違うような感じがしてきたので、ジョギング時の各種値を実際に採取してみることにしました。
採取方法
今回は持ち運びできるようにしてある Raspberry Pi Zero WH にスマホから SSH で接続し、PlatformIO のデバイスモニタで採取することにしました。
なお、冒頭の写真にあるように有線での接続になるので、以下のような制約があります。
- 実際にジョギングしているときではなく、ジョギングの合間に採取することになります。
- ケースを閉じることができないのでセンサーに直接接触することになり、普段の状態とは若干異なる可能性があります。
事前準備
Raspberry Pi Zero WH に PlatformIO Core をインストールします。 デバイスモニターは ESP32 用のツールもインストールしないとダメかもしれませんが、その辺の検証はありましていません(今回使っている Raspberry Pi Zero WH は以前に espressif32 を強引にインストールしたような記憶があります)。
以下のようなスクリプトを適当なディレクトリに保存し実行できるようにしておきます。
#!/bin/sh
. ~/.platformio/penv/bin/activate
pio device monitor -b 115200 > "$HOME/log/workout_val_$(date '+%Y-%m-%d_%H%M%S')".log
あとは、ケーブルなどは濡れてしまわないようにパッキングし、翌日にそなえてぐっすり眠ります。
ログ採取
まず、当日のコースの中から M5StickC で計測を実施する「計測ポイント」を数キロ程度ごとに決めておきます。 次にRaspberry Pi Zero WH の電源をオンにし、スマホから SSH で接続しておきます。 そのままウエストパックにしまい、計測ポイントまてジョギングします。 計測ポイントに到着したら急いでケーブルを取り出し Raspberry Pi Zero WH へ M5StickC を接続します。
事前準備で保存しておいたスクリプトをスマホから実行します。
M5StickC で計測を開始し、しばらくしたら Ctrl+C
等でスクリプトを停止します。うまく行っていればログが保存されているはずです。
結果
「ケーブルの接続に手間取ったり」「SSH が切断されていたり」「USB が認識されなかったり」、といろいろありましたが、どうにかこうにかログは採取できました。
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at http://bit.ly/pio-monitor-filters
peakP: 4095
val: 4093
val: 4076
val: 3699
peakN: 3699
val: 3727
val: 3727
peakP: 3727
val: 3724
val: 3744
val: 3781
val: 3797
val: 3819
<snip>
抜粋をグラフ化したものです。
改善点
- デバイスの接続方法: 有線接続なのはいろいろ面倒なので無線にしたいところですが、M5StickC 側にもログを採取する側にも作りこみが必要そうなのでちょっと難しそうかなと。
- スクリプトの実行: スクリプトのコマンドを手動で打ち込むのは面倒だったので、
authorized_key
で鍵にコマンドを割り当ててしまった方が楽かなとは思いました。 - 温度: Raspberry Pi Zero WH で
vcgencmd measure_temp
を実行してみると43.3℃
でした(上のスクリーンショットにもちょっと出ています)。気温は 28度くらいだったのですが、夏の日中だともっと上昇することになるので、何かしら対策は必要になるかなと(具体的な対策は思いついていませんが。。。)。