Skip to content

Repository files navigation

Overseer

An Arduino Flood Detection System Robotics Project.

"Better safe than sorry..."


Table of Contents

Content
Overseer
Table of Contents
What Types of Problems is it Built to Solve
How Does it Work, in a Hardware Perspective
Flood Types
What is the Documented Workflow During the Development of this Project?
What Possible Design Improvements are in-Store in the Future?
Project Design Image Examples
Project Deployment Image Examples
Arduino Parts Used
Miscellaneous Materials Used
Software Tools Used
Project Software API
Buzzer
Connections
FloodDetectionSystemApplication
FloodLevels
HCSR04UltrasonicDistanceCalculator
HCSR04UltrasonicDistanceSensor
LightEmittingDiode
LiquidCrystalDisplay
Utilities
Team Members
Organizations
Additional References

What Types of Problems is it Built to Solve?

  1. To notify the public of nearby incoming floods within their vicinity.
  2. To reduce the number of human flood-watchers in favor of omnipresent, disposable devices.
  3. To provide additional situational awareness of the state of various bodies of water to mitigate further property damage.

How Does it Work, in a Hardware Perspective?

  1. The HCSR04 Ultrasonic Distance Sensor receives analog data and sends it to the Arduino Board.
  2. The data is converted into the human-readable distance (in inches).
  3. If the distance is above 12 inches, the Liquid Crystal Display (LCD) displays a “Safe” status, including the distance itself.
  4. If the distance is 12 inches or less, the Liquid Crystal Display (LCD) displays a “Warning” status, including the distance itself.
  5. If the “Warning” status has been displayed for 5 seconds continuously, the Liquid Crystal Display (LCD) will now display a “Danger” status; the Arduino Board will also emit both the Red Light-Emitting Diode (LED) and - Buzzer, indicating a detected flood.
  6. If the current status resets to “Safe” the Red Light-Emitting Diode (LED) and Buzzer will stop emitting their respective outputs.

Flood Types

These include every documented flood types used to classify different distance ranges.

Image Name Distance (In Inches) Description
Flood Status Example Image Safe distance > 12in No flood detected
Flood Status Example Image Warning distance <= 12in A possible flood detected
Flood Status Example Image Danger distance <= 12in Flood detected

What is the Documented Workflow During the Development of this Project?

These include a chronological order of every documented actions of every phase during the development of the project, from start to finish.

  1. (4 Weeks before deployment) - The entire team brainstormed for a project idea and committed to the project design based on that idea.
  2. (4 Weeks before deployment) - Due to a lack of practical experience during the project development, it had been decided to learn all the necessary skills on the job.
  3. (3 Weeks before deployment) - The Arduino hardware system was developed, tested, emulated, and finalized.
  4. (3 Weeks before deployment) - The Arduino software was developed, tested, and finalized.
  5. (2 Weeks before deployment) - The 3d physical model of the project was developed and finalized.
  6. (1 Week before deployment) - The needed materials to develop the physical model of the project were purchased and gathered. At least 1,000 Philippine Pesos were spent (excluding Arduino parts provided by the project instructor, Sir Michael Anthony Jay B. Regis).
  7. (1 Week before deployment) - The 3d physical model was implemented, tested, and finalized its hardware systems.
  8. (1 Week before deployment) - The infographic illustration of the project had been designed and finalized.
  9. (During deployment) - The project was complete, displayed in the Visayas State University Robotics Booth, and pitched to the public.

What Possible Design Improvements are in-Store in the Future?

Name Description
An Official, Adaptable, Waterproof Design To increase the life span of Overseer devices by possible years and help them better survive various environments.
Mobile App Integration To extend the range of notifications outside the limitations of a single town but through any subscribed listening electronic devices across the globe.
Solar Energy Systems To provide each Overseer device with its power source and to reduce energy costs to manage each device.
Trigger-Middleman-Client System To prevent false alarms from occurring through a human mediator before declaring a flood alarm towards listening subscribers.

Project Design Image Examples

Image Name
3rd Party Concept Design Image A real-world, flood detection system device.
Personal 2d Concept Design Image A 2d concept design of the project, including its hardware systems.
3rd Party Concept Design Image A deprecated 3d model of the project.

Project Deployment Image Examples

Image Name
Final Product Design Image 1 An overhead photo of the project including all intact Arduino parts.
Final Product Design Image 2 A top-front photo of the project.
Final Product Design Image 3 A front-facing photo of the project, exposing its Liquid Crystal Display (LCD), Red Light-Emitting Diode (LED) and Buzzer.
Final Product Design Image 4 An under photo of the project, exposing its HCSR04 Ultrasonic Distance Sensor.

Arduino Parts Used

These include every documented Arduino part used to build the physical design of the project.

