Low Cost Weather Station

Wireless weather station, powered by the sun and wind it intends to measure, below $50.

Similar projects worth following
To solve any complex problem, collecting data is crucial. The environmental changes of today is no exception. Professional weather stations are rightfully used, but cannot be placed in every corner of the world. What if it was possible to make a cheap weather station, that almost everyone could afford? What if we together could help out with a piece of the puzzle, trying to solve problems ahead?

Let's look at the ideas I have:
- Entirely powered by wind and sun
- Everything open source (3d parts, PCB, code) so that people can add any sensor/functional parts they want
- Wireless communication using Bluetooth smart
- Super capacitor as power source

Possible within $50? Let's look at the most expensive components:
BL600 transceiver & µC: $ 13.3
Solar Cell 22mm X 35mm: $ 7.28
Super Capacitor 3F: $ 8.33
Total: $ 29

The vision I have, is to create a weather station that can be used by thousands of people around the world, all uploading data to a centralized site where trends can be monitored and can be viewed by everyone. In time, more cheap sensors can be developed, measuring for instance CO2 and oxygen levels. The price for commercial weather stations are most of the time several hundred dollars, and they require wired, or at best, battery power to work. A weather station is already exposed to different weather conditions, so why not use this to power it? You can place it anywhere and never need to change a battery. You can simply get close to it with your smartphone when you want to download the data or, if it's close enough to your home, continuously download it from a low-power and low-cost computer like the raspberry pi.

Besides collecting weather data, the weather station can be helpful determining the location of wind turbine and solar panels. Especially wind turbines are extremely dependent on where they are placed, and it is often difficult to know where there is turbulence in the air before actually measuring. To make your own small wind turbine can be as cheap as a few hundred dollars, and buying a weather station at the same price in not an option.

These are the goals that I have defined:

  • Wireless communication to some base station (e.g. Raspberry Pi)
  • Automatic data send, and local accumulation when there is no connection
  • Completely powered by the weather (sun and/or wind)
  • Should measure temperature, wind, sun to start with, but make way for expansions
  • Make everything open, including PCB layout and printable 3D parts (see github links)

I think this is a good time for a project like this, mainly for two reasons:

  1. Bluetooth smart is becoming popular, which allows very low power, and cheap transceivers including processors now exists.
  2. Super capacitors are becoming cheaper and larger (as an example, today you can find a 90 F capacitor for $ 15), which avoids using batteries. Even rechargeable batteries have quite short life time, and the charging process is more complex (e.g. trickle charging).

The shape I have in mind can be seen above. By using a rod as the base, additional sensor can be added easily, and simply be plugged in at the back of the solar cell. The transceiver and processor will be small enough to fit anywhere, but since the solar cell will be the primary power source, it will be placed directly under it. The temperature sensor should not be exposed to sun, and since the solar cell must be exposed, we know there will be shadow under it.

  • 1 × Push switch
  • 1 × Voltage Regulator XC6217
  • 2 × Resistor 1k
  • 1 × Resistor 2k Wind Vane
  • 1 × Resistor 4k Wind Vane

