概要
Raspberry Pi でSIM経由で通信する顔認証システムを作成し、認証結果を kintone で管理するシステムを構築します。
今回は、顔認証した時のオフィス環境データを取得するため Raspberry Pi でCO2センサの値を読み込むまでを行います。!
顔認証システム構築シリーズ
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 の配線は、以下の配線図を参考に行います。
( 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 の中身を変更して利用します。
-*- 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