Drone Programming

Drone Programming: Learn to Program with Drones

In this detailed guide, you will learn all you need to know about drone programming and programmable drone kits, as well as our top recommendations for the best programmable drone kit available in the market today.

So without further adieu, let’s begin.

Can you Program Drones from Scratch?

Yes, there are specific drone models that are programmable, but it’s important to understand that not all drones are programmable.

Most programmable drones are designed for educational purposes to help students and hobbyists learn, but there are also DIY drone kits where you can build the drone and program the drone from scratch to make it totally your own.

What Programming Languages are used to program drones?

To answer this question, we have to understand that there are two different layers of drone programming: low-level and high-level. In low-level programming, we are dealing with the drone’s firmware, while in high-level drone programming, we are talking about applications or software level.

Low-level (firmware) programming

In low-level programming, our concentration is on the drone’s firmware, which basically coordinates the hardware aspects of the drone such as the motor(s), propellers, ESC, battery, etc. Basically, the drone’s firmware allows the drone to have its basic functionalities and operations.

The drone’s firmware, for example, handles things like determining the exact amount of power that should be delivered to the motors by analyzing the information coming from the drone’s IMU (Inertial Measurement Unit). This will allow the drone to perform a stable and level flight, the most basic and yet most important function of any drone.

In low-level programming, C and C++ are the primary programming language you’d need to learn, although lower-level machine language like Assembly can also help.

Obviously, these lower-level languages aren’t the easiest to learn, but once you get the hang of them, they can be a lot of fun as you learn to program the different aspects of the drone’s hardware and firmware.

In cases of DIY/modular drone, the hardware kit used would also determine what kinds of language is needed to build the code.

For example, Arduino and Raspberry Pi are popular in modular drone kits, and in such cases, we should use the respective language that is compatible with these modular hardware kits. Most of these languages, however, are based on C/C++.

Arduino, for example, is actually a group of C/C++ commands that we can call through an interface that is Arduino sketch.

So, basically, if you know enough C and C++, you are good to go.

High-level programming 

In this type of programming, we are dealing with the applications of the drone. A drone is already a complete unit, and we can treat it as an API that would respond to our command.

Functions like controlling the drone to a certain altitude via the Flight Controller (FC) or interpreting information from GPS so the drone can move to a GPS waypoint, and even increasing/decreasing speed are handled by high-level programming.

High-level programming will work together with the firmware to perform the intended response and a high-level programmer doesn’t need to consider the technicalities of how the program is executed at the firmware level.

For example, in high-level programming, we only need to consider how the drone can read the information from GPS correctly and ensure it will move to the desired location. How the motors and ESC must work are handled in low-level programming, and is not the concern here.

As you can see, high-level programming is much more accessible and user-friendly. Python is a very popular high-level language that is also popular in drone programming, and Java is another popular choice.

Typically in high-level programming, however, we are most likely to deal with APIs (Application Programming Interfaces) rather than an actual language.

For example, the drone in question might provide a Java-based API so we can code the AR in Java with the help of an interface. There are, however, APIs that are based on C/C++, so again knowing your C/C++ can be a valuable asset.

What is the Best Way to Learn Drone Programming?

The best approach is to get a programmable drone and use an SDK and API to program the drone at its application level.

There are programmable drones that include their SDK/API in their packages, but if you already happen to own a compatible drone, you might be able to hack into the drone to use an SDK, depending on the drone model.

Basically what you need to do here is to get a drone that supports the SDK and/or programming language of your choosing.

The basic approach here is to build your own mobile drone app using the SDK, the app is where our high-level programming will go, and in turn, the app will control the drone’s application.

There are many SDK/API options available for building drone apps at the moment, but here are some of the common options that are supported by popular drone products:

DroneKit SDK/API

DroneKit is an SDK/API produced by 3D Robotics, and you can easily access DroneKit’s Android SDK documentation to create an Android control app. The DroneKit APIs and SDKs are free and open-source and supports all major drone platforms.

DroneKit DK supports autonomous flight features, intelligent path planning, and live telemetry, but we can use its API libraries to integrate additional actuators, sensors, and unlock more features.

It is an open-source SDK, so although it is totally free, you won’t get dedicated customer support. However, there are various example projects that can help you learn to program in their GitHub repositories.

FlytBase SDK/API

FlytBase is another popular platform offering SDKs and APIs to build a drone control app. Unlike DroneKit, however, it is not an open-source platform, so you’d need to register with FlytBase before you can use the solution. Meaning, it’s not free.

FlytBase supports all popular drone models, sensors, and cloud services, and also offer several unique features like unified APIs and a drone simulator feature. You can use its Android SDK (called FlytSDK) to create your Android control app, and FlytBase also offers various APIs.

DJI  SDK/API

DJI is obviously one of the most famous drone manufacturers today, and it offers its SDKs and APIs for creating both iOS and Android drone control apps. DJI’s SDKs and APIs are actually very versatile, offering various features like obstacle evasion, live video feed, remote access to camera’s media, high and low-level flight control, and more.

DJI’s SDK and API are not free, and you can contact DJI for more information. Depending on the drone device you use, DJI also offers brand-specific SDKs that support Spark, Mavic, Phantom series, and more.

Parrot SDK/API

Parrot offers free SDK with sample code repositories that you can use to build your drone control app. You can include some unique features like save/download media and send autopilot flight plans with the programmed drone control app.

Parrot’s SDK works with various popular drone platforms and is based on C/C++. Supports both Android and iOS. You can easily check their sample projects (for both Android and iOS) in their GitHub repository.

With that being said, below we will discuss some programmable drones you can buy that supports these SDKs and APIs.

Best Programmable Drone Kits Right Now

Below are the programmable drone kits we think top the list right now. Drone programming can be a great way to learn different programming languages and constructs. The best part is you’ll enjoy hours of fun flying something that you’ve programmed from scratch.

#1. Parrot ANAFI Drone Foldable Quadcopter Drone

Check Amazon Pricing

Key Features

  • 25 minutes of filmed flight time with an intelligent Li-Po battery that optimizes the battery lifetime and charges 60% faster than standard Li-Po batteries. USB Type-C charger. Max charging power 24W
  • Operating temperature range -10°C to 40°C
  • Full HD 2.7k (2704×1520) videos and 21 MP of photos
  • Burst mode, timer mode, and wizards to take over professional settings
  • Compact and lightweight (320 g), unfolds in less than 3 seconds
  • Max speed of 35 mph in sports mode and can handle bullets up to 35 mph
  • Parrot Skycontroller 3 folding remote control, can be located at any time thanks to Geofence, SmartRTH, and Find My Drone functions, will notify your phone when immediate action is required
  • Regular software updates to enhance ANAFI’s performance and add new features.

Programming Capabilities

Parrot, as discussed, has its own APIs and SDKs, and recently they have launched Parrot Education to support people who want to learn about drone programming.

Parrot supports block-based programming languages like Tynker and Blockly, and also supports more conventional text-based JavaScript coding, Python, and various other popular languages.

In short, a very versatile platform if you want to try drone programming.

Pros and Cons

Pros: 

  • High-quality photos and video transmission
  • Great value for the money, you get everything you need to fly the drone except your smartphone
  • Great Parrot UI, simple and intuitive to use
  • Versatile Parrot SDKs and APIs if you want to learn drone programming
  • Easy to set up even for beginners

Cons: 

  • Doesn’t include a dedicated flight controller (need a smartphone)
  • The most expensive drone on the list
  • Beyond basic flight, the UI is a little complex with a steep learning curve
  • Extra fees for the Flight Plan and Follow Me features

Our Verdict

The Parrot Anafi is a fast and agile drone with a fairly compact design. Very versatile for programming needs, and also in the hardware department as you can add and combine various physical modules.

By itself, it is already a strong performer with a great battery/motor and various auto-pilot options, but it is the versatility that makes the Parrot Anafit one of the best programmable drone kits available in the market today.

#2. EACHINE E520 Quadcopter Drone

Check Amazon Pricing

Key Features

  • 120-degree wide-angle 4K camera included with an adjustable angle.
  • Replaceable drone arm for easier maintenance and service
  • Very easy flight with intuitive hover/hold mode
  • One-click take-off and landing, emergency landing feature
  • 3D flip and one-key return allowing the drone to return immediately
  • Headless mode for easier flight

Programming Capabilities

You can use Python and C/C++ programming language with this drone, and you might want to check the GitHub repository here.

Pros and Cons

Pros: 

  • Great-looking design
  • Easy flight with very stable altitude hold functionality
  • Easier maintenance with replaceable drone arm
  • Great headlights for night usage
  • HD camera with Wi-Fi FPV included

Cons: 

  • Only 15-17 minutes flying time

Our Verdict

The Eachine E520 is great programmable drone kit that is relatively affordable. It is portable and compact but includes a great camera that can handle 4K. Also, what’s really great about this drone is it support VR (Virtual Reality).

Put your cellphone into the VR Glasses (not included) and experience real-time transmission to enjoy 3D Virtual Reality live video! It is also pretty versatile, programming-wise, since it supports both Python and C/C++.

#3. Ryze Tech Tello – Mini Drone Quadcopter UAV


Check Amazon Pricing

Key Features

  • 5 megapixels (2592×1936 pixels), can take HD 720p videos, high-quality image processor to allow amazing video and photo quality
  • Two antennas to allow more reliable video transmission
  • High-capacity battery for 13 minutes of flight time
  • DJI-powered flight controller, allowing various flight tricks
  • Includes RyzeTech Tello powered by DJI, 4x Propellers (Pair), Battery, Micro USB Cable, Propeller Removal Tool, Propeller Guards (Set)

Programming Capabilities

Ryze Tech Tello has a mobile programming app called Tello EDU, which supports Scratch, a block-based visual programming language that allows you to program the Ryze Tech Tello to perform the desired movement.

Scratch is a very intuitive programming language, where you can simply drag and drop coding blocks on your smartphone to program the drone.

Pros and Cons

Pros: 

  • Affordable price
  • Easy to control with stable flight
  • Compact and lightweight, easier storage and transport
  • Interesting flight modes with the DJI control
  • Simple and intuitive control app

Cons: 

  • Doesn’t fly too well against strong wind
  • Poor video transmission from time to time
  • Doesn’t support popular programming languages.

Our Verdict

The Ryze Tech Tello is an affordable programmable drone if you want to learn drone programming. Great for both children and adults, and actually produces pretty decent 720p video. Easily programmable with Scratch, a very easy programming language to learn.

It is also very light and compact with only 80 grams of weight. However, due to its lightweight, it can’t fly well in winds above 5mph, so you might only want to only fly the Tello during windless conditions.

It’s not a modular design, so you can’t build it DIY, and it doesn’t support more ‘difficult’ programming languages. It’s more tailored for beginner programmers that wanted to learn the basics of software programming.

#4. Parrot Mambo Fly – Code, Pilot and Play

Check Amazon Pricing

Key Features

  • FreeFlight Mini App for both iOS and Android included allowing you to control the Mambo Fly drone from any iOS/Android smartphone via Bluetooth. The maximum control range is 65 feet.
  • Easy to fly with advanced sensors, allowing the drone to stabilize itself while flying
  • 9 minutes of flight time per charge, 30 minutes to recharge the battery
  • Can program custom trajectories for the Mambo Fly

Programming Capabilities

Parrot, as discusses, has its own APIs and SDKs, and recently they have launched Parrot Education to support people who want to learn about drone programming.

Parrot supports block-based programming languages like Tynker and Blockly, and also supports more conventional text-based JavaScript coding, Python, and various other popular languages.

Pros and Cons

Pros: 

  • Easy to use via your smartphone’s Bluetooth
  • Compatible with various accessories
  • Versatile programming with Parrot SDKs and APIs
  • Intuitive and easy to use controls, but pretty versatile with various fun tricks

Cons: 

  • Battery life not very good, only last around 5-6 minutes flight in certain conditions
  • Not as robust as other models

Our Verdict

One of the most stable mini-drones available today with its great auto-pilot system and great sensors. Very easy to fly indoors and outdoors. Again, the Parrot SDKs and APIs are a great environment for learning drone programming, making it one of the best programmable drone kits if you want to learn software programming.

#5. CoDrone Pro – Programmable Drone Kit

Check Amazon Pricing

Key Features

  • 8 minutes of flight time, 160 feet flight range
  • Flight Range: 160 feet
  • 3 axis gyroscope, 3 axis accelerometer for altitude control
  • Hovering with an optical flow sensor
  • Infrared Sensor for educational games
  • Barometer Sensor to assist with altitude control
  • Weight: 37 grams, very compact and lightweight
  • Bluetooth 4.0 connectivity

Programming Capabilities

The CoDrone Pro is an Adruino-based drone with an Adruino-based remote, so programming is done in a text-based Adruino coding environment, but you can also use C++.

Pros and Cons

Pros: 

  • Compact and lightweight, only 37 grams
  • Great tutorials from Robolink
  • Decent performance and speed for its price

Cons: 

  • No camera (sold separately)
  • Pretty expensive

Our Verdict

The Robolink CoDrone Pro only weighs slightly less than 40 grams (37 grams). A very popular drone programming kit that offers free online tutorials. Offers Adruino-based programming and also supports C++.

A great choice if you want to learn fundamental drone programming like loops, variables, and conditionals to fly the drone and customize your flight.

Drone Programming Kits Final Words

The 5 best programmable drones we have shared above are our top picks that can suit electronics hobbyists, students, and even professionals. Our number one pick here goes to the Parrot Anafi Quadcopter for its great overall quality and features.

However, this drone is not cheap so opting for one of the cheaper options on the list may be a better fit for you. Rest assured, all models presented are great drones and programmable drone kits with their own unique strengths and weaknesses.

We hope you’ve gathered enough information from this guide, and we hope that you’ll consider a drone for your next programming project!

If you enjoyed this article about programming, be sure to check out some of these great articles too: