すぐにわかる!水センサーの使い方【超初心者がIoT開発に挑んでみる#19】

IoT

はじめに

 農業IoT開発の休憩がてら、水センサーが使えそうだなと思って使い方を勉強してみました。

タイトルは【農業IoT・AgriTechデバイス開発#】ではなく以前の【超初心者がIoT開発に挑んでみる#】にしています。

ちなみに農業IoT・AgriTechデバイス開発】シリーズは以下の記事が最新となります。

水センサーについて

今回は下のような水分センサーを使いました。正確にいうと筆者が購入したものは若干違うものですが、基本的な使い方は同じだと思います。

私が購入した水センサーをM5Stackで使用する場合はPort Bでないと動作しないものでした。少なくともM5Stack Basic V2.6はPort Bがないので、Groveケーブルで直接接続したい場合は、以下のようなものが必要となります。
M5Stackの底面側を交換する形になります。

この水センサーは、乾いている時は出力ピン(SIGピン)が抵抗でプルアップされて電位が高い状態になります。この状態の時、SIGピンとGNDピン間に水がつくとSIGピンとGNDピンがショートして、SIGピンの電位がGNDと同電位になり出力が低下します。

つまり、乾いている状態だと1(=High)、濡れている状態だと0(=Low)ということですね。

この原理により水をセンシングできるというわけです。

スケッチ

今回のスケッチは以下のようにしました。

#include <M5Unified.h>

constexpr int WATER_SENSOR = 36; // PortB想定

void setup() {
  auto cfg = M5.config(); //デバイスの初期化
  M5.begin(cfg);  //デバイスの初期化
  pinMode(WATER_SENSOR, INPUT); //WATER_SENSOR を入力として使う設定
  //M5Stackの画面設定
  M5.Display.fillScreen(TFT_BLACK);
  M5.Display.setTextSize(3);
  M5.Display.setTextColor(TFT_WHITE, TFT_BLACK);
}

void loop() {
  int v = digitalRead(WATER_SENSOR);  //指定ピン(WATER_SENSOR)のデジタル値(HIGH/LOW)を取得
  M5.Display.setCursor(40, 100);
  //三項演算子 v ? "DRY" : "WET"はv==HIGH(1)なら DRY、v==LOW(0)なら WETを表示。
  M5.Display.printf("STATE: %s   ", v ? "DRY" : "WET"); // %sの後ろの空白3つで上書き消去
  delay(500);
}

結果

うまく動作すれば下のような状態になると思います。意外と敏感に動いてくれました。

最後に

今回は農業IoT開発の合間に水センサーの勉強をしてみました。動作自体は簡単にできました。

雨センサー等として農業IoTにも活用できそうです。

それでは、今回はこの辺で。

おすすめの書籍

 もっと詳しくM5Stackについて知りたい!という方はこちらの書籍がおすすめです。とても詳しく載っていてわかりやすいです。

とりあえず何か作ってみたい!という方にはこちらの書籍がおすすめです。書いてある通りにやるだけでお手軽にIoTデバイスを作ることができます。

Arduinoで電子工作したい方にはこちらもおすすめです!Arduinoでどんなことができるのか、一目でわかる一冊になっています。

※Amazonのアソシエイトとして、当メディア(Nラボ備忘録)は適格販売により収入を得ています。

他記事のご紹介

当ブログではさまざまな記事を投稿しています。最近はPythonで物理シミュレーションをやってみたり、JavaScriptの記事も人気が出てきています。ぜひご覧ください。

コメント

タイトルとURLをコピーしました