IoT Weather Station (Version 1.0)

IMG_20141226_152435

The Small Weather Station is a battery-operated, wireless, weather station. I have been working on the project for almost a year now, and now I have an unshielded prototype that is partially functional. I say partially functional, because it does not have any wind/rain sensors installed, only the connections for them. So far it can log several things: temperature, humidity, atmospheric pressure, and battery voltage. However, the connectors for the rest of the sensors are functional; the only thing they require are several magnetic reed switches.

Data collected from the Small Weather Station can be logged on a computer or published to the internet. This is accomplished by connecting the computer to the receiver radio, and running the server software I have written.

You can download all the code I used for this project at the bottom of this page.

How it works:

SWS

There are three sections of this project that work together to bring weather information online. The weather station, the receiver, and the server software:

Weather Station:

The weather station is connected to the following sensors: BMP180, DHT22, rain, wind, and wind direction. The rain, wind, and wind direction sensors are made up of switch circuits. The radio used is the 433MHz Superhetrodyne RF Kit. It’s about $7, which makes it more expensive than other RF kits on eBay, but it has a very realistic range of 50m, and the signal can penetrate walls easily.

IMG_20141225_005518

The weather station Atmega does a loop every 12 minutes, sleeping in-between using the Rocket Scream Low Power Library. The loop gathers data from the sensors, transmits them using the radio, then goes back to sleep.

The weather station gets its power from a 12v, 5 watt solar panel. The setup I use is quite efficient:

  • For every 1 hour of sunlight the weather station runs 48 hours
  • The weather station can run 30 days, or 720 hours without any sunlight at all
  • Power consumption is between 3.8mA and 5mA when in sleep mode

Receiver:

The receiver is simply another Atmega328 with the receiving end of theĀ Superhetrodyne RF Kit attached. Every character that comes in through the radio is sent via serial to the Serial to UART bridge. It is then picked up by the server software on the other side:

Circuit Diagrams:

There are two layers to the weather station. The top layer contains the Atmega328 and the sensors, while the bottom layer provides power regulation, battery charging capability, and space for a heatsink.

top layer

Circuit for the top layer. The separate section in the right is the flip-flop switch for the rain sensor.

charger

Bottom layer. 18 pin connectors are used to support the top layer, and transfer power.

Server Software:

There are two parts to the server software: serial to mySQL, and mySQL to Web. The serial to mySQL software was programmed by myself in Visual Studio C# with the help of Oracle mySQL connector.

Functions of the weather station server software include: charting graphs, displaying live input, and posting data to a mySQL server. The program didn’t take too long to build, and it is based mostly on timers which check if there is enough data to post.

wetherstationsoft

The second part of the server software is the web based portion. This was done through php, with the help of Libchart for the graphs. The premise of the software is basic, connect to the mySQL database, get the data, draw a graph, then display some record statistics. The data you see at the top of this page was generated through this system.

Download:

  • Version 1.0: Includes Atmega328 code, web/server software, example mySQL table, and necessary installers to run the server software.

To-do list:

  • Make a sidebar widget for the weather data
  • Build a case for the weather station
  • Build wind and rain sensors
  • Place the weather station in a more suitable place

More info:

I have been writing blog posts on this project for quite some time now. If you want more information you could find it here, or leave a comment:

 

Leave a Reply

Your email address will not be published. Required fields are marked *