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.
- Getting materials and parts.
- Adding the LCD-shield.
- Building the weather station.
- Programming.
- Printing the Arduino case.
- Cutting the Station case
- 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:
- Temperature / Pressure sensor: BMP180
- Temperature / Humidity sensor: DHT11
- Rain sensor: CG05SZ-063
- LCD shield: LCD
- Power supply: Power supply
Used files:
- Arduino case by Torsten
- 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)
- VCC pin on the 5V output
- GND pin to the GND
- DATA pin to the digital pin 2
Temperature / Pressure sensor (BMP180)
- VCC pin on the 3.3V output
- GND pin to the GND
- SDA (Serial Data Line) pin to the analog pin 4
- SCL (Serial Clock Line) pin to the analog pin 5
Rain sensor (CG05SZ-063)
- VCC pin on the 5V output
- GND pin to the GND
- 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%
Attachments
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.
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.
Attachments
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.