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).
Hurry up and take my money already!
very nice! What is the range on this do you imagine? You said there wasn’t much bandwidth so I guess piggybacking a video signal on it would be a no-go.
The range mainly depends of the radio bitrate settings, we have measured ~20m at 2MBit/sec and we imagine way more at 250Kbit/s. The bandwidth is currently limited to ~16KBytes/sec by the USB implementation (500 packets per seconds ;) but it could be higher.
As for the video, if the radio link would be used at its maximum, is would be possible to piggy-pack low resolution low frame-rate video signal but for higher quality I would imagine adding an other radio on top of the copter…
What is the minimum number of channels that the RC remote control (without PC) has to have while using the PPM interface to control the copter?
Controlling the copter currently requires 4 analog channel (for thurst, pitch, roll and yaw).
We might clarify the radio dongle expansion posibilities. The hardware is disigned so that it is possible to read a PPM signal or similar and to power it with 4V – 15V. However we have not yet developed any code for it. It will also be a bit hackish to connect it to a RC transmitter but the possiblity is there and maybe later we can design a RF module case where you can just plug in the radio dongle in the transmitter. There are also some challenges with this as the computer normally sends some user information, which the RC transmitter can not. But solving challanges is what we all like so someone will deffinetly figure it out ;-)
I love this project. I already found multiple people in the Netherlands who would buy the complete product multiple times when it’s made available to the public.
Hey being the Crazy Flie wifi can use PPM does anyone know if it will run with just 11.1 volts as most of my controllers are on 3S lipos? Any ideas?
Well the radio dongle will work from 4V – 15V so that should be fine. However as I written before. There is still no software written for the radio dongle to read the transmitter output signal. Nor is there an adapter cable designed yet. However it won’t be long after we have released the HW/SW before someone has figured it out.
Sorry for not reading lol and Great work! Can’t wait to get one!!!