M5Stack と BME680 でガス報知器(アラーム)および気圧・温湿度グラフで「熱中症」警告表示器を作ってみた

M5Stack

こんばんは。

前々回前回の記事に引き続き、BOSCH ( ボッシュ )製、ガス・気圧・温湿度センサ BME680 と M5Stack を使った実験です。

今回は、BME680 センサのグラフを M5Stack ( ESP32 搭載 )のディスプレイに表示させ、ガスセンサの異常値を検知したら警告アラーム( Beep音 )を発生させ、そしてディスプレイにも警告表示させてみました。

今回は、YahooニュースやNTP時計を表示させずに、純粋に BME680 センサの情報表示のみに特化しました。

スポンサーリンク

これ、なかなか面白いです。

ちょっと「おなら」をしようものなら、すぐに反応してグラフに現れ、警告アラームを発します。
この反応の良さはスゴイですね。
また、センサ付近で息を吹くと、すぐ反応して警告アラームが鳴ります。

そんなに「俺の息がクサイんかっ! 」

と、センサに怒りたくなるくらいスバラシイ反応です。

とりあえず、以下の動画をご覧ください。
残念ながら「おなら」やクサイ息ではなく、無水エタノールで実験しています。

今回は、M5Stack のオプションの電池モジュール 850mA のものをスタックしています。

(※2021年11月時点では、バッテリー容量は750 mAhになっています)
M5Stack用電池モジュール

これで、フル充電で、ディスプレイフル点灯で約4時間動作します。
ディスプレイのbrightness(50)にすれば5~6時間動作します。
やっぱ、これがあった方が便利です。
デフォルトバッテリーだと数十分しか持ちませんからね。

M5Stack 起動直後は、BME680のガスセンサが不安定なので、10分以上ウォームアップ運転しておきます。
その後、ガスセンサの値が安定してきますので、Ambient 送信ボタンを押してデータを送ると良いと思います。
Ambient については、こちらの記事でも紹介したように、クラウドデータサービスで、M5Stack のセンサデータを手軽に送ることができ、スマホやパソコンなどでグラフを確認することができる、とても便利なサービスです。
時間も自動でプロットしてくれます。

動画の中ほどにあるように、無水エタノールの蓋を置いただけではイマイチ反応が悪かったのですが、蓋にエタノールを注いだら危険アラームが鳴りました。
結構反応が良いと思います。
そのエタノールをその場から離すと意外と早めに警告アラームが解除されますね。

このガスセンサの警告表示は2段階設定にしました。
異常ピーク波形の検出と、危険最終領域を下回った時です。
異常ピークの検出は、ネットでいろいろ調べてみると、数学の統計学を駆使しているみたいです。
今回の場合の検出方法は後で述べていますが、とっても簡単な自己流方法でやっています。

今回思った事は、統計学っていうものは、今の社会およびプログラミング分野にはとっても重要な学問の様な気がしました。
大昔、高校生の時に習った記憶がありますが、今思えばもっと勉強しておけば良かったかなと思います。

動画でみても分かる通り、ガスセンサの警告表示と危険表示の2段階で同じ警告アラーム音となっていますが、2種類のアラームを作っても良いかも知れませんね。

また、動画にはありませんが、温度30℃以上、湿度60%以上で「熱中症警告」が出ます。
これにはアラームは付けておりませんが、熱中症は最近話題になっているので、アラームを付けても良いかもしれません。

動画ではボリューム最小の1にしていますが、それより大きくするとかなりの音量ですから気を付けてください。

この記事の最後の方では、台所で測定してみた様子を簡単に説明しています。
私の台所では、ガス漏れや不完全燃焼は無いみたいです。
(あくまで自己満足測定)

ということで、前置きが長くなりましたが、これの作り方を説明してみようと思います。

因みに、何度も申し上げておりますが、私は素人アマチュアです。
勘違いや誤り等があるかも知れません。

もし、何かありましたらコメント投稿等でご連絡いただけると助かります。

WiFiClientSecureを使って SSLサイトから記事を取得し、その間、WiFi.mode( WIFI_OFF )と WiFi.begin の使用を繰り返すと、heap memory が減り続け、接続できなくなる現象が出ています。
以下の記事も合わせて参照してください。
ESP32 および M5Stack で数時間後に Web 記事取得失敗する問題について
(2018/09/25時点)

 

使うもの

M5Stack

(追記)
M5Stack Basicは、この記事を書いた当時より格段にバージョンアップしております。
以下のスイッチサイエンスさんの公式サイトをご参照ください。
https://www.switch-science.com/collections/%E5%85%A8%E5%95%86%E5%93%81/products/9010

Amazon では売り切れている場合がありますのでご注意ください。

M5Stack用電池モジュール

以下のバッテリーオプションを付けて、ディスプレイの Brightness を 50 くらいにすれば、5~6時間は動作すると思います。

(※2021年11月時点では、バッテリー容量は750 mAhになっています)
M5Stack用電池モジュール

BME680モジュール

気圧・温度・湿度センサに加えて、揮発性有機化合物等のガスを検知できる復号センサモジュールです。
私は Pimoroni 製のものを使いました。

