1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

raspberryPi2とCO2センサー(MH-Z19B)とambientを使ってco2を計測してグラフにする

Posted at

概要

以下のものを使ってCO2濃度の計測とwebでの可視化をやってみる。

  • raspberriPi2 modelB v1.1
  • MH-Z19B
    CO2センサー。amazonで3500円くらい。
  • Ambient
    無料で使えるセンサーデータを可視化してくれるサービス

前提

上記以外の以下のものは揃っていることが前提です。

  • RaspberryPiとMH-Z19Bを接続するジャンパワイヤー
  • RaspberryPiのセットアップ
    • python3が入っていて、ネットワークに繋がっている状態
    • シリアル通信が有効になっている
      raspi-config コマンドとかで有効にしておいてください。
  • MH-Z19 のデータシートは公式HPの製品ページ から取得している。

きっかけ

飲食店にco2センサーが導入されているのを見て、
在宅勤務が主流になってから気になっていた部屋のCO2濃度を
調べてみたいモチベーションが再燃した。
以前は、センサーが高額で諦めてたんだけど、3500円くらいで
amazonで売っているのを見つけたのも大きい。

準備

ambientのアカウントは作っておこう。

raspberryPiとセンサーをつなげる

データシートの「6. Pins」の項(画像上)と、RaspberryPi2の
Pinアサイン(画像下)を見比べてジャンパワイヤをつなぐ。

スクリーンショット 2020-11-23 11.18.02.png
スクリーンショット 2020-11-23 8.54.30.png

  • RxとTxの接続
    画像下からRaspberryPi2側のGPIOピンの8がTxで10がRxな事がわかるので、
    MH-Z19BのRxをRaspberryPi2のTxに、
    MH-Z19BのTxをRaspberryPi2のRxに、接続する。

  • GRANDの接続
    画像下からRaspberryPi2側のGPIOピンの6,9,14,20,25,30,34,39が
    0VでGRANDであることが分かるので、
    MH-Z19BのGNDとRaspberryPi2側のいずれかのGRANDに接続する。
    (今回は6にします)

  • Vinの接続
    Vinは入力電圧の事。
    画像下からRaspberryPi2側のGPIOピンの2,4 が5Vの出力であることが分かるので、
    MH-Z19BのVinとRaspberryPi2側のいずれかの5Vの出力pinに接続します。
    (今回は4にします。)

接続した画像

PXL_20201123_001656415.jpg
PXL_20201123_001726660.jpg

センサーで値を取得する

pythonのモジュールのインストール

pypiのmh-z19のページ をみて、pipでインストールする。

pip install mh-z19

値を取得する

以下の感じで実行してみる。
今の値が1410ppmであることが分かる。

pi@raspberrypi:~/co2_check $ sudo python3 -m mh_z19
{"co2": 1410}
pi@raspberrypi:~/co2_check $ 

辞書型なのでキーを指定すると値が取得できる。

pi@raspberrypi:~/co2_check $ sudo python3
Python 3.7.3 (default, Jul 25 2020, 13:03:44) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mh_z19
>>> mh_z19.read()
{'co2': 1170}
>>> type(mh_z19.read())
<class 'dict'>
>>> mh_z19.read()["co2"]
1072
>>> 

ambientにデータを送って描画してもらう

ambientのモジュールをインストールする

ambientの公式のドキュメント に沿ってインストールする

pip install git+https://github.com/TakehikoShimojima/ambient-python-lib.git

ambientのwebページからチャンネルを作る

チャンネル一覧 のページに以下のようなボタンが有るはず。
スクリーンショット 2020-11-23 11.48.32.png

作ったら以下の値を確認する。

  • チャンネルID
  • ライトキー

ambientに値を送る

以下のようなコードを書いて見る。


import ambient

ambi = ambient.Ambient(チャンネルID, "ライトキー") 
ambi.send({"d1": , "d2": })

---

import mh_z19
import ambient


amb = ambient.Ambient(12345, "write000200key") 
amb.send({"d1": mh_z19.read()["co2"]})

これで該当のチャンネルのところにグラフが書かれているはず。

おわり

これでco2センサーを使って値を取得して、取得した値をambientに送って描画するってことができたはず。
このあとは継続的に値を取得して、ambientに送信していけば以下のような感じでグラフが描かれます。
スクリーンショット 2020-11-23 8.49.30.png

5~6畳くらいの締め切った部屋だと2時間位で2500ppmを超えるみたいなので、
昔学校で言われた「1時間に15minの換気をしましょう」というのはよく言ったものだなーって思います。
ちなみに外気が400ppmくらいらしいっす。

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?