# 静電容量式土壌水分センサー 利用マニュアル
本ドキュメントは、防水型静電容量式土壌水分センサー(Gravity: Analog Waterproof Capacitive Soil Moisture Sensor)の概要、特徴、利用方法について説明します。
# 1. 本ドキュメントの目的
- 防水型静電容量式土壌水分センサーの概要説明
- 防水型静電容量式土壌水分センサーの仕様説明
- 防水型静電容量式土壌水分センサーに関する利用方法の説明
# 2. 概要
本製品は、防水型静電容量式土壌水分センサーです。
従来の製静電容量式土壌水分センサーに比べて防水性能が向上し、学校・家庭でより安全に取り扱うことが可能です。
一時的にセンサーに水を浴びことも可能です。
また、防食性能も向上され、ラミネート加工されているため、土壌の中でセンサーが傷つきにくく、比較的に腐食しにくいです。
電極板を長く設定されているため、回路性能が向上し、測定範囲も広くなり、センサーの測定値がより正確です。
その他、センサーは電圧レギュレーターチップを内蔵しており、3.3V〜5.5Vの電圧動作環境をサポートします。
micro:bit以外に、Arduino,ESP32,Raspberry Piなどでも動作が可能です。
※ Raspberry Piなどのシングルボードコンピューターで動作させるには、外部 ADC (アナログ信号からデジタル信号へ) モジュールが必要です。
# 3. ご購入の方法
参考:防水型静電容量式土壌水分センサー(Gravity: Analog Waterproof Capacitive Soil Moisture Sensor)は、当社ウェブストアにてご購入できます。
当社はmicro:bitの公認正規販売店です。国内のmicro:bit利用推進を行っております。
micro:bit専門ストア「イフティニー ストア(iftiny store)」 (opens new window)にて、各種micro:bit関連製品の販売をしております。
# 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) |
参考情報
本センサーはのコネクターは、デュポン 3P (DuPont) (QI) + デュポン 1P (DuPont) (QI)なので、 3Pinのコネクター以外に、1Pinのコネクターがあります。 それを別途拡張ボードの別のPinのグランド(GND)に接続する必要があります。
# 6. 付属品
付属品 | 個数 |
---|---|
静電容量式土壌水分センサー(防水)(アナログ) (Gravity: Analog Waterproof Capacitive Soil Moisture Sensor) | 1 |
ラベルシール | 4 |
# 7. micro:bitでの利用方法
本センサーは拡張ボードに接続して利用する必要があるため、本センサーと下記2種類の拡張ボードと一緒に利用する時の利用例を説明します。
- IO拡張ボード (IO Extender for micro:bit) (opens new window)
- シャミ多機能拡張ボード (Xia mi Multi-functional Expansion Board for micro:bit) (opens new window)
※ 本マニュアルでは、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拡張ボードの接続は以下の画像をご参考ください。
# 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)