-
Notifications
You must be signed in to change notification settings - Fork 0
/
lawn.ino
142 lines (102 loc) · 2.93 KB
/
lawn.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
\*KPRIET LAWN SPRINKLER PROJECT*
PROJECT DONE BY KPR INSTITUTE OF ENGINEERING AND TECHNOLOGY COLLEGE ECE 2024 BATCH STUDENTS*/
//import all required libraries
#include <SPI.h>
#include <WiFi.h> // esp32 library
#include <IOXhop_FirebaseESP32.h>
#include <Wire.h>
#define FIREBASE_HOST "https://lawn-kpriet-default-rtdb.firebaseio.com/" // the project name address from firebase id
#define FIREBASE_AUTH "6x7RgPvOSYQYIsIRnFBVxK4DLVgSEovx5OBd8vFh" // the secret key generated from firebase
#define WIFI_SSID "Speed 2G" // input your home or public wifi name
#define WIFI_PASSWORD "apple1234" //password of wifi ssid
String fireStatus = ""; // led status received from firebase
//Define FirebaseESP32 data object
int sensorValue;
int limit = 4000;
int rainSensor;
String rainStatus;
String Automatic; //auto control of fbdb
String Manual; //manual control of fbdb
void setup() {
Serial.begin(9600);
pinMode(5,OUTPUT);
pinMode(34,INPUT);
pinMode(33,INPUT);
digitalWrite(5,HIGH);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //try to connect with wifi
Serial.print("Connecting to ");
Serial.print(WIFI_SSID);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
}
Serial.println();
Serial.print("Connected to ");
Serial.println(WIFI_SSID);
Serial.print("IP Address is : ");
Serial.println(WiFi.localIP()); //print local IP address
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // connect to firebase
//send initial string of led status
}
void loop()
{
if(WiFi.status() != WL_CONNECTED) {
digitalWrite(5,HIGH);
}
else{
{
sensorValue = analogRead(34);
Serial.print("Moisture Value : ");
Serial.println(sensorValue);
delay(250);
rainSensor = analogRead(33);
Serial.print("Raining level : ");
Serial.println(rainSensor);
delay(250);
delay(250);
}
{
Automatic = Firebase.getString("/lawn/auto");
Serial.print("Automation : ");
Serial.println(Automatic);
Manual = Firebase.getString("/lawn/manual");
Serial.print("Manual Status : ");
Serial.println(Manual);
}
//check automatic or manual
if(Automatic=="1"){ //automatic on & manual off
if(rainSensor<500){ //check rain status
rainStatus = "No_Rain";
if(sensorValue>1800 ) //(sensorValue1>1500 | sensorValue2>1500)
{
digitalWrite(5,LOW);
}
else if(sensorValue<1500 )
{
digitalWrite(5,HIGH);
}
}
else //run if there is rain
{
digitalWrite(5,HIGH);
rainStatus = "Raining";
}
}
else if(Automatic=="0") //manual on & automatic off
{
if(Manual=="1") {
digitalWrite(5,LOW);
}
else if(Manual=="0") {
digitalWrite(5,HIGH);
}
}
{
Firebase.setInt("/lawn/moisture",sensorValue);
Firebase.setString("/lawn/rain",rainStatus);
}
}
}
//else{
// digitalWrite(5,HIGH);
// }
}