TOP

Grove - Moisture Sensor

From Wiki 来自痴汉的爱
Jump to: navigation, search

Contents

Introduction

This Moisture Sensor can be used to detect the moisture of soil or judge if there is water around the sensor, let the plants in your garden reach out for human help. They can be very easy to use, just insert it into the soil and then read it. With the help of this sensor, it will be realizable to make the plant remind you : hey, i am thirsty now, please give me some water.

Model: SEN92355P

Moisture sensor .jpg

Features

  • Soil moisture sensor based on soil resistivity measurement
  • Easy to use
  • 2.0cmX6.0cm grove module

Specification

Item Condition Min Typical Max Unit
Voltage - 3.3 / 5 V
Current - 0 / 35 mA
Output Value Sensor in dry soil 0 ~ 300 /
Sensor in humid soil 300 ~ 700 /
Sensor in water 700 ~ 950 /

Application Ideas

Usage

With Arduino

This is a summary of the moisture sensor which can be used to detect the moisture of the soil. When the soil moisture deficits, the sensor output value will decrease. You can know whether a plant needs water or not by observing the results that the sensor outputs. The following sketch demonstrates a simple application of sensing the moisture of the soil.

  • Connect this module to one of analog port A0 of Grove - Base Shield with the 4 pin Grove cable, and then insert the Sensor into the soil or place it anywhere you want.
  • Plug Grove - Base Shield into the Arduino/Seeeduino and connnect Arduino to PC via a USB cable.

The hardware installation as shown below:
Moisture1.jpg
Note:This sensor isn't hardened against contamination or exposure of the control circuitry to water and may be prone to electrolytic corrosion across the probes, so it isn't well suited to being left in place or used outdoors.

  • Copy and paste code below to a new Arduino sketch.
int sensorPin = A0;    // select the input pin for the potentiometer
int sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {
  // declare the ledPin as an OUTPUT:
   Serial.begin(9600);  
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);    
  delay(1000);          
  Serial.print("sensor = " );                       
  Serial.println(sensorValue);                   
}
  • Upload the code, please click here if you do not know how to upload.
  • The Result in different condition after open the serial monitor:
No load.jpg Dry soil.jpg Humility soil.jpg IN water.jpg
Sensor in air Sensor in dry soil Sensor in humid soil Sensor in water


With TI LaunchPad

Taking care of your plants (Moisture Sensor)

The following sketch demonstrates a simple application of sensing the moisture in soil. With this, you can know whether your plant needs water or not by observing the results from the output of the sensor.

Moisture.jpg

/*
  Moisture-Sensor
 The following sketch demonstrates a simple application of sensing 
 the moisture of the soil. You can know whether a plant needs water 
 or not by observing the results that the sensor outputs.
 
 The circuit:
 * Moisture-Sensor attached to pin 24 (J6 plug on Grove Base BoosterPack)
 * one side pin (either one) to ground
 * the other side pin to +VCC
 * LED anode (long leg) attached to RED_LED
 * LED cathode (short leg) attached to ground
 
 * Note:  
 
 
 This example code is in the public domain.
 
 http://seeedstudio.com/wiki/Grove_-_Moisture_Sensor

*/
#include "TM1637.h"

/* Macro Define */
#define CLK               39                  /* 4-digital display clock pin */
#define DIO               38                 /* 4-digiral display data pin */
#define BLINK_LED         RED_LED            /* blink led */
#define MOISTURE_PIN      24                /* pin of moisture sensor */
#define THRESHOLD_VALUE   300                /* threshold for watering the flowers */

#define ON                 HIGH                          /* led on */
#define OFF                LOW                           /* led off */
#define _handle_led(x)     digitalWrite(BLINK_LED, x)    /* handle led */

/* Global Varibles */
TM1637 tm1637(CLK, DIO);                  /* 4-digital display object */
int analog_value = 0;                     /* varible to store the value coming from rotary angle sensor */
int8_t bits[4] = {0};                     /* array to store the single bits of the value */

/* the setup() method runs once, when the sketch starts */
void setup() {
     
    /* Initialize 4-digital display */
    tm1637.init();
    tm1637.set(BRIGHT_TYPICAL);
  
    /* declare the red_led pin as an OUTPUT */
    pinMode(BLINK_LED, OUTPUT);
  
}

/* the loop() method runs over and over again */
void loop() {
  
    analog_value = analogRead(MOISTURE_PIN);      /* read the value from the sensor */
  
    /* if the value is smaller than threshold, turn on led */
    if(analog_value < THRESHOLD_VALUE) {
        _handle_led(ON);       
    } else {
        _handle_led(OFF);
    }
    
    memset(bits, 0, 4);                             /* reset array when we use it */
    for(int i = 3; i >= 0; i--) {
        /* get single bits of the analog value */
        bits[i] = analog_value % 10;
        analog_value = analog_value / 10;  
        tm1637.display(i, bits[i]);                 /* display by 4-digital display */
    }
    delay(200);
}

Version Tracker

Revision Descriptions Release
v0.9b Initial public release 13,Sep,2011

Resources

Support

If you have questions or other better design ideas, you can go to our forum or wish to discuss.

Personal tools
Namespaces

Variants
Actions
Navigation
Support
Navigation
Collections
Toolbox