Storm Glass - the Weather Forecasting Lamp That Simulates Real Weather Conditions!




About: Here on Modern Inventor I will show you how I take my inventions from idea to company. Follow along and you can invent things too. In the coming months I'll show you how to come up with ideas, make prototype...

Now you can take a little piece of the outdoors and place it on your nightstand. The Storm Glass actually recreates the weather conditions outside to give you a weather forecast for the day. It does this by checking the weather periodically online, and if it's a rainy day you can expect to see some rain falling in the Storm Glass Lamp. If it's partly cloudy you should see some clouds forming and some sunshine interspersed here and there.

This project was inspired by the open tempescope, but it was adapted for off-the-shelf parts. An added bonus is that it costs much less too.

The Storm Glass lamp is powered by a $10 Raspbery Pi Zero W micro-controller which has built in wifi to check the weather, and some IO pins that allow you to control the various parts. Ready to dive in? Here is what you need to get started:

All the parts run off of 5v so no power converters are required, and it conveniently can be controlled via the raspberry pi. In-all it shouldn't cost more than $80 in parts.


Step 1: Print the Parts

I designed a base where we can house the Raspberry Pi microcontroller as well as some speakers for sound. It also holds a microphone and the extra electronics that we put together for the motors to interface with the Raspberry Pi. (More on that later.)

We also have a bottom cap with the integrated supports to hold the speakers and electronics in place. It press fits into the bottom of the base, and it has an allowance for the power cord to route through.

The top cap press fits over the glass bottle. This part is critical as it contains all the holes for the water to flow out of to produce the rain effect. It also connects to the tube which brings the water up to the lid. It does need to be removable to fill it up with water as needed.

We also have the second glass cap that does quite a lot. It is the main body that houses the ultrasonic diffuser, the lights, a small water reservoir, the holes for the drainage and the rain tube, and on the bottom it interfaces with the pump. It also press fits into the body which allows you to assemble the glass and then press it all together without screws.

In total there are five printed parts. The two glass bottle lids, the base, the bottom cap and a small retaining ring that is used to hold the ultrasonic mister into place.

Step 2: Sanding and Finishing

For finishing I used a belt sander to remove all the 3D printed ridges from the parts. Then I gave them a finish sanding by hand. After a few coats of paint it really started to look great. Unfortunately, I sprayed an acrylic finish over it and for whatever reason it bubbled a lot so I ended up sanding some of it off. Either way I got my parts and I was happy enough with them so on to the next step!

Step 3: Connect Electronics

Don't let the wires fool ya. This really isn't as complicated as it looks. We have the raspberry pi with the IO pins. The speaker bonnet plugs right into those, and it conveniently has all the solder points on it for easy soldering of the other components.

The Neopixel LED ring was connected first. It requires a positive 5V as well as a ground connection and a signal connection that has to be connected to a PWM enabled pin. I used pin 13 because it uses a separate channel from the speaker bonnet. (More on this later.)

The LED neopixel lights are a lot of fun to work with. These lights can be programmed to display any color and animation you could imagine. They also put out a descent amount of light. Seriously, don't stare too long it kind of hurts.

Then you just place the LED ring and the diffuser into their corresponding places. Don't forget to cut a little piece of foam to act as a wick for the diffuser. (I just used some felt rod and shoved it into the little hole under the diffuser.) I also poured some hot glue on top of the LED ring to water proof it. I also used the heat gun to re-melt it and get the glue to flow better. Then I pressed the diffuser retaining ring into place.

It's not really good practice to connect things directly to a raspberry pi, but since it's just $10 I thought I would give it a try. From what I read connecting to the 5v DC and GND on the Zero is like connecting directly to the power supply. The Pi Zero does not have the same voltage regulation and protection that the others do. I calculated that the setup would pull about 2.5 amps so we are really running at the limits of the Raspberry Pi and the power supply.

With that said, the rain pump and cloud generator need to be controlled by one of the output General Purpose Input Output (GPIO) pins which only output 3.3V so we need to amplify that signal by using a transistor. I used a TIP 120 Power transistor to switch the higher 5V on and off. (Notice I used a 2.2K resistor on the base for each GPIO pins on the Raspberry Pi Zero.)

