Go Down

Topic: Decoding RF signal from Ambient Weather Thermo-Hygrometer (Read 45194 times) previous topic - next topic

robwlakes

Well it is up to you of course.  As a PIC user from wayback, there is no way I would return those processors with what the Arduino ecosystem offers now.

I have used the Oregon Scientific (Chinese BTW) sensors and think they are quite good quality for the money.  My GIT-Hub pages outline two types of project.  One is to build an Arduino Uno base station that intercepts OS sensor signals and allows you complete freedom to  build your own system from there on.  The main trick provided in the code is how to intercept the 433MHz signals and decode them.  My strategy was to turn these signals into a string and simply send a serial message across the Arduino's USB/Serial connection back to the main computer (it is now a RPi3, but was an Intel Atom previously). Again this string can be interpreted by Python programs and processed to your hearts content.

433Mhz interceptor:  https://github.com/robwlakes/ArduinoWeatherOS

It also has a good run down on Manchester protocol, which many weather stations use in one way or another, if you wanted to try to roll your own Arduino or PIC version.

The second project involves making your own sensors that can integrate into the OS system without too much hacking.  In essence it is designing your own OS sensor (I have one one monitoring solar energy at the moment, and previously had one monitoring lightning strikes).  All I had to do was extend the code for the list in the Interceptor to detect the new sensors, and add that to the exported string.

Roll your own OS: https://github.com/robwlakes/Weather-Station-OS-Sensors

Note it easy to create a wireless Temperature sensor from Arduino bits and (as shown in the example given) much cheaper as well, if you have the bits lying around.  However it is much harder to replace the OS temperature sensor where low power consumption and long battery life is important.  The OS sensors are very battery efficient and getting a home built sensor into this range is certainly a higher level of difficulty.

The Solar Power sensor I made is based on an Arduino Mini-Pro (the only low power alteration is the power LED has been removed) and it survives long term as it uses a solar panel (and why not? ;-) ) to charge a LiPo battery. If your sensor points are near permanent power, then this will not be a worry.

Get some Arduino Mini-Pro boards, some 433MHz Tx boards and some DS18S20 for the sensors, and an Arduino Uno and 433MHz Rx for the base station and get into it.

The Arduino system does not need a dedicated programmer board, usually just a stock USB cable.  And you get the IDE free with a multitude of very handy libraries.

Cheers, Rob


Learning Flute and C++, heading for a meltdown.

AnotherGingerlee

Thanks Rob for your detailed reply.

I already have a couple of F007TH sensors and a Pi Zero ready to ask for thermometer data over 5v I2C, so  a simple arduino setup to receive the signal, decode it and await the Pi's request is all I need.

A Uno is rather large for an embedded component so I've gone for a Nano clone. I nearly bought a pro micro as its cheaper and smaller but then realised that it makes it difficult to use I2C (apparently D4 and D5 aren't exposed) and also I would need to buy an additional programmer for it as it doesn't have a USB connection.

I currently have a PC connected by USB to a Nano 3 clone CH340 (with the right driver!) connected by D8 to a 433mhz receiver. I have downloaded BaronVonSchnowzer's Temperature.ino and immediately got it working as it sends output to the USB serial device which I can view using serial monitor in the IDE.

I would like to create an I2C slave device but it may not work very well as the RF receive code is timer based. So is there a good reason for it not being interrupt driven? Is it just that state machines are scary? There is already Arduino code out there to do IR receive which uses interrupts, maybe I could adapt that.

PS I've got surprisingly good range having only attached a 17.3cm length of wire to the receiver board. I was considering making a dipole but I won't need to.

Go Up