Water is deemed as one of the essentials for every creature in this world to survive. Living in developed countries, we are not really concerned about the safety of our own drinking water. Sufficient supply made us fall into a delusion that water is no longer a challenge mankind faces. In fact, worldwide, there are approximately 663 million (663,000,000) people without clean, safe water access. That is, 9.47% of the world population do not have clean, safe water access. Among this horrendous numbers, Africa alone has 332 million and Asia has 286 million. [Data Source: - Water Crisis]

Compromised water sources pose significant threats towards human life. An estimated 801,000 children younger than 5 years of age perish from diarrhea each year, mostly in developing countries. This amounts to 11% of the 7.6 million deaths of children under the age of five and means that about 2,200 children are dying every day as a result of diarrheal diseases. Unsafe drinking water, inadequate availability of water for hygiene, and lack of access to sanitation together contribute to about 88% of deaths from diarrheal diseases. Worldwide, millions of people are infected with neglected tropical diseases (NTDs), many of which are water and/or hygiene-related, such as Guinea Worm Disease, Buruli Ulcer, Trachoma, and Schistosomiasis. These diseases are most often found in places with unsafe drinking water, poor sanitation, and insufficient hygiene practices. [Ref: - Global WASH Fast Facts]

In the past decade, the international community as well as various NGOs joint effort in providing safe water access to people in Africa and Asia. The overall population in jeopardy has significantly reduced. While continuing such effort, it is also essential to have 21st century digital systems in place for people to get alarmed of potential risks at real time to prevent further harm.


The importance of having an access to safe drinking water is one of the most urgent problems we are facing as a species, yet it doesn't raise enough awareness as it deserves. The inspiration for our project was sparkled by one of our teammates' service trip to Africa. The sheer lack of clean drinking water there totally shocked her. What's even more concerning is how under-dressed this issue is, both in Africa and in everywhere else in this world. According to WHO's data, every year around 600,000 people died of diseases caused by contaminated drinking water. The access to safe water resources is crucial to a country's economic development and directly related to the health condition of millions. Acknowledged with these facts, we are trying to build a data-collecting platform that not only alerts people of unsafe drinking water resources but also raises awareness of the "water issue" around the world. Even further than that, other environmental issues like soil or air can and should also be addressed via this platform.

Current Features

Currently, Aquatopia has the following fully-functional features both from web platform server side and the Arduino side.

Web Platform Server

  1. Visualization of data from MySQL Database using Google Maps API and Marker Clusters;

  2. Automated SMS Alerts to areas experiencing sudden increase in factors such as Total Dissolvable Solid (TDS) value and pH value;

  3. Standardized API for official web clients, Arduino hardware module and third-party clients to transmit data from and to the remote server;

  4. Reverse Geocoding which allows the user to have a more intuitive understanding of the location. The built-in Google Maps Street View API also allows user to get to know the location better;

Arduino Hardware Module (AHM)

  1. Retrieve TDS value from Xiaomi TDS Sensor by monitoring the difference in voltage applied to the TDS Sensor externally;

  2. Retrieve essential surrounding information such as temperature, soil moisture, and humidity data;

  3. Retrieve GPS information and encode all information to JSON then initiate an HTTP request.

Available APIs

PUT /api/data/   // API for uploading environmental data by Arduino module
GET /api/data/   // API for fetching all environmental data from the server
POST /api/data/  // API for fetching environmental data in a specific area
PUT /api/phone/  // API for uploading phone numbers
GET /api/phone/  // API for fetching all phone numbers (for massive messages)
POST /api/phone/ // API for fetching phone numbers in a specific area

Technology Used

Web Platform Server


  1. Google Maps API - to visualize data on a Global Map instance with Marker Clusters

  2. HTML/CSS/JavaScript - general website appearance and control


  1. Django - implementation of APIs

  2. MySQL - to store data and exchange between web server and MySQL server

  3. Docker - to standardize the environment and encapsulate services

  4. Nginx - power the back-end

  5. Twilio Programmable SMS - send SMS alert to users in the vicinity if there is a sudden increase in key values such as TDS and pH value of water suddenly increases

