The Crazyflie 2.1 is a capable little drone weighing in at just 27 grams. It is fully open-source which makes it easy to play around with and learn from.
This crate implements board support for the Crazyflie so that one can program
the main MCU in Rust. See the ./examples folder for
inspiration.
First we need some prerequisites, install dfu-utils through your package
manager and through Cargo install cargo install cargo-binutils and add the
necessary components with rustup component add llvm-tools-preview.
Next we will convert the example into a .bin file so that we can load that
onto the Crazyflie. To do this use
cargo-binutils as follows
cargo objcopy --example blinky --release -- -O binary target/thumbv7em-none-eabihf/release/blinky.binTo automatically set the Crazyflie to bootloader mode we can add -w radio://0/80/2M to the cfloader command to do it for us. The command should
look like:
python3 -m cfloader -w radio://0/80/2M flash target/thumbv7em-none-eabihf/release/blinky.bin stm32-fw(cfloader can be installed through pip3 install --user cflib)
This will set the Crazyflie into bootloader mode, upload the binary and restart
the STM32F405 for us.
You should now see all lights blinking on the Crazyflie!
Start the Crazyflie in bootloader mode by turning it off and then holding the on/off button in for about 3 seconds. Both blue LEDs on the tail should blink in an alternating pattern.
python3 -m cfloader flash target/thumbv7em-none-eabihf/release/blinky.bin stm32-fwTo get back to the proper firmware, use cfclient, select bootloader. Then
select Cold boot (recovery) and restart the Crazyflie in bootloader mode
(alternating blue blinking). From there you should be able to flash the regular
firmware.