|Availability:||In stock (24)|
The sensor is coated in epoxy resin, cured and additionally protected by adhesive-lined heat shrink. The 1m (3 feet) long cable is pre-soldered. Light sensor is covered by heatshrink!!, so the light reading will always report total darkness.
The sensor can be read via I2C protocol and provides these features:
More documentation and example code is available on github page.
The easiest way to get the sensor working on Arduino compatible environment is to use the library by Ingo Fischer it is available thru Arduino environment, make sure to use version 1.1.4 or later as it contains some fixes for address change and bus hang bugs fixed in the firmware version 2.6.
Both light and moisture sensors give relative values. Meaning, more moisture will give you higher reading, more light, lower reading.
Moisture is somewhat linear. I test all sensors before shipping and they give about 290 - 310 in free air at 5V supply.
The light sensor gives 65535 in a dark room away form desk lamp. When it's dark, it takes longer to measure light, reading the light register while measurement is in progress will return the previous reading.
Temperature is measured by the thermistor on the body of the sensor. Calculated absolute measurement accuracy is better than 2%. The returned value is in tenths of degrees Celsius. I.e. value 252 would mean 25.2°C.
Note Upon reading the moisture or temperature value, a value form the previous read command is returned and the new measurement is started. If you do rare measurements and want to act instantly, do two consecutive readings to get the most up to date data. Also you can read GET_BUSY register via i2c - it will indicate when the measurement is done. Basically the process goes like this: read from GET_CAPACITANCE, discard results, then read from GET_BUSY until you get '0' as an answer, then read form GET_CAPACITANCE again - the returned value is the soil moisture NOW.
The sensor works fine with Arduino and RaspberryPi. Examples are available on github page.
In some cases the default ESP8266 Arduino I2C library has the clock stretching timeout set too low. If you experience intermittent communication, add this to your code:
Shield is not grounded on the sensor end and must be grounded on the master end.