# Blog

This week we decided to do our weekly meeting at the local pub. Why? We needed some beer to calm our nerves and to get some expert advice from Martin, one of our collegues, that has presented at a lot of conferances. The reason for this is that in about two weeks we are presenting the Crazyflie project at the annual Øredev developer conference in Malmo, Sweden.

The presentation will be a mix of the project history, some tech details and of course a demo (hopefully a successful one without any injuries ;-) ).

So if you are attending Oredev drop by our presentation on the 7th of November at 15:40 in the Nyan Cat room and we will do our best to give you an interesting 50 minutes.

We discovered a new key-chain video camera which is called the 808#16. It had gotten a pretty good review so we decided to give the video camera add-on hack yet another try. A while ago we tried it with a 808#14 but it didn’t work that well when we where running it directly from the Crazyflie battery. It shut down as soon as we used to much throttle and using a separate battery made it to heavy. We didn’t have to high hopes for the 808#16 either and when we discovered that the bare camera weight, no battery nor case, was about 9g we knew it would be at the maximum of what the Crazyflie could carry.  With high hopes we connected the camera directly to the Crazyflie battery terminal and gave it a try.

It worked! The camera didn’t shut down but as you can see the stability is pretty bad during take-off. Once in the air it is controllable but only barely. We haven’t tested the full flight time but it probably wont be more then 2-3 minutes. We are thinking of doing a test where we add 4 more motors “mirrored” directly underneath the existing ones to increase the payload capability. Would be nice to have that option and it should be fairly simple to do.

We are pretty impressed with the video of the 808#16 which still is very cheap. We bought the 808#16 camera with the D-lens which is a wide angle lens and that’s why the video has a bit of a fish-eye.

We just finished the top level BOM, test plan, fabrication files, etc… which mean everything required to order the pre-series of the Crazyflie. The pre-series  is meant to be last version before the first real production batch and the idea of it is so that we can test the manufacturing and verify that it is manufactured with good quality.

One of the last minute changes we made for the pre-series has been to power the motors directly from the battery instead of through the power management chip. This should gives us up to 8% more power and efficiency due to power management mosfet on-resistance losses. It should also reducing the voltage drop which causes disturbances to the other circuits. The only drawback is that the Crazyflie consume a bit more power when OFF, because of the leakage current through the motor mosfets, but it is still within acceptable limits (a full battery will still take more than 2 years to be depleted by our electronics). Also the battery can now be swapped/disconnected for storage as we have added a connector.

Our target is to have the Crazyflie DIY kit availible for X-mas. It is very tight and it will be hard but what would life be without challenges :-)

One of the goals during this project has been to only use open-source tools for development. The main incentive for this is that we want everyone to be able to take part in the development and look at the all the parts of it once it has has been released. Also it was a great opportunity to see how far we could push open source free development software in a non-trivial embedded project.

Some of the tool has worked great and some has caused us some headaches since we have worked with the proprietary alternatives during the daytime. Our conclusion is that a project like this is definitely doable, but some parts does still require more work (and some frustration). The open-source tools for firmware development and PC client are state of the art and could be used instead of there proprietary counterpart (of course most of the time there is no GUI and some more setup or manual job might be required, but this comes with the benefits of a greater flexibility). However the hardware design tolls are still behind there (expensive!) proprietary counterparts and often requires a great deal of efforts to reach the wanted result.

Of course it’s great that these open-source alternative exists and that a lot of great developers puts time into making them. Without them this project would not have been possible!

The firmware – For firmware development we use a wide number of applications: gedit, Eclipse, Mercurial, gcc, make, openOCD and gdb. On Crazyflie we run  FreeRTOS. As we built the development environment with cross platform tools the development can be done seamlessly on Linux or Windows, on the console or with Eclipe. The radio dongle has been developed from scratch (ie, just from the datasheet) with the help of sdcc to compile for the 8051 contained in the nordic chip.

The client software – For the client side software we use Python, libusb, pyusb, QT/PyQt. Even though there was a lot of discussion within the group (Ruby vs Python, qt vs gtk) we landed on Python due to all the bindings that works out of the box on Linux and Windows. This enables you to quickly create applications. Combining this with QT/QTDesigner and you get a nice GUI application.

