Raspberry Pi でCO2センサを使う


概要

Raspberry Pi でSIM経由で通信する顔認証システムを作成し、認証結果を kintone で管理するシステムを構築します。

今回は、顔認証した時のオフィス環境データを取得するため Raspberry Pi でCO2センサの値を読み込むまでを行います。!

IMG_2016.jpg


顔認証システム構築シリーズ

Raspberry Pi で顔を認識しファイルに保存する

https://qiita.com/yukataoka/items/7510217f4b6efdefff06

Amazon Rekognition で顔が同じか比較判定し、感情などの情報を取得する

https://qiita.com/yukataoka/items/3fde5d6b22255ff1aed9

Raspberry Pi でCO2センサを使う

https://qiita.com/yukataoka/items/a3b4065e8210b8f372ff

Raspberry Pi で温湿度気圧センサを使う

https://qiita.com/yukataoka/items/8f9046587c978e91f689


利用するCO2センサについて

CO2センサは、以下の過去の記事で SENSEAIR の K30 を使ってきましたが、1個購入するにも送料込みで1万円をオーバーします。

4.センサの設定とプログラミング

https://yukataoka.wordpress.com/2015/06/20/raspi04/

今回は安価にAliExpess等で20ドル弱で購入できるCO2センサ MH-Z19 を用います。

1PCS module MH-Z19 infrared co2 sensor for co2 monitor

https://www.aliexpress.com/item/1PCS-module-MH-Z19-infrared-co2-sensor-for-co2-monitor-Free-shipping/32371956420.html


配線について

MH-Z19 は UART シリアル通信で測定値を取得します。

Raspberry Pi の配線は、以下の配線図を参考に行います。

MH-Z19

( https://pypi.org/project/mh-z19/ より引用 )


環境の設定

先の作業で、Pyton3 と pip3 の設定までは完了しています。


  • UART シリアル通信の設定

sudo raspi-config で UART のシリアル通信を設定します。

手順は以下です。

"5 Interfacing Option" を選択。

"P6 Serial" を選択。

"Yes" を選択し、raspi-config 完了後に再起動します。

Would you like a login shell to be accessible over serial? で "No" を選択。

Would you like the serial port hardware to be enabled? で "Yes" を選択。

raspi-config 完了後に再起動します。

<注記1>

上記で Would you like a login shell to be accessible over serial? で"Yes"を選択した場合や、手動で /boot/config.txt を編集し bluetooth を無効化している場合は注意が必要です。(詳細は後述します。)


  • Python3 の設定

すでに pip3 の MH-Z19 用のライブラリィが公開されています。

mh-z19 0.3.8.5

https://pypi.org/project/mh-z19/

pip3で mh-z19 をインストールします。

$ sudo pip3 install mh-z19

_インストール後にそのままライブラリィを何回実行しても null しか返してきません。_

_配線等や本体を交換しても状況が変わらないため、ライブラリィの中身をチェックすることにしました。

<注記1>で説明した設定を行った場合、インストール後にそのままライブラリィを何回実行しても null しか返してきません。

$ sudo python3 -m mh_z19

null

$ pip3 show mh-z19
Name: mh-z19
Version: 0.3.8.5
Summary: mh-z19 CO2 concentration sensor library for All models of Raspberry Pi
Home-page: https://github.com/UedaTakeyuki/mh-z19
Author: Takeyuki UEDA
Author-email: gde00107@nifty.com
License: MIT
Location: /usr/local/lib/python3.5/dist-packages
Requires: pyserial, requests, getrpimodel, argparse

ライブラリィでは Raspberry Pi 3 Model B の シリアルデバイスは /dev/ttyS0 を参照するようになっていますが、実際は /dev/ttyAMA0 か /dev/serial0 でしか通信できませんので、以下のように修正しました。

<注記1>の設定では Raspberry Pi 3 Model B シリアルのデバイスのエリアスが変わってしまうため、以下のようにライブラリィの保管場所を pip3 の show オプションで確認し _init_.py の中身を変更して利用します。


/usr/local/lib/python3.5/dist-packages/mh_z19/__init__.py

 -*- coding: utf-8 -*-

# original: https://raw.githubusercontent.com/UedaTakeyuki/slider/master/mh_z19.py
#
# c Takeyuki UEDA 2015 -

import serial
import time
import subprocess
import traceback
import getrpimodel
import struct
import platform

# setting
version = "0.3.8"
pimodel = getrpimodel.model()

# Raspberry Pi3 Model B の serial デバイスは、記載時には ttyS0 でなくttyAMA0 に修正
#if pimodel == "3 Model B":
# partial_serial_dev = 'ttyS0'
#elif pimodel == 'Zero':
# partial_serial_dev = 'serial0'
#else:
# partial_serial_dev = 'ttyAMA0'

partial_serial_dev = 'ttyAMA0'

serial_dev = '/dev/%s' % partial_serial_dev
stop_getty = 'sudo systemctl stop serial-getty@%s.service' % partial_serial_dev
start_getty = 'sudo systemctl start serial-getty@%s.service' % partial_serial_dev
(後略)



結果

シリアルデバイスの指定を修正後にライブラリィを実行すると、以下のようにCO2値を取得できるようになりました。

$ sudo python3 -m mh_z19

{"co2": 712}
$ sudo python3 -m mh_z19 --all
{"TT": 67, "temperature": 27, "co2": 770, "SS": 0, "UhUl": 3842}

--all オプションで CO2 以外のセンサから取得した値を表示します。

TTは華氏温度のようですが、データシートに情報がなく内部温度センサーの値かもしれないようです。

詳細は以下のサイトを参照ください。

https://revspace.nl/MHZ19

https://www.winsen-sensor.com/d/files/PDF/Infrared%20Gas%20Sensor/NDIR%20CO2%20SENSOR/MH-Z19%20CO2%20Ver1.0.pdf


参考サイト

UedaTakeyuki/mh-z19

https://github.com/UedaTakeyuki/mh-z19

https://pypi.org/project/mh-z19/

窓を開けて新鮮な空気をいれよう!Raspberry Pi でCO2 濃度を測ろう

https://qiita.com/UedaTakeyuki/items/c5226960a7328155635f

1PCS module MH-Z19 infrared co2 sensor for co2 monitor

https://www.aliexpress.com/item/1PCS-module-MH-Z19-infrared-co2-sensor-for-co2-monitor-Free-shipping/32371956420.html

PC​/RaspberryPi​/Pi3のシリアル通信

http://yueno.net/xoops/modules/xpwiki/?PC%2FRaspberryPi%2FPi3%E3%81%AE%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E9%80%9A%E4%BF%A1