Who wants to transmit APM Mavlink telemetry data to ground station using FrSky only? (e.g. without 3DR radio)
Using two Arduinos I have made this possible. One Arduino ("sending part") is on the plane between APM telemetry UART and FrSky receiver RX. Second arduino ("receiving part") is on ground on the transmitter reading its UART, converting data and sending it to ground station running Mavlink compatible software.
Source code can be found on github, here
I have even included a demoversion - special firmware for receiving arduino that generates "fake" telemetry data of virtual airplane flying above Prague..
Receiving Arduino receives not only telemetry from APM, but can also read internal FrSky frames that contain RSSI and voltage - if you have a FrSky voltage regulator.
How it works:
Sending part reads data from APM, caches them in global state, and periodically generates proprietary two byte messages and sends them to FrSky UART. Various data are send using different frequency: For example plane attitude (roll, pitch and yaw) is being sent more often than GPS coordinates. See attached image on how the sending part is wired.
Obviously, not all MavLink messages are transferred to ground. Effective bandwidth of FrSky downlink is only about 1200 bps! Currently, only those telemetry information are sent: roll, pitch, yaw, altitude (only 1x, not relative - that could be computed on ground), speed (only vGND), GPS lat, GPS lon. FrSky adds battery voltage and RSSI. More messages can be added, maybe at the cost of lowering frequency of the previous messages.
Two byte protocol works like this: First byte starts with bit 1, second byte starts with bit 0. Bits 2-5 of first byte contain information of data type being sent (ie. only 16 different telemetry types are possible). Rest 10 bits from the first and second byte contain useful data.
Receiving part reads data from FrSky transmitter (I use DIY FrSky module), unpacks it and immediately generates MavLink message that is sent to output UART (USB to computer MissionPlanner or OTG cable to Android ground control station like DroidPlanner/AndroPilot).
On airplane I use Arduino Pro Mini, on ground I prefer Arduino Nano since it already has FTDI converter co it can be connected to PC/Android directly.
Using FrSky it is only possible to download data from plane to ground control station. Uplink is not possible as far as I know. I am working on a hacking project that will make it possible to encode a few bps on channel 7 and 8 so that even uplink will be possible. Will post when I finish this.