Introduction: Simple Home Weatherstation

Lately I have been thinking why are weather stations so expensive!? That's when I decided to build one myself.

This Instructable will be divided into 7 parts. In the first part I will talk about what materials and tools you need. In the second part I will guide you through the process of adding the LCD-shield to the Arduino. The third part will be about building the weather station. The fourth part will be about programming the weather station. In the fifth part you'll see how I printed the cases for the Arduino and LCD display. In the sixth part I finish the project with a nice laser cut case for the weather station itself. The final part will briefly review the whole project and I will give some extra tips.

    1. Getting materials and parts.
    2. Adding the LCD-shield.
    3. Building the weather station.
    4. Programming.
    5. Printing the Arduino case.
    6. Cutting the Station case
    7. Conclusions and tips.

    Step 1: Gathering Materials and Parts

    Before we can start building we'll need some parts. Furthermore, because we are building a weather station we'll need a lot of sensors. Most of the parts I used I bought at DX.com

    Parts list:

    1. Temperature / Pressure sensor: BMP180
    2. Temperature / Humidity sensor: DHT11
    3. Rain sensor: CG05SZ-063
    4. LCD shield: LCD
    5. Power supply: Power supply

    Used files:

    1. Arduino case by Torsten
    2. LCD case by GurtDotCom

    Used Tools:

    • 3D printer (Up 3D printer)
    • Laser Cutter
    • Soldering iron
    • Drill

    On a side note. If you order from sites like dx.com be prepared to wait.... wait... and wait some more! In my case it took about 4 weeks to ship.

    Step 2: Adding the LCD-shield

    Because adding the LCD-shield to the weather station was a bit tricky I decided to dedicate a separate step to it.

    Connecting the shield to the Arduino

    This was the easy part. First align all the pins correctly then slowly push the pins into the Arduino.

    Preparing the shield

    The hard part is connecting the sensor pins to the shield. Because we're using a shield you can't use the pins directly on the Arduino. Instead we need to connect all the pins to the shield. My biggest problem was that there weren't any female headers to connect the pins. I had to solder them myself. After some testing with a multimeter everything seemed OK.

    * Please note that the LCD-shield uses digital pin 4-9 for the display itself and analog pin 0 for the button input.

    Step 3: Building the Weather Station

    Now that we have all the parts it is time to build the station and connect all the components. The schema below shows how to connect all the sensors to the breadboard and to the Arduino. The reason I use a breadboard instead of directly connecting the sensors is because of the lack of 5V and ground pins on the Arduino.

    Temperature / Humidity sensor (DHT11)

    1. VCC pin on the 5V output
    2. GND pin to the GND
    3. DATA pin to the digital pin 2

    Temperature / Pressure sensor (BMP180)

    1. VCC pin on the 3.3V output
    2. GND pin to the GND
    3. SDA (Serial Data Line) pin to the analog pin 4
    4. SCL (Serial Clock Line) pin to the analog pin 5

    Rain sensor (CG05SZ-063)

    1. VCC pin on the 5V output
    2. GND pin to the GND
    3. Analog Data to the analog pin 1

    Step 4: Programming

    After you succeeded building the weather station it's time to program. First things first. To save some time I used libraries to program the weather station. Of course you can program everything by yourself.

    Because the LCD-shield has some build in buttons I used them to individually show the results.

    • Right button - Temperature
    • Left button - Humidity
    • Up button - Rain Drop
    • Down button - Air Pressure.

    The display is not big enough to display the labels and the results. So I used capitals to label the data.

    • R - Rain Drop
    • P - Air Pressure
    • T - Temperature
    • H - Humidity

    I always put lots of comments in my code for reproduction and education. So I hope it helps. Also don't forget to change the altitude of the pressure sensor to the appropriate attitude in your area.

    I will link my code with explanations and used libraries below. If you get any library errors try to delete them and add them again into the code.

    *edit: Fixed a small bug causing the rain drop sensor to give percentages greater than 100%

    Step 5: Printing the Arduino Case

    The project is almost done. Now it's time for some finishing touches. Because I want to make it a bit more professional I decided to print some cases.

    1. As Arduino case I used this file from Torsten
    2. As LCD bezel I used this file from GurtDotCom

    The 3D print settings I used for the cases were: scale 1.0, thickness 0.8, speed: 50 mm/s. These settings may vary if you use a different printer.

    After printing the bezel I made some modifications to it otherwise the female headers wouldn't be accessible anymore. To make these modifications I used a power drill and some files.

    Step 6: Cutting the Station Case

    After finishing the code and printing the cases I had some time left. For a while I looked at the weather station thinking what to do next. Then it hit me. All the items had cases except the station itself. So that evening I designed a custom case for the station itself. After cutting it with the laser cutter it fitted like a glove.

    In the picture you see red lines and black text. The laser cutter knows when there are 0.01 mm red lines it needs to cut and everything else means engraving. Of course you can use your own name.

    Step 7: Conclusions and Tips

    It was quite fun to build this project and I'm thinking of expanding the weather station in the future. Maybe I'll add some IoT features so you can monitor the sensors from the Internet. Another awesome feature would be to automatically close my windows if it starts to rain.

    MoSCoW:

    Must have: A device with sensors to read the current temperature

    Should have: A device that can also read the current humidity, air pressure and rain drop percentage

    Could have: A device that not only can read current temperature, air pressure and rain drop percentage but also looks nice with custom made casing.

    Would like to have / won't have: Internet of Things integration.

    Leave a comment if you have any questions or encountered some problems.