Documentation Home
<fc #990000>Discontinued - Information for old sensors only!</fc>
<fc #000080> Sensor for measure soil temperature and humidity V2.0.0</fc>
Name: Sensor for measure soil temperature and humidity
Type: Sensor Board
Version: 1.0.0
Author: Dubravko Penezic
Copyright: Creative Commons BY-NC-SA v 3.0
Implemented function:
Used library Dp1WBasic library, Dp1WDS18xxxTermo library and Capacitive Sensing .
/*
Author: Dubravko Penezic
Version: 1.0, 2013
This code is example how to use Sensor for measure soil temperature and humidity.
Source code is provided as is, without any warranty.
Distributetd under CC BY v 3.0
*/
// include 1Wire library
#include <Dp1WBasic.h>
#include <Dp1WDS18xxxTermo.h>
// Data wire is plugged into port 5 on the Arduino
#define ONE_WIRE_BUS 5
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
Dp1WBasic oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
Dp1WDS18xxxTermo tSen(&oneWire);
// arrays to hold device address
SensorInfo tempSensors[16];
//include CapSense library
#include <CapSense.h>
CapSense cs_7_9 = CapSense(7,9); // 10M resistor between pins 7 & 9, pin 9 is sensor pin
CapSense cs_7_10 = CapSense(7,10); // 10M resistor between pins 7 & 10, pin 10 is sensor pin
CapSense cs_7_11 = CapSense(7,11); // 10M resistor between pins 7 & 11, pin 11 is sensor pin
CapSense cs_7_12 = CapSense(7,12); // 10M resistor between pins 7 & 12, pin 12 is sensor pin
// set LED pin
byte led1 = 6;
byte led2 = 8;
byte led3 = 13;
void setup(void) {
// cs_7_9.set_CS_AutocaL_Millis(0xFFFFFFFF); // turn off autocalibrate on channel 1 - just as an example
Serial.begin(9600);
Serial.println("DpSoilCapTempSensor V 1.0");
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(10000);
}
void loop(void) {
byte broj = tSen.readTemperature(tempSensors, 16, NORMAL_SEARCH);
if(broj == 0 ) {
Serial.print("\n\nNo 1-Wire Temperature Sensor Found on Digital Pin ");
Serial.println(ONE_WIRE_BUS);
} else {
for(byte i = 0; i < broj; i++) {
Serial.print("\n\nTemperature sensor ");
Serial.print(i);
Serial.println(".");
Serial.print("ROM Address: \t\t");
for(byte j=0; j<8;j++) {
if (tempSensors[i].dAddr[j] < 16) Serial.print("0");
Serial.print(tempSensors[i].dAddr[j], HEX);
}
Serial.print("\nSensor type: \t\t");
switch (tempSensors[i].dAddr[0]) {
case DS18B20MODEL:
Serial.println("DS18B20");
break;
case DS1822MODEL:
Serial.println("DS1822");
break;
case DS18S20MODEL:
Serial.println("DS18S20/DS1820");
break;
}
Serial.print("Actual temperature \t");
Serial.print(tempSensors[i].dTemperature);
Serial.print(" C (");
Serial.print(getResolution(tempSensors[i].dAddr,tempSensors[i].dTempReso),DEC);
Serial.println(" bit)");
Serial.print("Alarm Low Temperature \t");
Serial.print(tempSensors[i].dMinAlarm,2);
Serial.println(" C");
Serial.print("Alarm High Temperature \t");
Serial.print(tempSensors[i].dMaxAlarm,2);
Serial.println(" C");
if(i==0) {
if(tempSensors[i].dTemperature>28) {
digitalWrite(led1, HIGH);
} else {
digitalWrite(led1, LOW);
}
}
if(i==1) {
if(tempSensors[i].dTemperature>28) {
digitalWrite(led2, HIGH);
} else {
digitalWrite(led2, LOW);
}
}
if(i==2) {
if(tempSensors[i].dTemperature>28) {
digitalWrite(led3, HIGH);
} else {
digitalWrite(led3, LOW);
}
}
}
}
for(byte j = 0; j <25; j++) {
long start = millis();
long total1 = cs_7_9.capSense(30);
long total2 = cs_7_10.capSense(30);
long total3 = cs_7_11.capSense(30);
long total4 = cs_7_12.capSense(30);
Serial.print(millis() - start); // check on performance in milliseconds
Serial.print("\t"); // tab character for debug windown spacing
Serial.print(total1); // print sensor output 1
Serial.print("\t");
Serial.print(total2); // print sensor output 2
Serial.print("\t");
Serial.print(total3); // print sensor output 3
Serial.print("\t");
Serial.println(total4); // print sensor output 3mit data to serial por
delay(20);
}
}
byte getResolution(uint8_t* deviceAddress, uint8_t conf) {
if (deviceAddress[0] == DS18S20MODEL) return 9; // this model has a fixed resolution
switch (conf) {
case TEMP_12_BIT:
return 12;
case TEMP_11_BIT:
return 11;
case TEMP_10_BIT:
return 10;
case TEMP_9_BIT:
return 9;
}
return 0;
}