TumblrCO2濃度測定して表示するとこまでやったので書きます。使ったのはMH-Z14Aと、例のOLED付ESP32です。おもちゃ&ホビーこの商品を含むブログを見る前の記事の続編的部分も一部あります。takashiski.hatenablog.comMH-Z14Aさて、今回使用したMH-Z14Aですが、なんとインターフェースが4つあります。デジタル出力アナログ出力PWMUART正直オーバースペック感ありますが、相手方のインターフェースに寄らず使えるのでよいことであります。ちなみに、インターネット上で使用例が多いMH-Z19はPWMとUARTのみです。動作電圧は4.5-5.5Vなので、5V出力が必要です。UARTレベルは3.3Vです。ここらへんの要件はMH-Z19とほとんど変わりません。今回は面倒ESP32のUARTの使い方を見たかったのでUARTを使います。思いっきりTXRXピンが存在するので楽勝ですね。MH-Z14A側は、ピンが実装されておらず自分で実装する必要があります。全部で19ピン(9ピン+10ピン)ありますが、16-19番の4ピンか、13-15,2番の4ピンだけがUARTに必要なピンです。4線接続するだけなので非常に簡単です。悩んだ部分はUART接続くらいです。ArduinoMegaではSerial1とかてきとーな名前で使えましたが、ESP32ではどうやらだめなようです。調べたところ、自動的に宣言されないようなので明示的に以下のように宣言してあげればよいとわかりました。Serial1(0);0番を使えばいいようです。これで、あとはSerial1に対して濃度を要求するコマンドを発行して、濃度を受け取ればよいです。MH-Z14Aのコマンドリストが見つからなかったので、代わりに見つかったMH-Z14のコマンドを採用したところ、今のところそれっぽく動いています。キャリブレーションはなかなか面倒なようなので(400ppmで一定の環境に20分間置き続けるとか)今回は無視します。今回は「そろそろ換気したほうがいいんじゃない?」程度の使い方想定なので、十分でしょう。表示は前回同様squix78のesp8266-oled-ssd1306を使いました。コード忘れず以下をインストールしてください。ライブラリマネージャからも見つかります。github.com60秒ごとにCO2濃度を測定してOLEDに表示するだけの、特別なことは一切していないコードです。3分間プレヒートしてねってことでしたので、setup()の最後で3分待ってます。...その他TXRXに接続したままだと、プログラムの書き込みに失敗しますので書き込むときは抜いてください。組み立てや検証のために、手元で動作させると思いますが、人間の呼気のCO2濃度は非常に高いので、直接息を当てないようにしましょう。非常に高い値が出やすい傾向にあります。写真とかコードは準備してるうちにこの記事が闇に葬られそうな感じがしたので、後で載せます。エレクトロニクスこの商品を含むブログを見るMH-Z14Aにはピンヘッダが付属していませんでした。必要に応じてピンヘッダもしくはピンソケットを購入してください。notifyで受けてCubeを回す以下の記事の応用です。ESP32の開発環境の一つとしてArduinoIDEがあります。月別アーカイブ参加グループプログラミングアドセンスはてなブログをはじめよう!takashiskiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。