-
Notifications
You must be signed in to change notification settings - Fork 0
/
ESP32_Wifi_Soil_moisture_sensor
131 lines (105 loc) · 3.41 KB
/
ESP32_Wifi_Soil_moisture_sensor
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
/*********
* Based on Rui Santos tutorial, Complete project details at https://randomnerdtutorials.com
* Kaman Au, group projcet for DESN37900 Interactive Objects and Environments 2: Physical Computing
*********/
// Import required libraries
#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include "SPIFFS.h"
// Replace with your network credentials
const char* ssid = "ssid";
const char* password = "password";
// Set LED GPIO
const int ledPin = 2;
//Declared output26, output27
const int output26 = 26;
const int output27 = 27;
//sensor pin
const int potPin = 34;
// Stores LED state
String ledState;
String output26State = "off";
String output27State = "off";
// Function for reading
String readSoilHumidity(){
int potValue = analogRead(potPin);
int percent_value = map(potValue, 4095, 2047, 0, 500);
return String(percent_value);
};
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
void setup(){
// Serial port for debugging purposes
Serial.begin(115200);
//Blue LED on ESP32 and LED output for testing
pinMode(ledPin, OUTPUT);
pinMode(output26, OUTPUT);
pinMode(output27, OUTPUT);
// Initialize SPIFFS
if(!SPIFFS.begin(true)){
Serial.println("An Error has occurred while mounting SPIFFS");
return;
}
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
// Route for root / web page
server.on("/jquery-3.4.1.min.js", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/jquery-3.4.1.min.js","text/javascript");
});
server.on("/highcharts.js", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/highcharts.js","text/javascript");
});
//Testing for p5
//server.on("/p5.min.js", HTTP_GET, [](AsyncWebServerRequest *request){
// request->send(SPIFFS, "/p5.min.js","text/javascript");
//});
//server.on("/sketch.js", HTTP_GET, [](AsyncWebServerRequest *request){
// request->send(SPIFFS, "/sketch.js","text/javascript");
//});
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/index.html","text/html");
});
// Route to load style.css file
server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/style.css", "text/css");
});
// Route to set All LED to HIGH
server.on("/on", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(ledPin, HIGH);
digitalWrite(output26, HIGH);
output26State = "on";
digitalWrite(output27, HIGH);
output27State = "on";
Serial.println("Turning LEDs ON");
request->send(200, "text/plain", "ON");
});
// Route to set All LED to LOW
server.on("/off", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(ledPin, LOW);
digitalWrite(output26, LOW);
output26State = "off";
digitalWrite(output27, LOW);
output27State = "off";
request->send(200, "text/plain", "OFF");
});
// Get reading
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", readSoilHumidity().c_str());
});
// Start server
server.begin();
}
void loop(){
//Testing code
//potValue = analogRead(potPin);
//Serial.println(potValue);
//percentValue = map(potValue, 4095, 2047, 0, 500);
//Serial.print(percentValue);
//Serial.print("%");
}