View all 26 components

  • Custom PCBs

    Ulf Winberg03/19/2017 at 12:05 0 comments

    Previously I had not received my custom PCBs and had to do with experimental boards. Now I have the boards, did some mandatory error fixes, and finally got it working!

    I found a few issues in the design on the way:

    1. I should have chosen through hole for the button, since they are more readily available and a lot cheaper. I simply bent the legs to solve it for now.
    2. VDD was by mistake not connected to the Communication Board header (I need it for the level shifter of the UART signals). Fixed with a small wire.
    3. Communication Board failed, since the Weather Station Board regulator was not powerful enough to power the MAX3218 chips. I ended up cutting some traces and adding an Adafruit level shifter in between.
    4. I should have used a micro USB connector for the 5 volts on the Communication Board, instead of pin header (what was I thinking?)

    All the parts were solderable with a regular soldering iron, except the BL600 Bluetooth transceiver. My first attempt was to use a heat gun from below. Didn't work very well... I placed some solder to see when it melted (see picture below), but even on the highest temperature of the gun, it didn't happen.

    Instead I borrowed a hot plate from work, and when it reached the set temperature I carefully slid the PCB with the BL600 and some solder paste onto the plate, and as soon as everything seemed to have melted (a few seconds only) I slid it away again (no picture on this I'm afraid).

    So far I've only tested the UART communication and the reset button, but that works reliably. Note that there still might be errors on the Weather Station Board, since I have not tried out all the sensor circuitry yet.

    So, here are the boards connected, and working:

    My next step is to try out bluepy on the client side, as an alternative to the messy gatttool/pexpect combination I'm currently using.

  • Price - Pretty close!

    Ulf Winberg09/27/2015 at 16:43 0 comments

    The whole idea of this project was to make it cheap, so that most people would afford it. I have now purchased all the parts for the second prototype, and have an initial figure:

    $ 54.7 or € 48.8

    See the BOM for the complete list and calculations.

    Some notes:

    • The prices are excluding taxes.
    • All prices are taken from Digikey, a few days before posting this.
    • This is a prototype, and there is room for optimization in terms of price. As an example, the push button currently costs over $2 because I chose a surface mounted version. I can get it for one tenth of that if I allow through hole.
    • The solar panel is probably over-sized in comparison to the power consumption I have in mind. It is about $12, and I think a much cheaper one can be used. Time will tell!
    • I'm so far assuming that you or a friend has a 3D printer (latter in my case), and I have not included the price of material and electricity for printing.
    • I'm also assuming that you have a computer fan laying around, to be used for the anemometer. Quite a stretch, I know. I'm still not convinced that getting energy from the wind will work out. If it doesn't, I might combine the wind vane PCB with anemometer, which would save a lot of money (not only the fan, but also circuitry on the main PCB). In any case you can buy a small fan for € 6 at digikey, if really needed.

    If I would have stated € instead of $ in the begging it would look better, but all in all, I'm very happy with this initial figure. It proves that my initial statement was not too far off.

  • Semifinal Video

    Ulf Winberg09/17/2015 at 21:12 0 comments

    The video for the semifinal is up!

  • First Prototype - Putting the Parts Together

    Ulf Winberg09/16/2015 at 21:04 1 comment

    The time has come to put electrical and mechanical (and some emotional) parts together! A friend of mine that made his own 3D printer helped me with the mechanical parts (thanks once again Martijn Sanderse!).

    As a first step however, I needed to extract the parts I needed for the anemometer. I'm using a small DC computer fan for this purpose.

    As seen above, I managed to get it open, but in the process I ripped the tiny coil wires (DOH! see picture below). For the first prototype, I will only use the hall sensor, in other words.... (ie, not using any wind energy)

    The hall sensor is the largest IC in the picture below. In fact, I had another, slightly larger fan in mind to start with, but it turned out that the hall sensor on that fan needed amplifier and hysteresis circuitry. This one only needs VCC and a pull-up resistor on the output. In the picture you can see that I have added a wire for the output and removed one component (I believe is was a diode).

    Next, the fan parts need to be fitted on the 3D printed structures. I cut the wings on the part in the bottom left, and attached it inside the anemometer. The bottom right part, with the wires, I glued on the holder seen on the top right (on the side which is down in the picture).

    And here we have all the parts together, including the solar panel!

    Stay tuned! In the next post I will publish a short video, showing the prototype in action.

  • Mechanical Parts

    Ulf Winberg09/16/2015 at 20:34 0 comments

    A weather station is worth nothing without proper mechanical parts... Therefore, I decided to learn how to use FreeCAD. For this first prototype I ended up with four separate parts:

    1. Main enclosure (contains the main PCB and solar cell)
    2. Arm for connection to middle rod
    3. Connection piece between middle rod and computer fan part
    4. Anemometer for wind speed detection and energy

    For the middle rod, I intend to use a metal pipe from an old IKEA bed I had laying arond. That could be printed as well or bought somewhere (the outer diameter is 10 mm and inner about 9 mm).

    I took special care to make the parts printable (see future post on how successful I was).





  • Weather Station Main PCB

    Ulf Winberg09/16/2015 at 20:05 0 comments

    Finally I was able to complete the design of the main PCB I want to use! It is not complex, but since I wanted to make it small and make sure all unused IOs were available for additional external sensors, the routing took some effort.

    There are four header pin connectors, with the following functions, starting from the left in the first picture:

    1. Solar cell (sun sensing and charging)
    2. Wind vane (wind direction sensing)
    3. UART (connection to external PCB for UART, JTAG and external power, see older post)
    4. I/O (Analog and digital lines not already used, to allow add-on sensors)

    There is a large area to the left, which is reserved for the super capacitor, and next to it is a reset button (useful if bluetooth connection needs to be reset). I also added a header pin close by to allow current measurement. That will be handy when the current consumptions is to be optimized. The last header pin (J3) is to allow over-the-air update of the software. Can be extremely useful if the weather station is already placed outside.

    As always you can find the source files from the git repository link.

    (3D pictures below made using online tool at

  • Project Video

    Ulf Winberg08/16/2015 at 17:44 0 comments

    I just uploaded a video about the project. Feel free to have a look!

  • Wind Vane PCB

    Ulf Winberg08/11/2015 at 17:19 0 comments

    To measure the wind direction I need a wind vane. A simple way to do that is to use hall sensors and a small magnet, which rotates with respect to the sensors (the hall sensor triggers an output when the magnet is close). My solution is to use four such sensors, one for each cardinal direction (north, south, west, east).

    Note that this does not mean I'm restricted to measuring only four directions; by placing the magnet at the correct distance, I will get two sensor readouts when it's in between directions. In other words I get eight directions (see table).

    DirectionReadout (N,W,S,E)

    The most straight forward way to connect this to the BL600 processor is to use in total six wires; four to BL600 inputs and two for GND and supply. That's a bit of waste of inputs that can be used for other peripheral devices, and I need the vane to be quite far from the main PCB so I'd also like to reduce the amount of wires. Therefore I decided to combine the four digital signals into one analog.

    It's quite common to combine several buttons into one analog signal (see example here). The problem, though is that they most of them assume that you're only going to press one button at a time. For example, in the picture below, if I press "RIGHT", it doesn't matter what other button is pressed, since "AD0" is already grounded.

    Instead I used this approach:

    By choosing different values of the resistors N, E, S and W, I will get different voltage outputs for combinations of presses. I made a spreadsheet to fiddle with resistor values (see here) and after a while I found a configuration with maximum 70 mV difference between the states I care about. The worst case ADC resolution is about one tenth of that, so that should be fine.

    Considering that I need quite accurate placement of the sensors, I decided to make a PCB. Below you can see the schematic and layout.

    As usual, all the source files can be found through the project links.

  • BL600 Communication Board

    Ulf Winberg07/09/2015 at 21:06 0 comments

    I will need to design a PCB for the weather station, where I will place the BL600 and the super capacitor, amongst other things, but I will also need something to communicate to the BL600. Since the weather station should be small and as cheap as possible, I want to push the RS-232 to UART conversion, power supply and JTAG circuitry out from the main board. Therefore, I've designed a separate board for that (see pictures below).

    The source files can be found here. Next post will be about the design of the main board.

  • Slow VCC Rise Time

    Ulf Winberg06/10/2015 at 11:48 0 comments

    When the weather station is powered by the sun and wind, the increase of VCC will be quite slow, while the capacitor is charged. This might cause the microprocessor to not start up properly, so I decided to test it.

    There is reset circuitry built in to the BL600 to take care of such problems, but looking at the data sheet, it is not enough. A minimum rise time of 60 ms from 0 to 1.8 V is mentioned. Anyway I set out to test how bad it actually is by charging and discharging the capacitor 10 times, while observing if connection is made with my host computer. I have made a script to continuously try to make a connection, and I uploaded smartBASIC code I new worked well.

    To my surprise, it worked every time (see below):

    Started gatttool
    2015-05-25 14:45:06.887746 Trying to connect (try nr 6)
    Successfully Connected to Bluetooth Device
    2015-05-25 14:46:18.124806 Battery level: 8 % (measurement nr 2)1)
    2015-05-25 14:48:18.699739 Trying to connect (try nr 1)
    Successfully Connected to Bluetooth Device
    2015-05-25 14:49:35.850811 Battery level: 9 % (measurement nr 2)1)
    2015-05-25 14:53:36.967842 Trying to connect (try nr 4)
    Successfully Connected to Bluetooth Device
    2015-05-25 14:56:09.792776 Battery level: 4 % (measurement nr 3)))
    2015-05-25 15:01:31.447688 Trying to connect (try nr 6)
    Successfully Connected to Bluetooth Device
    2015-05-25 15:02:38.616737 Battery level: 10 % (measurement nr 2))
    2015-05-25 15:11:21.447861 Trying to connect (try nr 11)
    Successfully Connected to Bluetooth Device
    2015-05-25 15:12:49.687791 Battery level: 10 % (measurement nr 2))
    2015-05-25 15:16:10.567832 Trying to connect (try nr 3)
    Successfully Connected to Bluetooth Device
    2015-05-25 15:18:18.354815 Battery level: 4 % (measurement nr 3)))
    2015-05-25 15:37:44.169875 Trying to connect (try nr 27)
    Successfully Connected to Bluetooth Device
    2015-05-25 15:38:44.932914 Battery level: 11 % (measurement nr 2))
    2015-05-25 15:42:05.927878 Trying to connect (try nr 3)
    Successfully Connected to Bluetooth Device
    2015-05-25 15:43:39.133719 Battery level: 10 % (measurement nr 2))
    2015-05-25 15:46:19.847809 Trying to connect (try nr 2)
    Successfully Connected to Bluetooth Device
    2015-05-25 15:47:23.089177 Battery level: 10 % (measurement nr 2)
    2015-05-25 15:49:23.659031 Trying to connect (try nr 1)
    Successfully Connected to Bluetooth Device
    2015-05-25 15:50:32.526885 Battery level: 11 % (measurement nr 2))
    2015-05-25 16:40:08.167808 Trying to connect (try nr 72)

    The rise time I used was much slower than the requirement mentioned in the data sheet, as seen in the picture below:

    In other words, I will continue with the PCB design relying on the reset circuitry of the BL600. At least for the first prototype that should be good enough.

