Charm: A Spark-powered drone (nano quadcopter)

NOTE: This content pulled from my blog over at Svbtle, feel free to follow development there as well.

I’ve decided to build a drone.

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:

  1. Drones are AWESOME.
  2. Drones will one day take over the world.
  3. There’s a lot of great open source work on drones.
  4. 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:

  1. 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.
  2. 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.
  3. 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.


If I could build a swarm of 4 Photon powered Drones for $200 that circled above me in the office, and dive-bombed me when I spent too much time doing non-goal oriented tasks (reading email/facebook/blog posts, etc…), I think that would be “expense-able” as a productivity enhancer :slight_smile:

Gotta add the quick inductive charging station to this project to really make it viable for me though :wink:

Looking forward to following this project!


I’ve had a Syma X1 sitting in my basement for a while now since one of the mosfets caught fire. I have the replacement motherboard and everything to fix it; I just need to take the time to fix it. I’ve also been saving it to maybe try and put something together with the Spark. I’ll be following your progress very closely.

1 Like

Hello great people!

As some of you might know, my team and I have been working on drone-shield, specifically designed for spark core, for the last several months. :slight_smile: . The principle concept is very similar to that of nano quadcopter.

While implementing the workings of the drone we have faced challenges, such as running out of memory and control system related issues.

It took quite a while, but this is what we have achieved so far. The drone in the video is being controlled by RC (Remote Controller) . :sunny:


That’s awesome!!! I didn’t realize there were already drones running with Spark. Are you planning on open sourcing the work that you’ve done?

Yes, definitely! :smile: We will make it open as soon as it becomes ready to play around with. We want to deliver a reasonably functioning drone-shield, which you can plug a core and tinker with.

The challenges we are working on right now are:

  • Smoother altitude signal
  • Stable hover mode
  • Working around to fit them and run on Spark Core ( running out of memory issue ).

If everything goes well, we might be able to publish our work, perhaps, within December. But we will see.


Ah but can you tinker with the quad using Tinker? :stuck_out_tongue: That would be damn impressive!

Pun aside it looks awesome, I’d be interested in playing with such a shield

1 Like

I would also be interested in such a shield. What interface do you have between the receiver and the Core?

Hi @Ikaruz, Thanks for your interest :-). Bluetooth serial module.

FYI: It's also discussed on the following post.

Thank you for the work!:smile: but maybe I was not clear with my question. Will you use BT as control-datalink to the quad or will you use “normal” RC receivers?

Sweet. I have 3 different quads I fly regularly now and they are always a bunch of fun.

Keep up the good work. Hopefully the Photon and its extra memory will help you out.

1 Like

@DBear, so you have: (?)

phone <---> | BT serial <---> Core |

So what is the Core WiFi used for? BTW, I love the idea of this shield so I am also interested :smile:


Hey @peekay123 , hello!!! :-D. In fact we are using your SparkIntervalTimer library. At this time WiFi is not used and current developing method is:

 ________Computer_________          ________Shield________
| ref. input --> (MATLAB) |  <---> | BT Serial <---> Core |
  • Matlab is being used to evaluate some customized/optimized function ,etc…

@Ikaruz No :slight_smile: it seems I have confused you, using RC vaguely, I meant Remote Controller, as you can see above char figure. We are using BT recently for developing purposes. We would like to use WiFi, but let’s see.

@RWB Yes, :slight_smile: we are looking forward for Photon, when I read about the memory size of it, I just can’t stop smiling :blush: .


Hi @DBear,

Amateur question : I’d assume you have an accelerometer & gyro on the shield? Is that correct?

How are you maintaining altitude (since you’ve mentioned smoother altitude signal)


Hi @Rehaan, Let me answer briefly, I am on a trip.
Yes, accelerometer and gyroscope are used. About the altitude we are using pressure sensor (digital barometer).

Hello, everyone!

I wanted to provide a little update on our quadcopter development. Things are going good. In the videos, we are controlling it from phone via UDP. Please have a look at the videos. Thank you.

Merry christmas and we wish happy holidays to everybody!

Here are the video links:


any updates on this @DBear ??
i was thinking about creating a business card PCB that could be kitted to become a mini quad…so this would be awesome.


Any updates on this. I could not find from the website if it has a cost yet.

I read that it was controlled by bluetooth, perhaps it code be controlled by a websocket using the Photon's Wifi. I was spending some time looking into this and got something working at