![]()
「密」の可視化で話題になったCO2濃度計を作ってみた。
動画
![]()
CO2センサ
利用するCO2センサはMH-Z19C、UARTとPWMで測定値を読むことができ、今回はUARTを利用。
マイコンはSeeeduino XIAO、小さいのとUSB TypeCで繋がるのがよい。信号配線はRX/TXの2本のみ、センサの電源は5VだがUARTのレベルは3.3VなのでXIAOと直接繋げる。
キャリブレーション機能があるが今回は使ってない。屋外(400ppm位)に1時間放置したのち、キャリブレーションを行うと400ppmに設定されるらしい。
![]()
センサの動作確認
試しに取得した測定値をArduinoIDEのシリアルプロッタで表示してみた。結構感度がよい。
なお、電源投入後の1分間程度はセンサのプレヒート時間ということで、正しい値は取得できず0ppmや500ppmとなる。
![]()
カラー液晶表示
手元にあったカラーグラフィック液晶(128x160)を繋いでみた。CO2濃度に応じて背景色が変わる。厚労省の推奨は1,000ppm未満らしいので、1,000ppm未満は緑色、2,500ppm未満は黄色、それ以上は赤にしてみた。なお、このセンサが測定できる最大値は5,000ppm。
![]()
CO2濃度推移表示
グラフィック液晶なので、測定した結果をグラフ表示する機能も作ってみた。直近1H,2H,6H,12H,24Hの5通り表示できる。
液晶の解像度が低いので表示する際に、解像度に合わせた時間の平均値で表示。 また、縦軸は最大値に応じて1,000ppm単位に自動調整。
![]()
回路
プログラムが大体OKになったので、改めて回路図を書いた(拡大図)。間違いがあるかも知れません。無保証です。
タッチセンサは表示画面を切り替えるために使用。47Ωの抵抗は液晶ディスプレイのバックライトが明るすぎたので入れてみた。無くても大丈夫。
![]()
スケッチ
ArduinoIDEのスケッチです。
タイマ割込みで時間をカウントして10秒ごとに測定。測定データは28時間分保存しており、推移のグラフ描画に使用。
グラフィック液晶への表示をトライ&エラーで座標値などを決めたので座標数値が直接埋め込まれていてキレイではありません。バグがあるかも知れません、無保証です。著作権は留保しますが、改造などはご自由にどうぞ。
![]()
ケース作り
3D-CAD Fusion 360でケースの設計を行い3Dプリンタでケースを印刷。こんな小さいものでも4時間程度かかった。フィラメントはPLA樹脂を使用。
![]()
部品一式
ケース、液晶ディスプレイ、CO2センサ、タッチセンサ、XIAO(すでにケースに取付済)。
![]()
配線
配線は基板を使わず、ワイヤラッピングによる空中配線。ラッピングワイヤを各部品のピンヘッダに巻きつけたのち、動作確認中。
![]()
組み立て
CO2センサとタッチセンサは両面テープで貼り付け。液晶ディスプレイはホットボンドで基板の四隅を固定。 XIAOはケースの所定の場所にはめ込んだら動かなかったのでそのまま。
![]()
正面
多少、3Dプリンタの積層痕があるがまあまあ。表示画面のデザインはこのあと少し変更。
![]()
側面
見やすくするためディスプレイ面は斜めにしてある。
![]()
裏側
CO2センサのセンスする部分は穴を開けてある。内部でゆっくりLEDが点滅している。
XIAOのUSB TypeCコネクタに直接ケーブルを差し込んで給電。プログラムの書き換えもここからできる。
![]()
推移グラフ
タッチセンサにタッチすることで以下の順に表示モードが切り替わる。
数値による濃度と温度表示、リング内に濃度表示、過去の推移1H、2H、6H、12H、24H
以下、ブログ記事
- CO2センサで遊ぶ(その6、UIと内部処理見直し)
- CO2センサで遊ぶ(その5、3Dプリンタでケース作り)
- CO2センサで遊ぶ(その4、就寝中のCO2濃度が高い)
- CO2センサで遊ぶ(その3、部屋のCO2濃度が意外と高い)
- CO2センサで遊ぶ(その2)
- 「密」の見える化、CO2センサを試してみた
以上