Arduino 入門
Lesson 59
【土壌水分センサ】
こにんちは、管理人のomoroyaです。
センサーの使い方の基本を学習する入門編。
世の中には、まだまだ色々なセンサーがあります。
これからも、色々なセンサーで遊んでいきます。
本記事はLesson 59 【土壌水分センサ】です。
こちらも、電子部品箱を整理していて発見。
Lesson 58の感雨・水位センサと一緒に購入した記憶が・・・。
だいぶ前に買って放置してました。
せっかく見つけたので、こちらも遊んでみたいと思います。
「土壌水分センサ・土壌湿度センサ」として売られています。
土壌の湿度(水分量)を測定するセンサです。
本Lessonで使用する「土壌水分センサ・土壌湿度センサ」は、基板にプリントされたプローブが可変抵抗器として機能します。
抵抗値は土壌の含水量に応じて変化する。
土壌の水分量によって導電率が変化し、抵抗値がかわるというしくみです。
原理としては、Lesson 58の感雨・水位センサと同じ。
プローブの作りが異なるだけと考えても差し支えありません。
抵抗の変化は電圧として出力されます。
その電圧の変化をLM393を介して、D0(デジタル出力)から0、1を出力します。
LM393はこれまでのLessonでもよく出てきた部品ですね!
おなじみのコンパレータです!
Lesson 58の感雨・水位センサと同様に、モジュールのA0(アナログ出力)をUNOのアナログピンにつなげば、AD変換されたデジタル値を読み取ることも可能。
ちなみに、抵抗とバイポーラトランジスタを持っていればLesson 58の感雨・水位センサのような回路を構築してセンサとすることもできます。
本Lessonで使用する「土壌水分センサ・土壌湿度センサ」はセンサ部であるプローブとLM393が搭載されたモジュールで構成されています。
以下が同等品。
※prime対応品(出荷元:Amazon)
ほかに、一体化されていて方式も異なる静電容量式もあります。
抵抗式よりも、耐食性に優れているため本格的な導入はこちらがおすすめ。
Arduino入門編の解説にて使用しているArduinoは互換品です。
互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
はじめに
本Lessonで使用する「土壌水分センサ・土壌湿度センサ」は2本のプローブ間の抵抗を測定するというもの。
2本のプローブ線がプリントされており、その間が可変抵抗器の役割を果たします。
その変化をLM393が搭載されたモジュールで読み取るというしくみ。
その電圧をArduinoのデジタルピン、アナログピンで読み取ればOK。
原理は簡単です。
Lesson 59 目標
本Lessonの目標は以下です。
2.土壌水分センサ・土壌湿度センサ の仕組みを理解する(理解しなくてもOKです)
3.土壌水分センサ・土壌湿度センサ を動かすスケッチを描く
4.土壌水分センサ・土壌湿度センサ を動かして遊ぶ
いつものように、遊ぶことが重要です。
「土壌水分センサ・土壌湿度センサ」ですが、LM393搭載のモジュールを間に挟むためArduinoでの制御は単純です。
リレー、小型ポンプと組み合わせればなどと組み合わせて、植木鉢に自動で水を上げるといったことができます。
準備
ではLessonの準備に取り掛かりましょう。
電子部品は「土壌水分センサ・土壌湿度センサ」のみ。
必要なもの
- USB接続用のPC(IDE統合環境がインストールされたPC)
→管理人が勝手に比較したBTOメーカーを紹介しています。 - UNO R3(以下UNO)、おすすめUNO互換品(ELEGOO)
- PCとUNOを接続するUSBケーブル
- ブレッドボード安価(大)、ブレッドボード安価(中)
※おすすめブレッドボード(大)、おすすめブレッドボード(中) - 土壌水分センサ・土壌湿度センサ
- M-M Jumper wire(UNOと部品をつなぐための配線)
- M-F Jumper wire(UNOと部品をつなぐための配線)
※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。
Jumper wire、抵抗は今後も頻繁に利用します。
Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。
短めが使いやすい場合も。
抵抗も単品で揃えるよりはセットをおすすめします。
抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!
という方は、「電子工作基本部品セット」が使い勝手が良い。
使用部品説明
「土壌水分センサ・土壌湿度センサ」について説明していきます。
※以下、土壌水分センサと表記
土壌水分センサ 実物写真
下の写真が「土壌水分センサ」の実物写真です。
本Lessonで使用するものは、プローブ部分であるセンサ部、電圧を読み取りLM393にてコンパレートすることで出力を0、1へ変換するモジュール部の2つで構成されています。
2本のプローブ線があることがわかります。
表面はニッケルメッキ?でしょうか。
センサ部とLM393が搭載されたモジュールは下記のようにつないでください。
センサ部は特にプラス、マイナスはありません。
土壌水分センサ 回路図
「土壌水分センサ」の回路図を示します。
あいかわらず、この手の電子部品はデータシートをさがすのが大変・・・。
自分でテスタを使って配線をおいかけて回路図を起こします。
回路じたいは単純ですが、回路の知識が必要となるため興味がないかたは飛ばしてください。
簡単に説明すると、10kΩのポテンショメータの出力をリファレンス電圧とする。
リファレンス電圧とA0(10kΩで分圧された電圧)とをコンパレータで比較。
※コンパレータとは比較回路です!
リファレンス電圧 < A0 :D0出力が「H」
リファレンス電圧 > A0 :D0出力が「L」
※管理人がテスタで配線おいかけていますので、間違えている場合もあります!
土壌水分センサ 仕様
遊び、学習で使う分には気にする特性はとくにありません。
■仕様抜粋(一例)
項目 | 仕様 |
---|---|
動作電圧 | 3.3V ~ 5.0V |
LM393搭載部 | D0:デジタル出力 A0:アナログ出力 |
本Lessonは遊び、学習を想定しています。
Arduinoの仕様範囲内で使用していれば問題になることもありません。
遊び、学習以外での使用用途をお考えの場合はデータシートを必ず確認しましょう。
実践 回路作成とコード作成
最初に回路図を確認してください。
次に、回路図に合わせて部品を接続します。
最後にコードを書いて、「土壌水分センサ」を動かしていきましょう。
Arduinoのピン配置を確認したい方は番外編02を参照してください。
回路図
Arduinoの使用ピンは以下。
- デジタル入力:D7、D13(Lチカ:なしでもOK)
- アナログ入力:A0
- 5V、GND
回路図がこちら。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
部品は「土壌水分センサ・土壌湿度センサ」のみとなります。
プローブ部分が一体であると考えれば、部品はある意味、1個です。
接続は簡単です。
「土壌水分センサ・土壌湿度センサ」と接続するジャンパーワイヤーはM-Fを使用してます。
ブレッドボードを使うかどうかはお好みで。
使用するポートは
- デジタル入力:D7、D13(Lチカ:なしでもOK)
- アナログ入力:A0
- 5V、GND
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
毎回ブレッドボードにLEDをセットするのも面倒なので「Lチカ」自作しています。
おすすめです。
コードの書き込み
接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。
コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。
コマンド説明
本Lessonでは、特に新しいコマンドはありません。
サンプルコード
本Lessonのスケッチは単純。
デジタル入力ピン、アナログ入力ピンで「土壌水分センサ・土壌湿度センサ」の出力電圧を読み取るのみ。
デジタル入力ピンで電圧を読み取る → 0、1判定
アナログ入力ピンで電圧を読みとる → AD変換
Arduinoのアナログ入力ピンは読み取った電圧をデジタル値に変換してくれます。
スケッチは、D0およびA0をデジタル変換した値をシリアルモニタに出力させるだけです。
//Lesson 59 土壌水分センサ・土壌湿度センサ //土壌の水分検出ができるスケッチ //実使用するのであれば、電力低減を考える必要あり(下記スケッチでは考えていない) //https://omoroya.com/ // Sensor pins const int sensorPinA = A0; //アナログ入力ピンの定義 const int sensorPinD = 7; //デジタル入力ピンの定義 const int ledPin = 13; //デジタル出力ピンの定義 void setup() { pinMode(ledPin, OUTPUT); //13番ピンを出力指定 Serial.begin(9600); //シリアル通信のデータ転送レートを9600bpsで指定 } void loop() { int val_d = digitalRead(sensorPinD); //D0の値を読み取り int val_a = analogRead(sensorPinA); //A0の値を読み取り(感度調整のため) //D0の値を表示 Serial.print("Digital Output: "); Serial.println(val_d); //A0の値を表示(例:A0の値が500以下でD0出力が0となるように調整など) Serial.print("Analog Output: "); Serial.println(val_a); //土壌が乾きすぎていたらLチカON if (val_d == HIGH) { digitalWrite(ledPin, HIGH); Serial.println("The soil is too dry."); delay(1000); digitalWrite(ledPin, LOW); } else { Serial.println("The soil is sufficiently moist."); } delay(5000); //測定する時間を指定。実際に測定するなら長くする。 Serial.println(); }
動作確認
では、さっそく動作を確認していきます。
まず、ビーカーに乾いた土を入れます。
次に、「土壌水分センサ・土壌湿度センサ」を入れて徐々に水を注いでいきます。
その状態をシリアルモニタで観察。
■シリアルモニタの値とセンサの状態
十分に水が注がれると、D0の出力が0となります。Lチカ
乾いている:ON
湿っている:OFF
LEDを追加することで、シリアルモニタがなくても土壌の状態を確認できます!
土壌 | シリアルモニタ | Lチカ |
---|---|---|
乾いている | ON | |
十分に湿っている | OFF |
まとめ
本Lessonは、以下を目標としました。
2.土壌水分センサ・土壌湿度センサ の仕組みを理解する(理解しなくてもOKです)
3.土壌水分センサ・土壌湿度センサ を動かすスケッチを描く
4.土壌水分センサ・土壌湿度センサ を動かして遊ぶ
「土壌水分センサ・土壌湿度センサ」を使って土壌に水を与える状況を可視化する。
さらに、応用して自動で水を上げるといったことまですると面白いかも。
Lesson 59 【土壌水分センサ】 はここまで。
疑問点、質問などありましたら気軽にコメントください。
次回、Lesson 60は 【SDカードスロット モジュール】。
SDカードをArudinoで操作して遊びます。
データロガーの作成への第一歩になるLesson。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント