見出し画像

気象観測システムをアップグレードさせる

はじめに

市販のマイコンやセンサーを使って屋外で温度、湿度、気圧、照度の観測を行ってきた。

これまで名前がなかったのだが、AtmosBotと名付けることにし、これまで観測機器をAtmosBot 1.0、アップグレードした機器をAtmosBot 2.0と呼ぶことにする。

AtmosBot 1.0の課題

課題は以下の2点。

  1. 欠測が発生することがある

  2. 1週間に1度モバイルバッテリーの交換が必要

AtmosBot 1.0 構成図

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を使って時刻管理をする。


AtmosBot 2.0 構成図

さらにRTCのアラームでESP32をDeep Sleepから復帰させて5分毎に測定することにする。ESP32のRTCのアラームによる復帰は以前のnoteにまとめているのでこれを用いる(このnoteは以外とアクセス数が多い)。

下記がユニバーサル基板に配線して完成したAtmosBot 2.0。

AtmosBot 2.0基板

ESP32は以前京都のマルツ(2020年7月閉店)で買ったものがあったで、昨年末に作ろうと思ったら手持ちのピンソケットなどパーツが足りなかった。シリコンハウスが1月3日から営業していたので、新年から大阪日本橋へ買い出しに行って作成した。

プログラムについては、今回はセンサーからデータを取得する処理なども含め、大部分のプログラムは2年前に書いたコードがあったので(すっかり忘れてた・・・)、それを使用した。処理シーケンスは下記の通り。

AtmosBot 2.0処理シーケンス

RTCを使っていても精度が悪いかもしれないので、当初は1日1回深夜に時刻補正をするよう実装していた。

だが、時刻補正のトリガーはAtmosBot側で定期的に補正しに行くのではなく、HTTPサーバー側で時刻ずれを検出した場合、ステータスコード205を返し、それをトリガーにAtmosBotで時刻補正実行することにした。

しばらく運用してみた結果

まだ現時点で2日ちょっとの運用しかできていないが、HTTPサーバーのアクセスログを確認すると、毎時刻測定できているし、判断できるほどの時刻のずれは全く発生していないようだ。思ったよりRTCの精度がかなりいい。

長時間の運用はしていないので、モバイルバッテリーがどの程度もつのかはしばらく様子を見る必要があるが、以前は1回の測定で10秒前後はWi-Fi接続していたが、数秒で済んでいる。かなり消費電力は少ないはずだ。

ただ気になるのは、マイコン基板とRTC基板に電源ONの赤いLEDがそれぞれ点灯している。消したい・・・。

さいごに

基板とモバイルバッテリーが防水ケースに収まらなかったり、プログラムの一部にバグがあったりして当初は少しもたついた。ただ、その後は順調に推移している。あとはモバイルバッテリー1回の充電でどのくらいの日数運用できるのか、今後の運用状況は機会があれば紹介したい。

よろしければ、サポートをお願いします。 より多くの方に役立つnoteを書けるよう頑張ります!!