Raspberry Pi2(以下ラズパイ)とCO2センサ MHZ-14A(以下CO2センサ)を使って、室内の二酸化炭素濃度を取得してみました。
環境
- Raspberry Pi 2 Model B
- OS: Ubuntu 20.04 LTS
- MHZ-14A
CO2センサ MHZ-14Aとは
中国産のCO2センサーです。選んだ理由はラズパイでの動作実績が多かったから。
Amazonで3000円位で購入しました。
ちなみにラズパイと接続するには半田付け作業が必要です。(私は設備が無いので大学時代の先輩にお願いしました。)
Raspberry Pi 2とCO2センサを接続する
CO2センサの半田付け作業と、ラズパイのセットアップが完了している前提で話を進めます。
センサとの配線は
Raspberry Pi 3 Model B+ で二酸化炭素濃度を測る(MH-Z14A) -AWS IoT もあるよ- - Qiita
の記事が参考になりました。
ラズパイにCO2センサを接続してからラズパイを起動します。
ラズパイとCO2センサ間はUARTというシリアル通信を使うそうで、ラズパイ上ではttyAMA0と参照されるそうです。
(ここら辺は門外漢なのでさっぱりわからないですが。)
起動後 ls /dev/ |grep ttyAMA
とコマンドを実行し表示されたらセンサーが認識されています。
|
|
ユーザにセンサへの権限を付与する
このままだと、/dev/ttyAMA0 へアクセスするためにroot権限が必要です。
それだと使い勝手が悪いので一般ユーザでもアクセスできるようにします。
|
|
次に、 /boot/firmware/cmdline.txt
を開き、 console=serial0,115200
を削除します。
|
|
以下のようにします。
(デフォルトではシリアルコンソール接続の待ち受けに使われているため、dialoutの持ち物ではないらしい。)
|
|
最後にラズパイを再起動します。
|
|
再起動後、 /dev/ttyAMA0
のグループがdialoutになっていればOKです。
|
|
結果例
|
|
スクリプトで値を取る
次はどうやってセンサから値を取得するかですが、先ほどのQiita記事にスクリプトがあるのでお借りすることにしました。
しかし、16行目なんて何をやってるかさっぱりです。補数を使ってるんだろうけど私にはこの発想できない。
|
|
これで mhz14a
コマンドを実行すると、二酸化炭素濃度(以下ppmとする)と日時がjson形式で取得できます。便利ですね。
|
|
キャリブレーションをする
このままだとppmの値がおかしいので、キャリブレーション(校正)します。以下の記事を参考にしました。
室内を換気した状態で30分放置した後に以下の値をCO2センサに送れば良さそうです。
|
|
MHZ14A.py
を使う場合は --mode zero
を引数として渡してあげればキャリブレーションできます。便利ですね!
実行後しばらくすると換気している間は400ppmで落ち着くようになりました。
あとがき
二酸化炭素濃度を可視化するようになってから、こまめな部屋の換気を心がけるようになりました。
そのおかげかはわかりませんが、気分が悪くなることや眠気に襲われることも少なくなった気がします。
やはり換気って大事なのかもしれません。(今まで無換気状態で1週間なんてしていたので体に悪かったんだろうな。。。)
CO2センサ MHZ-14Aは半田付けは結構ハードル高いです。。。USB形式で挿せると楽なのですがどこか発売しないだろうか。
ついでにセンサ用のケースも欲しいですね。