Weather Stations are a very useful devices, and as we increase our knowledge of the global weather, quantifying our own local experience is also popular. Weather has never been more interesting! Integrating aspects of the weather to IoT is also increasingly important.
This project does not invent anything much new, but should give a working set of plans for a weather enthusiast to build their own station. The design is somewhat double-brick out-house in most places and does not require really hi-res printing eg no wafer thin walls. However it will produce a robust system that people may like to refine themselves. The OpenSCAD files are provided to allow people to customise the designs. The system was designed and built for an Arts/Science Exhibition, FLOAT, as a demonstration station, and has been wired up and programmed to demonstrate the usual weather station functions. A cutaway funnel is also provided, which was used with the Rain Gauge for this exhibition.
The system also has the Arduino program included to illustrate how the the weather station can be interfaced, processed and results displayed. The Arduino program, as it stands, does not provide any definite calibration for rain and wind speed (if it is accurate, that has happened only by chance :-). Wind direction, Temperature and Barometric pressure are accurate. If you build it, and use my Arduino program, you will have to spend some time calibrating wind speed, and fine tuning rainfall. The program uses very little of the overall Arduino Uno capabilities, so there is much room for expansion and innovation in extra sensors or data processing.
The non-printable extras I used are listed below, and also in the OpenSCAD and Arduino scripts. Plus the Arduino gear.... (I added a Barometric/Temperature sensor, but an obvious extension would be to add Humidity as well.)
Some suggestions for mounting the sensors are provided, along with glue on brackets and fittings to construct a simple "T" frame combined with aluminium tubing, however this can be adapted as circumstances dictate.
The thrust bearings should be a tight, push fit and not require glue (Though if your hand is steadier than mine it may help). The 5mm brass tube for the axles will definitely benefit from some cyanoacrylate on the ABS to hold them in place when inserted into the plastic. Rough the tube up a bit with sandpaper or a file to help adhesion. The Temperature and Barometric pressure does not need calibrating. However Rainfall (it is fairly close) and Wind Speed will need calibration. As long as the magnet in the wind direction sensor is close enough to trigger two adjacent reed switches when half way between the two reeds, it will allow 8 reed switches to reliably indicate 16 directions.
The reed switches in the direction indicator are vertical and are not trimmed, just the top end curled over to allow easy soldering to the common GND wire ring. A ninth hole is supplied for the return GND wire. Extra spacing maybe required, eg a small ring of heat shrink tubing to keep the moving parts of the anemometer and wind speed separated and seated on the bearings in the stationary base. This was too fine to print.
All the magnets N-S poles should be aligned along the line of the reed switch. The magnet lines of force between N-S have the smoothest switching effect, ie don't use one of the poles, N or S, on its own. This also helps eliminate bounce, or multiple triggering.
Non-printable Parts List
Arduino Uno Board + Prototyping Shield
10 of Magnetic Reed Switches, glass 14mm x 2mm
4 Thrust Bearings 8mm OD x2.5mm by 5 mm ID
(Search "Miniature Thrust groove Sealed Ball Bearings")
3 Neodymium magnets 3mmOD x 2mm
Scrap brass tube OD 5mm (eg Car Radio Antenna)
Hook up wire
BMP085 Barometer/Temperature breakout (I2C)
PCF8574 I2C to LCD interface board
4x20 characters HD44780-compatible LCD
2mm steel axle for Tipping Bucket flip flop
Plastic tubing for spacers eg Heat shrink cut to 2mm rings
12.5mm Aluminium Tubing for Frame
The Arduino system as described has a major shortcoming, it is assumed the sensors will be close to the CPU and there will be no long runs of cable. If longer cables are contemplated then larger pull-up resistors than the internally programmed Arduino pull-ups maybe required on all the reed switches. Very long cables may not be possible or recommended.
Mounting the computer close to the sensors and building a radio link maybe the best alternative, and using some other board than a UNO with at least 10 pins of I/O free and some Wi-Fi could give a good combination. eg
Battery power poses even more challenges, but a larger battery charged by a solar panel is a viable option these days. Designing ultra low power electronic gear is a specialist area and would require an article on its own.
Printing times with 0.4mm nozzle, 30% fill and Support
3 Anemometer Cups and arms 1h21m (x3) = 4h3m (+support under cups)
Anemometer Arm Hub 3h31m (+support under hub and inserts)
Anemometer base 2h (+support under base)
Anemometer Bracket 16m
Wind Direction Vane 4h21m (+support under hub and arms)
Wind Direction Base 3h30m (+support under base)
Wind Direction Bracket 16m
Tipping Buckets 1h43m (+support under buckets)
Rain Gauge base 6h18m (+support reed switch slot)
Rain Gauge Funnel (full) 12h30m (Invert to print to avoid Support printing)
Estimated total 35 hours of Printing
NB It is worth checking your own printing setup to see if you can minimise printing support material. Inverting my design before printing maybe preferable in your setup.
I have added extra holes in the base of the rain gauge to make sure the outlet surface area is definitely bigger than the inlet hole in the funnel. (Thanks Andy)
Some sort of coarse filter could be added to protect the funnel from small objects eg fruit buds blocking the hole.
I have also added a search suggestion for finding the Thrust Bearings on your favourite e-marketing services.