What is Chiindii?
Chiindii is a joint project from myself (Wyatt) and a co-worker (Warren) to make a remote control quadcopter (small helicopter with four contra-rotating blades) from scratch. It uses similar hardware as the popular Aeroquad platform, but the software is all our own. Some advantages that it has over Aeroquad-based craft include:
- Cleaner code, completely modular and hardware agnostic (swapping out a hardware component only requires coding a new module). All modules' interfaces are clearly defined and documented in the header files.
- Since we are not limited by the Arduino framework, we have full control over interrupts. In the default module implementation, there is no polling used to communicate with hardware. ADC, Serial, PWM are all done asynchronously. (The default accelerometer uses I2C, which requires a bit more cycles, but that is due to the I2C protocol itself).
- We run at 20MHz instead of 16MHz (which is default for Arduino)
- Custom, bi-directional radio protocol, implemented as a virutal serial connection over an XBee Pro link. This allows us to avoid reading the RC receiver's PWM signal, as well as giving us live telemetry without any extra components.
- Default module for attitude calculation uses Kalman integration.
We decided to do the software from scratch for a couple of reasons:
- We decided to use vanilla AVR chips instead of the Arduino platform. While the Arduino platform is a very good prototyping and learning resource, we feel that it is not suited to this sort of project, for (among others) the following reasons:
- Custom, tuned use of interrupts, whereas Arduino interrupts are used for generic projects
- Cheaper board (the AVR chip we use costs $8, compared to $30 for standard Arduino
- More I/O pins than standard Arduino (36 general I/O pins on the ATMega 644P)
- Chiindii software is completely modular, using common interfaces. This can allow developers to easily swap out hardware by just writing the driver for that particular device. (For instance, if you wanted to use an analog accelerometer instead of an i2c one, you would just implement a new accelerometer module and change the compile-time makefile include to use the new one).
- No ties to legacy code / hardware; by using an XBee for radio communications instead of a generic RC radio controller, we can have bi-directional communications without having to decode PWM signals.
The name 'Chiindii' comes from the Navaho word meaning 'dust devils'; we felt the implied spinning winds fit a quad copter implementation.
Work in Progress
This web site is a work in progress. Please come back soon for updates.