Flood warning app (IoT) – Έξυπνο σύστημα προειδοποίησης πλημμύρας

Flood warning app (IoT) – Έξυπνο σύστημα προειδοποίησης πλημμύρας

1. Η ιδέας μας 

Η προτεινόμενη λύση βασίζεται στη χρήση τεχνολογιών Internet of Things (IoT) και αφορά τη δημιουργία ενός ολοκληρωμένου συστήματος παρακολούθησης της στάθμης του νερού και έγκαιρης προειδοποίησης πλημμυρών σε αστικό περιβάλλον. Aποτελείται από μια πλακέτα ESP32-S3-DevKitC-1  και έναν ultra sonic sensor που θα τροφοδοτείται από μια επαναφορτιζόμενες μπαταρίες λιθίου 3.6v σε την κατάλληλη μπαταριοθήκη. Ο κώδικας θα είναι γραμμένος σε γλώσσα προγραμματισμού Arduino. Χρησιμοποιώντας τις κατάλληλες εξισώσεις  η κατασκευή μας θα αντιλαμβάνεται το υψόμετρο της στάθμης του νερού καθώς και τον ρυθμό αύξησης ή  μείωσης της στάθμης και στην συνέχεια  θα  καταγράφει αυτές τις μετρήσεις και θα τις επεξεργάζεται ώστε να καθορίζει την επικινδυνότητα για πλημμυρικά γεγονότα σε τρεις κατηγορίες (πράσινο – ασφαλές, κίτρινο – μέτριος κίνδυνος, κόκκινο  -μεγάλος κίνδυνος).

Η κατασκευή μας θα είναι προσαρμοσμένη σε πλαστική θήκη κατάλληλα σχεδιασμένη που θα μπορεί να προσαρμοστεί σε μια πλαστική σωλήνα διαμέτρου φ50mm και μήκους 150cm με τα συστήματα στήριξης.

Τα δεδομένα από τις μετρήσεις της κατασκευής μας θα μεταφέρονται μέσω wifi σε μια εφαρμογή app-android που θα έχουμε αναπτύξει ώστε ο χρήστης της θα μπορεί σε άμεσο χρόνο να λαμβάνει την πληροφορία για το επίπεδο επικινδυνότητας για πλημμυρικά γεγονότα

Η βασική ιδέα

2. Η μεθοδολογία που ακολουθήσαμε

Η μεθοδολογία που ακολουθήσαμε για να επιλύσουμε το πρόβλημα ήταν η Επίλυση Προβλήματος σύμφωνα με το παρακάτω σχεδιάγραμμα:

Μεθοδολογία Επίλυσης Προβλήματος

3. Σχεδιασμός της ιδέας μας 

Στην συνέχεια σχεδιάσαμε στο Tinkercad την κατασκευή μας. Η κατασκευή μας θα αποτελείται:

  1. το πάνω μέρος από έναν κύλινδρο Φ 67mm και ύψους 46mm,
  2. ενώ το κάνω μέρος από έναν κύλινδρο Φ 61mm (για να μπορεί να κλείνει με το πάνω μέρος ) και ύψους 80mm

Κάτω & Πάνω μέρος της κατασκευής ,

Επίσης θα υπάρχει και σύστημα στήριξης (κολώνες και βάση) για να γίνουν οι απαραίτητες δοκιμές. Το σύστημα στήριξης θα αποτελείται από :

  1. δυο κολώνες με βάση 20mm X 10mm και ύψος 140,30mm
  2. βάση 100mm X 111mm και ύψος 3mm
Κολόνες & βάση στήριξης

Τα μέρη της ιδέας μας τα εκτυπώσαμε σε 3D εκτυπωτή με νήμα PETG 1.75mm

Τα βασικά μέρη της κατασκευής μας εκτυπωμένα σε 3D εκτυπωτή

Εδώ μπορείς να δεις το αρχείο Tinkercad για το κάτω μέρος της κατασκευής μας

Εδώ μπορείς να δεις το αρχείο Tinkercad για το πάνω μέρος της κατασκευής μας

Εδώ μπορείς να δεις το αρχείο Tinkercad για τις κολώνες της βάσης στήριξης της κατασκευής μας

Εδώ μπορείς να δεις το αρχείο Tinkercad την βάση στήριξης της κατασκευής μας

 

4. Τα απαιτούμενα υλικά για την κατασκευή μας είναι:

ΥΛΙΚΑ ΤΕΜΑΧΙΑ ΚΟΣΤΟΣ/ΤΕΜ. ΚΟΣΤΟΣ(ευρώ)
1 ESP32-S3-DevKitC-1 1 24,80 24,80
2 Αισθητήρας Υπερήχων 2 – 450cm HY-SRF05 1 3,60 3,60
3 Πλακέτα Δοκιμών 400 Οπές – Διαφανής 1 2,20 2,20
4 Μπαταριοθήκη 1×18650 – με Καλώδια & Διακόπτη 1 1,20 1,20
5 Επαναφορτιζόμενες Μπαταρίας Λιθίου NCR18650B 3350mAh 1 7,60 7,60
7 Νήμα PETG 1.75mm Devil – Γκρι 1kg 1 22,00 22,00
ΣΥΝΟΛΟ 61,40

 

