Hi,
i m working on project which aims to develop a soil sensor which will display soil moisture and ph value on android mobile app.
i am using Arduino UNO, ESP8266, and Blynk app to display data. This is my first project using blynk.
the problem is when i just read data from sensor and display its value on blynk app it works well. But when i apply if conditions on sensor readings, to make it more easier for a common person to understand what is meant by this particular reading of sensor, it does not work. It gets connect to wifi but does not read any sensor value and displays nothing on app.
#define BLYNK_PRINT Serial
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
float moisture[10],Ph[10],light[10],sum_Moisture=0, sum_Ph=0, sum_light=0,moistureAvg=0,Avg_Ph=0,Avg_light=0 ;
//Your Project authentication key
char auth[] = "*********";
//char ssid[] = "*********;
//char pass[] = "*********"; // Corresponding Password
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); //RXPin, TXPin
//SoftwareSerial ss(RXPin, TXPin);
#define ESP8266_BAUD 9600
ESP8266 wifi(&EspSerial);
void setup()
{
pinMode(A0,INPUT);
pinMode(A2,INPUT);
Serial.begin(9600);
EspSerial.begin(ESP8266_BAUD);
delay(10);
Blynk.begin(auth, wifi, ssid, pass);
}
void loop()
{
sensor();
Blynk.run();
}
void sensor()
{
sum_Moisture=0, sum_Ph=0, sum_light=0,moistureAvg=0,Avg_Ph=0,Avg_light=0 ;
for (int i=0; i<10; i++){
moisture[i] = analogRead(A0);
moisture[i]=moisture[i]*5/1023;
Ph[i]=analogRead(A2);
Ph[i]=Ph[i]*5/1023;
sum_Moisture=sum_Moisture+moisture[i];
sum_Ph=sum_Ph+Ph[i];
}
moistureAvg=sum_Moisture/10;
Avg_Ph=sum_Ph/10;
// Blynk.virtualWrite(V5,moistureAvg);
//Blynk.virtualWrite(V6,Avg_Ph);
// if conditions
if(Avg_Ph>=0.38){
Serial.println("Ph < 3, Not Suitable");
Blynk.virtualWrite(V5,"Ph < 3, Not Suitable");
}
else if(Avg_Ph<=0.37&Avg_Ph>=0.36){
Serial.println("Ph:3-4, Not Suitable");
Blynk.virtualWrite(V5,"Ph:3-4, Not Suitable");
}
else if(Avg_Ph<=0.35&Avg_Ph>=0.34){
Serial.println("Ph:4-5, Not Suitable");
Blynk.virtualWrite(V5,"Ph:4-5, Not Suitable");
}
else if(Avg_Ph<=0.33&Avg_Ph>=0.32){
Serial.println("Ph:5-6, Not Suitable");
Blynk.virtualWrite(V5,"Ph:5-6, Not Suitable");
}
else if(Avg_Ph<=0.31&Avg_Ph>=0.20){
Serial.println("Ph:6-7, Suitable");
Blynk.virtualWrite(V5,"Ph:6-7, Suitable");
}
else{
Serial.println("Ph:7-8, Suitable");
Blynk.virtualWrite(V5,"Ph:7-8, Suitable");
}
if(moistureAvg<=0.65){
Serial.println("soil is too much DRY");
Blynk.virtualWrite(V6,"soil is too much DRY");
}
else if(moistureAvg>=0.66 & moistureAvg<=0.68){
Serial.println("soil is much DRY");
Blynk.virtualWrite(V6, "soil is much DRY");
}
else if(moistureAvg>=0.69 & moistureAvg<=0.73){
Serial.println("soil is DRY");
Blynk.virtualWrite(V6,"soil is DRY");
}
else if(moistureAvg>=0.74 & moistureAvg<=0.76){
Serial.println("soil is least moist");
Blynk.virtualWrite(V6,"soil is least moist");
}
else if(moistureAvg>=0.77 & moistureAvg<=0.79){
Serial.println("soil is Partially moist");
Blynk.virtualWrite(V6,"soil is Partially moist");
}
else if(moistureAvg>=0.80 & moistureAvg<=0.82){
Serial.println("soil is moist");
Blynk.virtualWrite(V6,"soil is moist");
}
else if(moistureAvg>=0.83 & moistureAvg<=0.85){
Serial.println("soil is least wet");
Blynk.virtualWrite(V6,"soil is least wet");
}
else if(moistureAvg>=0.86 & moistureAvg<=0.88){
Serial.println("soil is partially wet");
Blynk.virtualWrite(V6,"soil is partially wet");
}
else {
Serial.println("soil is fully wet");
Blynk.virtualWrite(V6,"soil is fully wet");
}
}