Guest User

smart_irrigation_problem_v1.1

a guest
Aug 22nd, 2018
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.89 KB | None | 0 0
  1. #include <DHT.h>
  2. #define BLYNK_PRINT Serial
  3. #include <BlynkSimpleEsp8266.h>
  4. #include <Wire.h> // Include I2C bus library
  5. #include <LiquidCrystal_I2C.h> // Include LCD-I2C bus library
  6. #define DHTPIN 13 //pin connect DHT
  7. //#define LED D10 //LED BUILTIN for NodeMCU
  8. #define DHTTYPE DHT11 //if use DHT11 edit to "DHT11"
  9. DHT dht(DHTPIN, DHTTYPE);
  10. LiquidCrystal_I2C lcd(0x27, 20, 4);
  11.  
  12. char auth[] = "4cb8b10967134ba4a5797db23055c7e2";// You should get Auth Token in the Blynk App.
  13. char ssid[] = "TP-Link_Rajib_Deepi";// Your WiFi credentials.
  14. char pass[] = "sony@595";//Set password to "" for open networks.
  15. int MosLowLimit = 30;
  16. int MosHighLimit =60;
  17. int TempLimit = 25;
  18. int automatic = 1;
  19.  
  20. BLYNK_WRITE(V0) // V5 is the number of Virtual Pin
  21. {
  22. int AutoValue = param.asInt();
  23.  
  24. if (AutoValue == 1)
  25. {
  26. automatic = 1;
  27. }
  28. else
  29. {
  30. automatic = 0;
  31. }
  32. }
  33.  
  34. void setup()
  35. {
  36. Blynk.begin(auth, ssid, pass);
  37. //timer.setInterval(2000, sendUptime);
  38. Serial.begin(115200);
  39. // pinMode(LED,OUTPUT);
  40. lcd.init();
  41. lcd.setBacklight(HIGH);
  42. lcd.setCursor(0,0);
  43. //lcd.print("********************");
  44. lcd.print(" Welcome ");
  45. lcd.setCursor(0,1);
  46. lcd.print(" To ");
  47. lcd.setCursor(0,2);
  48. lcd.print(" Smart ");
  49. lcd.setCursor(0,3);
  50. lcd.print(" Agriculture System ");
  51. delay(2000);
  52.  
  53. }
  54. void loop()
  55. {
  56. Blynk.run();
  57. // *****************Moisture Control code.********************************************
  58. int val = analogRead(A0);
  59. String message; // Initializing message
  60. //syntax:- map(value, fromLow, fromHigh, toLow, toHigh)
  61. val = map(val, 1023, 180, 0, 100);
  62. Serial.print("Soil Moisture");
  63. Serial.println(abs(val));
  64. // lcd.clear();
  65. lcd.setCursor(0,1);
  66. lcd.print("Soil moisture: ");
  67. lcd.setCursor(15,1);
  68. lcd.print(String(abs(val)));
  69. lcd.setCursor(17,1);
  70. lcd.print("% ");
  71. //delay(100);
  72.  
  73. //************************Start pump on auto mode*****************************************
  74.  
  75. if ((abs(val) <= MosLowLimit)&& (automatic == 1))
  76. {
  77. digitalWrite(12, HIGH);
  78. Serial.println("Pump is On");
  79. lcd.setCursor(0,2);
  80. lcd.print("Pump is On ");
  81. }
  82.  
  83. //******************************Stop pump on auto mode*************************************
  84. else if((abs(val)>= MosHighLimit) && (automatic == 1))
  85. {
  86. digitalWrite(12, LOW);
  87. Serial.println("Pump is Off");
  88. lcd.setCursor(0,2);
  89. lcd.print("Pump is Off ");
  90. }
  91.  
  92.  
  93. //*****************Temperature And Humidity read and Display*********************************
  94.  
  95. // Reading temperature or humidity takes about 250 milliseconds!
  96. // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  97. int h = dht.readHumidity();
  98. int t = dht.readTemperature();
  99. Blynk.virtualWrite(V5, int (h));
  100. Blynk.virtualWrite(V6, int (t));
  101. // check if returns are valid, if they are NaN (not a number) then something went wrong!
  102.  
  103. if (isnan(t) || isnan(h))
  104. {
  105. Serial.println("Failed to read from Temp And Humid Senser");
  106. lcd.setCursor(0,0);
  107. lcd.print("Check the Connection");
  108. }
  109. else
  110. {
  111. lcd.setCursor(0,0);
  112. lcd.print("Hum:");
  113. lcd.setCursor(4,0);
  114. lcd.print(int(h));
  115. lcd.setCursor(6,0);
  116. lcd.print("% ");
  117. lcd.setCursor(9,0);
  118. lcd.print("Tem: ");
  119. lcd.setCursor(13,0);
  120. lcd.print(t);
  121. lcd.setCursor(15,0);
  122. lcd.print("*C ");
  123. }
  124. //*******************temperature controlled fan inauto mode ************
  125.  
  126. if((t > TempLimit)&& (automatic == 1))
  127. {
  128. digitalWrite(15, HIGH);//start cooling
  129. Serial.println("***Cooling On***");
  130. lcd.setCursor(0,3);
  131. lcd.print("****Cooling On**** ");
  132. }
  133. else if ((t < TempLimit)&& (automatic == 1))
  134. {
  135. digitalWrite(15, LOW);
  136. Serial.println("***Cooling Off***");
  137. lcd.setCursor(0,3);
  138. lcd.print("****Cooling Off**** ");
  139. }
  140.  
  141. //*****************LCD update in Manual mode*****************************
  142.  
  143. if(automatic == 0) //system is in manual update
  144. {
  145. if(digitalRead(12) == HIGH) //check pump is on
  146. {
  147. Serial.println("Pump is On");
  148. lcd.setCursor(0,2);
  149. lcd.print("Pump is On ");
  150. }
  151. else if(digitalRead(12) == LOW) // check pump is off
  152. {
  153. Serial.println("Pump is Off");
  154. lcd.setCursor(0,2);
  155. lcd.print("Pump is Off ");
  156. }
  157.  
  158. if(digitalRead(15) == HIGH) // check fan is ON
  159. {
  160. Serial.println("***Cooling On***");
  161. lcd.setCursor(0,3);
  162. lcd.print("****Cooling On**** ");
  163. }
  164. else if(digitalRead(15) == LOW) // check fan is Off
  165. {
  166. Serial.println("***Cooling Off***");
  167. lcd.setCursor(0,3);
  168. lcd.print("****Cooling Off**** ");
  169. }
  170. }
  171. }
Add Comment
Please, Sign In to add comment