.08 Interactive Water Bottle [Meg Davis]


Persuasive health technology has been used to improve people’s health habits.  The Fogg Behavior Model (FBM) identifies three components of a person’s choice of behavior: motivation, ability, and triggers.  This interactive water bottle leverages the FBM concepts of ability and triggers in a self-contained and ubiquitous design.  The water bottle helps the user to set goals for water consumption and tracks the user’s progress towards these goals throughout the day.




  • Double-walled water bottle
  • Arduino Nano microcontroller
  • Magnetopot
  • Floater with magnet
  • 2 LED Drivers (HEF4794BP)
  • 16 Lilypad Bright White LEDs



Interface for Customization

This is a simple Java program that determines how many cups (in terms of the water bottle) the user needs to drink on a certain day.  It asks for the user’s weight, minutes of exercise, and number of alcoholic drinks for the day. This interface allows a novice user who has no idea how much water consumption is appropriate to use the water bottle.  The Java code communicates with the Arduino Nano inside the water bottle through a serial connection.


Water-level Measurement

The amount of water inside the water bottle was difficult to measure cheaply, reliably, and granularly.  All three approaches are described below:

Sensor Advantages Disadvantages
Force sensing resistor pad Easily applied to bottom of bottle container Not accurate enough
Ultrasonic distance measurement Reliable from top of bottle container Not a waterproof solution
Magnetopot Works outside of bottle with floater on the inside Floater and outside sensor rely on magnetic connection and sometimes become detached­­

A better approach to detecting the amount of water inside the water bottle would be to use capacitance water level sensing.  Since I did not get the Magnetopot reading the water level reliably, I did not get the software controlling the different sensors and LEDs working correctly.  As I post code, I will post the code that I used to test each sensor independently before trying to integrate them.  Here is the code testing the Magnetopot: _02

Progress to Goal Display

This display is composed of 16 Lilypad Bright White LEDs.  Lilypad LEDs were chosen because of their flatness and built-in resistors.  The LEDs are controlled through 2 LED drivers.

There are two main interactions that I thought about (but did not have the chance to implement).  Both last throughout the whole day:

  • Simple Progress View

In this view, all LEDs start unlit.  As the user drinks more water, each LED, starting with the one on the bottom, fades in to full brightness.  In this configuration, each LED represents a portion towards the goal.

The display is glanceable, and the user can see his progress throughout the day.  This display is also especially encouraging to the user, because it shows progress.  It does not emphasize what the user lacks.  Even if the user is only able to light up 5 LEDs today, he may be able to light up 6 tomorrow, and that is an improvement.

  • Game View

In this view, all LEDs start lit.  As time passes, each LED, starting with the one at the top, fades away to unlit.  The user must continue to drink water to keep all the LEDs lit up.  Every 5 minutes, the lowest LED that is lit will decrease in brightness.

This display encourages constant engagement with the water bottle.  It provides a playful reminder to keep drinking water throughout the whole day.

The LED array could form a new language around talking about health habits.  A healthy day could be referred to as “fully lit up.”  This allows people to talk about their health in a comfortable, non-intimidating way.

The code for testing the LED driver is here:_03

The code for testing the LED driver and also implementing PWM on an LED is here:_04

The code for testing two LED drivers and also implementing PWM on an LED is here:_05

Putting it together in one form

This prototype was made from a double-walled waterbottle.  A Dremel was used to cut the outside wall from the inside wall.  The MagnetoPot was attached to one exterior side of the inner bottle with a 3M adhesive, and the 16 LEDs were attached to the other exterior side with black electrical tape.  This allowed the electronics to be close to the water but for them to be completely isolated from the water.  The Arduino Nano and the LED drivers on protoboard sat underneath the inner bottle but contained by the outer bottle.  Because of this additional space at the bottom of the outer bottle, additional plastic at the top is needed when re-assembling the water bottle to ensure no holes in the water bottle.

I attempted to use Processing to simulate water level measurement to test my combined Arduino code that integrated all sensors.  The following code does not work but shows my attempt:_06 and _13_demoSimulationProcessing

The interactive water bottle shows how simple technology can be embedded in everyday ubiquitous objects in order to encourage people to live a healthier lifestyle.  A water bottle is something the user can carry around with them all the time.  Since the water bottle form is already infused with meaning, it serves as an augmented channel for reminding people to drink more water.

A paper describing more detail about the motivation of the project can be found here: waterbottlepaper


~ by megd on May 12, 2010.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: