気象観測システムをアップグレードさせる
はじめに
市販のマイコンやセンサーを使って屋外で温度、湿度、気圧、照度の観測を行ってきた。
これまで名前がなかったのだが、AtmosBotと名付けることにし、これまで観測機器をAtmosBot 1.0、アップグレードした機器をAtmosBot 2.0と呼ぶことにする。
AtmosBot 1.0の課題
課題は以下の2点。
欠測が発生することがある
1週間に1度モバイルバッテリーの交換が必要
5分毎に観測をしていて00秒に測定をしたい。ただ、マイコンESP8266のリアルタイムクロック(RTC)は精度が悪いため、4分50〜55秒を目処にDeep Sleepから復帰させ、Wi-Fiへ接続してNTPで時刻を取得してから00秒に測定している。
Wi-Fiへの接続自体は問題なさそうなのだが、NTPからの時刻取得に時間がかかり、タイムアウトを繰り返すことがあり、数十分間に渡って欠測になっていることがある。
また、一回の測定に少なくとも10秒程度はWi-Fiへ接続する必要があるため、バッテリー消費に繋がり、バッテリーの交換頻度が週1回は必要になっている。できれば2週間に1度程度にしたい。
AtmosBot 2.0へ
課題解決のため、AtmosBot 2.0へアップグレードを試みる。マイコンをESP32に変更し、RTCを使って時刻管理をする。
さらにRTCのアラームでESP32をDeep Sleepから復帰させて5分毎に測定することにする。ESP32のRTCのアラームによる復帰は以前のnoteにまとめているのでこれを用いる(このnoteは以外とアクセス数が多い)。
下記がユニバーサル基板に配線して完成したAtmosBot 2.0。
ESP32は以前京都のマルツ(2020年7月閉店)で買ったものがあったで、昨年末に作ろうと思ったら手持ちのピンソケットなどパーツが足りなかった。シリコンハウスが1月3日から営業していたので、新年から大阪日本橋へ買い出しに行って作成した。
プログラムについては、今回はセンサーからデータを取得する処理なども含め、大部分のプログラムは2年前に書いたコードがあったので(すっかり忘れてた・・・)、それを使用した。処理シーケンスは下記の通り。
RTCを使っていても精度が悪いかもしれないので、当初は1日1回深夜に時刻補正をするよう実装していた。
だが、時刻補正のトリガーはAtmosBot側で定期的に補正しに行くのではなく、HTTPサーバー側で時刻ずれを検出した場合、ステータスコード205を返し、それをトリガーにAtmosBotで時刻補正実行することにした。
しばらく運用してみた結果
まだ現時点で2日ちょっとの運用しかできていないが、HTTPサーバーのアクセスログを確認すると、毎時刻測定できているし、判断できるほどの時刻のずれは全く発生していないようだ。思ったよりRTCの精度がかなりいい。
長時間の運用はしていないので、モバイルバッテリーがどの程度もつのかはしばらく様子を見る必要があるが、以前は1回の測定で10秒前後はWi-Fi接続していたが、数秒で済んでいる。かなり消費電力は少ないはずだ。
ただ気になるのは、マイコン基板とRTC基板に電源ONの赤いLEDがそれぞれ点灯している。消したい・・・。
さいごに
基板とモバイルバッテリーが防水ケースに収まらなかったり、プログラムの一部にバグがあったりして当初は少しもたついた。ただ、その後は順調に推移している。あとはモバイルバッテリー1回の充電でどのくらいの日数運用できるのか、今後の運用状況は機会があれば紹介したい。