Amazon では現在売り切れておりますので、スイッチサイエンスさんのウェブショックをご覧ください。

https://www.switch-science.com/catalog/3570/

BME680 センサの使い方は以下の記事を参照してください。
M5Stack ( ESP32 )で、ガス・気圧・温度湿度センサ BME680 を使ってみた

単線ジャンパーワイヤ

φ0.65mm の単線で、ブレッドボードに挿せるものを使います

協和ハーモネット 耐熱通信機器用ビニル電線 H-PVC 0.65mm 2mX10色 茶赤橙黄緑青紫灰白黒
協和ハーモネット(Kyowa Harmonet)
¥1,448(2024/03/18 15:05時点)

micro SDHC カード

micro SDHC カードが、トラブルは少ないと思われます。
4GB未満の micro SD カードや、micro SDXC カードは試していませんので、動作するか分かりません。

当方で動作確認が取れている micro SDHC カードは以下です。

WiFi 環境

インターネットにつながった WiFi ルーター環境が必要です。
M5Stack ( ESP32 )が接続できるように、予めファイアウォール設定やMACアドレスフィルタリング設定を済ませておいてください。
M5Stack ( ESP32 ) の MACアドレスの調べ方は以下の記事を参照してください。

ESP-WROOM-32 ( ESP32 ) チップ・メモリ・MACアドレス情報取得方法

その他、パソコン、ハンダコテ、USBケーブル等

では、次の項では接続方法やライブラリインストール方法などを説明します。

コメント

  1. juchang より:

    mgo-tec 様

    「 M5Stack で、ガス・気圧・温度湿度センサ BME680 を使ってみた」をクリアしていたので、本テキストが出るのを心待ちにしていました。
    Arduino – ESP32 と ESP32_mgo_tec を最新版にし、スケッチをコンパイルすると、次のようなエラーメッセージとなります。
    error : expected ‘ , ‘ or ‘ ; ‘ before ‘ int32_t’
    int32_t threshold = 10000;
    error : ‘ threshold’ was not declared in this scope
    }else if( now_av > threshold ){
    閾値が宣言されていないとのメッセージのようですが、対応の仕方が解りません、ご教示の程お願いいたします。

    • mgo-tec mgo-tec より:

      juchangさん

      いつもいつも試していただき、そして指摘してくださって、ありがとうございます。

      すみません、今気づきました。
      その前の223行の文、

      float danger_gas_level = 40000.0;
      

      とのころの最後のセミコロンが抜けておりました。
      大変失礼しました。
      私のチェックが甘かったです。
      ほんと申し訳ありませんでした。
      m(_ _)m

      なお、juchangさんが要望されていた、SSD1351ライブラリのESP32化は、あまり進んでおりません。
      ESP8266のものをそのままESP32に移行できるように考えていましたが、いろいろ仕様が異なっていて、しばらく時間がかかります。
      私もいろいろとごった返していて、作業もあまり進めない状況です。
      気長にお待ちいただければと思います。
      m(_ _)m

  2. juchang より:

    mgo-tec 様

    早速アドバイスをいただきありがとうございます。
    無事、動作確認致しました。
    次のテキストを楽しみにお待ちしております。

  3. juchang より:

    mgo-tec 様

    My5Stack(仮称)を作ってみました。
    3Dプリンターでケースを作り、ボタンを配置してみました。
    是非とも mgo-tec さんに見ていただきたく、ご承諾いただけましたら写真を送る方法( E-mail とか)をお知らせいただけると幸いです。
    さて、リクエストの第二弾です。
    「 M5Stack と BME680 でガス報知器…」を、ILI9341 LCD で表示させてみたいのですがブザーの接続が解りません。
    プログラムのリニューアル発表をお待ちいたしております。

    • mgo-tec mgo-tec より:

      juchangさん

      いつもお世話になっております。
      3Dプリンターケース、面白そうですね。
      ぜひ、見させていただきたいと思います。

      ただ、このコメント欄でのメールアドレス表記は、スパムの餌食になるので、こちらの記事の Amazon ギフトカード支援用のアドレスへ送って頂ければと思います。

      また、ブザーは別途アンプ回路とスピーカーが必要になります。
      M5Stack には予めマウントされています。
      残念ながらこのブログでは、しばらく音声出力回路を作る予定はございません。
      ネットには、スピーカーから音を鳴らす方法がもの凄い沢山あるので、そこを参考にして頂ければと思います。
      お力になれず、申し訳ございません。
      いつか、ものすごく余裕ができたら取り組んでみたいと思います。
      m(_ _)m

  4. donko より:

    コメント失礼いたします。
    後継であるM5Stack Core2でもこちらの記事にあるソースコードを用いて同様のものを作成することができるのでしょうか?ご教示の程よろしくお願いいたします。

    • mgo-tec mgo-tec より:

      donko さん

      記事をご覧いただき、ありがとうございます。
      2件、同じ内容のコメント投稿があったので、おそらく同一人物と思われたので、1件目は削除させていただきました。

      M5Stack Core2 は実機を持っておらず、今は新たに買うこともできないので検証することができませんが、まずお聞きしたいのは、液晶ディスプレイに表示はできますか?

タイトルとURLをコピーしました