Alexa‑Controlled ARDrone 2.0 Demo: Voice‑Activated Drone with Raspberry Pi & Hologram Nova
A hands‑on guide to turning an ARDrone 2.0 into a voice‑controlled companion using Amazon Alexa, a Raspberry Pi, and a Hologram Nova USB modem.
Story
Motivation
After mastering the ARDrone 2.0 in a previous project, we sought to elevate the experience by integrating Alexa’s voice interface. The Alexa & Arduino Smart Home Challenge inspired us to build a fully functional, voice‑driven drone demo.
Below is a concise walkthrough of our process.
We’ll cover the Raspberry Pi software setup, Alexa skill configuration, and the final deployment steps.
Pi Software Setup
Install the Flask‑Ask library on the Pi to expose an Alexa‑compatible endpoint:
$ sudo pip install flask-ask
Next, clone the ARDrone Wi‑Fi control repository and run the provided install.sh script to enable remote control via Python.
Setting Up the Alexa Skill and App
We built a custom Alexa skill that talks to a Flask server running on the Pi. Ngrok gives the server a public HTTPS endpoint required by Alexa.
Below is a minimal example of the Flask‑Ask application (save as app.py):
#!/usr/bin/env python
from flask import Flask
from flask_ask import Ask, statement
import ardrone
import time
app = Flask(__name__)
ask = Ask(app, "/")
# Initialise the drone and give it a brief reset period
drone = ardrone.ARDrone()
time.sleep(5)
drone.reset()
@app.route("/")
def home():
return "Ground Control to Major Tom"
@ask.intent("reset")
def reset():
drone.reset()
return statement("resetting")
Run the server with:
python app.py
Start Ngrok with a reserved sub‑domain to keep the HTTPS URL stable:
./ngrok http -subdomain=<your-subdomain-here> 5000
Note: The Pi joins the ARDrone’s Wi‑Fi network, while the Hologram Nova provides cellular connectivity for Alexa’s requests.
We used a 250 MB monthly plan on the Nova, which delivered reliable performance.
To configure the Alexa skill, navigate to the Amazon Developer Console → Alexa Skills Kit → + Add a New Skill. Follow the on‑screen wizard, completing each tab until all status indicators turn green.
- Interaction Model – Intent Schema: Copy the JSON below into the editor.
{ "intents": [ {"intent": "reset"}, {"intent": "takeoff"}, {"intent": "land"}, {"intent": "hover"}, {"intent": "goForward"}, {"intent": "goBackward"}, {"intent": "goLeft"}, {"intent": "goRight"}, {"intent": "AMAZON.PreviousIntent"}, {"intent": "AMAZON.NextIntent"}, {"intent": "AMAZON.HelpIntent"}, {"intent": "AMAZON.ScrollUpIntent"}, {"intent": "AMAZON.ScrollLeftIntent"}, {"intent": "AMAZON.ScrollDownIntent"}, {"intent": "AMAZON.ScrollRightIntent"}, {"intent": "AMAZON.PageUpIntent"}, {"intent": "AMAZON.PageDownIntent"}, {"intent": "AMAZON.MoreIntent"}, {"intent": "AMAZON.NavigateSettingsIntent"}, {"intent": "AMAZON.StopIntent"} ] } - Sample Utterances – populate with phrases such as "takeoff", "land", "go forward", etc. (see the original list for reference).
- Configuration – set the endpoint to HTTPS and paste the Ngrok URL into the Default field. Disable account linking for this demo.
- SSL Certificate – choose the middle option: “My development endpoint is a sub‑domain of a domain that has a wildcard certificate from a certificate authority”.
- Test – use the built‑in simulator to verify each intent works.
Once all tabs show green checkmarks, publish the skill to your Echo device via the beta testing link.
Run
To launch the full system:
- Power on the ARDrone and connect the Pi to its Wi‑Fi network.
- On the Pi, activate the Hologram Nova cellular network:
$ sudo hologram network connect
Once the Nova’s LED is solid blue, the cellular link is active. - Start Ngrok with the reserved sub‑domain (see earlier).
- Run the Flask application:
$ python app.py
- With the drone’s LEDs green, you can command it via Alexa. If the drone does not respond, say "Alexa, ask Major Tom to reset".
Source: MajorTom: Alexa Voice Controlled ARDrone 2.0
Manufacturing process
- Accelerate Alexa Integration with Developer Kits and Reference Designs
- Why 2017 Became the Year of Voice Interfaces
- Temperature‑Controlled Fan: DIY Relay System for Media Furniture Cooling
- Control LEDs with Alexa via Raspberry Pi – Easy Step‑by‑Step Guide
- Voice-Activated Home Appliances: Bluetooth Control with Google Assistant
- Alexa-Activated LED Christmas Tree: DIY Guide
- DIY Arduino USB Trackpad: Convert an Old Laptop Pad into a Modern Input Device
- Control LED Lights with Alexa via Arduino Yun – A Smart Home Tutorial
- Build a 2‑Wheel Voice‑Controlled Robot with Arduino & BitVoicer Server
- Build a Voice‑Controlled Arduino Car with BLE – DIY Guide