Arduino Module

  1. Wi-Fi Shield - to initialize HTTP request from Arduino Module to remote web server

  2. Soil Moisture, Temperature, and Humidity Sensors - to capture surrounding data and directly communicate using Serial to Arduino

  3. TDS Sensor - to capture TDS data of a given liquid. Data is processed by Arduino by the difference with the voltage difference when probing in a given liquid

Challenges we ran into

  1. Unable to use the GSM Shield for Arduino after 6 hours of testing and exploration. This is because of a possible difference in GSM working frequency between the United States and China. [Temporary fix: using Wi-Fi shield instead to communicate with the server].

  2. Difficulties in setting up Twilio TwiML environment to process webhooks. To process receiving SMS Twilio requires a server to set up so that webhooks can be properly processed. [Due to the overall complexity of this task as well as cost, we currently reduced the priority of this feature.]

  3. Extracting data from TDS sensor is extremely hard that took over 5 hours to workaround. Since we are unable to find TDS Sensors that is directly compatible with Arduino without the need of constantly calibrating the sensor using a standardized calibration solution, we purchased a commercial-level TDS sensor from Xiaomi. It is extremely hard to get the Arduino to read the data. [Temporary fix: measure voltage of the LCD screen data pins. This fix can measure TDS successfully within 0-110 ppm but has a threshold value of >115 ppm. Any data beyond this value will be deemed not suitable for drink.]

Accomplishments we are proud of

  1. Fully-functional APIs to call for all clients and web. Users with environmental data sensors can contribute their data with our well-designed APIs. Besides, cellphone numbers of local residents can be uploaded via our APIs so local residents can receive alerts when undesirable environmental changes occur.

  2. Fully-functional alerting system to notify potential victims of water pollution and provide educating tips. with our alerting system, local residents near possibly-polluted natural resources (e.g., water resources, soil resources, etc.) can be notified in advance. Hence, great loss of life and money can be largely avoided.

  3. Visualization of all Data on Google Maps for Both Water and Soil Quality. The platform is designed to be extensible and compatible with a wild variety of environmental data with very little adjustment on the server-side. A soil quality version of the website can be accessed at

  4. Low-cost environmental data collection module. By using Arduino and some commercial-level sensors, we are proud to say that we have a low-cost but relatively reliable data collection module. The sample demo we have today with both water quality detection and soil detection has a total cost of under $50. With small modification and integration, it can easily be manufactured, further reducing the cost significantly by at least 80%.

Next big step for Aquatopia

Features to be added

Web Platform Server

  1. Add user authentication system to ensure fair use of the open platform. In order to prevent intentional sabotage and tampering with the platform, we will introduce a user system for log in/sign up. Such way can ensure the fair use of the platform and prevent publishing misleading information.

Arduino Hardware Module

  1. Using I2C Sockets to have more flexibility and compatibility when connecting various kinds of sensors. I2C Scanning within the Arduino enables an easy shift between sensors. Upon plugging in different sensors, the microprocessor can automatically detect and output corresponding data. It further extends its compatibility and extensibility.

Making a social impact

Aquatopia Hardware is designed to be targeting NGOs as well as households who care about the environment. By applying a low price or even free-to-give policy, we can establish intercontinental environmental data network for NGOs and other initiatives to appropriate their funds and attentions more wisely, efficiently, and effectively.

Aquatopia Platform is designed to be targeting civilians as well as research institutes who either want to get to know about their surrounding to keep them safe or want to research about the environment in a more macro perspective.


Copyright © 2017 Yiluo LI, Yuchong PAN, Shaolin ZHANG, Jixin ZHENG. All Rights Reserved.

This project is created at PennApps XV, a hackathon by the University of Pennsylvania in 2017.

Share this project: