2019年7月28日日曜日

ESP32とBME280でIoT気象計

ようやく夏らしい暑さと日差しになりました。しかし、暑いです。午前中ちょっと庭の草取りをしたら大汗をかきました。

午前中に昨日注文したBoschの気圧センサBME280モジュールが届きましたが、なんと5V専用でした。トホホ。アマゾンにはArduino対応5Vと書いてありましたが、3.3Vでも使えると思ってポチったらちゃんとArduino専用でした。

届いたモジュールの裏側が見てみると、ご丁寧に電源レギュレータとレベル変換ICが載ってます。その割には安かったです。870円。




ESP32は信号レベルが3.3Vなのでダメ元で繋いでみたところ一応動きました。気圧、気温、湿度が測れるようになったので、毎分測定してLCDモニタに表示。5回分(5分)で平均をとってIoTプラットフォームに送るようにしてます。ThingSpeakMachinistの両方に送ってます。どちらもグラフの表示方法に一長一短があるのでとりあえず両方です。


しかし、このセンサは気温が高めで湿度が低めにでます。左の大きな温度湿度計は、他と比べても大体適切な値を表示します。これに対して、BME280センサは温度が1.5〜2度位高く、湿度は9%位低くなります。温度と湿度は飽和水蒸気量の関係で負の相関があるのですがが、湿度がこんなには低くならないと思う。計算すれば求まるが端折ります。そもそも気温が高く出過ぎ。


アマゾンのコメントにもその旨が書かれていましたが、個体差じゃないのか? と信じなかったのが敗因です。気圧は、以前PICと超小型グラフィック液晶で作ったデジタル気象ロガーとほぼ同じで1hPa程度の差でした。

--2019.07.28 追記
BME280について色々調べたところ、このセンサは気圧と湿度測定の際に自らが発熱してしまうため、その補正を行うために温度を測っているようです。オマケ的な感じ。このため気温測定には不向きらしいですが、室温測定のための設定があったので設定してみました。

その結果かどうか少し改善した感じです。気温の差は1度ちょっと、湿度は5%差ほどになりました。
--

ThingSpeakのグラフです。Y軸のMin/Maxを指定できるのがよいです。X軸は送信したデータ数で指定なので、5分毎に送って一日分見ようと思うと、60mim/5min*24h = 288個と指定します。無料利用だと一度に3データを送れないので20秒毎の時間差で送るのが面倒です。まあ、一度ソースを書いてしまえば問題ないのですが。



Machinistの折れ線グラフです。Y軸は送ったデータのmin/maxが収まるように自動調整されるので、でこぼこが目立ちます。棒グラフだと0基準のようですが、そうすると気圧の変化は殆どわかりません。また、X軸を1日とか1週間で指定できるのですが、1日とは0時から24時で切られてしまい、深夜1時頃には1時間分しか見られません。最近の24時間分とかあればよいのですが。あと、スマホで細長くて狭いグラフでしか見えないのが難点です。

ThingSpeakは以下のページがわかりやすくて参考にさせて頂きました。
 http://iwathi3.hatenablog.com/entry/Data-to-Graph-ThingSpeak

MachinistはIIJがやっていて日本語なので判りやすかったです。
https://machinist.iij.jp/getting-started/

スケッチは、少しキレイに見直しますのでもう少しお待ちください。
あとblog内にソースを貼る方法を調べたいと思います。

0 件のコメント:

コメントを投稿