ロボット研究開発、ソフトウェア開発、コンテンツ制作配信

Grove ほこりセンサーを買ってみた


どうもこんにちは、
ROS2対応の自律走行ロボットを制作中ですが、自律走行だけでは面白くないので、ほこりセンサーをつけて環境モニター機能を搭載しようと思います。
早速、ほこりセンサーを買ってみました。

スポンサーリンク

Groveほこりセンサー

購入したのは、Grove ほこりセンサー。

ほこりセンサー本体の基盤、ケーブル、簡単な説明の紙が入ってました。
以下に英語のページですが製品のWiKiがあります。
Grove – Dust Sensor(WiKi)

配線図

ほこりセンサーとラズパイ5を以下のように接続しました。

ほこりセンサーの簡単な計測処理を動かす

ラズパイ5でgpioを使うため、gpiozeroを入れます。

sudo apt install python3-gpiozero python3-lgpio

空気中のほこり(粒子)やPM2.5濃度を図るスクリプト(dust_sensor.py)を作ります。

【参考記事】
以下の記事を参考にさせていただきました。
【ラズベリーパイ3】ダストセンサーでPM2.5測定
#!/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に通知してグラフ化など、色々機能を拡張させていこうと思います。

それでは!

関連記事(一部広告含む)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


ページトップボタン