SHOW:
|
|
- or go back to the newest paste.
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 | } |