Image Quantity Name Description
Arduino UNO Board Image 1x Arduino UNO Board Manages the processes of the Arduino project and its various connected Arduino parts.
Arduino USB Cable Image 1x Arduino USB Cable Connects a power source to the Arduino UNO Board and sends Arduino programs from a computer to the Arduino Board.
Arduino Buzzer Image 1x Arduino Buzzer Generates a sound whenever the flood status is set to "Danger".
Arduino HCSR04 Ultrasonic Distance Sensor Image 1x Arduino HCSR04 Ultrasonic Distance Sensor Receives analog data between the sensor itself from a solid or liquid surface.
Arduino Red Light Emitting Diode Image 1x Arduino Red Light-Emitting Diode (LED) Generates red lighting whenever the flood status is set to "Danger".
Arduino 16x1 Liquid Crystal Display Image 1x Arduino 16x1 Liquid Crystal Display (LCD) Displays the distance (in inches) and the current flood status.

Miscellaneous Materials Used

These include every documented miscellaneous materials used to build the physical design of the project.

Quantity Name
1x Black, Non-permanent Marker
1x Electric Tape
1x Electric Drill
1x Glue Gun
1x Glue Stick
1x Laptop
1x Plastic Cutter
1x 16x8x8 inch Plastic Box
1x Rapoo S2002 20,000 mAh Power Bank
1x 12-inch Ruler

Software Tools Used

These include every documented software tools used to build each respective field of the project.

Image Name Purpose
Arduino Logo Arduino IDE Arduino Software Development
Canva.com Logo Canva.com Illustration Design
Diagrams.net Logo Diagrams.net UML Class Design, 3d Physical Model Design
Arduino Logo Git Version Control System
Arduino Logo GitHub.com Git Project Repository Host
Arduino Logo Krita Photo Editing
Arduino Logo Microsoft Word Note Taking
Arduino Logo Visual Studio Code Arduino Software Development, Documentation Editor
Arduino Logo Wokwi.com Arduino Hardware Emulator

Project Software API

An Object-oriented programming approach to software development has been implemented in order to anticipate multiple uses of similar Arduino parts.

Buzzer

Return Type Method Name
Buzzer(byte pinNumber, unsigned short toneInHertz, unsigned long durationInMilliseconds)
Buzzer(byte pinNumber, unsigned short toneInHertz)
Buzzer(byte pinNumber)
byte getPinNumber()
bool getCurrentState()
unsigned short getToneInHertz()
unsigned long getDurationInMilliseconds()
void turnOn()
void turnOn(unsigned short toneInHertz)
void turnOff()
void blink()
void blink(unsigned short toneInHertz)
void blink(unsigned short toneInHertz, unsigned long durationInMilliseconds)

Connections

Return Type Method Name
Connections(unsigned int serialBandwidth)
unsigned int getSerialBandwidth()

FloodDetectionSystemApplication

Type Name Attribute Name
const Utilities utilities
const unsigned int SERIAL_BANDWIDTH
const Connections connections
const byte MEASUREMENT_IN_INCHES
const unsigned int SAFE_LEVEL_TOLERANCE_IN_INCHES
const HCSR04UltrasonicDistanceCalculator hcsr04UltrasonicDistanceCalculator
unsigned int currentNotWithinSafeDistanceCount
unsigned int maximumNotWithinSafeDistanceCount
const byte HCSR04_ULTRASONIC_DISTANCE_SENSOR_TRIGGER_PIN
const byte HCSR04_ULTRASONIC_DISTANCE_SENSOR_ECHO_PIN
const HCSR04UltrasonicDistanceSensor hcsr04UltrasonicDistanceSensor
const FloodLevels floodLevels
const byte DANGER_LEVEL
const byte PENDING_LEVEL
const byte SAFE_LEVEL
const byte FIRST_LIGHT_EMITTING_DIODE_PIN
const unsigned long OUTPUT_REFRESH_DELAY_IN_MILLISECONDS
const LightEmittingDiode LightEmittingDiodes[1]
const byte FIRST_BUZZER_PIN
const unsigned short BUZZER_TONE_IN_HERTZ
const Buzzer Buzzers[1]
const byte COMMAND_OR_DATA_SELECT_PIN
const byte ENABLE_PIN
const byte PARALLEL_DATA_4_PIN
const byte PARALLEL_DATA_5_PIN
const byte PARALLEL_DATA_6_PIN
const byte PARALLEL_DATA_7_PIN
const byte ROW_COUNT
const byte COLUMN_COUNT
const LiquidCrystalDisplay liquidCrystalDisplay
unsigned long lcdTimestampInMilliseconds
const unsigned long LOOP_DELAY_IN_MILLISECONDS
unsigned long loopTimestampInMilliseconds
unsigned int savedDistance
Type Name Method Name
bool hasCrossedTheSafeDistanceThreshold(unsigned int distance)
bool isDistanceWithinPendingLevel(unsigned int distance)
bool isDistanceWithinDangerLevel(unsigned int distance)
unsigned int getHcsr04UltrasonicDistanceSensorDistance()
byte getCurrentFloodLevel(unsigned int distance)
void triggerLightEmittingDiodesAndBuzzers(unsigned int distance)
bool hasLoopDelayBeenReached(unsigned long newTimestampInMilliseconds, unsigned int oldTimestampInMilliseconds)
bool hasOutputRefreshDelayBeenReached(unsigned long newTimestampInMilliseconds, unsigned int oldTimestampInMilliseconds)
unsigned int handleCurrentNotWithinSafeDistanceCount(unsigned long currentTimeSinceArduinoInitializationInMilliseconds, unsigned int distance)
void displayDistanceToLCD(unsigned int distance)
void runFloodDetectionSystemApplication()