View all 11 project logs

Enjoy this project?



krookjakal wrote 02/23/2022 at 13:16 point

A low cost weather station is a do-it-yourself project and it is a good way to promote interest in weather and science in general. There are two main types of weather stations: those that monitor outdoor weather and those that monitor indoor weather. You will need the necessary equipment which includes the following: * Temperature sensor * Wind sensor * Rain gauge * Anemometer * Barometer * Lightning detector * Rainfall recorder * Heated shelter for the rain gauge and anemometer

  Are you sure? yes | no


[this comment has been deleted]

Ulf Winberg wrote 09/16/2020 at 08:17 point

I'm sure I added the link to this project sometime, but cannot find it now...  Anyway, here's the link:

Let me know if you get anywhere!

  Are you sure? yes | no

Avi H. D. wrote 10/30/2016 at 06:42 point

Nice mix using BLE and super capacitors! How's this coming along? Did you add any probes/sensors? What's  average current consumption like?

  Are you sure? yes | no

Ulf Winberg wrote 11/26/2016 at 11:02 point

In fact, I've just started to look at this project again! I've soldered all components on my own board, and got it up and running. Before I stopped last time I got down the consumption somewhat, but not as much as I'd like. I estimated about 250 uA, while the BL600 goes down to 4 uA while still keeping a connection. Whenever I tried to lower the consumption by changing the settings, the connection became unreliable. It appears the linux-BLE compatibility has improved lately though, so I have hopes it might work this time, with an entirely different host system.

  Are you sure? yes | no

