Michal M.
V tomto projektu jsem použil modul ESP8266, DHT11 senzor a kapacitní senzor půdní vlhkosti k sledování teploty, vlhkosti vzduchu a vlhkosti půdy přes webovou stránku.
Jakmile zapnu ESP8266, připojí se k Wi-Fi a dostane statickou IP adresu http://192.168.0.123/. Senzor DHT11 mi poskytuje aktuální teplotu a vlhkost vzduchu, zatímco kapacitní senzor měří vlhkost půdy v procentech.
Webová stránka se automaticky aktualizují každou sekundu.
V kodu změnte nazev wifi na vaši a dalši řadek heslo od wifi
#include <ESP8266WiFi.h>
#include <DHT.h>
// Wi-Fi připojení
const char* ssid = "nezev WIFI";
const char* password = "heslo";
// Statická IP adresa
IPAddress localIP(192, 168, 0, 123);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);
// Nastavení pinů
const int sensorPin = A0; // vlhkosti půdy
const int dhtPin = D4; // DHT senzor
// Rozsah hodnot pro čidlo vlhkosti půdy
const int dryValue = 496; // Hodnota při suché půdě
const int wetValue = 177; // Hodnota při vlhké půdě
// Nastavení DHT senzoru
#define DHTTYPE DHT11 //(DHT11 nebo DHT22)
DHT dht(dhtPin, DHTTYPE);
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(1000);
// Wi-Fi
WiFi.config(localIP, gateway, subnet);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nWi-Fi připojeno!");
Serial.print("IP adresa: ");
Serial.println(WiFi.localIP());
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
//senzoru
dht.begin();
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
String request = client.readStringUntil('\r');
client.flush();
//vlhkosti půdy
int sensorValue = analogRead(sensorPin);
int moisturePercent = map(sensorValue, dryValue, wetValue, 0, 100);
moisturePercent = constrain(moisturePercent, 0, 100);
// Čtení teploty a vlhkosti vzduchu z DHT senzoru
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// HTML
String response = "HTTP/1.1 200 OK\r\n";
response += "Content-Type: text/html; charset=utf-8\r\n";
response += "Connection: close\r\n\r\n";
response += "<!DOCTYPE HTML>\r\n<html>\r\n";
response += "<meta charset=\"utf-8\">\r\n";
response += "<title>Senzor půdní vlhkosti</title>\r\n";
// Automatická aktualizace
response += "<script>setTimeout(function(){ location.reload(); }, 1000);</script>\r\n";
// pozadí
response += "<style>\r\n";
response += " body { background-color: #a0a0a0; color: #333; font-family: Arial, sans-serif; text-align: center; }\r\n";
response += " h1 { color: #333; }\r\n";
response += " p { font-size: 18px; }\r\n";
response += " .container { max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #ddd; border-radius: 10px; background-color: #e0e0e0; }\r\n";
response += " .cat { font-family: monospace; color: #555; margin-top: 10px; }\r\n";
response += "</style>\r\n";
response += "<div class=\"container\">\r\n";
response += "<h1>Senzory půdní vlhkosti a teploty</h1>\r\n";
response += "<div class=\"cat\">\r\n";
response += " /\\_/\\<br>";
response += " ( o.o )<br>";
response += " > ^ <\r\n";
response += "</div>\r\n";
response += "<p>Vlhkost půdy: " + String(moisturePercent) + "%</p>\r\n";
response += "<p>Teplota: " + String(temperature) + "°C</p>\r\n";
response += "<p>Vlhkost vzduchu: " + String(humidity) + "%</p>\r\n";
response += "</div>\r\n";
response += "</html>\r\n";
client.print(response);
delay(1);
client.stop();
Serial.println("odpojen.");
}
}