The Augmented Water device helps you save water by turning red after one Liter. The device, built by @tamberg during a water hackathon, is made from an Arduino, a flow sensor and coloured LED pixels.


https://www.flickr.com/photos/tamberg/14346321456/ (thanks kiilo)

In case you want to build your own, read on...



  • Soldering iron
  • Hot-glue gun
  • Saw

Step 1: Preparing and testing the Neopixel LEDs

If you use Neopixels by the meter, cut off a piece of ~7 pixels and solder jumper wires as follows:

  • Black wire to GND
  • Yellow wire to DI
  • Red wire to +5V

Take care to solder them to the right end of the strip. Compare the little arrows printed on the strip with the picture.

Read Adafruit's Neopixel best practices before connecting the pixels.

Download and install Adafruit's Neopixel Arduino library from


Open File > Examples > Adafruit_NeopPixel > strandtest

Change the number of pixels to fit your short strip.

Upload the code to make sure the pixels work.

(This code was the starting point of the hack.)

Step 2: Testing the flow sensor

(Image by Adafruit, CC BY-NC-SA)

Download the flow meter example code from


Connect the flow meter as indicated in the source code.

Rename .pde to .ino, open it and upload the code to the Arduino.

Testing works fine without water by blowing some air through the sensor.

Step 3: Connecting and testing the hardware

Download the Augmented Water source code from https://bitbucket.org/tamberg/waterhack/raw/tip/20...

(Re-)connect the hardware as indicated in the source code:

  • Red flow sensor wire to +5V
  • Red Neopixel wire to +3.3V
  • Black wires to common ground
  • Yellow flow sensor wire to pin #3
  • Yellow Neopixel wire to pin #2

Upload the code to the Arduino and test it.

Your lung volume is hopefully larger than 1 Liter.

Use the serial monitor of the Arduino IDE to see numbers.

(Note that the code is a simple mash-up of the previous examples.)

Step 4: Creating a tap adapter

Cut a 6 cm piece of the (green) tube.

And another 4.5 cm piece (for later).

Now cut off the tip of the lab test tube.

Then cut it again, to get a piece of about 2.5 cm.

Push the 6 cm tube into it and make sure it fits tight.

To make it water tight, add some hot-glue inside the joint.

Then add a lot more hot-glue to "rubberize" the adapter piece.

Test the adapter by closing one end of the tube and blowing air through it.

(Wait for the hot-glue to cool down before doing this. I didn't and hurt my lips.)

Step 5: Putting everything together

Attach the two (green) tubes to the flow sensor, with the adapter at the top.

Use zip ties to attach the Neopixel strip to the above assembly.

Make sure the wires are at the upper end (with the adapter).

Use an additional zip tie to hold the flow sensor wire.

Then mount the Arduino on top of all this.

The Arduino's upper side should point inwards.

Make sure the USB port remains accessible for updates.

(All pictures taken after assembly.)

Step 6: Using the Augmented Water device

Make sure the LiPo battery is fully loaded.

Connect the LiPo to the Arduino.

  • Black wire to GND
  • Red wire to VIN

Stow LiPo "inside" Arduino.

Attach the device to the tap.

Turn on the tap (not too hard).

After ca. 1 Liter, LEDs turn red.

Turn the tap off again.

Save water.

Thanks! @tamberg

<p>could you draw any power from the flow sensor? maybe this could eliminate the need for a battery. Combine this with a smaller board and you have a very compact water saving gadget</p>
Yes, using a motor / generator to power the Arduino and count &quot;1 Liter&quot; of uptime with millis() might work.
<p>awesome work..</p>
<p>Just for the record: there's a commercial product since at least 2011 called WaterPebble that does something similar in a way smaller package. See http://www.waterpebble.com/</p>
<p>The link does not open. Though found something at this address &ndash; http://waterpebbleus.com. Not sure if it's genuine water pebble.</p>
<p>and if i do not use the lipo battery i can use the 7v -12v adapter come with arduino ? </p>
<p>thanx thats a relief :)</p>
<p>hi i have couple of questions hope u can solve <br></p><ul> <br><li>Black wire to GND<li>Yellow wire to DI<li>Red wire to +5V the DI wire comming from where of arduino ? the digital Input any number ? 2ndly both yellow wires of sensor and led must in analog input of digital input of arduino :) </ul>
Hi, the first part (step 1) desrcibes how to solder the wires to the LED strip. Connecting to the Arduino is further below (step 3). Hope that helps. Kind regards, Thomas.
<p>thanx so much for your reply ! can u please clear the pin no 3 and pin no 2 would be the digital input or analog input in arduino ?? where should i connect ?? and what if i can use 7v arduino power adapter instead of lepo ?just make connections of sensor and LED to arduino , programme it and power it up with charger is that ok ??? </p>
<p>also please the code given in step 2 is connected with LCD AND SENSOR ONLY ISNT IT ?? </p>
<p>You're right. For clarification: Step 2 needs digital pin 2 only. Step 3 needs digital pin 2 and digital pin 3.</p>
<p>also please the code given in step 2 is connected with LCD AND SENSOR ONLY ISNT IT ?? </p>
<p>also please the code given in step 2 is connected with LCD AND SENSOR ONLY ISNT IT ?? </p>
Awesome idea! It would be awesome to see it used with an ATiny85 or an Arduino micro to shrinkify things a bit
Thanks! ATiny would be nice. Or even a simple counter circuit? I'd love to see an energy harvesting mod, e.g. inside an LED shower head...
<p>It would be even better if it worked on the heat of the water.</p>
<p>Definitely an interesting way to work on using behavior to solve a problem. Thanks for sharing this!</p>
Thank you!

About This Instructable


209 favorites


More by tamberg: IoT Gauge with Arduino, Yaler & IFTTT Log Arduino output for days with a BeagleBone Remote SSH access to Raspberry Pi 2
Add instructable to: