micro:bitで気圧の変化を調べてみよう 2

長時間観測に挑戦!「3時間の気圧変化」を判定してみた

前回は、micro:bitとBME280気圧センサーを使って、気圧・温度・湿度を測定し、Data Loggerに記録するところまで挑戦しました。今回はその後日談です。目標は、単に「今の気圧」を測るだけではなく、「3時間前と比べて、気圧がどのくらい変化したか」をmicro:bit自身に計算させ、FAST DOWN(急降下)/DOWN(下降)/STABLE(安定)/UP(上昇)の4段階で判定できる装置にすることです。

1.なぜか長時間データが取れない!

最初は10分ごとに測定し、10分×18区間=180分=3時間として比較するプログラムを作りました。ところが、実際に動かすと途中でデータが増えなくなったように見えることがありました。そこで完成形をいったん離れ、Data Loggerだけのシンプルなプログラムで、1分、2分、5分、10分と測定間隔を変えながら検証しました。

ログを詳しく見ると、複数のSectionに分かれたり、「Timestamp may have been reset」と表示されたりすることもありました。電源、リセット、記録間隔、プログラムの処理など、条件を一つずつ固定して原因を切り分けました。

2.micro:bitの「余計な仕事」を減らす

検証の中で採用したのが「mirror data to serial → オフ」という設定です。Data Loggerは、内部ログへの保存と同時にシリアル通信へデータを出力することもできます。今回は内部への記録に集中させるため、ミラー出力をオフにしました。この設定だけが安定化の原因だったとは断定できませんが、最終的に長時間安定した構成ではこの設定を使用しています。

3.5分ごとに測り、36区間で3時間を比較

最終的には5分間隔を採用しました。5分×36区間=180分=3時間です。pressureHistoryという配列に5分ごとの気圧を保存し、37個の値(0番目から36番目)がそろったら、「現在の気圧-3時間前の気圧」を計算します。判定後は最も古い値を1個削除し、次の5分後には再び直近3時間を比較できるようにしました。

<3時間の気圧変化 判定>
-2.00 hPa以下:FAST DOWN
-2.00~-1.00 hPa:DOWN
-1.00~+1.00 hPa:STABLE
+1.00 hPa以上:UP

4.判定結果もCSVに残す

micro:bitの変数は再起動すると初期化されるため、後からBボタンを押すとpressureStatusがWAITに戻ることがあります。そこで、判定結果もData Loggerに保存するよう改良しました。CSVには pressure、temperature、humidity、pressureChange、status の5列を記録します。

statusは、0=WAIT、1=FAST DOWN、2=DOWN、3=STABLE、4=UP と数値化しました。これにより、micro:bitを再起動したあとでも、その時点でどの判定が出ていたかを追跡できます。

5.最終版MakeCode

最終版では、「最初だけ」「5分ごとの測定・判定・記録」「A/Bボタン表示」の3つを組み合わせました。

図1 起動時の初期設定:シリアルミラーをオフにし、変数とData Loggerの列を初期化
図2 5分ごとの測定、3時間変化の判定、CSVへの記録を行うメインプログラム
図3 Aボタンで現在気圧と3時間変化量、Bボタンで判定結果を表示

6.約30時間の連続観測に成功

完成したプログラムで約30時間40分、372件のデータを記録できました。観測期間中の気圧は最高約1008.07 hPa、最低約1003.10 hPa。3時間変化量は最大下降-2.32 hPa、最大上昇+1.29 hPaとなり、実際のデータでFAST DOWN判定も発動しました。

判定件数は、WAIT 39回、FAST DOWN 31回、DOWN 79回、STABLE 198回、UP 25回。4種類すべての判定が実際の気圧変化の中で確認できました。

図4 約30時間の気圧推移
図5 3時間変化量と判定ライン。-2 hPa以下でFAST DOWN、-1 hPa以下でDOWN、+1 hPa以上でUP

7.今回わかったことと次の展開

今回は次のことができました。

・5分間隔の長時間ロギングを安定して続けられる構成を作ることができた。
・配列を使うことで、現在値だけでなく「3時間前との差」を継続的に計算できた。
・判定結果を数値化してCSVへ保存することで、再起動後も判定履歴を確認できるようになった。
・実際の約30時間の観測で、FAST DOWN、DOWN、STABLE、UPのすべてを確認できた。

次は、設定した基準値、FAST DOWN、DOWN、STABLE、UPの段階と設定の確認と、自身の体調の時間ごとの記録をしていきます。