Drone Adventures, Pt. 1: Building a drone
I’ve decided to build a drone.
First, a bit of background. I run an Internet of Things start-up called Spark IO; we make development tools and an open source platform for connected hardware products. In particular, we sell a Wi-Fi development kit called the Spark Core, a new one (just announced) called the Photon, and we call our open source platform Spark OS.
Being a CEO of a start-up is a crazy chaotic job, and while I did much of the early development on the platform (specifically hardware design and front-end development), lately I have had less of an opportunity to do so. This makes sense for a growing start-up, but it means that I’ve grown further from my customers, who are engineers, software developers, designers, artists, and students.
It also means that I don’t have an opportunity to use our development tools and make sure they actually solve the problems we’re trying to solve. I’ve been looking for a weekend project that will give me the opportunity to be a Maker again and actually try building something using the Spark toolkit.
Why build a drone? #
Building a drone is a fun project because:
- Drones are AWESOME.
- Drones will one day take over the world.
- There’s a lot of great open source work on drones.
- Building a drone requires a really interesting mix of electrical engineering, mechanical engineering, and software development.
Drones are also interesting because there is a huge variety of things that could be called a drone, and the applications for drones range from military to industrial to consumer. So I should be more specific, I suppose, on the type of drone I intend to create.
I’m going to be building a nano quadcopter - a very small and inexpensive flying drone with four rotors. I’m going this route because:
- Flying drones are fun, and I’m really interested in the physics of autopiloting systems (although I know nothing about them).
- Nano copters are relatively simple - they have few components, and are therefore also relatively inexpensive to make
- I’m generally interested in democratizing technology, so I’d rather play with something cheap that lots of people could use rather than something expensive that only a few people could use.
- One word: swarming.
There are a few existing open source projects that I will be using for inspiration (along with design files and source code. Open source FTW!). They are:
Crazyflie Nano #
The Crazyflie is a popular nano quadcopter that’s for sale on Seeed Studio. It’s small, fast, and relatively inexpensive. I haven’t had an oportunity to play with one yet, but this is a perfect opportunity. The Crazyflie is open source and happens to use an STM32, which is the same microcontroller used in Spark’s products, and therefore the same microcontroller that I’ll be using.
The Flexbot team has been working on open source drones for about the same amount of time that I’ve been working on Spark. I know this because we were in the same incubator program (HAXLR8R) at the same time. I have a Flexbot myself that I got from their Kickstarter campaign, and while it’s super fun and zippy, I had a pretty rough time getting the thing to fly, although I’m eager to see if there have been software improvements since the original release.
The original open source drone, at least so far as I can tell. The ArduCopter is the creation of the DIYDrones community, and has a large and active community around it. It can do a lot of things that are way beyond my own aspirations, such as waypoint setting and completely autonomous flying. However I haven’t yet found a drone in their portfolio that is as small as the sort of thing that I’m looking to do (which makes sense; I would expect that the crazy shit they can do requires a lot more electronics than would fit in an itty-bitty nano copter.
I’ve done little research so far, but I’m guessing (from the name) that ArduCopter is based on Arduino, which should mean that the code should port easily to the Photon, because the Spark firmware stack uses Wiring, the same programming framework as Arduino.
Parrot AR.Drone 2.0 #
We’ve had one of these in the Spark office for a little while, and I finally had the chance to open it up and play with it. It’s fun. What’s great about the Parrot is the simplicity of flying it; it can hover pretty well without any input, and it’s a hell of a lot easier to not crash than any of the other drones that I’ve flown.
When I think about my goals for this project, they are as follows:
- To build everything using the Spark tech stack. If I can’t develop this product using our stack, then our stack isn’t good enough. I expect that simultaneously managing communications, interpreting sensor data, and real-time control over sensitive motors should push the limits of the hardware, which will be a fun test.
- To make something small and cheap. Without doing any research on components, I’d love to keep the Bill of Materials below $50 in smallish volumes so that other people can build the drone as well.
- To make something easy to assemble from scratch and reassemble when broken. Drones crash all the time, and it sucks to break your toy the first time you take it out of the box. I’d love to make something that’s very easily repairable. Given that I have more experience working with electronics than with mechanical designs, I’m inclined to use PCB connectors to create a design that can be taken apart and put back together easily… but we’ll see what works in reality.
Getting started #
Every project needs a name; this one will be called Charm. Going forward the Spark products will be named after atomic, subatomic, and elementary particles (i.e. “Photon”), and so I figured “Charm” would be a good name for my drone. Perhaps I’ll make her a bipedal brother that I can name “Strange”.
If you’d like to follow the project on Github, check it out here:
Well, that’s all for now; check back next time where I expect I’ll start laying out some hardware. Discuss freely on Hacker News and the Spark community site.