5. Η συνδεσμολογία της ιδέας μας

Συνδεσμολογία του Flood Warning App
Συνδεσμολογία της κατασκευής μας

 

Τοποθέτηση της συνδεσμολογία στην κατασκευής μας

6. Δημιουργία  web server με την χρήση  γλώσσα προγραμματισμού python

Τα δεδομένα που θα καταγράφουν οι αισθητήρες (ultra sonic) θα μεταφέρονται μέσω wifi και με την βοήθεια ενός web server που θα έχουμε δημιουργήσει (σε γλώσσα προγραμματισμού python) στο app των χρηστών. Ο κώδικας για το web server είναι:

from http.server import HTTPServer, BaseHTTPRequestHandler
import json

sensor_data = {
“distance”: None}

    class MyHandler(BaseHTTPRequestHandler):

    def do_POST(self):
    content_length = int(self.headers[“Content-Length”])
    body = self.rfile.read(content_length)
    data = json.loads(body)

    # παίρνουμε τη μέτρηση από το ESP32
    sensor_data[“distance”] = data[“distance”]

    self.send_response(200)
    self.end_headers()
    self.wfile.write(b”OK”)

     def do_GET(self):
     self.send_response(200)
     self.send_header(“Content-type”, “application/json”)
     self.end_headers()
    self.wfile.write(json.dumps(sensor_data).encode())

server = HTTPServer((“0.0.0.0”, 8000), MyHandler)
print(“Server running on port 8000”)
server.serve_forever()

7. Κώδικας της κατασκευής μας σε γλώσσα προγραμματισμού arduino

#include <Arduino.h>
#include <WiFiMulti.h>
WiFiMulti wifiMulti;
#define BLYNK_FIRMWARE_VERSION “1.3.2”
#define BLYNK_PRINT Serial
//Κωδικοι και το app απο την εφαρμογη Blynk.Console
#define BLYNK_TEMPLATE_ID  “TMPL43ft3QvW1”
//Ονομα του app στην εφαρμογη Blynk.Console που εχω επιλεξει
#define BLYNK_TEMPLATE_NAME “SAVE CITY WATER”
//Κωδικοι απο το Device στην εφαρμογη Blynk.Console
#define BLYNK_AUTH_TOKEN “pOeDAP2THLngVAgF3GFQEHCRMbuFA7wd”
#define BLYNK_FIRMWARE_VERSION “0.1.0”
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
int Maxdistance = 19;

# ssid του wifi που θα χρησιμοποιήσεις

char ssid[] = “________”;
# pass του wifi που θα χρησιμοποιήσεις
char pass[] = “_________”;
int trigPin=14;
int echoPin=13;
int duration;
int distance;
int maxdistance=19;
int led_wifi=12;
bool isConnected = false;
void setup() {
  // put your setup code here, to run once:
pinMode(led_wifi, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(115200);
//WiFi.begin(WIFI_SSID, PASS_PASSWORD);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
Serial.println(“Starting”);
}
void loop() {
  // put your main code here, to run repeatedly:
  Blynk.run();
 digitalWrite(trigPin, LOW);
  delay(2);
  digitalWrite(trigPin, HIGH);
  delay(10);
  digitalWrite(trigPin, LOW);
  duration=pulseIn(echoPin, HIGH);
  distance = maxdistance -(duration*0.034/2); // απο τον τυπο της ταχυτητας U=S(αποσταση)/t(χρονος) αρα s=U*t (οπου u η ταχυτητα του ηχου 0.032 και t ειναι ο χρονος επιστροφης του υπερηχου – duration )
  Blynk.virtualWrite(V2, distance);
  delay(2000);
if (WiFi.status() == WL_CONNECTED ) {
  Serial.println(“Connected”);
  digitalWrite(led_wifi, HIGH);
  isConnected = true;
   }
if (WiFi.status() != WL_CONNECTED ) {
  Serial.println(“.”);
  digitalWrite(led_wifi, !digitalRead(led_wifi));
  isConnected = false;
  }
}

8.Δημιουργία της εφαρμογής (app) με την χρήση της εφαρμογής Blynk  

Τέλος χρησιμοποιώντας το την εφαρμογή Blynk δημιουργήσαμε την εφαρμογή(app_ android) μας Flood Warning App με το όνομα SAVE CITY WATER  στην οποία θα εμφανίζονται οι  μετρήσεις των αισθητήρων απόστασης (ultra sonic) της κατασκευής μας (από διάφορα σημεία της πόλης).Έτσι ώστε ο χρήστης της θα μπορεί σε άμεσο χρόνο να λαμβάνει την πληροφορία για το επίπεδο επικινδυνότητας για πλημμυρικά γεγονότα

Flood Warning App ” SAVE CITY WATER “

9. Παρουσιαση της ιδεας 

Στο παρακάτω video μπορείτε να παρακολουθήσετε τα βασικά μέρη της κατασκυές μας  και ενα video επίδειξης

Δες το video της κατασκευής μας