Why am I excited about these boats?
I'm excited about these boats for a number of reasons! They are low-cost and open-source: so any interested person or NGO can purchase the parts, and put them together at an affordable cost! They are solar-powered and completely autonomous: so once they are launched they can be left alone! They require minimal maintenance: sensors will need to be recalibrated only yearly! They have a full complement of available sensors to monitor water-health: the only thing lacking are sensors to monitor bacteria in the water. They can provide real-time data corresponding to water-health, transmitted via cellular data networks, which can subsequently be shared on websites!
I would like to see these boats deployed by local people in their nearby lakes and reservoirs: perhaps to provide evidence that a suspicious factory really is altering the physicochemical properties of the water! The boats, for instance, could be programmed to 'hang out' near the factory outlets/runoffs! Another task I would like to see the boats undertake is a complete sampling of a river from source to sea: this might not be a task for which real-time monitoring via cellular networks is appropriate, but the boats can easily be adapted to log data and dock at assigned ports to physically off-load memory cards.
At present the robot pollution-detection boat has three systems:
- Autonomous navigation and collision-detection system
- Water-health sensor platform
- Propulsion and hull
1. - Autonomous Navigation and Collision-Detection System
This employs the arduino uno microcontroller, with a motor shield, and a GPS shield. For collision-detection an ultrasonic distance sensor is installed at the front of the boat. The motor shield drives a servo to control the rudder, and a motor to power the propeller
Outline of autopilot navigation
- Parse GPS’s output NMEA sentences with GPS.parse(GPS.lastNMEA()) to obtain GPS.latitude, GPS.longitude and GPS.angle
- Set current latitude and longitude e.g. currentlat = GPS.latitude currentlon = GPS.longitude
- Set the waypoint we want to reach next e.g. destlat for destination latitude, destlon for destination longitude
- Calculate distance from currentlat and currentlon to the destlat and destlon using haversine formula
- Calculate bearing/heading from currentlon to destlon (heading)
- Compare bearing/heading that was calculated with current bearing from gps (i.e. GPS.angle = currentheadingfromgps)
- currentheadingfromgps - heading value will inform us of how to turn the rudder e.g if going straight we can do myservo.write(90)
- Keep turning the rudder until currentheadingfromgps comes within 1 degree of heading, then stop turning
- Keep propeller going until distance to waypoint is <=0.5 metres, then stop propeller
- Remain at waypoint for desired length of time (1hr?) then repeat
Next we might want to employ the PID (proportional-integral-derivative) control method to keep the boat on a more accurate path to the waypoint; although I am dubious if it's really necessary for this project!
2. -Water-health sensor platform
This sensor platform which utilizes the arduino mega will contain sensors for water health, a GSM shield to transmit the data from sensors to a PC and ultimately the internet, and a solar panel for power
DISSOLVED OXYGEN (DO) SENSOR
-Why monitor DO?
Most polluted rivers suffer from low levels of dissolved oxygen. Dissolved oxygen in a river can vary from 0 to 18mg/L. It’s generally accepted that 4-5mg/L are required to support a healthy population of fish; anything below 3mg/L will not be enough to ensure survival of fish, and levels lower than 4mg/L will negatively impact fish reproduction. All species have their own particular DO requirments: worms and fly larvae and algae can for instance tolerate low DO, whilst larger fish may require > 6mg/L
Factors which affect levels of dissolved-oxygen
- Water temperature: higher temperatures will ‘push’ out the oxygen due to increased movement of water molecules [Note: polluted rivers...