david wrote 09/02/2015 at 11:14 point

Hey, nice work. Really. What about the esp8266 Wifi Module? it cost around $5 or less. so you bring down your cost and have real wifi. Easy connection to the web. 

If you have time, i think your project would be a big extention for the OpenSprinkler project. A smart garden automation system.

  Are you sure? yes | no

Ulf Winberg wrote 09/09/2015 at 18:48 point

That's also a good idea. One of the main reasons I chose bluetooth LE is that it can consume very little energy (down to a few uA at 1.8 V). With wifi I'm afraid I would not be able to power the station.

I'll have to look closer into the OpenSprinkler project, seems interesting!

  Are you sure? yes | no

Avi H. D. wrote 11/03/2016 at 19:02 point

Sadly wifi isn't low power, certainly not low enough for supercaps or small LiPos. It was designed to move a lot of data, not low power. A weather station like this doesn't need to/isn't aiming to move a lot of data.

  Are you sure? yes | no

AVR wrote 05/03/2015 at 21:49 point

This is a cool project and I look forward to watching it develop! I'd be interested in using it to deploy my automated garden project outdoors instead of inside with lights.

  Are you sure? yes | no

Ulf Winberg wrote 05/05/2015 at 07:33 point

Thanks! An automated outdoor garden sounds cool

  Are you sure? yes | no

