💧

ラズパイを使って、土壌湿度センサーからデータを取得するよ

2021/05/30に公開

💡やること

ADコンバータであるMCP3002を使って、土壌湿度センサー(YL-69)からデータを取得します。
水分によってセンサーの抵抗が変わり、電圧が変化します。
電圧(アナログの値)を取得することで土壌の湿度を知ることができます。

🏁デモ

🔧パーツ一覧

no 部品名 個数 備考
1 ラズベリーパイ 1 今回は4Bで確認
2 MCP3002 1 秋月電子 2ch ADコンバータ MCP3002-I/P
3 土壌湿度計湿度検出水センサー 1 Amazon - YL-69, HC-38
4 ジャンパー線 適量 -
5 ブレッドボード 1 -

接続図

ピンの接続

ラズパイPin MCP3002 センサーボード 備考
8(CE0) 1 ~CS - SPI通信 - チップセレクト
- 2 CH0 A0 アナログのインプット
- 3 CH1 - 今回は使用しないため接続不要
GND 4 Vss GND GNDへ接続
10(MOSI) 5 Din - SPI通信 - データ(Pi->MCP)
9(MISO) 6 Dout - SPI通信 - データ(MCP->Pi)
11(SCLK) 7 CLK - SPI通信 - クロック
3.2(SDA.1) 8 Vdd/Vref VCC MCPへの電圧+リファレンス電圧
- - D0 今回は使用しません

💻環境

開発環境

  • ラズベリーパイ
    • Linux rpi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux
  • Python
    • Python 3.7.3 (default, Jan 22 2021, 20:04:44)

ラズベリーパイの設定

本デバイスは、SPI通信を使って制御します。
SPI通信を使用できるように設定する必要があります。
SPIの有効化は、以下のコマンドから実施できます。

$ sudo raspi-config
  • Interface Optionsを選択
  • SPIを選択
  • "はい"(or "Yes")を選択
  • これで有効化されます(1回行えばOKです)

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

apt

pigpioライブラリは、Raspberry PiのGPIOを制御するためのライブラリです。
以下のコマンドは、はじめてインストールする場合のみ必要です。

$ sudo apt install pigpio
$ sudo service pigpiod start
$ sudo systemctl enable pigpiod.service

pip

Pythonに関するモジュールをインストールします。

$ python3 -m venv env
$ source env/bin/activate
(env) $ pip install pigpio
(env) $ pip install gpiozero

📝手順

1秒ごとに、MCP3002からの出力値を取得し、乾燥しているかを判定します。

コード

yl69.py
from gpiozero import MCP3002
from gpiozero.pins.pigpio import PiGPIOFactory
from time import sleep

DRY_THRESH = 0.75

def main():
    # 初期化
    Vref = 3.3
    factory = PiGPIOFactory()
    adc_ch0 = MCP3002(channel=0, max_voltage=Vref, pin_factory=factory)

    while True:
        # MCP3002からの出力値と電圧値を表示
        val = adc_ch0.value
        if val > DRY_THRESH:
            print(f'土壌が乾燥しています。 - value:{val:.2f}')
        else:
            print(f'土壌が湿っています。 - value:{val:.2f}')
        sleep(1)
    return

if __name__ == "__main__":
    main()

実行手順

(env) $ python yl69.py
土壌が乾燥しています。 - value:0.98
土壌が乾燥しています。 - value:0.98
土壌が湿っています。 - value:0.63
土壌が湿っています。 - value:0.58

🔎ポイント

ADコンバータ - MCP3002

ラズベリーパイには、ADコンバータが搭載されていません。
電圧などのアナログな値を計測するためには、外部デバイスを利用する必要があります。
MCP3002は、2CHのアナログ入力のある10bit SPI接続ADコンバータです。
モジュール(MCP3002)からは、0.0~1.0で取得できます。

土壌センサー(YL-69)

YL-69は、水分の状態によって抵抗が変わるセンサーです。
水分が多い環境下では抵抗が上がり、乾燥すると抵抗値が下がります。
今回のシステムでは、抵抗が上がると、MCP3002から取得される電圧が下がります。
センサー自体の精度は高いものではないので、利用環境に合わせて、閾値を見直す必要があります。

センサーの状態 プログラムの出力値
min "土壌が湿っています。 - value:0.63"
min "土壌が乾燥しています。 - value:0.98"

さいごに

この記事も含め、ラズパイの活用方法を

https://zenn.dev/kotaproj/books/raspberrypi-tips

としてまとめ中です。

GitHubで編集を提案

Discussion

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy