loading
Picture of Arduino weather station.
A while ago I got a idea to build my own weather station, from scratch.
It turned out great. Lets begin!
 
Remove these adsRemove these ads by Signing Up

Step 1: Parts

Picture of Parts
433Mhz.jpg
BMP085.jpg
DHT11Temp.jpg
PIR.jpg
A list of items I used:
-2x Arduino nano.
-433mhz transmitter .
-433mhz Receiver.
-4x20 LCD (blue)
-a Blue led and resistor
-Electric installation box (watertight).
- Digital Barometric Pressure and Temp Sensor.
- DHT11 Temperature & Humidity Sensor
-1mm Aluminum sheet.
-PIR sensor (movement).
-Bits of wire.
-Heat shrink tube.
-Nuts and bolts.

And a range of different (basic) tools.

Step 2: Code for transmitter

Picture of Code for transmitter
So the first thing is to know which port is which on every part of te Transmitter:


The Arduino Nano was simple, just take a look on the site of Arduino.
http://arduino.cc/en/Main/ArduinoBoardNano


Next up is the 433Mhz Transmitter.
On the Board it says:
-Vcc
-Data
-GND


Next. The DHT11. same as the Transmitter
-Vcc 
-Data
-GND'
This part uses the 'DHT11 library' 


A Simple LED and Resistor
-VCC
-GND
I used this only if there was something sent.


The Digital Barometric Pressure sensor is another story dhow,
its got 6 Connections
-VCC (3.3v)
-SDA (Serial Data Signal) (I²C)
-SCL (Serial CLock) (I²C)
-XCLR (no idea) (did not use)
-EOC (end of conversion) (did not use)
-GND (Ground)

So we need to use the I²C on de Sensor to communicate with the Arduino.


i uses the next Libs:
-OneWire.
-dht11.
-VirtualWire

Much of the code to read out the Digital Barometric Pressure and Temp Sensor was ripped form various sites/forums.



For Code and explanation, See the Code file



EDIT:

I forgot something you need to do in order to compile the Arduino code.
In order to convert a float to a string you’ll need to download 2 files and replace some file with these in the Arduino IDE.

Download & info: http://www.timewasters-place.com/arduino-string-and-float/

PLEASE BACK UP YOUR FILES BEFORE REPLACING THEM!!!

Step 3: Electrical diagram transmitter

Picture of Electrical diagram transmitter
Based on the Code I wrote a drew an electrical diagram.
Please note that the Transmitter and humidity sensor works of the 5v line,
the Barometric sensors only needs a 1.8V - 3.6V input.


Step 4: Code for receiver.

Picture of Code for receiver.
In this code I needed to get the data from me Receiver and decode it to something useful

Hardware:
Screen (hd44780 capable).
-(16 Pins) data and power

PIR (motion sensor).
-VCC
-Trigger
-GND

Receiver.
-Vcc
-Data out
-GND


For the Screen I uses the standard Connection.
Only used 6 pins for Data, 1 to 5V and 3 to ground.

The Led +pin was connected to a Arduino Digital Pin.
that way I can control the Backlight whit the PIR.

Uses the next Libs:
-VirtualWire  (for the Reviser)
-stdio
- string
-LiquidCrystal (for the display)



For Code and explanation, See the Code file

Step 5: Electrical diagram receiver

Picture of Electrical diagram receiver
Based on the Code I wrote a drew an electrical diagram.

its recommended to connect pin 3 (V0) of the LCD to a 10K ohm Potentiometer, this Pot meter to VCC and GND.
To control the Brightness.
I connected strait to GND to get maximum Brightness, this works well on a couple of LCD, so TRY it first.

The rest is fairly straight forward.

Step 6: Prototype

Picture of Prototype
2013-06-19 22.46.13.jpg
The next logical step is to make a prototype of the drawings and testing it.
So I got myself a couple of Breadboard and wire and began building it.

(note1) this picture was taken after I created the code :)
(note2) on the first picture you can see a component that later would be replaced by another part.

Step 7: Designing the receiver housing. (first attempt)

Picture of Designing the receiver housing. (first attempt)
At first i wanted to 3D print a housing,

I measure all the components and wrote them down.
next I put them together in Inventor and drew a housing around the parts.
This ensured that the sizes where correct the parts would fit together

I used Inventor 2014 and Blender to create and render the image

because I did not own a 3D printer a had to send it to ShapeWays, it was to expensive for this project.
So redraw it for a sheet. (see next step)

Step 8: Designing and buidling the receiver housing. (second attempt)

