2021年4月11日日曜日

PicoでCO2センサーを作ってみた!

 コロナ騒ぎのニュースの中で換気の目安としてCO2センサーを使うという話しを聞きます。調べてみると部品としてもCO2センサーは数種類出回っているようなのでアマゾンで一番安いのを試しに買ってみました。


失敗だったのはこの基板の仕様をよく読むと入力電圧が5Vとなっていることです。PicoのI/Oは3.3Vなので直接つなげないと思っていたらチップのCSS811のデータシートを見ると入力電圧は1.8~3.6Vとなっていましたので、5V系の基板に接続するために内部でLDOかなんかで3V系に落としていると見ました、それならば大丈夫だろうと3.3Vを接続したところ特に問題なく動きました。


まずはブレッドボードと接続

Pico SDKのI2Cライブラリを使用して送受信します。Arduino用には色々とサンプルコードがありますし実装例もいっぱいあるのですがPicoはもちろんその他の流用できそうなサンプルは無かったので普通にデータ仕様書見ながら初期化ルーチンを書きます。
1. HW_IDやSTATUSを確認する(なくても大丈夫)
2. APP_START(0xf4)に書き込みをして動作開始
3. MEAS_MODE(0x01)にDRIVE_MODEとINTERRUPTを設定する(モード2の場合は0x28)
4. STATUS(0x00)のDATA_READYビットをポーリングする
5. DATA_READYビットが立ったらALG_RESULT_DATAから2バイト読み込む
6. 1バイト目が上位バイトなのでビットシフトして16biti値にする。

最初のうちは0x190(400)ばかりでしたがだんだんそれっぽい数字になってきます。どうやら少しエージングする必要があるそうです。嫁が換気扇を回さずにコンロを使ったりするとかなり数値が上がったのでまぁまぁ目安にはなりそうな感じです。


Picoさえあれば開発用基板はいっぱいあるのでCO2センサー専用に1枚作りました。Picoは漢らしく直接表面実装です!
400-1000ppm    緑LED
1000-1500ppm   :黄1LED
1500-2000ppm   :黄2LED
2000以上            :赤LED

しばらくリビングで我が家の換気状況を見守らせましょう。



0 件のコメント:

コメントを投稿