Este es un proyecto realizado en la formación de Saregune “Programación en lenguajes estructurados, sistemas embebidos con Arduino y Javascript Avanzado”. Se llama “Baserri Berdea” y en resumen es un sistema de monitorización remota a través de una aplicación web del estado de humedad de la tierra.
Materiales
- 1 Protoboard
- 1 Placa WEMOS D1 mini ESP32
- 1 Sensor de Humedad de suelo
El circuito
Vídeo explicativo
El código
#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
const char* ssid = ""; // Nombre de la red WiFi
const char* password = ""; // Contraseña de la red WiFi
int sensorPin = 36;
int sensorControlPin = 18;
WebServer server(80); //establecemos la placa como un servidor
void setup() {
Serial.begin(115200);//inicializamos el puerto serial
// Conexión a red Wi-Fi
WiFi.begin(ssid, password); //con el WiFi.begin establecemos la conexión con el wifi
//con esto se nos muestra una comprobación mientras que el wifi no este conectado
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando a red Wi-Fi...");
}
// Configuración del servidor web
server.on("/", handleRoot); //iniciamos el server con el void handleRoot
server.begin();
Serial.println("Servidor web iniciado");
Serial.println("WiFi conectado");
Serial.println("Dirección IP: ");
Serial.println(WiFi.localIP());
pinMode(sensorPin, INPUT); //establecemos el sensor de humedad como INPUT
pinMode(sensorControlPin, OUTPUT); //con este controlamos de manera digital el encendido u apagado del sensor
}
// Función para generar la página web
void handleRoot() {
// Leer el valor del sensor de humedad
int sensorHValue = analogRead(sensorPin);
float humedad = map(sensorHValue, 4095, 0, 0, 100);
Serial.println(humedad);
if (server.arg("encender") == "Encender") {
Serial.println("Se recibió la solicitud de encender");
// Encender el sensor
digitalWrite(sensorControlPin, HIGH);
} else if (server.arg("apagar") == "Apagar") {
Serial.println("Se recibió la solicitud de apagar");
// Apagar el sensor
digitalWrite(sensorControlPin, LOW);
}
// Generar página de la dirección IP y los datos del sensor
String webpage = "<!DOCTYPE html>";
webpage += "<html>";
webpage += "<head>";
webpage += "<title>Sistema de Riego - Saregune</title>";
webpage += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
webpage += "<meta http-equiv='refresh' content='10'>";
webpage += "<style>";
webpage += "body {";
webpage += " font-family: Arial, Helvetica, sans-serif;";
webpage += " margin: 0;";
webpage += "}";
webpage += ".header {";
webpage += " background-color: #44C55A;";
webpage += " text-align: center;";
webpage += " padding: 20px;";
webpage += " color: #ECFEEF;";
webpage += "}";
webpage += ".content {";
webpage += " padding: 20px;";
webpage += " text-align: center;";
webpage += "}";
webpage += "button {";
webpage += " background-color: #4CAF50;";
webpage += " color: white;";
webpage += " padding: 14px 20px;";
webpage += " margin: 8px 0;";
webpage += " border: none;";
webpage += " border-radius: 4px;";
webpage += " cursor: pointer;";
webpage += "}";
webpage += "button:hover {";
webpage += " background-color: #45a049;";
webpage += "}";
webpage += "@media screen and (max-width: 600px) {";
webpage += " .header, .content {";
webpage += " padding: 10px;";
webpage += " }";
webpage += "}";
webpage += "</style>";
webpage += "</head>";
webpage += "<body>";
webpage += "<div class='header'>";
webpage += " <h1>Sistema de Riego Arduino Mini D1 ESP32</h1>";
webpage += "</div>";
webpage += "<div class='content'>";
if (digitalRead(sensorControlPin) == HIGH) {
webpage += " <p>Humedad: " + String(humedad) + "%</p>";
} else if (digitalRead(sensorControlPin) == LOW) {
webpage += " <p> sensor apagado</p>";
}
webpage += " <form>";
webpage += " <button type='submit' name='encender' value='Encender'>Encender</button>";
webpage += " <button type='submit' name='apagar' value='Apagar'>Apagar</button>";
webpage += " </form>";
webpage += "</div>";
webpage += "</body>";
webpage += "</html>";
// Enviar página al cliente
server.send(200, "text/html", webpage);
}
void loop() {
server.handleClient(); //llamo handleClient para inicializar la pagina del servidor haciendo uso de la libreria <WebServer.h>
delay(100);
}
A continuación tenéis los links de los demás proyectos:
Safe Zone – Sistema de seguridad