Picture of Designing and buidling the receiver housing. (second attempt)
2013-07-09 20.00.11.jpg
Here I did the same as in the previews Step,
only difference is that I used Sheet metal drawing instead of extruding.

After this was done, it was a simple job to cut it out and bend it 90 disgrace.
To lock it in place I used 2 aluminum rivets.

(note)Dimensions in mm

Step 9: Painting the receiver housing

Picture of Painting the receiver housing
2013-07-19 17.15.29.jpg
The next stap is to make the housing a bit more nicer.
So i want to give it a lik of paint.

it had to be a hard paint, able to withstand abuse.

I used "Motorcoater", its designed to be uses on engines.
it resists Olli, grease and lots of stuff, and its scratch resisted :)

A bit overdone, but I had it lying around.


Step 10: Buidling the Transmitter

Picture of Buidling the Transmitter
2013-07-19 17.16.47.jpg
2013-07-19 17.16.38.jpg
I chose Electric installation box (watertight), is sturdy and watertight.
perfect for outside use.

I used 2 socket’s to create holes to the outside of the box.
And on those I glued the sensors.

Drilled 3 hose,
1 for Power (5V)
1 for the external antenna.
and  1 for the blue LED

I just coiled some wire for the internal antenna.
Don’t know the best antenna for 433Mhz, but it works.

Step 11: Final Product

Picture of Final Product
2013-07-23 06.03.47.jpg
And the end result:

A good working Weather station.
Showing Temperature in C, Humidity an barometric pressure .

And all of this in a nice case, and low power consumption

Step 12: Update 1: New Part

Picture of Update 1: New Part
A week ago I order a new part for the weather station.
A rain detector, with an Analog and Digital output.
Not sure how to fit this to my Transmitter unit.
Because of the relatively easy way of communication between the units,
it easy to add new components.
Connect a sensor to an open input port, Read out the value, and send it to the receiver.

The Receiver only needs to spit de code and display it at the right line.

I only need to fine tune the sensor to the right amount of rain drops.
or (“No rain”, “ light Rain”, “Heavy Rain”).
So some testing is required.

keep you informed.

Step 13: Update 2: Mesh & Water

Picture of Update 2: Mesh & Water
Gaas.jpg
I added some Plastic mash to protest the sensors against spiders and other small insects,
this way the cant touch the sensor of get inside it.

And after a couple of rainy days the outside unit still works :)


Ignore the way I attached  the unit to the drain. (duct tape FTW)
teoilca2 months ago

Hi! great project, I made everything but I can't compile TX because I cant find wich DHT11 library are you use. Could you give us a little help ? 10x

Both of the Transmitter, and Receiver codes has tons of error and won't verify, did I download the right files?

Hi Partck,

have you installed the libraries for the LCD and the DHT?

I did install a couple different DHT11 and LCD, It work for the receiver however the transmitter still didn't compile. Where did you get your DHT library

Gyalu3 months ago

Hi Bram,

I made a similar weather station but I have a problem in the RF communication. It works properly at the beginning but after a while I lose some chars from the end of the message.

If I monitor the message through the serial monitor of my UNO before sending it, the message is OK. The received message is OK also at the beginning but after a certain time I loss some chars from the end of the message. I have to reset the UNO which receives the message to repair the communication.

Have you ever encountered with this problem? Have you any suggestion to solve it?

THX Gyalu

Gyalu Gyalu3 months ago

I found the problem and could solve but I don't understand the cause...

I moved this two lines from the top of my program into the loop()
byte messageLength = VW_MAX_MESSAGE_LEN;
byte message[VW_MAX_MESSAGE_LEN];
after that my radio worked well.

Since this variables are local its all right.

JeanV16 months ago

I'm just buying the material to build something like that. Nice to have found that as I'm newbie to Arduino and C. I had in mind to also show the min and max temp with a button to reset these max and min as we have in external thermometer. Would it be a though job to modify the code to get that ? Thanks

Bigdee129 months ago

would your Tx and Rx codes work if i were to use Arduino Uno boards instead of the Nano??

bram2202 (author)  Bigdee129 months ago

Hi, Yes i think so, the pins are basically the same between the Uno and Nano,

diy_bloke9 months ago

if i can make a suggestion..... the rain sensor now has two 90degree-angled pins sticking out at the top. De-solder them and either take straight pins coming out of the bottom or just 2 wires coming out of the bottom.
That way you only need a very small hole to put them through. When the rainsensor is then flush, lay a small wall of silicone against the rim to stop any water from leaking under it.
With regard to its analog output... I wonder if that is any added value because that is already what you get when just using it as a voltage divider with another resistor. So if you want to use it in analogue mode, no use the add the little sensor board it came with and feed a comparator IC that is just idle: just grab a resistor and use it as a voltage divider

