Plant Monitor

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.");
  }
}

Sdílet článek

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Mohlo by se také líbit