Differences

This shows you the differences between two versions of the page.

Link to this comparison view

iothings:proiecte:2021:flood-detection [2022/01/27 23:41]
alexandru.ionascu
iothings:proiecte:2021:flood-detection [2022/01/28 08:41] (current)
alexandru.ionascu
Line 1: Line 1:
 ==== Flood Detecton System ​ ====  ==== Flood Detecton System ​ ==== 
 <​sub>​Alexandru Ionascu - AAC 2021</​sub>​ \\ <​sub>​Alexandru Ionascu - AAC 2021</​sub>​ \\
 +<​sub>​[[https://​youtu.be/​t9QbCft8HMM | [Project Video]]]</​sub>​
  
 === 1. Project Objective === === 1. Project Objective ===
Line 7: Line 8:
  
 === 2. Project Description === === 2. Project Description ===
-#TODO+The system consists in two main components: **ESP32 board** and **HC-SR04 ultrasonic sensor**. \\  
 +  ***ESP32** is the main component and has the following roles:  
 +    * to establish Wi-Fi connection that will allow to perform HTTP requests; 
 +    * to send POST requests to the Pushover API to trigger push notifications;​ 
 +    * to determine the distance to the floor based on received input from the ultrasonic sensor; \\  
 +  ***HC-SR04** serves as the proximity sensor and has the following roles: \\ 
 +    * to provide informations about the distance to the floor; ​
  
 === 3. Hardware Description === === 3. Hardware Description ===
Line 26: Line 33:
  
 === 4. Software Description === === 4. Software Description ===
-#TODO+ 
 +The code consists of two main functions: **setup** and **loop**. In the setup function, we will set the echo and trigger pins and we will connect to the local Wi-Fi network to perform further HTTP requests. Once the connection is established,​ in the loop function, we will measure the distance to the floor in centimeters by sending ulstrasonic impulses and if this is less than 2 centimeters,​ we will perform a POST request to the Pushover API. There will also be a 2s delay between requests to make avoid unnecessary push notifications. 
 + 
 +The source code is listed below: 
 + 
 +<file cpp main.cc>​ 
 +#include <​WiFi.h>​ 
 +#include <​HTTPClient.h>​ 
 + 
 +#define SOUND_SPEED 0.034 
 +#define CM_TO_INCH 0.393701 
 +#define DISTANCE 2.0 
 + 
 +#define PUSHOVER_URL "​https://​api.pushover.net/​1/​messages.json"​ 
 + 
 +const int trigPin = 5; 
 +const int echoPin = 18; 
 + 
 +const char* ssid = "​********";​ 
 +const char* password = "​********";​ 
 + 
 +long duration; 
 +float distanceCm;​ 
 + 
 +void setup() { 
 +    Serial.begin(115200);​ 
 + 
 +    pinMode(trigPin,​ OUTPUT); 
 +    pinMode(echoPin,​ INPUT); 
 + 
 +    WiFi.begin(ssid,​ password);​ 
 + 
 +    while (WiFi.status() != WL_CONNECTED) { 
 +        delay(1000);​ 
 +        Serial.println("​Connecting to WiFi..."​);​ 
 +    } 
 + 
 +    Serial.println("​Connected to the WiFi network"​);​ 
 +
 + 
 +void loop() { 
 +    if ((WiFi.status() == WL_CONNECTED)) { 
 +        digitalWrite(trigPin,​ LOW); 
 +        delayMicroseconds(2);​ 
 + 
 +        digitalWrite(trigPin,​ HIGH); 
 +        delayMicroseconds(10);​ 
 +        digitalWrite(trigPin,​ LOW); 
 + 
 +        // Reads the echoPin, returns the sound wave travel time in microseconds 
 +        duration = pulseIn(echoPin,​ HIGH); 
 + 
 +        // Calculate the distance 
 +        distanceCm = (duration * SOUND_SPEED) / 2; 
 + 
 +        if (distanceCm < DISTANCE) { 
 +            HTTPClient http; 
 +     
 +            http.begin(PUSHOVER_URL);​ 
 +            http.addHeader("​Content-Type",​ "​application/​x-www-form-urlencoded"​);​ 
 + 
 +            String form = "​device=device&​user=********&​title=IoT - ESP32&​message=Flood!!&​token=********";​ 
 + 
 +            int httpCode = http.POST(form);​ 
 +     
 +            if (httpCode > 0) { 
 +                String payload = http.getString();​ 
 + 
 +                Serial.println(httpCode);​ 
 +                Serial.println(payload);​ 
 +            } 
 + 
 +            http.end();​ 
 + 
 +            delay(2000);​ 
 +        } else { 
 +            Serial.println("​Error on HTTP request"​);​ 
 +        } 
 +    } 
 +
 + 
 +</​file>​
  
 === 5. Issues and Solutions === === 5. Issues and Solutions ===
-#TODO+This project had some initial issues with getting the source code up on the board, but for some reasons it got fixed once we switched from MacOS to Linux.
  
 +Another problem would be testing this application in a real life case scenario because it won't be that easy to simulate flood home.
  
-=== 6.Conclusions ​=== +=== 6. Resources and Documentation ​===
-#TODO+
  
 +[[https://​techtutorialsx.com/​2017/​04/​24/​esp32-connecting-to-a-wifi-network/​ | ESP32: Connecting to a WiFi network ]] \\
 +[[https://​techtutorialsx.com/​2017/​05/​20/​esp32-http-post-requests | ESP32: HTTP POST Requests ]] \\
 +[[https://​randomnerdtutorials.com/​esp32-hc-sr04-ultrasonic-arduino | ESP32 with HC-SR04 Ultrasonic Sensor with Arduino IDE ]] \\
  
iothings/proiecte/2021/flood-detection.1643319718.txt.gz · Last modified: 2022/01/27 23:41 by alexandru.ionascu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0