Render of Bottle
Render of Bottle
Preliminary Circuit Designs
Initial circuit and proof of concept.
Screenshot of app main screen.
The final design.
Andrew enjoying a nice sip out of the bottle!
As college freshmen, we noticed that our team and many of our classmates often don't drink enough water throughout the day, and mostly because we forget to stay hydrated. Since most students own a water bottle, we thought of creating a water bottle modification that could detect how much water one drinks and both display it on the bottle and on an app in order to help people drink more water. Furthermore, the app would store the history of water consumption and give more analytics.
What it does
An ultrasonic sensor is mounted to the lid of the water bottle and measures the distance from the lid to the current water level. Therefore, based on the diameter of the water bottle, the change in water level associated with drinking water can be converted to a volume of water consumed. The ultrasonic sensor then communicates with an Arduino Nano, which then interfaces with the user through push buttons and an LCD screen. Furthermore, a bluetooth module relays data to a phone app, which computes more advanced statistics about water consumption and health based off user height and weight.
How we built it
We started by designing high-level goals for the project: it should measure water level, communicate with the phone, and display statistics. After that we began designing mounts and enclosures for the electronics and sensors, which were then modeled in Solidworks and 3D-printed. Additionally, we designed our necessary circuits in Fritzing, using and Arduino Nano, a HC-06 bluetooth module, a HC-SR04 ultrasonic sensor, a 9V battery, and a 16x2 LCD screen. The app was created in Android Studio, where we made three separate activities: a main screen, a settings menu, and a history screen. We coded firmware for the Arduino using the Arduino IDE to process values from the ultrasonic sensor, relay data to the phone, and to display data on the LCD.
Challenges we ran into
We had to make a ergonomic and compact design since we were constrained to mounting everything on a water bottle. That proved to be difficult when designing our circuits since we had to fit a large amount of sensors and functionality into small compartments. Furthermore, we had to figure out algorithms to differentiate between different user activities such as opening the water bottle, drinking, re-capping the bottle, or even filling the bottle up.
Accomplishments that we're proud of
We were able to produce a system that detected the amount of water consumed, and relay that information to a phone. Furthermore, it occupies a relatively small space and doesn't interfere with regular usage of the bottle.
What we learned
We learned that it is very important to consider space constraints when designing circuits. Furthermore, sensors can have inherent variability that we must account for. Lastly, we learned that CalHacks 6.0 was a lot of fun ;))
What's next for HydroHelper
We want to be able to compact our electronics more and perhaps use PCBs in order to reduce space taken up by breadboards. Furthermore, we could improve our mounts for our LCD and create sheaths for our wires.