Die Lösung erfordert einen benutzerdefinierten Webserver

Wasserstandsüberwachung im Brunnen - Probieren Sie es HIER online!


Mit der Wasserstandsüberwachung können Sie:
  • Erfassen Sie den Wasserstand von der Deckelebene. Die untere Entfernung kann bis zu 4 Meter betragen.
  • Durch Berechnung kann der Wasserstand von unten und das Volumen in Litern bei einer bekannten Bohrlochbreite (Radius) bestimmt werden. Basierend auf der Höhe kann es in Metern oder Zentimetern dargestellt werden.
  • Die gemessenen Daten werden an eine MySQL-Datenbank gesendet, die sie mit einem Zeitstempel archiviert.
  • Die Daten werden in einer Echtzeit-Tabelle dargestellt, die über AJAX aktualisiert wird, ohne dass Echtzeitauffrischung in Graphen dargestellt wird. Die neuesten Daten in den Diagrammen werden nach der Aktualisierung angezeigt.
  • Diagramme zeigen den Verlauf der Wasserhöhe für: letzte 2 Stunden, letzte 24 Stunden, letzte 7 Tage, 30 Tage.
  • Datenbankdaten werden nach mehr als 60 Tagen automatisch gelöscht.
  • Das System enthält auch Alarmdarstellungen für den letzten Wert, den maximalen und den minimalen Wert in 24 Stunden, 7 Tagen und 30 Tagen.
  • Gebrauchte Hardware:
  • Arduino Uno/MegaArduino Uno R3
  • Ethernet shield W5100Ethernet Shield Wiznet W5100
  • oder Ethernet-Modul W5500Ethernet Module Wiznet W5500
  • Ultraschall-Abstandssensor - HC-SR04HC SR 04
  • Das System kann für zusätzliche Messungen sowie für andere Entfernungen verwendet werden, wie z. B. Schneehöhe, Objektentfernung usw.
  • Kann auch auf ESP8266, ESP32, Raspberry, Micro: bit usw. angewendet werden.
  •   
  • Bei Arduine werden Daten über Ethernet über das HTTP-Protokoll gesendet. Mit ESP-Karten ist es auch möglich, eine verschlüsselte HTTPS-Verbindung zum Senden von Daten herzustellen.
  •   
  • Die Fähigkeit, IoT über Sigfox zu implementieren.
  •    System-Screenshots:
    HC-SR04 lib: Github

    Arduino + Ethernet Wiznet W5100

    #include <avr\wdt.h>
    #include <SPI.h>
    #include <Ethernet.h>
    #include <NewPing.h>
    #define pinTrigger    3
    #define pinEcho       4
    #define maxVzdialenost 450
    NewPing sonar(pinTrigger, pinEcho, maxVzdialenost);
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    char server[] = "www.arduino.php5.sk";
    IPAddress ip(192, 168, 1, 101);
    EthernetClient client;
    void setup() {
      Serial.begin(9600);
      if (Ethernet.begin(mac) == 0) {
        Serial.println("Failed to configure Ethernet using DHCP");
        Ethernet.begin(mac, ip);
      }
      wdt_enable(WDTO_8S);
    }
    
    void loop() {
      wdt_reset();
      int vzdialenost = sonar.ping_cm();
      delay(50);
      if (vzdialenost > 0) {
        vzdialenost = 0;
        for (int i = 0; i < 5; i++) {
          vzdialenost += sonar.ping_cm();
          delay(50);
        }
        vzdialenost = vzdialenost / 5;
        Serial.print("Vzdialenost medzi senzorom a predmetom je: ");
        Serial.print(vzdialenost);
        Serial.println(" cm.");
        if (client.connect(server, 80)) {
          String hodnota = String(vzdialenost);
          Serial.println("Pripojenie uspesne na webserver, vykonavam request... ");
          client.print("GET /studna/data.php?hodnota=");
          client.print(hodnota);
          client.println(" HTTP/1.1");
          client.println("Host: www.arduino.php5.sk");
          client.println("Connection: close");
          client.println();
          Serial.println("Data uspesne odoslane na web");
          client.stop();
        } else {
          Serial.println("Pripojenie zlyhalo...");
        }
      }
      else {
        Serial.println("Vzdialenost medzi predmetom a senzorom je mimo rozsah.");
        wdt_reset();
        delay(500);
      }
      for (int i = 0; i <= 300; i++) {
        delay(1000);
        wdt_reset();
      }
    }
    

    ESP8266:

    #include <ESP8266WiFi.h>
    #include <NewPing.h>
    #define pinTrigger    5 //D1
    #define pinEcho       4 //D2
    #define maxVzdialenost 450
    NewPing sonar(pinTrigger, pinEcho, maxVzdialenost);
    
    
    const char * ssid = "wifi_meno"; //meno wifi siete
    const char * password = "wifi_heslo"; //heslo na wifi siet
    const char * host = "www.arduino.php5.sk"; //bez https a bez www
    
    const int httpPort = 80;
    WiFiClient client;
    void setup() {
      Serial.begin(115200);
      WiFi.begin(ssid, password); //pripoj sa na wifi siet s heslom
      while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.print(".");
      }
      Serial.println("");
      Serial.println("Wifi pripojene s IP:");
      Serial.println(WiFi.localIP());
    }
    
    void loop() {
      if (WiFi.status() != WL_CONNECTED) {
        WiFi.begin(ssid, password); //pripoj sa na wifi siet s heslom
      }
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      int vzdialenost = sonar.ping_cm();
      delay(50);
      if (vzdialenost > 0) {
        vzdialenost = 0;
        for (int i = 0; i < 5; i++) {
          vzdialenost += sonar.ping_cm();
          delay(50);
        }
        vzdialenost = vzdialenost / 5;
        Serial.print("Vzdialenost medzi senzorom a predmetom je: ");
        Serial.print(vzdialenost);
        Serial.println(" cm.");
        if (client.connect(host, httpPort)) {
          String hodnota = String(vzdialenost);
          Serial.println("Pripojenie uspesne na webserver, vykonavam request... ");
          String url = "/studna/data.php?hodnota=" + hodnota;
          client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "User-Agent: NodeMCU\r\n" + "Connection: close\r\n\r\n");
          Serial.println("Hodnoty do databazy uspesne odoslane");
          client.stop();
        } else {
          Serial.println("Pripojenie zlyhalo...");
        }
      }
      else {
        Serial.println("Vzdialenost medzi predmetom a senzorom je mimo rozsah.");
        delay(500);
      }
      for (int i = 0; i <= 300; i++) {
        delay(1000);
      }
    }
    

    ESP32

    #include <WiFi.h>
    #include <NewPing.h>
    #define pinTrigger    5 //D1
    #define pinEcho       4 //D2
    #define maxVzdialenost 450
    NewPing sonar(pinTrigger, pinEcho, maxVzdialenost);
    
    
    const char * ssid = "wifi_meno"; //meno wifi siete
    const char * password = "wifi_heslo"; //heslo na wifi siet
    const char * host = "www.arduino.php5.sk"; //bez https a bez www
    
    const int httpPort = 80;
    WiFiClient client;
    void setup() {
      Serial.begin(115200);
      WiFi.begin(ssid, password); //pripoj sa na wifi siet s heslom
      while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.print(".");
      }
      Serial.println("");
      Serial.println("Wifi pripojene s IP:");
      Serial.println(WiFi.localIP());
    }
    
    void loop() {
      if (WiFi.status() != WL_CONNECTED) {
        WiFi.begin(ssid, password); //pripoj sa na wifi siet s heslom
      }
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      int vzdialenost = sonar.ping_cm();
      delay(50);
      if (vzdialenost > 0) {
        vzdialenost = 0;
        for (int i = 0; i < 5; i++) {
          vzdialenost += sonar.ping_cm();
          delay(50);
        }
        vzdialenost = vzdialenost / 5;
        Serial.print("Vzdialenost medzi senzorom a predmetom je: ");
        Serial.print(vzdialenost);
        Serial.println(" cm.");
        if (client.connect(host, httpPort)) {
          String hodnota = String(vzdialenost);
          Serial.println("Pripojenie uspesne na webserver, vykonavam request... ");
          String url = "/studna/data.php?hodnota=" + hodnota;
          client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "User-Agent: NodeMCU\r\n" + "Connection: close\r\n\r\n");
          Serial.println("Hodnoty do databazy uspesne odoslane");
          client.stop();
        } else {
          Serial.println("Pripojenie zlyhalo...");
        }
      }
      else {
        Serial.println("Vzdialenost medzi predmetom a senzorom je mimo rozsah.");
        delay(500);
      }
      for (int i = 0; i <= 300; i++) {
        delay(1000);
      }
    }
    

    GSM:

    #include <GSM.h<
    #include <NewPing.h<
    #define pinTrigger    3
    #define pinEcho       4
    #define maxVzdialenost 450
    NewPing sonar(pinTrigger, pinEcho, maxVzdialenost);
    // PIN Number
    #define PINNUMBER ""
    
    // APN data
    #define GPRS_APN       "GPRS_APN" // replace your GPRS APN
    #define GPRS_LOGIN     "login"    // replace with your GPRS login
    #define GPRS_PASSWORD  "password" // replace with your GPRS password
    
    GSMClient client;
    GPRS gprs;
    GSM gsmAccess;
    char server[] = "www.arduino.php5.sk";
    int port = 80; // port 80 is the default for HTTP
    
    void setup() {
      // initialize serial communications and wait for port to open:
      Serial.begin(9600);
      Serial.println("Starting Arduino web client.");
    
      boolean notConnected = true;
    
      // After starting the modem with GSM.begin()
      // attach the shield to the GPRS network with the APN, login and password
      while (notConnected) {
        if ((gsmAccess.begin(PINNUMBER) == GSM_READY) &
            (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
          notConnected = false;
        } else {
          Serial.println("Not connected");
          delay(1000);
        }
      }
    }
    
    void loop() {
      int vzdialenost = sonar.ping_cm();
      delay(50);
      if (vzdialenost > 0) {
        vzdialenost = 0;
        for (int i = 0; i < 5; i++) {
          vzdialenost += sonar.ping_cm();
          delay(50);
        }
        vzdialenost = vzdialenost / 5;
        Serial.print("Vzdialenost medzi senzorom a predmetom je: ");
        Serial.print(vzdialenost);
        Serial.println(" cm.");
      if (client.connect(server, 80)) {
        String hodnota = String(vzdialenost);
        Serial.println("Pripojenie uspesne na webserver, vykonavam request... ");
        client.print("GET /studna/data.php?hodnota=");
        client.print(hodnota);
        client.println(" HTTP/1.1");
        client.println("Host: www.arduino.php5.sk");
        client.println("Connection: close");
        client.println();
        Serial.println("Data uspesne odoslane na web");
        client.stop();
      } else {
        Serial.println("Pripojenie zlyhalo...");
      }
    }