Go Down

Topic: 433 MHZ temperature sensor decoding (Read 918 times) previous topic - next topic

Elfishi

thanks for efforts, I appreciate that.

I still struggle, b/c you say "(1) make a transition in the output line at the rising edge of the clock pulse."

You can see in your sketch that example code does not make a transition at every rising edge of the clock pulse.  So that condition needs to go in the present coding.

jremington

#16
Mar 11, 2018, 11:54 pm Last Edit: Mar 12, 2018, 11:40 pm by jremington
Oops, you are right.

After some thought, it is clear that this signal can't be either Manchester or differential Manchester. Neither of those encoding schemes will allow three consecutive bits to be the same, i.t. the sequence "000".

If you have decoded the pulse timing correctly, this is some other type of encoding.

Elfishi

My code does not have three consecutive bits that are the same and still violates the manchester conditions as demonstrated by yourself above.

Elfishi

OK, so here is the code:

The TCM transmitter labelled C-846 sends High (=) and Low (_) signals of 2 and 4 ms durations. Assuming a 2ms bit clock period, a long pulse transmits two code bits and a short pulse covers one.

Every 30 or so seconds the transmitter sends bursts of 146 code bits followed by a long Low stop bit.
The first code bit is always Low and the last bit before the long stop Low is always High.

In between there are 144 code bits comprising 48 data bits of 3 code bits each. For each data bit state (0 or 1) there are two code triplets:

code   data
_=_      0
==_      0
=_=      1
=__      1


Other possible triplets are not found in the code.

The 48 data bits come in two groups of 24, the second group are a bit inverted copy of the first 24.
                        ________________________
00CC11SBIIIIITTTOOOODDDD00CC11SBIIIIITTTOOOODDDD

CC        Channel
S         Sign of temperature
B         Battery low warning
IIII(I)   Transmitter ID
(T)TTT    Tens of temperature
OOOO      Ones of temperature
DDDD      Decimal of temperature


The transmitter allows for a channel number to be selected. In order for the new channel number to be sent the transmitter needs to be reset. Upon each reset the transmitter sends a different, apparently randomly chosen four or five-bit ID.
ATM I can't tell how to assign the one bit I put in brackets. In my data samples I find two different codes for that bit, but both mean 0.

The temperature is BCD encoded in degree Celsius, three or four bits for the tens digit, four bits for the ones and decimal digits.

For decoding it is sufficient to look at the middle bit of the code triplets to derive the data bit, = means 0 and _ means 1.

Currently I am looking at ways for efficient signal recording and decoding as reception quality is an issue. If I just censor pulses that are too short, I am losing quite a few transmissions. So if anyone can point me to cunning schemes for signal recording and clock recovery of a noisy signal I'd be grateful.


 

Go Up