I have 2 Arduinos and I want to send data from one Arduino to the other using VirtualWire and 433 MHz transmitter/receiver. The two Arduinos are placed in two different rooms with 3 walls and 10 meters between them.
Everything was working fine, except that I lost a package once in a while, which was acceptable. However I decided to see if I could improve the stability by changing some things in the software, and I disconnected the Arduino in the remote room, to bring it to my computer, so that I could program it. When I put it back in the other room, nothing was working any more. I then put in the original program, but still nothing was working.
For debugging purpose, I wrote a small program, which send one byte every second, which counts from 0 to 255. Now I could receive almost every packet, but I discovered that if I moved the receiving Arduino just 2 cm, then no data would be received any more.
Each Arduino has a breadboard, where the transmitter and the receiver are mounted. The antennas are two 17 cm wires, with one end stuck into the breadboards in the same row as were the antenna input/output of the receiver/transmitter are connected. Both antennas are standing up vertically.
Is there some way I can change the antenna "design" to make my link immune to where I place it?
I am currently using 2000 bps, which seemed to work previously and I have also tried to change it to 500 bps, but it doesn't really seems to make a big difference.
Any idea what is in the remote room that is causing the interference?
You could try making the antenna longer - 34cm vs 17cm. Or shorter, 8.5cm.
In the room where the sender is, there should be nothing interfering with the transmission. In the receiver room, I have a 433 MHz transmitter for a weatherstation near by, but it is only transmitting once every half minute, so this shouldn't be causing any big problems.
I have already tried 34 cm at the transmitter end, but it didn't make much difference. I might try again with 34 cm at both ends.
Are there any other tricks I can do with the antenna to improve the gain?
The antenna at the receiver side needs to be omni directionally, since I am also using it for receiving data from my weather station.
Hi jokkemokke - if you have an oscilloscope available, look at what the receivers are spitting out at the data pin. In case you do now own an oscilloscope, you can run the data from the receiver to the line-in of your soundcard and use a soundcard oscilloscope for some analysis. The frequencies involved are low enough to be handled by such systems. You could even try to listen to the transmissions - you should hear a regular chirp every minute or so from your weather station, for example. And of course, you should hear your Arduinos talking as well. Use the auditory feedback to figure out what you are actually receiving while changing things. This might give you a clue on what is happening.
Also note that there are two different RF systems in use @433 MHz - one basically using AM modulation, the other one FM. Note that the AM variant will spit out quite some noise between signal transmissions, due to an Autogain feature these circuits are using.