So, i have a OWL CM130 wireless energy monitor for keeping an eye on power consumption at home.
It’s a great little gadget, but also a very cheap one: i bought it a few years ago for around 30€ in eBay, but it won’t let me do anything with the data, other than display it.
These usually work in 433MHz band, and i happen to have a 433MHz AM receiver similar to this one:
And this is the pinout:
So, i thought “This is a no brainer”!
I grabbed my Arduino, hooked up the receiver, attached a 17cm wire serving as an antenna, and loaded up the DecodeOOK sketch from JeeLabs. Source: (http://jeelabs.net/projects/cafe/wiki/Decoding_the_Oregon_Scientific_V2_protocol)
Despite the image says 10 to 15cm antenna, 433MHz translates to a roughly 70cm wavelength. Since i wasn’t thinking about a groundplane for such a small setup, a 1/4L antenna is used. So, 70/4 is a bit north of the 17cm, and is never going to be 10 to 15cm.
And this was the result:
Yeap! A whole lot of nothing!
I checked wiring, then i put the receiver very close from the emitter, but still, no go.
Since these things communicate through AM or OOK i thought i could ear the transmission through a speaker so i could keep track of the signal.
So, on the breadboard, i set this up:
And it looked like this:
It’s only a voltage devider, and a couple of filtering caps, but it gets the job done. I adjusted resistor value to keep the volume at the desired level.
And… noise! Just a lot of plain old additive white gaussian noise.
Frustrated, i stepped away from the setup, when suddenly, the noise stopped, and i eared bits going through. Then, more noise.
Then i came back, and still, nothing. And again, more bits after a while.
I thought that there should be a pattern for this, so i timed the bits going through with my phone.
This was probably the only WIN on this project. Nevermind the portuguese mambo-jambo, i clearly had a 60 second heartbeat. Further experimentation showed me that when power consumption changed, new data was sent at the 12, 24 and 36 second mark. And then again, at every 60 seconds.
So, i grabbed the Packet Analyzer tool from http://wiki.nethome.nu/doku.php/analyzer/start
I didn’t had a 3,5mm jack available, so, i made the next best thing [don't cringe]: put the speaker on top of my macbook’s mic. Waited for the 60second mark, and started recording.
But first, dear reader, behold the typical AM signal:
Our signal (on top) is multiplied by an high frequency signal, giving the AM signal on the bottom. AM is very distinct because it oscilates around zero, with similar positive and negative values. So, white noise should be a lot of up’s with similar downs.
But notice the beginning of the sample:
Then, once again, i tried with OOKDecode. And no joy.
I need to get hold of a 3,5mm jack, and figure out why all the noise – the bits simply aren’t clear enough for decoding. It could be a defective board, or simply a badly designed one: i might add some shielding before trying again.
Some thoughts worth noting
- Signal was sporadic, and i successfully managed to figure out when i should expect a signal to be transmitted;
- There were too much noise for my taste on the receiving end, even very close to the transmitter. Ground lines were properly attached, and i tried with and without antenna without improvement. Probably the board needs shielding?
- I experimented with the screw adjusting frequency. No improvement.
- On the transmitter there are some signal taps, but i can’t figure out what they are. I can read GND1, VDD1, FLM, PCLK, REST, RX, TX
This doesn’t look like SPI or I2C. Straight out serial? What are the other pins for? Since i don’t have an osciloscope, i haven’t bothered – yet – on soldering a header for further investigation.
There’s a lot of work done over here http://www.instructables.com/id/Arduino-Wireless-Weather-Station-Web-Server/
However, the code is optimized for the weather station, and there’s a lot of modules going on. I wasn’t going for anything that complex, so, i went my own route (with my own set of issues to go along).