zakqwy wrote 04/13/2015 at 18:26 point

Good idea! A few thoughts:

Have you tried measuring wind speed while getting useful power out of it? My understanding is that most accurate cup-style anemometers try to minimize friction and use something like hall effect sensors to get rotation speed; pulling power using a coil or something seems like it would introduce an error due to the increased mechanical load on the shaft (somewhat like a regenerative braking setup on a car). I suppose you could set up a constant load of some kind and then calibrate this out--is that the plan?

It seems like Bluetooth might not be the best protocol if you're looking to set up remote stations due to range limitations; what about something GSM-based? Or are you mostly trying to bridge the gap between someone's back yard and their wifi connection?

Any concerns about ambient temperatures with super capacitors? I haven't really worked with them at all; I just know that other types of batteries don't always like a frigid environment. Then again, I suppose not everyone lives in Minnesota; if you're planning to deploy this in a more temperate climate it probably wouldn't be an issue.

Any plan to integrate your system with Weather Underground? I know they use distributed DIY weather stations to improve rural data accuracy--are you hoping to tie into that network, or create your own?

Looking forward to watching your progress! I'm hoping to deploy a remote weather station in northern MN at some point, so I'll keep an eye on this one!

  Are you sure? yes | no

Ulf Winberg wrote 04/14/2015 at 16:41 point

I haven't tried using the wind as power yet, no. Indeed it's a good point that the load will vary depending on the current that is supplied (with open circuit and closed loop as the extremes) I am planning to calibrate the wind speed, for example by placing it close to a station which uploads to internet regularly. I could use a load to reduce this effect, but then I will loose power, and I fear that will make it so low that it's not usable. Another option would be to measure the current and compensate for it in software. Also here I would rely on calibration, and measure at a couple of different loads. Still to be figured out!

The biggest reason for me to choose bluetooth LE was that it's very low energy indeed. It will allow a small solar cell, small wind meter and a capacitor as energy storage. The range could indeed be better (it's rated at 100 m theoretically), but I figure that most people would put it on their roof, and can have a raspberry pi or similar in the house. I'm also planning to make it store the data locally when there is no connection. With 3 parameters, and measuring every 30 min, I estimate a retention of about 7 days. Then it would be possible to either simply bring it back home (if the purpose is to find a place for your windmill) or perhaps get close with your phone to have it automatically upload.

Super capacitors are still not that mature, and the shelf life is not great. The capacitor I have in mind is rated for 1000 h at 85°C. Exactly what that means at more moderate temperatures, I don't know. I do believe this is something that will improve quite rapidly, however. Their most interesting application is for power backup systems, and they need to work for years to be useful.

I will look into weather underground. What I have tried so far is to save the data in the computer that connects to the station, using openHAB. OpenHAB has a lot of options on how to store the data, also cloud solutions, so there is quite some flexibility there.

Thanks for your feedback!

  Are you sure? yes | no

Clovis Fritzen wrote 04/10/2015 at 15:36 point

Nice project! i have a similar entry to this year's hackaday prize, ( ) so maybe we can exchange knowledge and experience as the projects go; talk to you soon,

  Are you sure? yes | no

Ulf Winberg wrote 04/12/2015 at 08:51 point

Cool! Indeed it seems we have similar ideas. Let's keep in contact!

  Are you sure? yes | no

Peter wrote 04/09/2015 at 15:12 point

Great Project Ulf.  just a fantastic idea.

  Are you sure? yes | no

Ulf Winberg wrote 04/12/2015 at 08:45 point


  Are you sure? yes | no

Sophi Kravitz wrote 04/03/2015 at 23:52 point

Hello! Tag your project with 2015HackadayPrize to be entered. Cool project :)

  Are you sure? yes | no

Ulf Winberg wrote 04/05/2015 at 08:28 point

Thanks!  I thought the tag was simply "HackadayPrize" (got it from I'll use both just to be sure :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates