Go Down

Topic: Deciphering an unknown serial feed (Read 1 time) previous topic - next topic

scruss

I'm trying to decode the serial wireless transmission from a 433MHz power monitor. This unit sends a short data burst about every 32 seconds. I can see data coming in, and using the Parallax 433 MHz RF Transceiver, I can filter out noise and have a fairly good idea when the data's coming in.

Unfortunately, I have no idea of the bitrate, or whether the bits are inverted, or what's being transmitted. Is there any way that, by looking at a bit stream, for me to know if I'm using the right bitrate?

Thanks in advance,
Stewart

Graynomad

Quote
Is there any way that, by looking at a bit stream, for me to know if I'm using the right bitrate?

Logic analyser, scope, one of the serial sniffers around.

Failing that just start trying different options (although if you don't know what data to expect it will be hard to know when you get it right).

Quote
or whether the bits are inverted,

Is this RS232 or 5v logic signal?

Measure the voltage during the 32sec idle period to determine the polarity. That will remove one variable.

______
Rob

Rob Gray aka the GRAYnomad www.robgray.com

robtillaart

The datasheet - http://www.parallax.com/Portals/0/Downloads/docs/prod/rf/27982-433MHzRFTransceiver-v1.1.pdf - talks about asynchronous serial @ 1200 - 9600 bps
so you need to try 1200, 2400, 4800 and 9600 baud . The code samples all use 2400 baud so that's the one I would start with.

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

scruss


Is this RS232 or 5v logic signal?

Measure the voltage during the 32sec idle period to determine the polarity. That will remove one variable.


It's wireless, Rob. There isn't any idle period, as the antenna picks up anything it can use and turns it into characters.

thanks,
Stewart

Graynomad

Oops, yes you did say wireless.

______
Rob
Rob Gray aka the GRAYnomad www.robgray.com

robtillaart

Quote
This unit sends a short data burst about every 32 seconds.

So the question is, who or what sends it?

Wrap the antenna in alumium foil, does it still send?

The module has a signal strength indicator, so you can use it to detect the sender? (neighbour, TV, elektricity meter, washing machine ...?)
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Magician


I don't think to wrap antenna or ever ground it will change situation.
Unit will continue transmitting data, whatever noise   it can pickup,
let say it's own input circuitry.
Protocol analyzer, sniffers and other technological "breaking enigma" option is
good, but only for federals with unlimited budgets.

I'd suggest, it'd be easier to decode message that is not a noise, but
something repeatable over and over again.
if it's power monitor, get one more same kind device, that will transmit in close proximity to your monitor, stable power signal over the time.

1). Turn on transmitter, set power that definitely will suppress any environmental garbage.
2). Make a dump of the stream from receiver, or watch it on you serial monitor attentively.
3). Change a  power of your own RF source.
4). Take a second dump, (or don't look around if it stream on serial monitor -):
5). Compare results.
a) If no difference, most likely, bit-rate settings mismatch (receiver and analyzer).
     Change serial settings of the analyzer, go to step 1.
b) if you notice the difference at least in one byte, it could be data-byte RSSI.
     Go to step 3, play around with Tx signal several times, to gather more information.

Hope it will help.





scruss

#7
Feb 22, 2011, 08:21 pm Last Edit: Feb 23, 2011, 04:16 am by scruss Reason: 1

So the question is, who or what sends it?


It's one of these: Electricity Power Cost Monitor.

Quote
The module has a signal strength indicator, so you can use it to detect the sender? (neighbour, TV, elektricity meter, washing machine ...?)


Sort of. The received signal strength peaks every ~31.8s, which coincides with the Power Cost Monitor's display updating. I get signal strength traces like this: http://scruss.com/wordpress/wp-content/uploads/2011/02/signal_strength.pdf

(If that image is blocked, there more of a blog post here: on the trail of the elusive Power Cost Monitor signal)

cheers,
Stewart

robtillaart

The 9600baud looks most promissing, but still makes little sense - is 19200 and 38k4 log also possible?
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

scruss


The 9600baud looks most promissing, but still makes little sense - is 19200 and 38k4 log also possible?

I don't think so. The Parallax receiver only supports up to 9600. Most 433MHz wireless rx/tx units go up to 2400 or 4800.

Magician

O'K than, so it's not RF power, this all about AC electrical power.
In my previous post I give universal algorithm.
If you deal with AC,, so change AC power level (current or load).
The idea to solve the puzzle, "black box - device"  is:
change input (RF, AC, water, gaz etc) and look at the output.
You have to find a pattern.
No pattern, looks mess before and after - bit-rate is wrong.

scruss


No pattern, looks mess before and after - bit-rate is wrong.

And that's pretty much what I have to do. Thanks to all!

westfw

It is probably easiest to start out assuming certain data formats (async, 1200bps, 8databits 1 startbit one stopbit) and see if it fits.  Then try inverted async.  Don't forget that this is a cheap consumer product that probably contains a standard microprocessor of some kind, and it probably uses a data format supported by that micro, which is probably an async uart (I2C and SPI being fundamentally more-than-one-wire protocols.)

Can you take apart the existing receiver (or transmitter, except that would be more dangerous) and see what's there?  It may have a little 433MHz module just like we use, in which case you can look at where it's being fed from/to.

You can use your arduino as a sort of one-wire logic analyzer for things like this.  Sample the incoming bitstream from the receiver module every 10 microseconds or so for the entire duration of the transmission, store the results in RAM and dump to a PC for display and interpretation.  Or measure intervals between changes and send those...

Go Up