# 静電容量式土壌水分センサー 利用マニュアル




本ドキュメントは、防水型静電容量式土壌水分センサー(Gravity: Analog Waterproof Capacitive Soil Moisture Sensor)の概要、特徴、利用方法について説明します。

Gravity: Analog Waterproof Capacitive Soil Moisture Sensor




# 1. 本ドキュメントの目的


  • 防水型静電容量式土壌水分センサーの概要説明
  • 防水型静電容量式土壌水分センサーの仕様説明
  • 防水型静電容量式土壌水分センサーに関する利用方法の説明


# 2. 概要


本製品は、防水型静電容量式土壌水分センサーです。
従来の製静電容量式土壌水分センサーに比べて防水性能が向上し、学校・家庭でより安全に取り扱うことが可能です。
一時的にセンサーに水を浴びことも可能です。
また、防食性能も向上され、ラミネート加工されているため、土壌の中でセンサーが傷つきにくく、比較的に腐食しにくいです。
電極板を長く設定されているため、回路性能が向上し、測定範囲も広くなり、センサーの測定値がより正確です。
その他、センサーは電圧レギュレーターチップを内蔵しており、3.3V〜5.5Vの電圧動作環境をサポートします。
micro:bit以外に、Arduino,ESP32,Raspberry Piなどでも動作が可能です。
※ Raspberry Piなどのシングルボードコンピューターで動作させるには、外部 ADC (アナログ信号からデジタル信号へ) モジュールが必要です。

Gravity: Analog Waterproof Capacitive Soil Moisture Sensor


# 3. ご購入の方法



参考:防水型静電容量式土壌水分センサー(Gravity: Analog Waterproof Capacitive Soil Moisture Sensor)は、当社ウェブストアにてご購入できます。



当社はmicro:bitの公認正規販売店です。国内のmicro:bit利用推進を行っております。

micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。

micro:bit専門ストア (opens new window)






# 4. 特徴


  • 防水型静電容量式土壌水分センサー
  • アナログ出力
  • 防水 & 防食
  • 3.3V〜5.5V対応



# 5. 仕様


項目 詳細
型番 PPDF-SEN0308
タイプ アナログ
動作電圧 3.3V~5V DC
出力電圧 0〜2.9V DC
ケーブルインターフェース デュポン 3P (DuPont) (QI) + デュポン 1P (DuPont) (QI)
寸法 175mm x 30mm (センサー本体(ケーブルを除く))
重量 71g(収納袋を含める)
製品パッケージ なし(収納袋あり)

No. ケーブルの色 詳細
1 黄(3Pin) シグナル
2 赤(3Pin) VCC
3 黒(3Pin) グランド(GND)
4 黒(1Pin) グランド (GND)

Gravity: Analog Waterproof Capacitive Soil Moisture Sensor


参考情報


本センサーはのコネクターは、デュポン 3P (DuPont) (QI) + デュポン 1P (DuPont) (QI)なので、 3Pinのコネクター以外に、1Pinのコネクターがあります。 それを別途拡張ボードの別のPinのグランド(GND)に接続する必要があります。



# 6. 付属品


付属品 個数
静電容量式土壌水分センサー(防水)(アナログ)
(Gravity: Analog Waterproof Capacitive Soil Moisture Sensor)
1
ラベルシール 4

Gravity: Analog Waterproof Capacitive Soil Moisture Sensor







# 7. micro:bitでの利用方法


本センサーは拡張ボードに接続して利用する必要があるため、本センサーと下記2種類の拡張ボードと一緒に利用する時の利用例を説明します。


※ 本マニュアルでは、MakeCodeを利用したプログラミング例を使用します。 MakeCodeを使ってのmicro:bitプログラミングを経験していない方は、当社ドキュメント 「1.2. micro:bitの利用方法」 (opens new window)の各ドキュメントをご確認ください。




# 7.1. IO拡張ボードの利用例


