I really wanted to avoid writing again about radio waves and electromagnetic interference because it is not one of my strong points; allas one cannot choose the bugs he encounters.
I am in the midst of a data logging side project using a couple of Arduinos and a classic 433MHz receiver-transmitter 1-euro-per-pair-on-eBay module to send my readings wirelessly. I am not sure about the actual names of the modules, they are marked as XD-RF-5V and XD-FST. You can see them below:
The problem is the communication isn't reliable. Regularly the receiver doesn't receive any data, or at least any correct data. Also my wireless weather station stopped working at about the same time I added the remote readings to the project. Even when the transmitter is next to the weather station, they lose their synchronization after some minutes.
Yesterday I found some time to fire up gqrx and check what happens at 433MHz that keeps my devices from working properly. This is what I got:
There definitely is someone destroying the 433MHz band in my neighborhood. Bloody insolent amateur, I am not gonna put up with this! :p
Before we continue we have to notice that I use automatic gain control in gqrx. This means we are not interested in the absolute levels of the signals but at their relative values.
So, my first move was to power off the Arduino which had the RF transmitter. Here is the immediate result:
Oops! Sorry neighborhood, I'll go stand in the corner for the next few hours.
Notice how uniform is the untainted spectrum except for the occasional noise. My first thought was this is what I get when I spend a euro for both the receiver and the transmitter. But I had to check what would happen with a different power supply. The Arduino was powered by a cheap, chinese USB charger that came with a bluetooth headset from eBay some years ago. Here it is:
I tried with a decent USB power supply, with a decent 12V DC power supply, with battery based USB and DC power supplies. The result was always the same, illustrated below:
As you may notice, with a proper power supply there is no intereference, there is only the transmission. Let's return for a bit at the first gqrx screenshot. Here is a version with the transmissions pointed out:
I hope you can now understand why the weather station couldn't receive data even when it was next to its transmitter.
The datalogger though still has problems and I am not sure why. Maybe the receiver shifted a bit the frequency it listens to (no idea why), maybe there is some timing conflict between the ethernet and virtualwire library used at the receiving Arduino concurrently, maybe when I soldered a wire to the receiver/transmitter pair —to act as antennae— I damaged one of them somehow.
Arduino certainly is fun to play with but when you play with RF you should be careful not to cause problems to others. The antenna used by the gqrx's receiver was about 3 meters from both the Arduino and the weather station transmitters. You can see how strong the EMI was, which means I may caused problems to other people near me who have devices working at 433MHz. Also even if we don't think much of our power supplies, they can create noise and this noise will find its way to our components. Question everything until you are sure that your project behaves the way you think it should. :)