We have been doing some development work recently involving sending telemetry from Unmanned Aerial Vehicles (UAVs) over 2.4GHz radio links, and have successfully used our Virtual Wire library
(http://www.airspayce.com/mikem/arduino/VirtualWire) as the data protocol.
Our work centred around using the otherwise unused audio channel in a
Audio-Visual (A/V) transmitter/receiver as the channel for data
transmission. We tested 2 different A/V transmitters with Arduino and Flymaple microprocessors, and were able to send data reliably at up to 4000 bits per second over modest bandwidth audio channels.
So why do we need Virtual Wire? Why not just send ordinary async serial data?
The reasons are:
– Ordinary async data is not DC balanced and will cause the average voltage of
an analog data channel to vary greatly.
– Ordinary async data is prone to corruption by the sort of noise you might
get in analog channels.
– For reliability, you also need checksums to verify correct data delivery.
Virtual wire overcomes all these problems for reliable data delivery on a
limited bandwidth, poor quality link.
Digitech AR-1872 2.4GHz Digital Wireless AV Transmitter and Receiver
This is a consumer level, low power 2.4GHz transmitter/receiver pair. Unlike
some other A/V transmitter systems, this one expects to have 2-way
communications between the ‘transmitter’ and the ‘receiver’. This is so that
IR remote control signals can be relayed from the ‘receiver’ to the
‘transmitter’ and presumably to coordinate the frequency hopping/spread
spectrum. It carries a video and 2 (stereo) audio channels.
We measured the following characteristics of the audio channels:
Tx input impedance – 2kohms
Rx output max load ~ 20kohms: greater load results in distortion of the output
Overall gain Tx to Rx ~ 1:1
Max Tx input ~ 3V p-p, resulting in about 3V p-p Rx output
Bandwidth (1/2 voltage) 50Hz to 21kHz
Interestingly, there is some significant buffering between the transmitter and
the receiver, as input to the transmitter audion would only appear about 250ms
later on the receiver output.
Square wave inputs to the transmtter at 5kHz would show evidence of ringing
and overshoot at the receiver, while 10kHz square waves ended up looking more like a sine wave.
We tested this AV link with Arduino Uno
(http://arduino.cc/en/Main/ArduinoBoardUno) as transmitter and receiver running VirtualWire as a transmitter/receiver pair, using the following circuit:
http://www.airspayce.com/mikem/docs/av-transmitter-digitech.pdf
No buffering or level shifting was required for the transmitter input. Although
the output from the Arduino transmitter was 5V p-p digital, this was handled
by the Tx audio input.
An op-amp buffer on the output of the receiver is necessary, because the input
to the receiver Arduino would have been too low in voltage (3V instead of 5V)
and would have loaded the AV receiver too heavily. The op-amp is configured as
a comparator with a voltage clamp preceding it.
With this configuration, we were able to reliably send long messages of 71 octets payload using Virtual Wire at 8000 bits per second.
Lawmate TM-240500 transmitter and RX-2460 receiver
This is a more professional, 2.4GHz 500mw transmitter and receiver, with a
video and single audio channel. However, the quality of the audio channel is
poorer than the Digitech.
We measured the following characteristics of the audio channel:
Tx audio input impedance ~ 4kohm
The gain in the centre of the bandpass region was bout 8, with up to 8Vp-p
output for 1Vp-p input.
Bandwidth (1/ voltage) 15Hz to 4kHz.
If the input to the transmitter exceeds ~ 1.8Vp-p, get intermodulation
distortion of the audio signal.
Tx power consumption @ 12V: 270mA
Rx power consumption @ 12V: 260mA
We tested this AV link with Flymaple boards
(http://www.open-drone.org/flymaple) as transmitter and receiver running VirtualWire as a
transmitter/receiver pair, using the following circuit:
http://www.airspayce.com/mikem/docs/av-transmitters-lawmate.pdf
The Flymaple is a 3.3 V board, therefore we needed some limiting on the
digital input to clamp the input voltage range to 0 to 3.3V. The output of the
transmitter Flymaple needed to be limited to about 1Vp-p, else it would
overmodulate the transmitter.
With this configuration, we were able to get reliable transmission of 36 octet
payloads at 4000 bits per second.