DroneBridge

Creating a long range/low latency/ low-cost digital radio link for UAVs & aerial photography

As my „not just another drone“ project grew very large over the last year I decided to split it up into different articles.

This article focuses on the communication link between a drone & ground station. As no affordable industry solution existed in 2016 I started to create my own. After spending months developing the software I decided to release it under the name of DroneBridge. DroneBridge is a set of modules plus an Android app that should help to make MultiWii (Betaflight/Cleanflight/iNav) and MAVLink based flight controllers more suitable for aerial photography. It aims to be a real alternative to solutions like DJI Lightbridge or OcuSync.

DroneBridge runs on a Raspberry Pi and uses the Pi camera module to deliver an HD low latency video feed over more than 2 km. It uses wifi hardware and patched drivers to push the hardware to its maximum. As a receiver, any Linux based computer can be used. It is recommended to use a Raspberry Pi as well since there are ready to use DroneBridge images for it.

While DroneBridge is designed as a UAV data link it is not limited to that single use-case. It is completely open and easy to use (thanks to a common library that handles all of the connection stuff) and perfectly fitted to handle any kind of data. Use it whenever you need high data rates (1-54Mbit), high range (0.5 – 35 km) and low latency (~110 ms for video).

You can find the most current source code of DroneBridge here:

DroneBridge Repository

Documentation

Update on Beta v0.6 release

The new release will have a common library for C/C++ and Python3 that enables everyone to easily develop their own implementations. The DroneBridge common library gives quick access to the DroneBridgte raw protocol, encryption & software diversity functions used by the modules.

Why build DroneBridge?

The EZ-WifiBroadcast project has come a long way and is very good at delivering low latency video over long distances. Since release 1.5 there also is the possibility to send RC signals. Without this, the user is forced to switch to 5.8 GHz for video transmission to not interfere with the radio control that usually operates at 2.4 GHz. With video over 5.8 GHz, the range gets halved.

However, it got a lot of shortcomings in terms of documentation and usability. Also, I wanted to add new features and allow others to easily integrate their own code etc.

Instead of trying to fix all these issues I decided that it is better to start an entirely new project and rewrite almost all of the code. By sticking to the base image provided by EZ-WBC I can take advantage of all the driver and OS modifications that were made.
The goal is to build a complete system that works with common UAV hardware. It must be easy to configure and use and capable of enabling low latency video, telemetry, RC and MSP/MAVLink two way communication.
An RC implementation that has more than eight channels, works perfectly with popular hardware and mimics a standard radio control including failsafe. Everything should be easy to configure using an app that acts as the UI for the whole system (drone & ground station)

One open system. A cheap and almost ready to fly solution for UAVs of all kind.

DroneBridge for Android: What can it do?

dronebridge app
DroneBridge app with explanations
The DroneBridge android app user interface

Display important information using an android app including:

  • RSSI of drone & ground station
  • low latency live video delivered by the WifiBroadcast project (~112 ms glass to glass latency)
  • Monitor autonomous missions (LTM & MAVLink telemetry)
  • Positions on a map including operator, drone and home point
  • All kinds of telemetry information
  • allows sending any MSP/MAVLink command to the flight controller
  • display battery status (voltage, cell voltage, percent using a battery model)
  • allows changing wifibroadcast settings (frequency, FEC etc.)
  • allows configuring DroneBridge settings

Modular design & custom protocols

Network Configuration
DroneBridge v0.6 System Architecture
USB Configuration

With DroneBridge one can send any MSP or MAVLink command directly to the flight controller. For example commands like:

  • Calibration of MAG and ACC
  • RC
  • Autonomous missions
  • PIDs
  • Rates

Hardware options

DroneBridge features support for the Raspberry Pi and the cheap ESP32.

DroneBridge long range hardware setup
DroneBridge long-range hardware setup

While the ESP32 only gives about 150m of range it is a cheap & easy way of getting started. Its meant for small & light builds and is supported by DroneBridge for Android out of the box. In the future users can create, edit and upload missions via the app.

Get DroneBridge for ESP32 here

DroneBridge for ESP32 hardware setup
DroneBridge for ESP32 hardware setup

Range test

The range was tested using:

  • DroneBridge v0.6 Beta (nightly/developer build)
  • Sender: 1x AWUS036NHA with a 3 dBi omni-antenna
  • Receiver: 1x TP-Link TL-WN722N v1.1 with a 5 dBi omni-antenna
  • Frequency: 2447 MHz
  • Distance: 1,8 km
  • Data rate: 18 Mbit
  • Video/Payload data rate: ~6 Mbit
  • Rural area, direct line of sight, ~same elevation, few valleys in between TX & RX
  • No bi-directional data was sent (RC implementation was not tested)
Terrain profile shows a max. elevation of ~525m and a min. elevation of ~480m. With the valley like profile the wave propagation in open space between GND and Drone can be approximated.

Results:

About -75 ~ -77 dBm signal strength depending on the accurate orientation of the receiving antenna. Packet-loss was around one packet per second. With a diversity setup on the receiving side, the packet-loss could be further reduced. Looking at the signal strength I think a few more meters could be gained so two kilometers seem to be the maximum you can get out of the card-antenna combination.

23 thoughts on “DroneBridge”

  1. Anonymous says:

    Howdy! This is my first visit to your blog! We are a group of volunteers and starting a new project in a community in the same niche. Your blog provided us valuable information to work on. You have done a extraordinary job!

    1. cyber says:

      Love to hear that! Keep me posted! I hope I find so time during the next weeks to debug and release v0.3 lots of improvements there.

  2. Laurent says:

    Hello,
    It seems that the link to the android app on https://github.com/seeul8er/DroneBridge is not working or more.
    I am trying to test your system that seems great but without the android application I can not go or end tests.

    Thanks in advance

    Great job

    1. cyber says:

      Oh sorry! You are right. I put in an expiration date so people do not use old versions of the app. I will try to upload the most current one by tomorrow. Thanks for pointing that out!
      BTW. I will have some time next week so you can expect DroneBridge v0.3 in short. You can find the most current code under the nightly branch in the repository.

  3. Laurent says:

    Hello,
    I’m looking forward to discover this new release!
    I tell you again, it’s a great job.

    Thanks
    Laurent

  4. nbroenner says:

    Hi,

    is it possible to use the Software in combination with the navio 2 addon board?

    Thanks and regards

    1. cyber says:

      Not sure but I don’t think so. As far as I know the Raspberry Pi runs a custom real-time kernel when used with Navio2. I would guess you will have a hard time getting the DroneBridge modules + WifiBroadcast video link running on it. DroneBridge/Wifibroadcast also uses a patched kernel to improve range.

      But you could use the Android app to track your UAV by forwarding the MAVLink telemetry stream to UDP port 1604. In the future you will also be able to create & upload missions

  5. Very cool project! I hope to give it a try in my custom 450 quad sometime, but that probably won’t be for another year or so.

  6. MilaMiki says:

    Great project – Congrats.
    Actually I’m comparing your project and three others – original WBC, EZ-WBC and SVPCOM fork of WBC. I try to find easiest one to implement.
    I hope you will evaluate your in future 🙂
    BR

    1. cyber says:

      Stay tuned for v0.6. I am fixing some stuff on DB for ESP32 and then finish the release. It will make DroneBridge the king of the hill when it comes to extendability etc. Performance-wise I do not think there are any differences between the systems. Under the hood they all share the same drivers etc.

  7. MilaMiki says:

    Desktop image, please.

  8. Rj says:

    Where is the android app located?? And any new rpi images coming ?? I would realy love to see some people running this real world anyone still interested?

    1. cyber says:

      It’s on Github now. Released it yesterday

  9. Юрий Хомяков says:

    Hello! Very nice project, thanks!
    But I am getting ” Beta is expired” in android app (v 2.0.0), couple weeks ago was OK.
    And no new version at github

    1. cyber says:

      Ups, I’ll get to it today or tomorrow.

  10. Vincent Lee says:

    Hi Wolfgang, kudos to you on this super cool project.

    Is there an updated version of the DroneBridge for Android 2.0.0?
    The one I downloaded from Github ( https://forstudents-my.sharepoint.com/:u:/g/personal/ga25puh_forstudents_onmicrosoft_com/EXD5MF2nbNFCi-Il9mXa3BYBsaoM-qJ_wcLUDPZtBczBgg?e=vbPGt7 ) says “Beta is expired!”

    Thanks Wolfgang.
    Vincent.

    1. cyber says:

      Ups, I’ll get to it today or tomorrow.

  11. Felix says:

    Does it work with a Betaflight FC?

    1. cyber says:

      Video is independent from the FC firmware. LTM telemetry is supported by the OSD. So yes. But support is deprecated, so no new features and only minimal fixes

    2. Felix says:

      Thank you for your answer. So I can get the Sensor Data from the FC to the Pi. But can I also control the copter over the Pi?

    3. cyber says:

      Sensor data = Telemetry
      Control = MSP with Betaflight

      Control via MSP is supported. Via a second serial connection to the FC you can get LTM telemetry which is sent down to the ground and rendered by the OSD. But you can do something else with the data as well. Just integrated into your code. Telemetry via MSP (1 serial connection for Control&Telemetry) is not supported by default. You would need to write/modify your own applications, in which you can use the DroneBridge library to transmit the data.

  12. domenico says:

    Hello.
    Beautiful project!
    I am assembling dronebridge with raspberry pi zero (AIR) + rasberry pi4b (GND)
    It is possible to implement on the AIR raspberry pi zero, the reading of
    1) i2c imuMPU9250 + BMP280 i2c
    2) rs232 gps NEO-6M
    See them on DroneBridge android app user interface.
    Thanks Wolfgang.

    1. cyber says:

      You can of course write your own apps that run on the Pis and use the DroneBridge library for transmission between GND & AIR. Unfortunately it is not possible to display custom data within the Android app. It is on my table but no idea when it is integrated.

Leave a Reply

Your email address will not be published. Required fields are marked *