deba168 made it!10 months ago

Thank you bram2202 for making a nice instructable.

Finally I made your weather station with solar power and power saving techniques..

You can see SOLAR POWERED ARDUINO WEATHER STATION

IMG_20140908_085431.jpgIMG_20140908_085723.jpgScreenshot 2014-09-08 09.53.25.png
diy_bloke11 months ago

Weet zeker dat je niet 'disgrace' bedoelt maar 'degrees' :-)
'disgrace' is weer totaal iets anders

Great stuff! Inspired me a lot! Will build a similar thing.

Emerty1 year ago

Hi,

Great Instructable, I am going to make something similar.

Quick question, is your power from the mains or battery?

Thanks for taking the time to share the code!

bram2202 (author)  Emerty1 year ago
Hi,

Both the sender and receiver are powered by 12v power adapters from mains.

The idea was to power the outdoor unit from a Lipo battery charged by solar panels, but i chose the easy way.
Maybe i'll build this in the future
randcook1 year ago
HI Bram,
Like your neat Weerstation, wil en copie marken
Can you post the latest code for your Weerstation.

Bedankt
Peter
bram2202 (author)  randcook1 year ago
Hey Peter,

The Code in the Zip above is the latest code.
I wanted to write new code, but i didn't had the time for it.

Groeten,
Bram

bram2202 (author) 1 year ago
Hi,

I used the newest version of the IDE at the time.

but I just checked out the software and I remembered something,
I changed something in the framework of the IDE.
I added some rows to allow the software to convert a float to an int.
Only I don’t know which line.

I will look into this some more.

When I find it I will post it here and change the instructable!
perhaps a patch to IDE adruino ? like this one : http://www.timewasters-place.com/arduino-string-and-float/
Did the patch work? I have not had a chance to test it out yet but i'm having the same problem you seem to be having.
with the 1.5.4 IDE it's ok

thanks
Does one have to use Arduino 1.5.4 as well as these patches for the system to work? Just downloading 1.5.4 complied the code with no errors but i cannot get anything to transmit. Thank you for your time.
Hey, that seems to have fixed the problem at least compiling wise. I'll have to upload it into the circuit and then check if that did the trick. Thanks a lot!
bram2202 (author)  totof601 year ago
Yes. that’s the one I used.
I backed up the “WString.h” and “WString.cpp” files and replaced them with the downloaded ones.
Does one have to use Arduino 1.5.4 as well as these patches for the system to work? Just downloading 1.5.4 complied the code with no errors but i cannot get anything to transmit. Thank you for your time.
many thanks
Yes, that would be very helpful, thank you. I'm running into the same issue here.
totof601 year ago
Hi

very great project !!

but i have probleme with the transmiter sketch
I've the "error call of overloaded 'string(float&,int)' is ambiguous"
what's the IDE version of arduino you used ?

many thanks
sreekoneru1 year ago
Great project!

I've been building the breadboard prototype and ran into some problems with the code. The LCD works fine when plugged in and I got to change the name and display etc. However, after compiling the code and uploading it to the Arduino for the transmitter, I am unable to see anything being transmitted in the serial monitor (should i see any values?). The blinking LED also stopped. Any ideas/sugestions?

I'm new to Arduino so please excuse my ignorance.

Thank you for your time.
Dylon1241 year ago
You should try making a stand alone arduino for your project like I did.
bram2202 (author)  Dylon1241 year ago
I thought about that, it wouldn’t be difficult,
you only need to attach a temperature sensor, like you used to one of the free ports on the Arduino inside the “In house” unit.

But the intention of the project was to measure the outside temperature, humidity en barometric pressure.
For that I needed 2 Arduino’s to commutate wireless.
So a Standalone wasn’t an option.
Samuel kos1 year ago
If it displays the temp in C how would you get it to display in F
bram2202 (author)  Samuel kos1 year ago
You can do this at 2 point in this project,
Just before you send the temperature, or after you received it.

Just multiply the value by 33.8
I like your Proto box.

You used wires on your LCD

Have you seen my instructable Pinning Liquid Crystal Displays?

Joe
bram2202 (author)  Josehf Murchison1 year ago
Thank you!

Yes I did.
I Looked at a way to solder it directly to the Board with the Arduino,
but the pinuot was totally different.
so the easiest way was to do this with wires.

Yes I’ve seen your instructable, Nice one!
I’ll keep this in mind for my next project.
alanballjr2 years ago
I'm not sure when I would ever use this, but it would be pretty cool to have. Or just to make as a conversation starter.