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軸の値表示は逆転している(^^;)
今後の取り組み。
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です。今回は関係ありません。
画面は下の通り。文字が細かくて私には見えません。で、もう少し大きな文字と定位置に配置するように修正します。