Skip to content

Smart Water Filter and Dispenser

Project brief description

Our project goal is to design and build a smart water filter and dispenser system, which is able to dispense drinking water to the user while keeping track of daily intake amounts. The device has some basic onboard calculating capability, such as a weight sensor, calculation of water amount from weight to volume, keeping track of records for different users, etc. The product will notify the user whether the daily goal has been reached via different visual displays.


The basic functionality of the product is established via the use of a weight sensor, an Arduino Uno board, as well as an AdaFruit touchscreen display. The input from the weight sensor is converted to mass and then converted to volume. Because of the limited number of pins on the Arduino board and the fact that the display and the sensor use conflicting pins, we decided to put in an additional layer of connectors between the display and the Arduino board. We then soldered additional wires to ensure the functionalities of both parts. We also made some custom wires to connect the sensors and the board.

The device is fixed inside a plastic box using rivets. THe box has a side opening for the power port and can be closed with a lid, allowing for easy transportation.


The code for this device was developed using C inside Arduino’s own compiler. It wasn’t too bad since we had familiarity with the language from various courses. However, we soon met some difficulties that are the result of the limited functionality of the board as well as the display, which proved trivial and annoying. We were able to solve these using mostly trial and error. An example would be drawing our user interface display, which was unnecessarily trivial because of how the display was based on a pixel and cursor format rather than what you’d usually expect on a computer monitor.

The device allows 5 profiles for different people, sufficient for most families. The daily goal is set to 3000 ml, which is typically enough for an adult. Upon initialization, the home screen will be displayed, where the user can either pick one of the 5 profiles or instead opt to reset the data. The user can easily do that every morning with one button click.

Once the user selects one of the profiles, he/she can put the empty vessel (i.e. a cup) on top of the weight sensor. After that, the user can select begin, and the weight sensor will begin to measure the difference in weight. The user can start to pour water into the vessel from a regular dispenser and the difference in weight will be read live. The reading will be converted to ml and displayed accordingly. Once the user is finished, he/she can click finish and the total amount will be displayed as well as a daily progress bar with both visuals and values (percentage reached). The user can choose to lift the cup during this process and the result will still be the same as long as the cup is stationary on top of the weight sensor at the end before the user clicks finish.

Once a user has reached his/her daily goal, a different message will be displayed congratulating the user. The username in the homework screen will also be in a different color with a full progress bar.

Takeaway – Expectation vs. Reality

Throughout this project, we realized that a commercial product may seem easy in concept, but in practice is very difficult to build.

In our original vision, we wanted to build a water dispenser that has all of the capabilities that we have incorporated while being able to dispense water the way other products on the market do.
We eventually realized that it would be relatively impractical to do all of that since we’re using amateur programming boards like Arduino and everything would be hard to put together – we would really need custom-built chips and displays as well as frames to achieve the same functionalities while minimizing the size of the product so everything can be put together nicely.

In the end, we have built a gadget that’s to be used alongside a water dispenser, rather than a dispenser itself. Nevertheless, the learning experience and the process have been very valuable to us.


*Because the WordPress server would not allow us to upload any images we have to use an external site: Imgur*

Picture labels:

  • Pic 1: Product inside frame
  • Pic 2: Homescreen
  • Pic 3: Sample result after water poured
  • Pic 4: Sample readings with progress bar and percentage
  • Pic 5: Sample homescreen after change
  • Pic 6: Sample homescreen with daily goal reached
  • Pic 7: Custom made wire
  • Pic 8: On board soldering using additional layer of connectors

Team Members

  • Zezheng Xu
  • Chenhao Zhao


  • Jack G. Mottley
  • Daniel Phinney

Return to the top of the page