I recently bought a drone(quadcopter). I like how the drone works but now I would like to create an application that will allow me to control the drone remotely from my PC or Phone.

How does a computer or phone interface to an aerial vehicle?

Some of my initial thoughts were

  1. Get a RF detector and detect what signals are being sent to the drone and replicate it using a new transmitter.
  2. Replace the control circuit in the drone with an Arduino and send corresponding signals to it to fly the drone

Both these methods seem to be kind of far fetched and hard, but I'm not sure how this could otherwise be done.

  • 1
    $\begingroup$ Why you don't purchase drone that has SDK? $\endgroup$
    – CroCo
    Aug 1 '16 at 17:06
  • $\begingroup$ My college had already bought this so I am stuck with this... $\endgroup$
    – Nirmal Raj
    Aug 1 '16 at 17:19
  • $\begingroup$ You should be able to find technical specifications on the web. Most drones use 2.4 GHz band and a proprietary protocol, $\endgroup$
    – ott--
    Aug 2 '16 at 7:33
  • $\begingroup$ Quite frankly - why? There are dozens of commercial UAV systems with iOS or Android apps for flight control. All are proprietary to some degree but have limited SDK or community resources for support. May I suggest that the Ardupilot/Pixhawk flight control system provides what you need? While your current UAV flight controller may not be suitable, it could be replaced by a Pixhawk (check 3DRobotics.com) with open source software and a very active support community behind it. $\endgroup$ Nov 11 '16 at 0:17
  • $\begingroup$ @CroCo what the drones available with SDK? $\endgroup$ Dec 21 '16 at 4:53

With a conventional RC vehicle, I would probably suggest getting your own receiver-transmitter set (something like XBEE transceivers or similar) and completely gutting the original system, but with a small quadcopter like you have, I think trying to replace the receiver would be very difficult to do while maintaining the aerodynamics of the vehicle.

You could try to monitor the control signals and re-create them, but a third option you might consider would be to spoof the input devices on the transmitter. That is, as I see it, you could:

  1. Replace the transmitter-receiver pair (not recommended due to receiver form factor).
  2. Spoof the transmitter output (requires purchasing another transmitter-receiver pair of the same frequency with which to line monitor and spoof).
  3. Spoof the transmitter input.

The last option is what I would recommend. Get a multimeter and check the joystick outputs. I would imagine they're just potentiometers; I would expect a battery V+, a battery ground, and an analog voltage output. Then all you would need to do is to duplicate that functionality. Best case scenario would be that analog voltage falls within the same band as an Arduino analog output, in which case you could just wire ground to Arduino ground and the analog output direct to the joystick analog output line (after you remove the joystick).

Failing that, you could buy digital potentiometers and duplicate the functionality. Depending on how clever you wanted to be (and how much space is available) you could install a USB port and a switch to jump between joystick and Arduino control and have a modified computer-capable transmitter that can also be controller by people.

  • $\begingroup$ Define "spoofing" in this context. $\endgroup$
    – Paul
    Aug 2 '16 at 1:17
  • $\begingroup$ @Paul - I mean spoofing as in duplicating the information protocol while inserting your own data. The article refers to "attacks" using the method, but the concept is the same. If you can operate on the same frequency of the transmitter, then you just need to know the range of messages the receiver is expecting. Same goes for the joystick inputs - if you know what data the transmitter is expecting from the joystick, then you could provide "fake" information in the same format and "trick" the transmitter into doing what you want. $\endgroup$
    – Chuck
    Aug 3 '16 at 17:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.