Pages: [1]   Go Down
Author Topic: Deciphering an unknown serial feed  (Read 1614 times)
0 Members and 1 Guest are viewing this topic.
Toronto
Offline Offline
Newbie
*
Karma: 1
Posts: 26
Arduino is teh r0xx0r
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 127
Posts: 8519
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

Rob Gray aka the GRAYnomad www.robgray.com

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 217
Posts: 13718
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

Rob Tillaart

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

Toronto
Offline Offline
Newbie
*
Karma: 1
Posts: 26
Arduino is teh r0xx0r
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 127
Posts: 8519
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oops, yes you did say wireless.

______
Rob
Logged

Rob Gray aka the GRAYnomad www.robgray.com

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 217
Posts: 13718
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ...?)
Logged

Rob Tillaart

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

Montreal
Offline Offline
Faraday Member
**
Karma: 29
Posts: 2590
Per aspera ad astra.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


 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.


 

Logged

Toronto
Offline Offline
Newbie
*
Karma: 1
Posts: 26
Arduino is teh r0xx0r
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: February 22, 2011, 10:16:02 pm by scruss » Logged

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 217
Posts: 13718
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Rob Tillaart

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

Toronto
Offline Offline
Newbie
*
Karma: 1
Posts: 26
Arduino is teh r0xx0r
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Montreal
Offline Offline
Faraday Member
**
Karma: 29
Posts: 2590
Per aspera ad astra.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Toronto
Offline Offline
Newbie
*
Karma: 1
Posts: 26
Arduino is teh r0xx0r
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

No pattern, looks mess before and after - bit-rate is wrong.
And that's pretty much what I have to do. Thanks to all!
Logged

SF Bay Area (USA)
Offline Offline
Tesla Member
***
Karma: 133
Posts: 6755
Strongly opinionated, but not official!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
Logged

Pages: [1]   Go Up
Jump to: