Nowadays, just about everything has an API, from lightbulbs to needy toasters. While we’ve seen our fair share of drone hacks using JavaScript, what happens when your drone is controlled by a closed-end analog signal? Identify a widespread loophole in modern RC controllers, hijack the frequency, and map it to a Leap Motion Controller – whether the drone is intended to be controlled that way or not!

That was Team Puppet PPM Drone’s mission at last month’s LA Hacks, and within 36 hours, their idea took flight. But it didn’t start out that way. Originally, the team wanted to build a robotic arm, but weren’t able to get the parts 3D printed in time. Instead, they decided to hack the analog pulse-position modulation (PPM) signal of a drone remote, imitating the signal with an Arduino board.
puppetppmdrone1
Now all they needed was an input mechanism. The team quickly hit on using the hand orientation output of the Leap Motion Controller to control the drone, and have since posted the code to a GitHub repo. Recently, we caught up with Casey Spencer, who handled the hardware end of things, to ask him about the development and future of the project:

What’s the power of adding digital control to analog devices?

A lot of the consumer “drones” out there today aren’t really worthy of the title. The term “drone” imparts a certain intelligence about the technology, where in reality a lot of what’s out there is just easier-to-fly RC helicopters. Our hack can let the public add a brain to their projects, and the inclusion of Leap Motion control in what is a professional-grade closed-source platform is the perfect demonstration.

We found a weakness in a feature present in most modern control radios and exploited it.

We found a weakness in a feature present in most modern control radios and exploited it, so that we could interface with it using an Arduino. Once the Arduino was in play as a digital interface to what was an analog control system, we could theoretically do anything we wanted with the drone, so long as we were capable of programming it. Since we had a Leap Motion Controller at our disposal, what better way to demonstrate assuming digital control of a drone than with your palm?

How does the setup work?

Puppet PPM Drone consists of two primary features: an Arduino-to-radio interface and Leap Motion integration. As far as the Arduino interface goes, almost anything is possible. We’ve opened up the consumer drone platform to open-source digital control, which means as long as it can be programmed it can be done. Remote control through the Internet, computer-aided flight, or even – with a little more hardware – complete autonomy is now possible for the majority of consumer drones already out there.

We’ve opened up the consumer drone platform to open-source digital control, which means as long as it can be programmed it can be done.

The Leap Motion integration is a perfect testament to that. To my knowledge, we’ve created the first motion-control system for closed end drone platforms in a mere 36 hours.

Where do you plan to take it from here?

As for the Leap Motion control itself, the flexibility in its implementation can lead to a multitude of applications. The motion input can be limited and assigned to specific control channels for safety and utility, and due to the nature of our exploit, manual control can be re-assumed at any time – making it perfect for flight training, demonstrations, and education (since not everyone can use a 9-channel radio controller, but most can rotate their palm), or in lieu of physical control inputs for on-board systems such as camera gimbals.

We’re considering the possibility of creating a plug and play solution for consumer use. If we do though, I think we’d change the name, “Puppet PPM Drone” is a bit of a mouthful. Beyond that, I’d love to see motion input for multiple drones at once – with applications like orchestrated flight patterns, distributed 3D scanning of an environment, and local location triangulation. But to be honest, I just like to think about how incredible it would look and feel to orchestrate a fleet of drones as though you were leading a symphony orchestra.

Looking back, what stands out from your hackathon experience?

LA Hacks was only my second hackathon, January’s hackTECH being my first. I’ve become obsessed with them. There’s the free food, the free stuff, the free world-class seminars, speeches, and education… and the feel. It probably has something to do with the onset of 36-hour sleep deprivation, but hackathons feel like dreams.

After a hackathon I feel like my normal life isn’t enough, like I just finished some kind of fantastic journey.

In Hacktech’s case, when else do billionaires, tech icons, and celebrities come and go and mingle amongst student programmers in the middle of Santa Monica? With LA Hacks, when else can you get early access to anticipated APIs, ride Urb-Es, catch a Lyft to get breakfast, and take over a sports arena in the name of technology?

It’s hard to describe, but after a hackathon I feel like my normal life isn’t enough, like I just finished some kind of fantastic journey that lasted a lifetime and ended years ago, despite the fact it had only been over for a few hours. LA Hacks might have only been my second hackathon but I sincerely hope the novelty and those feelings never fade.

But I’d actually have to say it’s the look on people’s faces after they ask me what my major is. Business Administration. Priceless. Not quite as good as when my major was English, though.

Team Puppet PPM Drone is Casey Spencer (hardware and pitchman), Grantland Hall (Arduino programming), RJ Sheperd (Leap Motion programming), and Simon Engelke and Brendan Speth (supplemental programming). Check out more of their videos on YouTube and see their drone hack GitHub repo.

Epilogue: Since LA Hacks, the robotic arm has finished printing, and will be used to create a prototype assistant for laboratory experiments.

puppetppmdrone5

puppetppmdrone4

puppetppmdrone3

puppetppmdrone2