BME280で気象観測する


R4.5.17 M5Atom専用のBME280

 手持無沙汰になったので、理科実験用の道具をM5Atomで作ってみようかと思いました。幸いなことに、手持ちのBME280の自作ボードと液晶のピン配置が同じになっている v(^^) 更に、なんと、M5AtomとBME280、OLEDというこの組み合わせのスケッチは2年程前に作成していた。作ったことさえ忘れているとはね...我ながら呆れます(^^;) あとは、工作だけです。

 こんな感じに仕上がりました。作った時には温度が異常に高かったのだけれど、その後落ち着いてきた。

 実験用に作ったので、焼酎が入っていたペットボトルの中にM5Atom測定器を挿入。ふたをしっかり閉めて握ると、気圧がグーンと高くなる。ふたを開ければ、元通り。この測定器を太めの注射器にセットすると、雲発生やその時の気温・湿度変化を見ることができるのではないかと期待します。その様子は、ここで見ることができます。

 ラジオペンチさんのアドバイスを得て、気圧も小数第2位まで表示。これ小数第1位までするのは少々面倒なんだよね(^^;) ここまで作ると、 TFカードキットを使って記録したいけれど、尚更面倒なことになるので我慢。200mAh程のバッテリーで小型のサイコロ型にするのも我慢。

 「小数第1位までするのは少々面倒」と思っていたら、 http://7ujm.net  というサイトで「Arduino 小数点以下を切り捨てて文字列にする」という記事がありまして、利用させていただきました。いなばさん有難うございました。

 これなら、微妙な変化も目視することができそうです(^^)


R1.12.21 M5Stack専用のBME280

 M5Stackの側にあるピン配置とBME280のピン配置が微妙に違うので、そのまま接続することはできません。細線接続もいいのですが、しっかりと固定できないので下のような感じに加工。M5Stackを正面から見たときにBME280の端子名も見えるようにしました。

 M5Stackに差し込めば、プログラムは既に作ってあるので、温度・気圧・湿度を表示してくれます。ただ、マイクロビットの表示と違いますね。どちらがより正しいのでしょうか? 確かめようがありません。


R1.11.28 グラフ化してみる

 気象データをAmbientで送ってもいいんだけれど、M5のLCD画面にもサッと表示したいということで、グラフ作成に取り組みました。初めてなものだから少しずつ。
 プログラム内部に予め数値の詰まった配列変数を置いておいて、それを次々と線を結んで表示するだけ。今のところy軸の値表示は逆転している(^^;)

 今後の取り組み。

  1. 現在の気象データを示し、操作方法の説明を表示する初期画面を作る。
  2. Aボタン押しで、現在データをSDカードに追加保存。
  3. Bボタン押しで、現在までのデータをSDカードから読み込んでグラフ表示する。
  4. Cボタン押しで、初期画面に戻る。
ということで、SDカードの扱いを勉強しなければならないな。


R1.11.27 日本語表示にする

temp = (float)bme280.readTemperature();

で得たベタのデータを

M5.Lcd.printf("気温 :  %2.1f ℃", temp);

で小数第1位までの表示に整形してみました。この時に、ついでに必要な項目表示を日本語にしました。湿度や気圧も同様です。

 これで、新たなBME280が届いたら、コンパクトな形にして使うかな、と考えています。BME280は今頃どの辺を運ばれているのでしょうか?

 実は、BME280のプログラムよりも、日本語の導入に手間がかかりました。といっても、朝思いついて、昼食を外で摂ってから午後にかけて取り組んで実装できたので、そう大変でもなかったのかもしれません。これも、ネットの皆さんのお陰です。

 Watakoさんの最終更新日 : 2019年5月1日「M5Stackで好きなフォントを使う」とMATSUSHITAさんの2019年06月04日に更新「M5Stack の LCD に TFT_eSPI を使って日本語フォント "源真ゴシック" で表示する」を参考にさせていただきました。ありがとうございます。


 スイッチサイエンスさんでM5Stack用環境センサユニットが¥451で販売されていますので、それを利用すればいいんですが、手持ちのBME280で試してみようかと。できれば、M5Stackの背面に組み込んでしまいたいのですが。

 取り敢えずマイクロビットの基板を使ってやってみました。スケッチはネットからコピペ(^^;)

 M5stackにはランチャーを入れてあるので、試しに作った自作プログラムには、そこに復帰できるようにおまじないを挿入しておきます。つまり最初の方に(※<>は全角になってます!)

#include<M5Stack.h>
#include<Wire.h>
#include <M5StackUPdataer.h>

と、セットアップの中に

void setup(){
  M5.begin();
  Wire.begin(); // I2Cの初期化
  if(digitalRead(BUTTON_A_PIN) == 0) {
   Serial.println("Will Load menu binary");
   updateFromFS(SD);
   ESP.restart();
  }

といった赤文字の部分を記入しておかないと元のメニュー画面に戻れません.....(^^;)

リセットボタンを押したら、メニュー画面に戻りました。転送した自作プログラムは消えてしまうけど。完成したら、binファイルにしてSDカードに書き込めばいいのでした。

 ブレッドボード下にあるチップはATP3011です。今回は関係ありません。

 画面は下の通り。文字が細かくて私には見えません。で、もう少し大きな文字と定位置に配置するように修正します。