For the past few months I've been playing around trying to capture packets sent from Oregon Scientific v3 weather sensors. I've modified the code from http://www.practicalarduino.com/projects/weather-station-receiver to capture a buffer of data. Once the buffer is full I dump it to the serial port. I look through the output to find a range that looks like possible data. Then I modify the code to only capture data in that range.
Here is a sample of what I think is the data sent from the sensor.. It's a constant size and is sent approximately every 60 seconds. (data is the pulse lenght).
The problem is? now I'm stumped. Converting the data to binary (100 – 190 = 0, 200 – 300 = 1 or reversed) doesn't give me anything useful. It doesn't look Manchester encoded and I can't see anything that looks like good data.
Help! Do you think my logic is wrong on how I capture the data? What's the best way to decode the packets?
Then you should try to locate parts of the code sequence that stay equal. I would guess that the stream is not encrypted. So this should not be that hard.
If there seems to be no correlation whatsoever the question would be if you actually did receive anthing or just picked up random giberish.
Next thing that I would do, I would just guess that the pulse lengths correlate with 0s and 1s. That is ~127 --> 0, ~255 -> 1. But I might be wrong of course.
I hooked the RX up to my computer (http://davehouston.net/learn.htm) and got a clean 'image' of what I needed to decode (here is the signal from the THGN 801 temp/humidity sensor http://www.lostbyte.net/thgn801.png). It was all downhill from there. I've successfully decoded all 4 of the V3.0 Oregon Scientific weather sensors I own.
Here is the binary data from a temperature sensor (note: data bytes need to be reversed):
10111110001010000101000100101010000101010100000000011101010000011100010110000100
-------------------------------[T4][T3][T2][T1][TS][H3][H2][H1]-----------------
TS = 0000 = 0 (0 = +, 1 = -)
T1 = 0000 = 0
T2 = 0101 = 5
T3 = 0101 = 5
T4 = 0000 = 0
H1 = 0000 = 0 (This might actually not be part of the Humidity.. just a guess)
H2 = 0101 = 5
H3 = 0111 = 7
Temperature is: +05.50c (41.0f)
Humidity is: 057%
Can anybody figure out the checksum? I assume it's the last 2 bytes but I can't seem to crack it. It would be nice if I could validate the packages since the wind sensor sends a signal every ~15 seconds there are a few 'collisions'.
Well, it would be extraordinary helpful to have some reasonable number of sample data, not just one sample. Since you seem to get a sample each 15 seconds, would you provide some 100 - 1000 samples (or more) incl. he suspected checksum? Preferably in a csv format?
Even if you suspect a crc16 or something similar this can not be infered from just one or two samples.