Go Down

Topic: I want to build an autonomous GPRS weather station (Read 24 times) previous topic - next topic


First of all thank you for your appreciation!


I think the following is a simple way to distinguish data packets:
Code: [Select]

if( bit9 == 0 )

     temperature/humidity data

     switch( bit14_bit12 )
           case 1: average wind speed data
           case 3: rain gauge data
           case 7: wind direction and gust data

Here are some real samples (my test receiver outputs each nibble as a hex digit, regarding the bit order):

B606F082F random id: 0xb6, temperature: 0x0f6 -> 246 -> 24.6 °C, relative humidity: 28 %
B66100E09 average wind speed: 0x0e -> 14 -> 2.8 m/s
B66F6132D wind direction: ( 0x16 << 1 ) | 1 -> 0x2d -> 45 °, wind gust: 0x23 -> 35 -> 7.0 m/s

I have collected also some random id's. Listed in order of appearance, all are hex values:

2E 16 6E E6 62 F6 B2 1E E6 26 EE 9E 06 32 7E BA 0A EE AE C2 AE C6 EA 12 22 22 12 A2 EE 9E 32 EA 72 66 C2 2A 9A 76 E2 A6 EE 9A DA D2 7A 0A EA EE BA 76 EA EE 5E CE D2 AA 86 EE DE 6E CA 32 9E 56


I have experienced the same problem with the rain gauge's magnet. However it seems, that it works fine when the unit stands firmly on a flat surface. The problem is somewhere in the RF section of mine unit, because i hear the transmission bursts on the communicaton receiver used to monitor the occurences of transmissions, but the test receiver, nor the base unit does not receive anything. I have managed to capture only a few samples by placing the rain gauge and the test receiver here and there.



Jan 21, 2011, 03:41 pm Last Edit: Jan 21, 2011, 03:48 pm by l33chy Reason: 1
Hi all,

does anyone have some code for that already? I just noticed that my C coding skills suck badly and I don't actually quite get how to grab the packets.

I have a few questions and it would be great if someone could help me on that:

Should I start the packet detection on the 8 times 1bit 'preamble'?

How is the DATA output of a basic ASK 433MHz receiver working? Can I just use that output directly to map HIGH to 1 and LOW to 0? Or do I need to actually define the lengths of each pulse to parse a 1 or 0?

Thanks for your help (I'm a proud Arduino UNO user for a week so far and I have just started to learn...)


P.S.: @TFD: Just out of curiosity: How did could you find out the specs of the transmission protocol? By using a professional logic analyzer?


I used two different 433 RXs, and both of them just output a "digital wave", i.e. I have to "manually" process it to determine what is "1" and what is "0", depending on length of high and low bursts.

I didn't write any code yet.  ::)


Go Up