The hardware – Since the very first prototype we switched from Eagle CAD to Kicad to use a fully open source e-cad program. It does the job perfectly fine but the routing part requires a lot more time as many of the time reducing functions are still lacking compared to proprietary programs.  For complex boards, if time is an issue, Kicad is not the e-cad to use, but for simple board and typical DIY boards it does the job fine (ie. our experience of kicad is a lot smoother for the radio dongle than for the copter).

The mechanics – For the mechanics we have used freeCAD which is one of the few open-source 3D CADs tools that we have found. When we started out we had a lot of problems with this software because it keep crashing during the design. After the stable release of the 0.12 branch it’s gotten better but we’ve still had some problems with crashes. Over all we managed to design and 3D print many revision of the motors holder with freeCAD.

The website – On our server we are running WordPress, Mercurial and Redmine, all these on a Linux and Apache. We will probably also run phpBB later on.

Sensor poll

Waiting another week did not make things clearer whether to mount all sensors or not, but the quotation to buy and mount them did. The $20 we estimated was too low, depending on the amount of boards we make of course, but we would probably have to add another$10 to that which made the decision simple. It is mainly the barometer that is very expensive so we might still decide to mount the magnetometer. First we will do some tests though to find out how much “value” it really adds. For people that wants the barometer it will still be possible to manually mount it afterwards making it a win-win decision.

After the LED hack we are back with an inductive charging hack!

The idea of charging Crazyflie inductively is almost as old as the copter itself. Last week we received a Palm Touchstone charging kit that we ordered. Like many phone hacks using this inductive charger we dismounted the receiving coil and electronic and attach it to the Crazyflie:

As the Crazyflie has a power-management circuit, any supplied voltage above ~4.5V will make it charge, and as we have made some soldering pads available for things like this it was a simple task. The coil is very thin and light (about 3g) so the flight performance are not affected a lot by the change. The charger is working very well and provides enough current for charging. We charge with a little less then 500mA and we think the Touchstone can supply up to 1A. One possible problem though is that the copter has to be placed exactly in the middle of the charging station to be able to charge. The phone has magnets to align it to the charge station and on top of that the charge station is not straight but tilted. The magnets are way to strong to let the Crazyflie take off so we are trying to find a landing area design that would permit the copter to land in the right spot and still be able to take off again without the magnets, any ideas?

When I was shopping for some ink-cartridge at this Swedish accessory store named Kjell&Co I also bought one of these 12V LED lamps. I didn’t buy it to actually use it instead I bought it to have a look inside. I cracked it open when I came home and found, not so surprisingly,  a lot of LEDs and a step up converter with a current sensing mode. Since it was made for 12V AC I removed the rectifier bridge and a large cap to get it as light as possible. Testing it with a power supply reviled that it worked all the way down to 2.2V and at 3.7V it consumed about 0.5A. A bit to much for the Crazyflie so I doubled the current sensor resistors to get it down to 0.25A. Some soldering and some double sided foam tape and we suddenly have  a pretty bright lamp hooked up to the Crazyflie. Now we have a search&rescue device :-) or maybe just an UFO…

Let’s not forget the sensor poll. It’s a very close encounter with 55% wanting the extra sensors. We will keep the poll open until next week to see if it gets any clearer.

If you have been reading our previous blog post you know that we redesigned the Crazyflie to use the MPU6050 instead of the IDG500-ISZ500-BMA145 combo. This was done because the IDG500 became obsolete, recently we found out it was because Invensens had production problems with this sensor, anyway when redesigning we managed to squeeze in a HMC5883l magnetometer and a MS5611 pressure sensor.  Now when we are getting close to actually making some kits we have to take some decisions and one of them is if we should build the Crazyflies with the HMC5883l magnetometer and the MS5611 pressure sensor mounted. This will of course increase the price which we have estimated to be about \$20. Currently we do not use neither the magnetometer nor the pressure sensor. The yaw drift is so low that when you pilot the Crazyflie it isn’t noticeable and therefore we do not use the magnetometer. The pressure sensor we have just tested briefly and we do not really know how well it would work. Altitude hold might not be so useful inside but maybe outside.

