I am using an Arduino UNO and an RXb6 (I would link to the data sheet if I could find one) to try to decode a RF Signal that controls a remote outlet. I have the devices connected as you would assume 5V+ to 5v, Gnd to Gnd, Antenna is not connected as I think it would only exacerbate my problem, and data is connected to the A0 pin on my UNO.

The problem I am having is with all the noise that I am getting with my signal.I hooked it up to my o-scope to give a better idea of whats happening. When no signal is being transmitted this is the noise I am seeing: enter image description here

Just lots of static. When I press the remote button I can see a clean signal come through (note that it is cutoff):enter image description here

I was able to export a CSV of the wave and manually clean it up but it was just such a pain trying to translate it back to highs and lows for the arduino to send.

How can I reduce signal noise on my 433MHz receiver so the arduino can read the actual signal instead of noise?

  • 1
    Put both the transmitter and the receiver in a microwave (or another Faraday cage). Try having the usb lead, that's sticking out, be as short as possible. – Gerben Dec 11 '14 at 16:22
  • Unless you are trying to build something that automatically learns, it will probably be easier to do your analysis with an RTL-SDR dongle, and encode the cleanup up result in an Arduino sketch. – Chris Stratton Oct 22 '17 at 19:53

I'm adding another answer, because I don't think the core thing to grasp is mentioned, and others might benefit :)

The noise you are seeing, is actually the result of a feature of the RXB6, KSA6, and similar modules. When they see no signal, they increase gain/sensitivity until they do see a signal. The upside of this is they are very sensitive, and can operate well over quite long ranges. The downside is that if there really is no signal, they will start picking up anything that remotely looks like a signal, the noise you see :)

Dealing with this noise is the job of the software/protocol and other electronics built around the receiver. A common way to solve it, which the VirtualWire library also uses, is to send some unimportant 'data' first, which makes the receiver decrease it's sensitivity, and then send the important data. Another common way is to just repeat the data several times, this is also what your wall sockets most likely do.

In software you can usually find the 'important' parts by looking at pulse lengths, the noise is usually short high pulses, most protocols use far longer pulses, which also have a predictable/defined length.

What I did in exactly your case was to dump the sound recording as a raw signed pcm 16 bit file, which I could then easily read into a bit of software I wrote, which find's the high/low transitions, filters out any short pulses, and then writes out the output (like a csv) you want :)

  • Dealing with this using audio tools isn't a bad idea. Readers should not however that the date will be 1-bit samples - it can be expanded to 8 or 16 bit format for compatibility with audio tools, but the raw data from the radio will have only 1 bit. – Chris Stratton Oct 22 '17 at 19:52
  • That is certainly correct :) Nowadays I would use sigrok with a 3$ 'logic analyzer' board :) – cranphin Oct 23 '17 at 7:10
  • noise may be suppressed by squelching the output using a comparator on an AGC threshold level. – Tony Stewart Sunnyskyguy EE75 Oct 4 '20 at 17:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.