Grove ほこりセンサーを買ってみた
どうもこんにちは、
ROS2対応の自律走行ロボットを制作中ですが、自律走行だけでは面白くないので、ほこりセンサーをつけて環境モニター機能を搭載しようと思います。
早速、ほこりセンサーを買ってみました。
Groveほこりセンサー
購入したのは、Grove ほこりセンサー。
ほこりセンサー本体の基盤、ケーブル、簡単な説明の紙が入ってました。
以下に英語のページですが製品のWiKiがあります。
Grove – Dust Sensor(WiKi)
配線図
ほこりセンサーの簡単な計測処理を動かす
ラズパイ5でgpioを使うため、gpiozeroを入れます。
sudo apt install python3-gpiozero python3-lgpio
空気中のほこり(粒子)やPM2.5濃度を図るスクリプト(dust_sensor.py)を作ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#!/usr/bin/python3 # -*- coding: utf-8 -*- from gpiozero import DigitalInputDevice import time # HIGH or LOWの時計測(gpiozero版) def pulseIn(sensor, start=1, end=0): if start == 0: end = 1 # 指定状態になるまで待機 while sensor.value == end: pass t_start = time.time() while sensor.value == start: pass t_end = time.time() return t_end - t_start # 単位をμg/m^3に変換 def pcs2ugm3(pcs): pi = 3.14159 density = 1.65 * pow(10, 12) r25 = 0.44 * pow(10, -6) vol25 = (4 / 3) * pi * pow(r25, 3) mass25 = density * vol25 K = 3531.5 return pcs * K * mass25 # pm2.5計測 def get_pm25(sensor): t0 = time.time() t = 0 ts = 30 # サンプリング時間(秒) while True: dt = pulseIn(sensor, 0) if dt < 1: t += dt if (time.time() - t0) > ts: ratio = (100 * t) / ts concent = 1.1 * pow(ratio, 3) - 3.8 * pow(ratio, 2) + 520 * ratio + 0.62 print(t, "[sec]") print(ratio, " [%]") print(concent, " [pcs/0.01cf]") print(pcs2ugm3(concent), " [ug/m^3]") print("-------------------") break # メイン処理 PIN = 26 # BCM番号 sensor = DigitalInputDevice(PIN, pull_up=False) for i in range(10): get_pm25(sensor) |
スクリプトに実行権限を付与します
chmod +x dust_sensor.py
以下でスクリプト実行します
./dust_sensor.py
30秒間ほこりを計測します。結果を以下の様に出力してそれを10回繰り返します。
各単位の意味を調べました。
sec
30秒間の中で LOW 信号(=ホコリが通過して光が遮られた時間)の合計秒数。
つまり、この時間が長い ⇒ たくさんホコリが通っている ⇒ 濃度が高い。
%
この割合が高いほど、空気中に浮遊する粒子が多いことを示す
pcs/0.01cf
0.01 立方フィート(cf)あたりの粒子数(pieces)
(1立方フィート = 約28.3リットル)
この値が高いほど、空気中にたくさんの粒子(ほこり)がある。
µg/m³
これはPM2.5濃度の推定値(マイクログラム/立方メートル)。 日本の環境基準や WHO もこの単位を使っている。
空気の質レベル | PM2.5(µg/m³) |
---|---|
緊急事態 | 251〜 |
大いに危険 | 151〜250 |
危険 | 66〜150 |
弱者に危険 | 41〜65 |
許容範囲内 | 16〜40 |
良好 | 0〜15 |
アメリカ環境保護庁EPAによる空気の質分類より
最後に
とりあえず、おためしで動かしましたが、注意点としてGroveほこりセンサーは、直立状態(銀色の部分が上向き)で使わないと正確なデータが取れないそうです。
次は、ちゃんと直立させるような箱を作って、ロボットに装着して使ってみようと思います。
また、取得できたデータは、PCに通知してグラフ化など、色々機能を拡張させていこうと思います。
それでは!
スポンサーリンク