You definitely want a resistor here our you may draw too much current from the output pins permanently damage them. It's also probably a good idea to put a diode on the pump motor to eliminate any voltage spike from flowing back into the GPIO pins. I also had some problems with the ultrasonic driver board which sometimes caused some interference. I tried bridging the power leads to the board with a ceramic capacitor with great results. I admit I omitted the capacitor on the cloud generator and the diode for the pump in the final build, but I would recommend you at least consider adding them. Then again if something burns up it's just $10 bucks. I know, I know, sometimes I like to live on the edge.

The rain maker is a tiny 5v centrifuge pump I got online, which pumps water along some glass tubing and into the lid where the rain fall from. I simply used copious amounts of glue to hold it in place under the bottom cap which houses the water reservoir. I then soldered the leads to the motor to the +5 V on the speaker bonnet, and then the ground was soldered onto the small transistor board I put together. I kept getting small leaks so I just glued the whole motor on as well as the tubing that connects to the top.

The cloud generator is an USB powered ultrasonic diffuser/humidifier. I just pulled out the guts and got rid of the rest. Make sure to keep the electronics which create the ultrasonic signal which drives the diffuser. I connected the positive and negative on the ultrasonic driver board to the +5v on the speaker bonnet and the ground was soldered onto the small transistor board just like the rain pump as shown in the schematic. I then un-soldered the leads to the piezo transducer on the humidifier and used an older headphone wire to wire it up along with the Neopixel ring so that I had plenty of wire length to work with.

Then to keep things from shorting out I used some heat shrink tubing to encase the transistor and electronics as well as the ultrasonic driver PCB for the cloud generator.

Now pat yourself on that back that was the longest and hardest part of the build.

Step 4: Put It All Together

Here is where it all comes together. First there is a little prep work that we need to do. Harvest the water bottle glass. The water bottle is perfect for this project because it has a nice glass container where the weather can be housed. The caps just unscrew and you now have a nice glass container.

