Together with the DJI FPV Drone we, RC and FPV hobby enthusiasts, got a new accessory: DJI Motion Controller.

DJI Motion Controller

It does a pretty obvious thing that we know for years from the Nintendo Wii controller: with this device, you get gesture control over your FPV Drone. You tilt it left, drone turns left. You tilt it back, drone gains altitude. You press the index finger "trigger" and the drone goes forward! There are some problems though. First of all, it works only with the DJI FPV Drone. And second of all, it cost an extra $200!

What if, I could make a similar device that works with any drone or airplane? To be honest, I was thinking about a device like that for a while now, and DJI Motion Controller was just a final argument to sit down for a few days and make an Open Source version of a Motion Controller that can be connected to any OpenTX radio as a Trainer Slave and use gestures to fly!

The DIY Motion Controller is based on ESP32 board with MPU6050 gyroscope and few extra elements like buttons, analog joystick, etc. It can be connected to any OpenTX radio (I'm using Radiomaster TX16S) that allows accepting SBUS signal on trainer port.

Drone Gesture Control Joystick

The exact list of part is:

Drone Gesture Control Joystick

As you can see in the video it works! However, it's not the end of the project as I intend to improve it in at least a few ways:

  1. The wired connection to the OpenTX radio is suboptimal. Next step is to develop a wireless mode to simplify usage
  2. There is still no way to arm/disarm the drone, so at least one switch will have to be added
  3. The analog Arduino joystick is too big and not precise enough. I will try to replace it wit PSP or similar joystick for altitude and yaw control

Drone Gesture Control Joystick

The source code with all the required details is available on GitHub. You will need an access to a 3D Printer to print the joystick, but STL file is available over there as well.