Pages: [1]   Go Down
Author Topic: Aurel RX2 433.92Mhz noise filter  (Read 860 times)
0 Members and 1 Guest are viewing this topic.
Czech Republic
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello I am new here.
I would like to help with programming the noise filter for receiver Aurel RX2.
I tried to take the solution from the IR decoder but the noise made ​​it impossible to capture data.
So I made small changes but the result is still bad.

I had best results with this code but there is still a lot of noise
Code:
#define IRpin_PIN      PIND
#define IRpin          6
#define MAXPULSE 5000
 
// what our timing resolution should be, larger is better
// as its more 'precise' - but too large and you wont get
// accurate timing
#define RESOLUTION 20
 
// we will store
uint16_t pulses[300][2];  // pair is high and low pulse
uint8_t currentpulse = 0; // index for pulses we're storing
uint8_t LEDpin = 13;
void setup(void) {
  Serial.begin(19200);
  Serial.println("Ready to decode 433.92Mhz!");
  
}
 
void loop(void) {
  uint16_t highpulse, lowpulse;  // temporary storage timing
  highpulse = lowpulse = 0; // start out with no pulse length
 
 
    while (IRpin_PIN & (1 << IRpin)) {
     // pin is still HIGH
     highpulse++;
     delayMicroseconds(RESOLUTION);
      digitalWrite(LEDpin,HIGH);
     if ((highpulse >= MAXPULSE) && (currentpulse != 0) && (currentpulse <= 299)) {
       printpulses();
       currentpulse=0;
       return;
     }
  }
  pulses[currentpulse][0] = highpulse;
 
  // same as above
  while (! (IRpin_PIN & _BV(IRpin))) {
     // pin is still LOW
     lowpulse++;
     delayMicroseconds(RESOLUTION);
      digitalWrite(LEDpin,LOW);
     if ((lowpulse >= MAXPULSE)  && (currentpulse != 0) && (currentpulse <= 299)) {
       printpulses();
       currentpulse=0;
       return;
     }
  }
  pulses[currentpulse][1] = lowpulse;
  
  
  currentpulse++;
}
 
void printpulses(void) {
  Serial.println("\n\r\n\rReceived: \n\rOFF \tON");
  for (uint8_t i = 0; i < currentpulse; i++) {
    Serial.print(pulses[i][0] * RESOLUTION, DEC);
    Serial.print(" usec, ");
    Serial.print(pulses[i][1] * RESOLUTION, DEC);
    Serial.println(" usec");
  }
}
I got it for, debug and decoding my weather stations, remote switch and etc..
I attach pictures of the measured noise and noise with the signal in the red circles.
I would advise anyone how to improve filtering.
Thanks for reading.
Sorry for bad English.


* noise.png (4.09 KB, 1562x151 - viewed 22 times.)

* noise-with-signal.png (17.11 KB, 1563x181 - viewed 24 times.)
« Last Edit: May 03, 2012, 06:33:25 am by Trught » Logged

0
Offline Offline
Shannon Member
****
Karma: 220
Posts: 12700
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

What is the exact nature of the signal you are trying to extract?  The pictures don't enough resolution to show it.
Logged

[ I won't respond to messages, use the forum please ]

Czech Republic
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

The problem is that nature may be different, I do not want to capture only one type but a universal solution for multiple devices. So if it's possible for multiple types of signals?
The signal from the noise always recognize because it has a higher frequency, and on this basis I imagined filter. Record to be the first 5-8 pulses in a short period of time, know that it is a signal.
Logged

Anaheim CA.
Offline Offline
Faraday Member
**
Karma: 48
Posts: 2935
...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Send your data as rs232 OOK transmissions, perhaps for evaluation ? Any 'filtering' of that pseudo random noise would per force limit the max data rate and as such not too great an idea. rs232 is more tolerant of errors  (noise) at low speeds. Just a thought.

Doc
Logged

--> WA7EMS <--
“The solution of every problem is another problem.” -Johann Wolfgang von Goethe
I do answer technical questions PM'd to me with whatever is in my clipboard

0
Offline Offline
Shannon Member
****
Karma: 220
Posts: 12700
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

The problem is that nature may be different, I do not want to capture only one type but a universal solution for multiple devices. So if it's possible for multiple types of signals?
The signal from the noise always recognize because it has a higher frequency, and on this basis I imagined filter. Record to be the first 5-8 pulses in a short period of time, know that it is a signal.

What frequency or frequencies?  Can we see a sample of the actual signal graphically - it really helps to know what we're talking about.
Logged

[ I won't respond to messages, use the forum please ]

Czech Republic
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
What frequency or frequencies?  Can we see a sample of the actual signal graphically - it really helps to know what we're talking about.
"frequencies", please excuse my bad English.
Logged

Pages: [1]   Go Up
Jump to: