ものづくり

【超簡単電子工作】M5StackとCO2センサで自室のCO2濃度を測定してみた!

M5StackとCO2センサで作った自作CO2モニタ
n-mukineer

部屋に籠ってリモートワークをやっていると頭がぼーっとしてきたので、なぜだろう?と調べたところ室内のCO2濃度が関係しているようでした。でも市販のCO2センサはちょっと高い…そうだ、作ってみよう!ということで自作してみました。

えぬ
えぬ

コロナで一気にCO2測定器の需要が高まりましたね。完成品を買ってもいですが、どうせならDIYしてみては?

必要なもの

M5Stack

M5Stack。これ1つあれば大体のIoT電子工作ができます。ちなみに筆者は5個持ってます(笑)

えぬ
えぬ

2年前ぐらいは4000円ぐらいで買えていたのですが、最近の半導体不足と円安の影響で高くなってしまっています。

9軸加速度センサ付きのM5Stackもあります

今回は加速度センサ使用しないので、Basicで問題ありません(筆者の手元にはGrayがあったのでGrayを使って進めていきますが、Basicでもプログラムは同じで大丈夫です)

CO2センサ

今回は比較的安く手に入る「MH-Z19B」を購入しました。

中国から送付されてくるので、注文から到着まで最低でも1週間は見ておいた方がよさそうです。

Amazon

AliExpress(筆者はこちらで購入しました!)

ユニバーサル基板

これは何枚持っていてもいいですね。

L型ピンヘッダ

分割して15ピン使用します。

ピンソケット

なくてもいいですが、ソケットをユニバーサル基板にはんだ付けしておき、そこにCO2センサ取り付けておくことで、取り外しが楽になるというメリットがあります。

今回は5ピン1列のものを2個使います。

ビニル電線またはスズメッキ線

ユニバーサル基板上で配線を行うのに使用します。色はお好みで!ちなみに、電子工作界隈では配線は一般的に以下のようになっています

  • 電源:赤
  • GND:黒
  • 信号線:いろいろ
えぬ
えぬ

電源用に赤と黒、信号線用に青、緑、黄色あたりを購入しておくと間違いないかと思います!

配線方法

CO2センサの配線

M5StackとCO2センサはUARTを使って接続します。

配線図はこのようになりました。

ユニバーサル基板側の完成写真

スペーサとして3か所ねじ止めしていますがなくて大丈夫です。

M5Stackへの接続

M5Stackとピンヘッダで接続します。

表面

ウラ面

Arduinoプログラム

えぬ
えぬ

「1分に1回CO2濃度を取得して表示するプログラム」を作ってみます!

Arduino IDEのインストールとボード設定

PCでM5Stackにプログラムしていく前に、開発環境を準備する必要があります。

「ArduinoIDE」という開発環境を使用します。インストール方法とボードの設定については、クラスメソッドさんの記事が参考になりましたので以下に載せておきます

ソースコード

今回は厳密な濃度を知る必要はありませんでしたので、CO2センサのキャリブレーションは考慮していません。

作成したソースコードはこちら。

「MHZ19_uart」というライブラリを使用しています。ライブラリのインストール方法についてはこちらの記事が参考になりました。

/*----------------------------------------------------------
    MH-Z19 CO2 sensor  SAMPLE
  ----------------------------------------------------------*/
#include <M5Stack.h>
#include <MHZ19_uart.h>

#define ARDUINO_ARCH_ESP32
#define PERIOD 60
#define THPPM 1000

const int rx_pin = 16;	//Serial rx pin no
const int tx_pin = 17;	//Serial tx pin no

MHZ19_uart mhz19;

/*----------------------------------------------------------
    MH-Z19 CO2 sensor  setup
  ----------------------------------------------------------*/
void setup() {
  M5.begin();
  delay(100);
  Serial.println("Hello");
  mhz19.begin(rx_pin, tx_pin, 2);
  mhz19.setAutoCalibration(false);

  M5.Lcd.setTextSize(3);
  M5.Lcd.setCursor(20,120);
  M5.Lcd.clear();
  M5.Lcd.setBrightness(50);
}

/*----------------------------------------------------------
    MH-Z19 CO2 sensor  loop
  ----------------------------------------------------------*/
void loop() {
  unsigned long startt = millis(); // loopの開始時刻を記録
  int co2ppm = mhz19.getPPM();
  int temp = mhz19.getTemperature();
  Serial.print("co2: "); Serial.println(co2ppm);
  Serial.print("temp: "); Serial.println(temp);
  M5.Lcd.clear();
  M5.Lcd.setTextSize(10);
  M5.Lcd.setCursor(20,120);
  M5.Lcd.printf("%dppm\n", (int)co2ppm);
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(20,0);
  delay(PERIOD*1000);
}

これをM5Stackに書き込んで、電源を入れます!

表示されました!

1000ppmを超えると換気が必要なレベルということですので、即換気ですね(笑)

これをベースにしていろいろ機能追加していきたいと思います。

WiFiとLine Notifyを使って1000ppmを超えるとLINE通知が来るようにしたいと思います!

まとめ

M5StackとCO2センサで自作のCO2モニタを作ることが可能!

1000ppmを超えたらすぐに換気しましょう!

次の記事
【LINEで換気を注意喚起!】M5StackからWiFi通信でLINE通知する
【LINEで換気を注意喚起!】M5StackからWiFi通信でLINE通知する
このブログを書いている人
えぬ
えぬ
N日後にムキムキになるエンジニア
WebアプリエンジニアとしてIoTシステムを開発中。30代折り返し。 趣味(モノづくり、プログラミング、筋トレ)や子育てのことを主に記事にします。 TOEIC: 900点/第一級陸上無線技術士/第3種電気主任技術者/技術士一次試験合格/基本情報技術者/第2種電気工事士/デジタル技術検定2級(情報・制御)
記事URLをコピーしました