ここでは、例としてIO拡張ボード (IO Extender for micro:bit) (opens new window)に装着し、本センサーを利用する方法を説明します。


# 7.1.1. 必要な機材


# PC利用時に必要な機材
No. 名称 個数 HW/SW 用途
01 マイクロビット セレクト ベースキット (opens new window) 1 HW micro:bit本体、micro:bit用ケース、マルチUSBケーブル
02 防水型静電容量式土壌水分センサー(Gravity: Analog Waterproof Capacitive Soil Moisture Sensor) (opens new window) 1 HW 本製品
03 IO拡張ボード (IO Extender for micro:bit) (opens new window) 1 HW micro:bitとセンサーを接続用
04 Chromebook、MacOS、WindowsのPC 1 HW MakeCode操作用
05 Google Chrome 1 SW MakeCodeアクセス用


# タブレット・スマートフォン利用時に必要な機材
No. 名称 個数 HW/SW 用途
01 マイクロビット セレクト ベースキット (opens new window) 1 HW micro:bit本体、micro:bit用ケース、マルチUSBケーブル
02 防水型静電容量式土壌水分センサー(Gravity: Analog Waterproof Capacitive Soil Moisture Sensor) (opens new window) 1 HW 本製品
03 IO拡張ボード (IO Extender for micro:bit) (opens new window) 1 HW micro:bitとセンサーを接続用
04 タブレット・スマートフォン 1 HW micro:bitアプリ操作用
05 micro:bit アプリ 1 SW micro:bitプログラミング用

※ HW:ハードウェア、SW:ソフトウェア
※ Google Chromeは、Google社が提供しているブラウザ。ダウンロードは下記URLで可能です。Chromebookでは、標準でインストールされています。


# 7.1.2. ハードウェアの接続


No. 手順 確認
01 IO拡張ボードにmicro:bitを装着 IO拡張ボードの正面とmicro:bitの正面が同方向である
02 センサーのケーブルコネクター(3Pin)を
IO拡張ボードのコネクターP1に装着
赤色と黒色のケーブルが該当するピンの色と一致している
※3pinコネクターの向きに注意
03 センサーのケーブルコネクター(1Pin)を
IO拡張ボードのコネクターP8の黒ピンに装着
黒色のケーブルが該当するピンの色と一致している
04 micro:bitのMicroUSBポートにUSBケーブルを装着し、PCに接続 PCが外部ディスクとして認識される
05 IO拡張ボードのMicroUSBポートにUSBケーブルを装着し、電源またはPCに接続
06 IO拡張ボードの電源をONする 電源インジケーターが光る

※ 静電容量式土壌水分センサーとIO拡張ボードの接続は以下の画像をご参考ください。 静電容量式土壌水分センサーとIO拡張ボードの接続




# 7.1.3. 測定できる範囲の確認


静電容量式土壌水分センサーは個体差があるため、同一条件でも測定値が異なります。
そのため、正しく計測するため、校正が必要です。
校正自体はプログラムの中で行いますが、事前に該当センサー個体の測定できる範囲(最も水分が多い環境での測定値と最も水分が少ない環境での測定値)を取得する必要があります。
その値を用いてプログラムの中で校正を行います。


プログラムを使って計測するため、micro:bitに書き込む(ダウンロード)必要があります。 下記の手順に沿って、該当センサーが測定できる範囲を確認します。




No. 手順 確認
01 上記プログラムの「編集」マーク(画面右上)をクリックし、MakeCodeの新しいブラウザが立ち上がる ブロックエディター画面が表示される
02 micro:bitを端末に接続し、
プログラムをmicro:bitに書き込む(ダウンロード)
書き込みが問題なく完了したことを確認
03 測定ができることを確認 micro:bitに測定した値が表示される
04 IO拡張ボードの電源をON 電源インジケーターが点灯
05 センサーを空気中においたままの値を測定 micro:bitに表示された値を記録
06 センサーを水に(推奨深度 (Recommend Depth)の範囲内で)浸かり、値を測定 micro:bitに表示された値を記録
07 IO拡張ボードの電源をOFF 電源インジケーターが消灯



