Category: Crazyflie

We had to cancel our weekly Monday meeting due to illnesses but we have at least made some small progress we can write about.

The radio dongle code has been updated to flash either of the two LED’s when sending data or in case of bad transmission.

On our latest prototypes we discovered that the radio transmission went pretty bad on some copters as soon as the motors where turned on. This was not a nice discovery at this time of our project and we had not really seen it before. This kind of problem could require a big re-design of the PCB! After some debugging it turned out to be the PWM switching of the motors causing ripple on the digital supply voltage. It wasn’t that much, about 60mV peak-to-peak but enough to throw the radio off balance. After some tries with different decoupling techniques to get rid of the ripple, which showed only minor improvement, we increased the motor PWM frequency from 17kHz to 280kHz. That made the ripple go away, now about 10mV peak-to-peak, and so did the radio transmission problems, yeay!

To communicate with the Crazyflie we are using a custom radio protocol with almost-baseband 2.4GHz radio chips: the nRF24 family from Nordic semiconductor. This kind of radio chip is easy to cable, easy to use and require a very minimal software stack. Wifi or bluetooth would have required a lot more electronic and software so we chose to not use them for the Crazyflie. We however made sure to keep the possibility to add other radio on an expansion board (ie. both UART and SPI are available on the expansion connector).

One things with using a custom radio is that we have to make a computer interface in order to be able to communicate with the copter. We called it the Crazyradio dongle:

 

This radio dongle is built around a nRF24LU1p chip which contains, among other things, the radio transceiver, a 8051 microcontroller and an USB device peripheral. We wrote the firmware running in the nRF24LU1 from scratch and it is compiled with the SDCC compiler. This firmware source code is going to be open like the rest of the copter code.

The radio is bidirectional which permits to send command and receive telemetry from the copter. The bandwidth is not great but has been enough to debug the regulation. On the computer side we are using python and pyUsb to interface the radio dongle.

We have added a 10 pins connector that can be used to program the dongle for development purposes (the dongle can also be updated via USB) or to power the electronic and provide signals input/output. We designed the dongle in such a way that it is going to be possible to power it with up to 15V and to input a PPM signal. This will permit to use this radio dongle with a RC remote control (ie. to control the copter without the need of a PC).

One of the ideas with the Crazyflie was to make a simple flying platform and what’s simpler than just attaching the motors directly to the PCB? On our first prototypes we used hot-glue to attach the motors which work out pretty well. The problem was that when you crashed the motors often came loose, and in some cases, so did the wires attached to the motors. Reparing this turned out to be pretty teadious and it makes flying it a lot less fun, since the iteration time for trying new things becomes longer. We did a few tests with different protections, like soldering a ring of piano-wire, but when we decided to make a kit out of the Crazyflie we realized that we needed something that was easier to manufacture.

Since we could not find any off-the-shelf motor mounts we decided to make our own. Our idea is to place the motor in the mount and the mount on the wing. We have tried a few different solutions but the current leading design is one where we feed the cable from the mount out under the wing and to the soldering point for the wire. We have also made a telescopic version so it is possible to adjust the arm length for adjustable flight dynamics or to attach bigger propellers. After some more testing we will decide which one we will go for.

The CAD work is done in an open-source CAD tool named FreeCAD. After struggling for a while with an unstable versions, the 0.12 branch finally became very stable. The images below is the second iteration of prototypes that we have done using Shapeways. It’s is a 3D printing house in the Netherlands that has a great service where you upload models, choose what material you want them printed in, and then two weeks later you receive them in the mail! The durability is pretty good as well. We have only managed to break one, and that’s after a lot of violent crashes and a more fragile design.

 

FreeCAD showing a model of the motor mount prototype

 

Prototype 1 (shown in CAD model above)

Prototype 2

Crazyflie with Prototype 1 motormounts

 

As promised here’s a new Monday post. Below are some screenshots of our PC side/ground station software written in Python using pyUSB, pyGame and PyQt4. It’s far from finished but it’s good enough for us to get real-time plots of flight data and control parameters. Unfortunatly we did not have a flying prototype at hand while writing this post so the data is somewhat fake but good enough to show the concept.

 

Hello,

It is now Monday evening which is now our official meeting day within the Crazyflie team. From now on we intend to post a progress update every Monday evening here at the Bitcraze blog. First of we can tell you that we have, since two weeks, received our second round of prototypes. For the second round of prototypes we did some small fixes and improvements which unfortunately did not all work.

  • We fixed an issue with the standby current which was 150uA, due to a misplaced diode, but was supposed to be below 10uA according to our design.
  • We moved the battery measurement point to the actual battery instead of behind the system off switch so we can measure the battery when it is charging as well. Unfortunately a design mistake made the standby current go up to 250uA instead. Fixed one issue just to introduced another one…
  • We have discovered a problem with the MAX16054  ON/OFF switch we use to turn the system on and off. If the battery voltage is above 3.5V it refuses to turn on but if it is below it works as expected. We sent a support message to Maxim and hope it can be solved fast. This circuit worked on our first prototypes and it seems to be due to the now removed diode we spoke about in the first bulletin…

Other then that we are getting close to a pretty well working flying PCB.

We have tested a couple of LiPo batteries in different sizes from Fullriver. We decided to go for the 170mAh 25C battery which gives us about 7min of flight time but doesn’t add to much weight.

We have tested a lot of different pager motors in mainly the sizes 6×14 and 6×15 mm. Many of them are not the best quality but we found a good one, 2.5ohm, 6x15mm motor which is of good quality and high performance.

What is left now is the motor mountings which has turned out to be a time consuming task for us since none of us has any direct mechanical/plastic experience. We also have loads of other tasks but let’s take it one step at a time.

There is a short video of the new prototype flying that somebody took when we visited Techfest if you want to have a look.

/The Crazyflie team

We uploaded some pictures from Techfest to a Picasa album. We are also working on cutting the video material that we have into something that’s a bit better. If you have any good pictures that you took or any scans of articles that was in the news papers don’t hesitate to send them over. The email is on the About page.



We upload there the posters used at Techfest. They describe the basic components of the new crazyflie version. A video will follow.

We would like to thanks everyone that came to see us at Techfest-2012 for there enthusiasm for our project. That’s was a a really awesome experience and gives us a lot of energy to continue!