#概要
二酸化炭素を測ることが出来るMH-Z19を、組み込み前に動作試験したときの備忘録です。
コマンドとレスポンスで試験結果を確認したかったのでUARTによる取得を行っています。
これを応用することで、電子工作で確実なレスポンスを得られるため、プログラムが組みやすくなります。 (MH-Z19の電圧やパルス信号と比べれば)
私自身はESP32 (Arduino IDE)で実装出来ることを確認しています。
詳細な仕様については公式のドキュメントをあわせてご覧ください。
#必要なもの
- MH-Z19(B)
- パソコン
- USB-UART変換アダプター
- TeraTerm
#手順
※ 事前にソフトウェアやドライバーのインストール、変換アダプターとセンサーの接続を行ってください。
センサーにはバイナリを送信する必要がありますが、TeraTermではそのまま送ることは出来ません。
マクロファイルを用意した上で、それを読み込むことで実行可能です。以下はマクロファイルのサンプルです。
/* Set binary display mode. */
setdebug 2
/* Send [Read CO2 concentration] command. */
send $FF$01$86$00$00$00$00$00$79
この実行が成功すると、コンソール上には以下のように表示されます。
なお、送信と受信の内容を確認するため、ローカルエコーを有効にしています。
FF 01 86 00 00 00 00 00 79 FF 86 02 C8 42 00 02 00 6C
このうち、前半の9バイトは送信したバイナリ、後半9バイトが受信したバイナリです。
受信バイナリの (3バイトめの値) * 256 + (4バイトめの値) で濃度が算出できるので、上記の例では 02(2) * 256 + C8(216) = 728[ppm]となります。
#余談
Python + PySerialでも良いかもしれません。