メインコンテンツまでスキップ

土壌水分を測定する - Raspberry Pi

このレッスンのこの部分では、Raspberry Piに容量性土壌水分センサーを追加し、値を読み取ります。

ハードウェア

Raspberry Piには容量性土壌水分センサーが必要です。

使用するセンサーは容量性土壌水分センサーで、土壌の静電容量を検出することで土壌水分を測定します。土壌水分が変化するとこの特性も変化します。土壌水分が増加すると、電圧が低下します。

これはアナログセンサーなので、アナログピンを使用し、PiのGrove Base Hatの10ビットADCを使用して電圧を1-1,023のデジタル信号に変換します。これがGPIOピンを介してI2CでPiに送信されます。

土壌水分センサーを接続する

Grove土壌水分センサーをRaspberry Piに接続できます。

タスク - 土壌水分センサーを接続する

土壌水分センサーを接続します。

Grove土壌水分センサー

  1. Groveケーブルの一端を土壌水分センサーのソケットに挿入します。これは一方向にしか挿入できません。

  2. Raspberry Piの電源を切った状態で、Groveケーブルの他端をPiに接続されたGrove Base HatのA0とマークされたアナログソケットに接続します。このソケットはGPIOピンの隣のソケット列の右から2番目です。

A0ソケットに接続されたGrove土壌水分センサー

  1. 土壌水分センサーを土壌に挿入します。センサーには「最高位置ライン」があり、これはセンサーの白い線です。このラインまでセンサーを挿入しますが、ラインを超えないようにします。

土壌に挿入されたGrove土壌水分センサー

土壌水分センサーをプログラムする

Raspberry Piは、接続された土壌水分センサーを使用するようにプログラムできます。

タスク - 土壌水分センサーをプログラムする

デバイスをプログラムします。

  1. Piの電源を入れ、起動を待ちます。

  2. Pi上で直接、またはRemote SSH拡張機能を使用してVS Codeを起動します。

    ⚠️ 必要に応じて、nightlight - レッスン1でのVS Codeのセットアップと起動の手順を参照できます。

  3. ターミナルから、piユーザーのホームディレクトリにsoil-moisture-sensorという新しいフォルダーを作成します。このフォルダーにapp.pyというファイルを作成します。

  4. VS Codeでこのフォルダーを開きます。

  5. 必要なライブラリをインポートするために、次のコードをapp.pyファイルに追加します:

    import time
    from grove.adc import ADC

    import timeステートメントは、この課題で後で使用するtimeモジュールをインポートします。

    from grove.adc import ADCステートメントは、Grove PythonライブラリからADCをインポートします。このライブラリには、Piベースハットのアナログ-デジタルコンバータと対話し、アナログセンサーから電圧を読み取るためのコードが含まれています。

  6. 次に、ADCクラスのインスタンスを作成するために、以下のコードを追加します:

    adc = ADC()
  7. A0ピンのADCから読み取り、結果をコンソールに書き込む無限ループを追加します。このループは読み取りの間に10秒間スリープできます。

    while True:
    soil_moisture = adc.read(0)
    print("Soil moisture:", soil_moisture)

    time.sleep(10)
  8. Pythonアプリを実行します。コンソールに土壌水分の測定値が表示されます。土壌に水を追加するか、センサーを土壌から取り外して、値の変化を確認します。

    pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py 
    Soil moisture: 615
    Soil moisture: 612
    Soil moisture: 498
    Soil moisture: 493
    Soil moisture: 490
    Soil Moisture: 388

    上記の例の出力では、水が追加されると電圧が低下するのがわかります。

💁 このコードはcode/piフォルダーにあります。

😀 土壌水分センサープログラムが成功しました!