Quadcopter flight control system with built in IMU and Cortex-M4F processor.
AshimaCore is a flight control system for multi-rotor flyers, although it can also moonlight for any robotics or sensing projects which need an IMU, wireless, and µSD, running on a microcontroller that is over ten times as fast as your typical Arduino. Based on a STM32F4xx processor, AshimaCore is ready to be programmed with any of the increasing number of open source multi-rotor projects which have chosen this 168MHz processor as the replacement for Arduino.
Here are some things we wanted and thought you might want as well:
- a more powerful board than Arduino which can run many different open source RC multi-rotor software projects
- many wireless communication options (e.g. WiFi, Bluetooth, XBee) so that you’re not limited to RC twin-sticks systems
- 10 degrees-of-freedom sensing on one board
- room for additional sensors to be added, like GPS and range finders
AshimaCore ships with the open source AQ32Plus flight software as used in our flight videos. AQ32Plus is a community-led software package, and we’re exciting continuing to contribute code back to this effort. The boards can easily be reprogrammed.
What’s different about AshimaCore?
More and more people are finding that Arduinos are too slow for the multi-rotor software they want to write. Many are finding that ARM Cortex-M4F processors provide the needed speed and peripherals to take things to the next level. Unfortunately, the boards people have made so far have run into a few catches:
- some of the sensors chosen are in short supply, keeping boards out of stock
- each board tends to be developed with only one software package in mind
- most boards cost closer to $200 or $300
AshimaCore is not tied to any particular multi-rotor software, uses sensors that are in plentiful supply, and costs $99. We made it as compact as we could, while still providing plenty of options for expansion.
We want your help in getting this flight board out to the multi-rotor community. Our goal is a controller that is affordable, easy to get hold of, and is compatible with a range of open source flight software packages. We want to give you everything needed to start flying with 32-bit power and stability in an affordable and compact package.
- main board – 64mm x 35mm; 15g; 3.3v in (5v tolerant I/O)
- power board – 27 mm x 35 mm; 7g; 6-20v in / 3.3v and 5v out
On the board
We picked the STM32F405/7VG because it is a really good, all-round chip. We wanted an ARM Cortex-M4F because of the support and the well-proven nature of the architecture. The STM32F belongs to a family of well-supported chips from ST that share common peripherals and interfaces. This is important for future-proofing and for continued growth of the development community. A feature that particularly caught our eye with the STM32F4 is the unerasable bootloader that ships preprogrammed on the chip. It uses standard firmware updating protocols and ensures that you can never “brick” the chip!
Specs: 168 MHz 32-bit Cortex-M4F (FPU); 1Mb Flash; 192K SRAM; 5v tolerant I/O; 14 timers; CRC and RNG units; 96 bit unique ID; RTC calendar; I2C, SPI, USART I/O; USB; 3 ADC, 1 DAC
- IMU Sensors
The MPU-9150 collocates and co-aligns a 3 axis accelerometer, 3 axis gyro, and a 3 axis magnetometer in a very small package. We chose the 9150 as there is nothing else like it on the market. High quality sensors that are tightly co-located allow for measurements at effectively the same location, which is a significant advantage for applications where precise pose estimation is important. You can read the sensors individually and do your own pose estimation (as we do) or you can use the MPU-9150′s embedded digital motion fusion processor.
We’ve taken great care to place the IMU at the center of the board mounting holes. This is done to make it easy to align the IMU with whatever you’re mounting it on.
The board also includes a pressure sensor for altitude estimation. We chose a BMP180: a widely used, ultra low power sensor that is easy to source. The board also comes ready to accept a MS5611 (for when this part becomes more readily available).
- Support Components
We put a few other support features on the board. We have a high-speed 4-bit SDIO micro-SD card slot for logging. We’ve put 8 Kbytes of EEPROM on the board. For testing and quick board state assessment, we included 3 user and 4 status LEDs. Finally, who needs buzzers when you have a 1W audio amp?
We originally designed this board to be the avionics for flying vehicles. This necessitates radio communications, which is supported through XBee compatible modules. You can even reprogram via these modules, though normally we’d program through the USB. Communication with other on- or off-board devices is supported by various standard bus interfaces. We have designed AshimaCore to use WiFi or ZigBee wireless protocols and I2C or SPI-controlled ESCs, but the board can also support the standard PWM in and out used by most hobbyist quadcopters today, including standard RC receivers.
- Radio: XBee module port
The board’s XBee header supports various communications modules including the XBee’s WiFi (802.11g/n), ZigBee (802.15), and Pro 900 (with 15 mile range!) modules, and XBee-compatible Bluetooth modules. For the XBee WiFi, we’re ready to do up to 3.5 Mbps via SPI.
- Wired Interfaces
The USB interface is broken-out via the power board specifically to allow development and programming. Additionally, standard 0.1 inch headers break-out a combination of 1 I2C, 2 SPI, and 4 UARTS that can be wired for communications.
- Digital Control
We believe that the right way to control ESCs, servos, etc. is via a digital bus. This allows for more accurate timing, better noise immunity, and is easier to program. We also get feedback such as motor speeds and health status. The board breaks-out I2C, SPI, and USART buses. Digital control is our preferred method for in-house projects – in fact, we’ve already prototyped our digital ESC and will release it in the near future.
- Analog Control
A major change from the prototype to the production board has been the breaking-out of 4 dedicated PWM channels in addition to the 13 other PWM channels that are shared with various other functions. This was done to make it easier to directly support older and more common PWM-based ESCs and servos.
There is also a 1 W DAC output and 5 ADC input for monitoring analog sensors, batteries, etc.
For more info