FloodLevels

Return Type Method Name
char* getLevelName(byte index)
int getLevelNameSize(byte index)

HCSR04UltrasonicDistanceCalculator

Return Type Method Name
HCSR04UltrasonicDistanceCalculator(unsigned int maximumDistance, byte measurementIndex)
HCSR04UltrasonicDistanceCalculator(unsigned int maximumDistance)
HCSR04UltrasonicDistanceCalculator(byte measurementIndex)
unsigned int getIntegerConversion(unsigned int analogInput)
unsigned int getMaximumDistance()
byte getMeasurementIndex()
char *getMeasurementName()
int getMeasurementNameSize()

HCSR04UltrasonicDistanceSensor

Return Type Method Name
HCSR04UltrasonicDistanceSensor(byte triggerPinNumber, byte echoPinNumber, unsigned int receptionDelayInMicroseconds)
HCSR04UltrasonicDistanceSensor(byte triggerPinNumber, byte echoPinNumber)
unsigned int getReceptionDelayInMicroseconds()
byte getTriggerPinNumber()
byte getEchoPinNumber()
unsigned int getAnalogInput()

LightEmittingDiode

Return Type Method Name
LightEmittingDiode(byte pinNumber)
LightEmittingDiode(byte pinNumber, unsigned long durationInMilliseconds)
byte getPinNumber()
bool getCurrentState()
unsigned long getDurationInMilliseconds()
void turnOn()
void turnOff()
void blink()
void blink(unsigned long durationInMilliseconds)

LiquidCrystalDisplay

Return Type Method Name
LiquidCrystalDisplay(byte commandOrDataSelectPin, byte enablePin, byte parallelData4Pin, byte parallelData5Pin, byte parallelData6Pin, byte parallelData7Pin, byte maximumCellRows, byte maximumCellColumns)
byte getCommandOrDataSelectPin()
byte getEnablePin()
byte getParallelData4Pin()
byte getParallelData5Pin()
byte getParallelData6Pin()
byte getParallelData7Pin()
byte getMaximumCellRows()
byte getMaximumCellColumns()
byte getCurrentCustomCharacterCount()
byte getMaximumCustomCharacterCount()
void displayTextAtCoordinates(char text[], byte rowDisplayCoordinate, byte columnDisplayCoordinate)
void displayTextAtCoordinates(char text[], byte columnDisplayCoordinate)
void clearDisplay(byte cellRowIndex, byte startingCellColumnIndex, byte endingCellColumnIndex)
void clearDisplay(byte cellRowIndex, byte startingCellColumnIndex)
void clearDisplay(bool condition)
void clearDisplay()
void addCustomCharacter(byte customCharacter[])

Utilities

Return Type Method Name
unsigned int getDigitSum(int number)

Team Members

These include every documented memeber involved during the development of this project.

Name Contributions Hyperlink(s)
Elgin Ray Isaac Espanto Project Adviser Facebook, GitHub, Gmail
John Rhuel Laurente Craftsman Facebook
Juvilyn Pillatura Manuales Prototype Developer Facebook
Kyle Anthony Nierras Project Adviser Facebook
Mariella Passamonte Project Adviser Facebook
Michael Anthony Jay B. Regis Project Instructor, Arduino Hardware Supplier Facebook
Rogelio Suazo Herbolingo Prototype Developer Facebook
Vaughn Cedric Lipardo Araneta Documentation Writer, Fundraiser, Hardware Prototype Developer, Infographic Illustrator, Pitcher, Software Developer Facebook, GitHub, Gmail

Organizations

These include every documented organization involved during the development of this project.

Icon Name Hyperlink(s)
Visayas State University - Main Branch Logo Visayas State University - Main Branch Facebook, Homepage
Visayas State University - College of Engineering and Technology Logo Visayas State University - College of Engineering and Technology Facebook, Homepage
Visayas State University - Robotics Organization Logo Visayas State University - Robotics Organization Facebook

Additional References

Releases

Packages

Used by

Contributors

Languages