Go Down

Topic: Help decoding 433 mhz RF temperature and humidity sensor (Read 12 times) previous topic - next topic

andriej

How does your voltage divider looks like?
I have similar thread here, I'm trying to do just the same with 433 sensor.
http://arduino.cc/forum/index.php/topic,142871.0.html

zang

#6
Jan 29, 2013, 06:49 pm Last Edit: Jan 29, 2013, 06:59 pm by zang Reason: 1
andriej - i followed this: http://davehouston.net/learn.htm


johncc, I'm getting close.  I don't think the temperature values are linear though:

After getting some colder samples I believe that both 8-bit columns after the humidity are 7bits temperature plus 1 parity bit in the beginning, so 14 bits for the temperature value:
Code: [Select]

-----------pCCCCCCC pIIIIIII pBBBBBBB pHHHHHHH pTTTTTTT pTTTTTTT CHECKSUM?-- TEMP IN BIN    DEC
A:-10C 70% 11111011 01101011 01000100 11000110 10000111 00000110 11111101 -- 00001110000110 902
A:+00C 68% 11111011 01101011 01000100 01000100 10000111 11100111 01011100 -- 00001111100111 999
A:+06C 65% 11111011 01101011 01000100 01000001 10001000 00100010 10010101 -- 00010000100010 1058
A:+12C 61% 11111011 01101011 01000100 10111101 10001000 11100001 11010000 -- 00010001100001 1121
A:+14C 59% 11111011 01101011 01000100 10111011 10001000 01110111 01100100 -- 00010001110111 1143
A:+16C 56% 11111011 01101011 01000100 10111000 00001001 10001000 11110011 -- 00010010001000 1160
A:+18C 55% 11111011 01101011 01000100 10110111 00001001 00010111 10000001 -- 00010010010111 1175
A:+20C 53% 11111011 01101011 01000100 00110101 00001001 10101100 10010100 -- 00010010101100 1196

p=Parity Bit
C=Channel (A, B or C)
I=Identification string ???
B=Battery OK/Low ???
H=Humidity
T=Arbitrary Temperature value
I'm guessing the last column is a CRC or Checksum but haven't investigated it yet.



But using the y=mx+b linear equation doesn't add up, or I'm doing it wrong :)   For example using the first and last data bits:
(x,y)
(20,1196)
(-10,902)

20-(-10)=30
1196-902=294
294/30=9
m=9

1196=9(20)+b
1196=180+b
b=1016

So then if i take the +6C sample:
1058=9(x)+1016
42=9x
x=42/9
x=4 (should be 6)

I've also tried it with the Fahrenheit data and i get the same behavior.  

We're getting really close though!

Riva

I think you have to subtract 1000 and divide by 10 to get Celsius value...
(1000 -1000) / 10.0 = 0.0C

(1143 - 1000) / 10.0 = 14.3C

(1196 - 1000) / 10.0 = 19.6C

zang

Riva Thank-you!  Now that I look at the decimal numbers I can obviously see it.  Sometimes you get so focused on one thing that it helps to get a second set of eyes to have a fresh look

johncc

#9
Jan 29, 2013, 07:29 pm Last Edit: Jan 29, 2013, 07:32 pm by johncc Reason: 1
Hey, that's great!!

I was going to suggest something like http://www.webmath.com/equline1.html but Riva solved it through inspection :)

Cheers,
John

Go Up