Recording weather with Arduino, Elasticsearch and Kibana 2
Recording weather with Arduino, Elasticsearch and KibanaMiss the first part of this series? It's here!
Part 2 - ConstructionLike most things you do with Arduino, construction is pretty straightforward and you can choose your own way of going about it. I am going to document my methods and the reasons why. Feel free to offer suggestions for improvements.
The Base StationBudget for the project was rather limited (read non-existent), so I built it mostly from what I had on hand, or that I could obtain cheaply.
As the controller will be mounted outside of the house in order to keep the sensor runs as short as possible, it needs to be protected from the elements. I found a medium-sized weatherproof enclosure made by Legrand at an electrical wholesaler. It is IP55 rated so it it's mounted under cover it is quite suitable for the task.
There are a few useful tips to keep in mind when laying out your controller:
1. Give yourself some power rails
At the top of the enclosure (right side in the photo) there is a large terminal strip which supplies +5V and 0V to the components. Since everything is low-powered, I chose to run the whole unit from the Ether10's on-board regulator.
This method gives a much tidier result, as well as frees up the Arduino from having to host all the power wires or making daisy chained connections.
2. Terminate your external connections off-board
Again, this is about neatness and durability. You could terminate everything in Dupont pins and plug them straight into the Arduino, but it is harder to make changes.
I put a terminal block at the bottom of the enclosure, and wired from there to the Arduino.
To further ensure reliability I used a Freetronics terminal shield on top of the Ether10
3. Use weatherproof glands for cable entry points.
I put two 12mm glands in the bottom of the enclosure, which is plenty. It also helps to keep out bugs and spiders. A year after installation, the inside of the enclosure is still spotless.
4. Add a little sealant to the mounting holes for the Arduino.
OK, so it's unlikely that water will get in through that gap, but it's a simple enough thing to do
If you use an Ether10, and you're going to run it with PoE make sure you set the PoE jumpers according to the manual before you put the terminal shield in place. It's annoying to do it later.
External SensorsThe UV and Light intensity sensors need to be mounted externally, where they will get good exposure to the sun, and this posed a challenge. How to expose them to the elements without them getting damaged?
I fitted each sensor to its own round junction box. You could use something smaller, but these were readily available. Drill a hole in the flat side of the box and fit the sensor. You can see the UV sensor in the first photo.
Protecting the sensors should mean just putting a transparent cover on the top. For the light intensity, that is true, and I fitted a clear photographic filter to the enclosure. The UV sensor is a problem, because most materials will block UV, which is what we do not want.
Digital Camera Warehouse were able to source a Hoya "UV-Pass" filter, which is almost black in appearance. My experiments showed that while it did lower the reading from the sensor by about 1mV it appears to be consistent.
My BME280 sensor was originally mounted inside the main enclosure with a small vent to the outside. However, it seemed to be affected by the enclosure, so I later cut open the temperature sender from the Holman unit and fitted it there. The advantage of this is that it comes with its own Stevenson Screen.
The signal wires from the wind speed, direction and rainfall sensors were extended and run down to the base station.
The following schematic is taken from my station. Please note that Fritzing did not have a symbol for the SS12SD, so I used a generic ISL29102 instead.
Next: The software