Intro: Blüp: the Bubble Notifier
I've been looking for a softer, less abrupt notification system than a vibration, sound, or light based notice. I couldn't find anything that fit that criteria so I decided to make my own. Furthermore, I wanted my solution to incorporate my personal interests in clocks and the way we as a society think about time.
From that, Blüp, was born. I came up with the idea of using a bubble in a container of liquid to not only notify me of an event of my choosing, but to also use the time it takes for the bubble to rise to instill a sense of urgency in my response to the event. For example, if you were to receive a message from a boss or other important contact, the bubble would form and rise at a rate that would give you enough time to respond before it pops at the top.
I’ll try to simplify the steps as much as possible so you can replicate this project at home, but there is definitely some experimentation involved in getting it to work for you.
Step 1: Procure All the Supplies
All of the equipment and supplies I used are listed below. I tried to write ALL the necessary supplies, but may have missed a couple things.
-Nano Air S1 pump (http://www.amazon.com/Altum-Aquatic-Nano-Air-Pump/dp/B00LLZFFMQ)
-Clippard ET-2-6 normally closed, 6VDC electronic valve (http://www.clippard.com/part/ET-2-6)
-Adafruit Huzzah ESP8266 (https://www.adafruit.com/products/2471)
-FTDI Cable (https://www.adafruit.com/products/70)
-Solid State Relay (https://www.sparkfun.com/products/10636)
-TIP120 Transistor (http://www.adafruit.com/product/976)
-2x Panel Mount DC Barrel Jacks (http://www.adafruit.com/product/610)
-2x Terminal Block - 2pin (http://www.adafruit.com/products/724)
-2.2k ohm resistor (https://www.adafruit.com/products/2782)
-2 x barrel jack tips
-5VDC Power Adapter (https://www.adafruit.com/products/276)
-Glass VOSS Still Water Bottle
-3 x No 10-32 x 3/16" Hose Barb
-12" x 1/8" Diameter Round Brass Tube
-1/4 20 5/16" Brad Hole Tee Nut
-Wood for project enclosure
-Wood for tank base
-Clear or colored hand soap
Step 2: Prepare Water Tank
I struggled to purchase the glass VOSS water bottle as most locations around me (in NYC) only sold the smaller, plastic versions. I eventually found them at Fairway. I bought the still water version because the cap was flatter on the top than the sparkling water variation.
Begin your Blüp by scraping off the labeling using an Exacto blade. If you use the side of the blade instead of the tip, the process is easier. I’ve been told that you can use acetone as well but I wasn't sure if it would cloud the glass at all. Give it a try and let me know!
Pull out the tri-seal liner from the cap and drill a hole through the center for one of the hose barbs. You will need to compare your drill bit to the diameter of the hole as tubes vary in diameter. Place the hose barb through the hole and seal it in place with some silicone caulk. Then drill a 7/32" hole through the lid for the brass pressure relief tube.
We will be placing the tee nut through this hole to keep the tube straight so make sure to drill the hole in a place where you consider the spacing and room involved. On the inside of the cap, the tube needs to avoid the inside of the bottle, while on the outside of the lid, the tee needs to avoid the middle hose barb. I found that I needed to sand the tee down a bit in order to make it fit. Use adhesive to glue the tee nut in place through the opening and then glue the brass tube inside the nut. After it dries, seal all the openings with silicone.
Drill two more holes through the tri-seal liner that line up with the hose barb opening and tube. Again, you will have to approximate the hole size by comparing your drill bit diameter to those of the barb and tube.
Step 3: Set Up the Air Delivery System
The air that forms the bubble flows from the pump, to the valve, through the check valve, and finally out into the tank. To test the setup, screw in a hose barb to each side of the valve and connect a length of tube between all the components. Make sure to follow the direction of flow label on the valve and the check valve as they have specific air flow directions.
When we eventually place all the components in the project box, we will shorten the lengths of tubing but for now we can test everything with longer tubes.
Step 4: Build the Base
I built the base from pieces of 3/4" thick walnut. Cut 4 pieces at 3.25" x 3.25" and then draw a 2-11/16" diameter circle in the center of two of the pieces. Drill out a small hole in the middle of both pieces and then cut out as much of the circle as you can on a scroll saw. Next, glue the two hole pieces together and the two solid pieces together separately. Sand out the rest of the circle on an oscillating spindle sander. I did all of this because I didn't have the right hole saw bit but if you find one close to the right size as the VOSS cap, go for it!
After the hole is cut out and the cap fits inside well, glue the hole pieces together to the solid pieces. Drill a hole halfway down through the middle of the circle to fit the hose barb and then drill a hole in from the side so the tube can come out. Please note that these holes will need to meet to form an aesthetically pleasing hose pathway, so be sure to double check your measurements.
Step 5: Wire Together the Electronics
Begin by soldering the headers onto the HUZZAH board - two rows along the sides and one on the end for the FTDI cable. You can find assembly instructions here: https://learn.adafruit.com/adafruit-huzzah-esp826...
After that is all set, place the board into a half-sized breadboard so we can begin the wiring of the circuit. Although the valve is technically a 6VDC valve, it works with 5V, so that's the voltage I decided to use for the power adapter. Using a TIP120 transistor, wire the left pin (BASE) through a 2.2k ohm resistor and then to the GPIO pin 14. The middle pin (COLLECTOR) goes to the ground wire of the valve and the right pin (EMITTER) goes to ground pin of the DC barrel connector. Connect two more ground wires to the ground pin of the DC barrel connector - one to the ground pin on the HUZZAH and the other to the negative (-) pin on the relay on the control side. The hot pin of the DC barrel connector goes to the valve and the VBAT pin on the HUZZAH to power the board.
The relay is used for the AC pump and I decided to use a solid state relay because I wanted the project to be as quiet as possible. The positive (+) pin on the control side of the relay goes to GPIO pin 16. For the load side of the relay, one pin goes to the hot pin of the AC barrel connector and the other pin goes to the pump. The ground pin of the AC barrel connector goes directly to the pump.
That's it for the wiring! I did it first in a breadboard and then switched to a solderable board in order to try to make the board as small as possible. If you are going to put your circuits and components into a project box though, you can just keep it in the breadboard to keep it simple.
If any of that seemed confusing, be sure to check out my attached Fritzing diagram as pictures and schematics always help compared to text.
Step 6: Build the Electronics Enclosure
I built the electronics enclosure out of some scrap MDF I found in my shop but you can make it out of something nicer if you'd like. My box ended up being 8" x 5" x 3" tall. I drilled two holes in one side for the two panel mounted barrel connectors for the AC and DC power. Similar to before, you'll have to compare your drill bit size to the diameter of the barrel connectors, but I found them to be close to 15/32". After that, drill another set of holes for the tubing to pass through from the check valve to the tank.
Step 7: Set Up an Adafruit IO Feed
Set up an Adafruit IO account at https://io.adafruit.com if you haven’t done so already. This service is currently in beta so it may take a couple weeks for your account to be approved and given access. There are other services out there that can connect to your micro-controller like dweet.io and freeboard.io but Adafruit's is free, very simple to use, and easy to get started.
After you have created an account, login and get your Adafruit IO key.
Click on the little key icon on the right hand side of the window to retrieve the key.
A window will pop up with your key. Keep a copy of this in a safe place for later.
Next, create a new feed called “bubble”. Please note that the feed name is case sensitive. If you need help getting started with creating feeds on Adafruit IO, check out their helpful guide here: https://learn.adafruit.com/adafruit-io-basics-fee...
That’s it for the Adafruit IO, now we can set up IFTTT to talk to our feed.
Step 8: Set Up IFTTT Recipe
Sign up for an IFTTT account on ifttt.com. After setting up the profile, go to https://ifttt.com/adafruit in order to link your IFTTT account with your Adafruit account. When you click on the Connect button, it will take you to the Adafruit website where you can authorize the connection.
Now return to IFTTT and go to My Recipes at the top. For a test recipe, I added a "DO" button that allows you to have a button on your smartphone that you can push to create a bubble. We can always add other IFTTT recipes the same way we will create our button, but this was great for testing the connectivity of the recipe.
To create a DO button for our bubble notifier, click the DO tab at the top and then click the plus(+) sign to begin. Search for Adafruit in the filter and look for the recipe called "Turn on Power". Alternatively, you can click here: https://ifttt.com/recipes/317596-turn-on-power.
From there, select the feed name "Bubble" and click Add. After it adds the button to your recipes, you can change the recipe title from "Turn on Power" to something like "Bubble!". The process is the same for any other recipe you want to create. I added an IFTTT recipe that looks at my gmail and pushes a "1" value similar to the DO button to Adafruit whenever I receive an email.
Step 9: Prepare the Arduino IDE
I decided to use the HUZZAH ESP8266 instead of the CC3000 because it has GPIO pins that could be programmed directly instead of requiring an extra micro-controller. It’s also cheaper! The only issue with the ESP8266 is that it requires a FTDI cable to program. No problem though, the cable lights up when data is being transferred so you’ll feel special while using it.
We’ll be using the Arduino IDE to program the board but you can also use NodeMCU’s Lua interpreter if you prefer. You can follow this guide to get setup with Lua: https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-nodemcu-lua
Download the Arduino IDE from Arduino.cc (1.6.4 or greater) if you haven’t done so already: http://www.arduino.cc/en/Main/Software
To install the ESP8266 board package, click on preferences inside the Arduino IDE and enter http://arduino.esp8266.com/stable/package_esp8266com_index.json into the Additional Boards Manager URLs field. If you already have a URL in the field, you can click the button at the end of the line for even more URLs.
Now go to the Tools -> Boards menu and go to the Boards Manager.
Search for the esp8266 package and then click Install.
After you’ve restarted the program, select Adafruit HUZZAH ESP8266 from under the Tools -> Board menu.
Select 80MHz as the CPU Frequency and 115200 baud as the upload speed.
The last step to get setup is to install the Adafruit MQTT Library as we’ll need it for our sketch. The easiest way to install it is through the Library Manager in the Arduino IDE.
Go to Sketch -> Include Library -> Manage Libraries. From here, search for the Adafruit MQTT Library and install it.
After you restart the IDE again, we should be ready to begin programming.
Step 10: Program the HUZZAH Board
I've included the code I used to program the HUZZAH as an attached file below. A couple things to note:
-Make sure to add your WIFI SSID name and WIFI password for your location
-Add your Adafruit IO username and key
-Adjust your pin numbers to your valve and pump if you use different ones than the ones I specified.
Most of the code is from the Adafruit "digital out" example and I added some simple "if" statements to test which size bubble to emit. If you have any issues with the connection, you can check out their digital out tutorial here:
A couple of other things to note while programming and testing your HUZZAH. To send the code from the Arduino IDE to the board, you have to press and hold down the GPIO0 button and then, while still holding down that button, hold down the RESET button. Let go of the RESET button and then let go of the GPIO0 button. This will put the HUZZAH board into bootload mode and allow it to be programmed.
I found that you must remove the AC and DC power adapters while programming the board and only have the FTDI cable connected. Once the upload of the new software to the board is complete, you can remove the FTDI cable and replug in your adapters.
Step 11: Put It All Together
Start by soldering wire from the HUZZAH board to the AC and DC barrel jacks through the holes. After this, place the panel mount jacks into their holes and screw on the retaining nuts. From here, finish wiring up the rest of electronics to the HUZZAH board and place them inside the box. I had planned on velcroing in the pieces so they didn't move but found that with solid core wires and tight tolerances, nothing moved too much. After that, plug in the correct AC and DC adapters and test it out!
I hope you're able to find exciting ways to use this notification system and can't wait to see what ideas the community comes up with. Thanks for looking!
Runner Up in the