# 7.1.4. プログラミング方法

# 7.1.4.1. 動作イメージ

下記サンプルプログラムでは、静電容量式土壌水分センサーを使って、鉢植えの土壌水分をリアルタイムで測定します。
  • 水が十分にある場合「Very Wet」の文字と実際の計測値がmicro:bitのLEDディスプレイに表示されます。
  • 土壌に一定の水分がある場合「Wet」の文字と実際の計測値がmicro:bitのLEDディスプレイに表示されます。
  • 水分が不足している場合「Dry」の文字と実際の計測値がmicro:bitのLEDディスプレイに表示されます。


# 7.1.4.2. プログラミング方法

サンプルプログラム内では、下記三つの変数を用いて、校正した測定を行います。
これらにより、土壌の水分状態を測定し、「Very Wet」、「Wet」、「Dry」で判定します。

  • 変数:air_value(上記「7.1.2.測定できる範囲の確認」の「空気中においたままで測定した値」を手動で入力する必要がある)
  • 変数:water_value(上記「7.1.2.測定できる範囲の確認」の「水中で測定した値」を手動で入力する必要がある)
  • 変数:value_intervals(air_valueとwater_value差を三分割した値をプログラムによって計算される)

  • 変数:soil_moisture_value(P1から取得したセンサーのアナログ値(測定値)をプログラムによって代入される)


参考:乾燥状態を正しく判定できない場合の対処方法



乾燥した状態でも、サンプルプログラムでは乾燥であることが正しく検知できない場合、判定方法をチューニングする必要があります。

例: サンプルプログラムでは、air_valueとwater_value差を三分割した値で計算していますが、 air_valueとwater_value差を五分割などにして、乾燥と判定する測定値の範囲を広げようにチューニングすることで正しく判定が可能になります。






# MakeCodeプログラミング例(ブロック)




# MakeCodeプログラミング例(JavaScript)

let soil_moisture_value = 0
let air_value = 915
let water_value = 20
let value_intervals = (air_value - water_value) / 3
basic.forever(function () {
    soil_moisture_value = pins.analogReadPin(AnalogPin.P1)
    if (soil_moisture_value > water_value && soil_moisture_value < water_value + value_intervals) {
        basic.showString("" + soil_moisture_value)
        basic.showString("Very Wet")
    } else if (soil_moisture_value > water_value + value_intervals && soil_moisture_value < air_value - value_intervals) {
        basic.showString("" + soil_moisture_value)
        basic.showString("Wet")
    } else if (soil_moisture_value < air_value && soil_moisture_value > air_value - value_intervals) {
        basic.showString("" + soil_moisture_value)
        basic.showString("Dry")
    }
    basic.pause(2000)
    basic.clearScreen()
})



# MakeCodeプログラミング例(python)

soil_moisture_value = 0
air_value = 915
water_value = 20
value_intervals = (air_value - water_value) / 3

def on_forever():
    global soil_moisture_value
    soil_moisture_value = pins.analog_read_pin(AnalogPin.P1)
    if soil_moisture_value > water_value and soil_moisture_value < water_value + value_intervals:
        basic.show_string("" + str(soil_moisture_value))
        basic.show_string("Very Wet")
    elif soil_moisture_value > water_value + value_intervals and soil_moisture_value < air_value - value_intervals:
        basic.show_string("" + str(soil_moisture_value))
        basic.show_string("Wet")
    elif soil_moisture_value < air_value and soil_moisture_value > air_value - value_intervals:
        basic.show_string("" + str(soil_moisture_value))
        basic.show_string("Dry")
    basic.pause(2000)
    basic.clear_screen()
basic.forever(on_forever)
Last Updated: 5/25/2023, 4:09:29 AM