FrSky Telemetry To DroidPlanner Mavlink through external Bluetooth

Here at Airborne Projects we have been hard at work with new ways to bring MAVLink telemetry to the ground without extra parts. Specifically we are working on an Antenna Tracker that needs information about the whereabouts of the Drone, but this is for another post.

Because of our needs for wireless DRONE position information without the extra radio link we have developed a module that connects to the external module compartment of the Taranis Plus and retrieves the Frsky telemetry our Airborne Projects converter sends to the ground through the SmartPort protocol. This module transmits through Bluetooth the MAVLink data and in the video below you can see this working with DroidPlanner application in Android.

This converter is receive only, as the SmartPort as far as we know does not allow for sending.

We are able to reconstruct many messages from the information our converter sends to the ground, but even so we have been testing sending extra information through unmarked sensor IDs. This is going to be available with a free of charge firmware update to our customers.

Below is the data MAVLink data which is populated by our telemetry module:

mavlink_msg_heartbeat_pack(1, 1, &message, mavlink.mav_type, 3,
        mavlink.base_mode, mavlink.custom_mode, mavlink.system_status);
    uint16_t message_len = mavlink_msg_to_send_buffer(buffer, &message);
    Serial.write(buffer, message_len);

    mavlink_msg_sys_status_pack(1, 1, &message, ~0, ~0, ~0, 0, mavlink.battery_voltage,
        mavlink.battery_current, mavlink.battery_remaining, 0, 0, 0, 0, 0, 0);
    message_len = mavlink_msg_to_send_buffer(buffer, &message);
    Serial.write(buffer, message_len);

    mavlink_msg_gps_raw_int_pack(1, 1, &message, 0, mavlink.gps_fixtype,
        mavlink.gps_latitude, mavlink.gps_longitude, mavlink.gps_altitude,
        mavlink.gps_hdop, 0, mavlink.gps_speed, 0, mavlink.gps_satellites_visible);
    message_len = mavlink_msg_to_send_buffer(buffer, &message);
    Serial.write(buffer, message_len);

    mavlink_msg_global_position_int_pack(1, 1, &message, 0,
        mavlink.gps_latitude, mavlink.gps_longitude, mavlink.gps_altitude,
        0, 0, 0, 0, mavlink.heading * 100);
    message_len = mavlink_msg_to_send_buffer(buffer, &message);
    Serial.write(buffer, message_len);

    mavlink_msg_attitude_pack(1, 1, &message,
        millis(), mavlink.roll * 3.14 / 180.0, mavlink.pitch * 3.14 / 180.0,
        mavlink.heading * 3.14 / 180.0, 0, 0, 0);
    message_len = mavlink_msg_to_send_buffer(buffer, &message);
    Serial.write(buffer, message_len);

    mavlink_msg_vfr_hud_pack(1, 1, &message, 0.0, mavlink.groundspeed,
        mavlink.heading, 0, mavlink.bar_altitude, mavlink.climb_rate);
    message_len = mavlink_msg_to_send_buffer(buffer, &message);
    Serial.write(buffer, message_len);

Lets us know what you think, or any suggestions.

Views: 1119

Comment by Artem on August 25, 2016 at 2:07pm

finally, a working solution for hobbyist where we do not need full scale bidirectional mavlink. 

can you please implement it for the older frskyD protocol for use with openlrs/openlrsng hardware for long range? this would've been just awesome- feeding my AP antenna tracker!  

Comment by Hugues on August 26, 2016 at 12:25am

unfortunately, i consider telemetry through another radio link as a critical safety link redundancy. Excellent for non critical non professional uses though!

Comment by Paulo Neves on August 26, 2016 at 5:07am

@Artem Hey. Regarding the frskyD protocol I dont know how it works and don't have the hardware for me to test. If I take a look at it and have news I will post it. If you happen to know of a source where the differences are well explained I might give it a try.

@James, no I have not thought of that. To be honest I never even worked with it but it seems interesting. The only problem I see is that to make a product that works without configuration it would have to create a Wifi network and clients of this network would not have access to the internet. This is a deal breaker for some people which only have one wifi radio available. The other way would be a simple web interface for advanced users to choose the network to which the ESP8266 would connect but that already creates some complications, as I noticed with the Emlid's REACH module.

@Hugues: You can see the other way around. You get another "free" telemetry channel for redundancy :D

Thanks for the comments


You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service