Now that we have the parts in order we can put it all together like so:

  1. Glue the bottom end cap onto the glass container (We assembled this in the previous step)
  2. Place the glass tube into the corresponding holes where the pump is connected
  3. Carefully line the top cap up with the tube and press fit it into place. (We still need to add water so don't glue it just yet)
  4. Connect the speakers and the USB microphone
  5. Feed the electronics through the base
  6. Press the glass tube into the base
  7. Carefully tuck in all the electronics and wires onto the bottom cap
  8. Press the bottom cap into place while making sure to run the power wire through the slot at the base
  9. Open the cap and fill it up with water then close the cap
  10. Go make yourself a delicious sandwich (you deserve it) and the excitement begins!

Step 5: Programming and More

I am not going to run you through how to install Raspbian on the Pi. There are already a number of tutorials for that. Like this one:

Once you are set up with the Raspbian you can write python scripts and run them. I won't go into the details here either since it is already well documented online.

Then it's time to write and run our script. You will need an API key from weather underground. You can get that here:

Once you have your API key add it to the appropriate place on the code that I have attached. You will also need to fill out your location as shown in the script.

This is a very basic script that just pulls the weather from weather underground. Then it runs the corresponding weather function to simulate the weather in the weather cube.

This is just a start. Truth is I am new to programming and this is my first attempt at anything like this. I used bits of code from here and there as well as my own custom functions. If you have a better way of doing this please let me know so I can post it and pass it on. Make your own custom animations and add more weather options. With the integrated speakers you could also eventually add effects like thunder clap when the lightning goes off etc.

I also have the Alexa digital assistant installed so I can connect to home automation or internet of things (IoT) devices. Check out my other instructable on how to do that.

Since it has bluetooth and wifi on board you could also connect to your smartphone, play music, or anything else you could imagine. Maybe once I get better at programming I can add this functionality and post it. For now we have a weather simulation lamp that is pretty cool in it's own right.

Step 6: Enjoy the Weather

If you've made it this far then it's time to enjoy the fruits of your labor. Sit back, put your feet up, and relax while you watch the sunset in the comfort of your own home!

Until you see it in person you simply won't get the full effect. The pictures really don't do it justice. Here are a sampling of various weather conditions:

Lightning Storm, Rain, Sunny, Partly Cloudy, Sunset, Sunrise, etc.

This thing is stunning, and I really enjoy watching it!

A few things I learned or that I would recommend:

  • Instead of running constantly I should have programmed it to run for 15 minutes each hour to tell me the current weather.
  • It may be good to add a tiny bit of alcohol or something to keep algae and other disgusting creatures from growing in the lamp.
  • It may be good to apply some rainx or something like it to the inside of the glass. It takes quite a while for fog and rain to clear from the glass.
  • For whatever reason I am unable to use the Alexa assistant when the weather is running. The assistant responds, but the sound it quite terrible. (I believe it is interference with the PWM for the LEDs even though I used a separate channel)
  • I would like to add snow, and I think I could use the double glass wall to incorporate a saturated crystal solution to do that. I will post it when/if I get it working.

If you like my project please consider voting for me in the lights contest!



    • IoT Challenge

      IoT Challenge
    • Gardening Contest

      Gardening Contest
    • Woodworking Contest

      Woodworking Contest

    44 Discussions


    1 year ago

    I have a question I'm trying to print out the parts but the effector base is giving me issues printing in which way did you orient the part to print?

    2 replies

    I just printed it up. I did use supports, and once the print was completed I just removed all the supports that I could.

    One more question for the ultrasonic disc did you use the board that came with the diffuser or is it running from the Raspberry?


    1 year ago

    "Here are a sampling of various weather conditions:

    Lightning Storm, Rain, Sunny, Partly Cloudy, Sunset, Sunrise, etc."

    Have you made a video of this? It would be awesome!


    1 year ago

    I am having difficulty finding an appropriate bottle. Too many choices. Please consider posting the dimensions and or part number. Is your bottle a tube? Open at both ends? Did you 3D print the inside threads?

    1 reply

    I added a link for you in the ible. I did not model the threads which is why I used a generous amount of hot glue. The top and bottom caps unscrew from the bottle.


    I added the links for the various parts. The glass bottle is just a double wall glass tea infuser. There are many options available but I just went with one that doesn't have a logo printed on it. Hope that helps!

    1 reply

    1 year ago

    Awesome project! Can u please add a parts list with links to buy each component, especially the bottle?


    1 reply
    cool austin

    1 year ago

    what plan did you choose for the api? and does it show sunrise/sunset or would i have to program that?


    1 year ago

    Nice! I'd been looking at doing something like this since I saw the original Tempescope project. Nice work.

    I was looking at using acrylic tube as the container, but I like the glass bottle idea. Any recommendations on a source?

    2 replies

    Just search tea infuser glass bottle in Amazon and this exact bottle should come up. Its cheap and it works great!

    andysc1The Modern Inventor

    Reply 1 year ago

    could you give a link to the actual bottle you bought, please, as this is going to be critical to fit with the 3D parts you've designed.

    Awesome job!!


    1 year ago

    Awesome project, will do it myself!

    What do you use for the Mini ultrasonic USB diffuser/humidifier? Could you pop a link down so I have a point of reference, cheers


    1 year ago

    Hey! This looks like an awesome project! I'm going to give it a try.

    Looking to get all the parts now - I'm wondering if this part all that is needed for the cloud generator: ? Does it need any extra driver? How can I figure out minimum required voltage?


    1 year ago

    This is such an awesome Project and i think i`ll make this too!

    Can you add some Light effects for starting up or red flashing light for no wifi connection and orange flashing light for no internet connection? that would be awesome! (you can also add more status lights if you want)

    You can also make the light spinning instead of flashing. Maybe it would look more smooth.


    1 year ago

    sr for my english

    i have a question. why you dont use arduino (nodemcu, esp8266...) ?
    I think it cost less than raspberry .
    Can you post a video about this project.

    2 replies

    Reply 1 year ago

    A Raspberry do have Wifi onboard and can handle the data better than the Arduino. Its also because of the sound i think...


    Reply 1 year ago

    Depends where you live. I can get an RPi Zero W for $10 here in the US at a store (Microcenter). Ordering an ESP8266 with shipping would be about the same.