Because of this little decision whether to mount the magnetometer and pressure sensor or not we would like to make a poll so please give us your thoughts.

Should we mount the pressure sensor and the magnetometer?

View Results

Last summer we were sitting in a meeting room after office hours discussing how we should react to the fact that a lot of people seemed to want to buy a Crazyflie. After having a bit of down time in the project we finally posted a video, that was already about 6 months old, on Youtube.  It was during the spring 2011 showing us flying the first prototype Crazyflie. After getting picked up by Hackaday it got a lot more attention that we originally thought and a lot of people wanted to buy one which was great! The only problem was that we only had three of them and at this time there where already obsolete components. Another problem was that the motors/propellers were scavenged from toy airplanes (they had a sale and we got them cheep) which was not a scalable sourcing solution.

So sitting in this meeting room we decided to give this project a shot by trying to release a kit that could be sold. Back then the development was funded by Epsilon, the consulting company that we are working for, which was not optimal if we wanted to commercialize the Crazyflie. So we decided (after a lot of discussions) to form a company which became Bitcraze AB (the name came after even more discussions). We needed a company to make manufactures and distributors take us seriously and for import and tax reasons. It is also pretty satisfactory to be on the board of director of our own company :-).

At this time the Crazyflie was already flying but it had to be redesigned, parts sourced and we needed to find someone to manufacture it for us. Since we didn’t (and still don’t) have that much capital this wasn’t something that we could leave our day-jobs for so the development continued on weeknights and weekends. As anyone working with product development (specially if it includes any type of hardware), going from a prototype that is working to a final product requires a lot of work.

A big obstacle for us was sourcing the mechanical parts: Motors, propellers, motor mounts and battery. Some of these can be found and some are harder. And even if you find something that looks good on paper there’s no guarantee that it’s very good or working at all. We got some motors that seemed like they were scavenged from the junkyard (and probably were), we got batteries that didn’t meet the specification and propellers that were unbalanced. All this takes a lot of time. Finally we had to design a motor mount ourselves since we couldn’t find anything that suited our purpose. After a lot of searching/testing we finally found good batteries and motors. The propellers are still a bit hard to find a reliable source for but we think that we have it sorted out.

Even though it’s been very frustrating at times, like when the Invensense gyros we were using went out of production, we have a lot of fun when we work (which you can hear in the videos). Also we have been challenged to learn new stuff and got to try things that we normally would’t do at work. One of the reasons we started the project at all back in the fall of 2009 was that we wanted to do something more challenging and we think that we achieved that :-)

So what’s the plan for the upcoming year? Well, the main plan is to release the kit soon of course! After that there’s a lot of ideas of what we want to do so we will have to see how things go. Also we would like to thank everyone that’s been following our progress and supporting the project!

No, the candle isn’t burning when we are flying…although we did try to…

The coming week we are reviewing the new revision of the hardware before we press the order button. With the previous prototype we had a few violent incidents where one of the arms broke off. Fixing it wasn’t to hard. We used an aluminium tube we cut to the right size and glued over the arm and it holds up well. For this next revision we have changed the board outline around the arm joint to be smoother as this seams to be the weakest point. If everything goes according to plan the next prototype should be the last before we can order a larger batch.

During the last week we also did a little test making an small Android app and plugging the radio dongle in one of our Galaxy Nexus. It’s detected and can be used via the USB API.  It’s nothing that we are planning on spending any time on right now but in the future…

We’re all back from vacations and now it’s time to focus and ramp up the work again. After syncing what we have been doing during the summer (and doing some catching up) we think that we are in good shape. There’s still lots to do but now we have re-charged our batteries!

Since the weather is nice we decided to do some flying outside and at the same time do some range testing. Unfortunently we waited a bit too long so it was pretty dark outside. The Crazyflie is normally hard to see when you get too far away and when it’s dark it’s even harder… So the range test was done by flying slowly forward until the radio connection watchdog kicks in and the motors are cut. We then used MyTracks on Android to measure the distance to where we found it in the grass :-D We only did two tests but the best one was 55m.

Here’s some images of the test and the flying:

Crazyflies at night

Crazyflie at night (far away)

Crazyflie range test