
【ESP32】MH-Z19CセンサでCO2濃度を測定する
はじめに この記事では、ESP32 と MH-Z19C CO2センサ を UART で接続し、CO2濃度を読み取る方法をまとめます。配線、ライブラリ、サンプルコード、ゼロ点校正まで確認したあと、UART通信の基本も整理します。 MH-Z19C はUARTまたはPWMで値を取り出せますが、この記事ではライブラリを使ったUART方式で進めます。ESP32側ではハードウェアシリアル2を使い、センサの TX と RX の向きを間違えないことが重要です。 こんなことをやります。 CO2センサ(MH-Z19C)とESP32でCO2濃度の測定 CO2センサの校正 気象庁のCO2濃度データをグラフ化 MH-Z19Cで使われているUART(シリアル通信)の解説 先に要点 ESP32では、MH-Z19Cの TX を GPIO16 (RX2)、RX を GPIO17 (TX2) へつなぎます サンプルコードでは mhz19_uart ライブラリを使い、getCO2PPM() でCO2濃度を読みます ゼロ点校正は環境の影響を受けるため、やみくもに実行せず用途に合わせて扱います CO2濃度の話は換気の目安として扱い、この記事ではセンサの使い方と実験記録を中心にします つかうもの はじめに、この記事で使うものをご紹介します。 MH-Z19C 秋月電子通商で販売しているMH-Z19Cを使いました。 MH-Z19Cセンサは、 赤外線を使って空気中のCO2濃度を測定 します。MH-Z19Cセンサからデータを読み取るには、UART通信または、PWMで値を読み取る方法があります。本記事ではもっとも簡単な方法として、既存のライブラリを使ってUART方式でMH-Z19からCO2濃度を読み取る方法をご紹介いたします。 MH-Z19Cの概要 MH-Z19Cでは、UARTまたはPWM信号を読み取ってCO2濃度のデータを読み取ります。 今回はライブラリを使用しますが、ライブラリの仕組みとしてはUART通信でデータを読み取ってます。UARTについて記事の最後でくわしく解説してます。 MH-Z19Cの仕様 項目 値 電源電圧 5V 測定レンジ 400~5000ppm 消費電流 40mA以下、最大125mA インターフェース電圧 3.3V 出力 シリアルポート(UART、TTLレベル3.3V)、PWM MH-Z19Cライブラリのインストール MH-Z19CとUARTで簡単にやり取りできるライブラリを使用します。こちらの「nara256/mhz19_uart」を使わせてもらいました。 https://github.com/nara256/mhz19_uart 上記のページからzipでダウンロードして解凍してください。それをArduinoのライブラリディレクトリへ移動すればOKです。 私はPlatform IOで開発してますので、ディレクトリ構造は次のように配置しました。 . ├── include │ └── README ├── lib │ ├── README │ └── mhz19_uart │ ├── MHZ19_uart.cpp │ ├── MHZ19_uart.h │ └── examples │ └── demo │ └── demo.ino ├── platformio.ini ├── src │ └── main.cpp └── test └── README MH-Z19CだけでなくMH-Z19Bでも使えます。また、このライブラリはArduinoとESP32のどちらでも使うことができます。UART通信ですので、Arduinoの場合はソフトウェアシリアルを、ESP32の場合はハードウェアシリアルを使用します。配線だけ間違えないように注意してください。 ...








