This is my first post in DIY Drones. I would like to share with the comunity my last work related to UAVs. I'm currently working on my thesis for graduation as an electronic engineering at the University of Buenos Aires. My thesis is based on a embedded control system and in this post I'm presenting the Flight computer that holds the control algorithms.
My thesis is more an academic research than a hardware/software project, but I decided to do my own powerful board to test it.
Above is the FLCv2p0 (Flight computer v2.0). The first version was a homemade attempt and now this is the new version
These are the details of the board:
- LPC1769 Cortex M3 @ 120 Mhz microprocessor wtih 512KB of flash and 64 KB of RAM
- Two side PCB board with mounting holes (almost) compatible with DJI Flamewheel frame
- 4 intefaces for arms: this is a ESC output and a multipourpouse input output conector with servo pinout that serves as output or input in digital, analog, or Timer capture mode for measuring frecuencies and periods (ideal for tachometers)
- 2 other arm interface without connector for 2 extra motors
- Two power options: USB for developing and testing and an external input (the blue one) for direct battery input. Up to 40V can be input, then there is a stepdown high effiecncy switching regulator that regulates to 3.3v needed for all the board. There is no need for BEC (the +5V pin of the arms is unconnected cause it always cause problems and the DJI OPTO 30A that I'm using doesn't have a BEC anyway.
- The USB port can be programmed for any USB device application
- microSD card slot via SPI
- Indicators: 1 led power indicator, 1 small green led for status or anything else and 4 high power sideleds for beacon and directional ligths (maybe white leds would be nice)
- Sensors: The is a I2C network on the board with: MPU6050 Accelerometer and gyroscope with data fusion integrated, HMC5883 magnetometer (slave to the MPU but could be bypassed), BMP085 Barometer (can be used as an altimeter), LM60 temperature sensor, 128KB EEPROM for configuration saving,
- Xbee Radio: is it possible to fit an Xbee standard on PRO
- Programming: could be made via JTAG or with the built in serial bootloader via Radio (slower but very useful)
- SPI, I2C and UART headers for external devices, sensors, etc.
- Real time clock with calendar (implemented by the LPC1769 but there is an external crystal for clocking)
About the firmware:
I'm currently working on my thesis firmware and the simulator (on MATLAB). Cause it is not ready at all I would prefer not to publish it yet. But, I wrote a small tester firmware for all the devices that will give you an example on how to use them, and also have a very small "template" for starting. The board is perfectly capable of running FreeRTOS (which I'm using extensively) and the IDE I'm using is the LPCXpresso Free IDE (128KB flash limit now).
Some videos:
First flight: https://www.youtube.com/watch?v=YBPmafMSqKM it is a little buggy, it was my first ever flight of a RC thing (be gently :) ) and was only fliying with Gyros so no attitude controlling was made.
MPU Motion fusion testing: https://www.youtube.com/watch?v=vLnvzxnk2og
And some pictures:
http://www.flickr.com/photos/akharsa/sets/72157632740777181/
Ground station:
My ground station is now a xbee via USB and a PS3 joystick via bluetooth. The GS is not something I'm proud of it yet but is getting into shape slowly.
My idea now is to publish the schematics of the board open to everyone, and even the PCB files. Maybe later the firmware when I have a stable version (of course the small templates will be on github soon). I'm not wondering to be the responsible for quadrotors breaking (I broke my yesterday . I'm also thinking in selling this board already assembled (in china where I manufactured the PCBs) to easy the people acces to this board. I'm not sure if it is a great idea yet.
Currently the board is not intended for people looking for a Ready To Flight option, exactly the opposite But I'm sure that there are people out there that make use of this kind of stuff (Arduino for example :D) and I would like to share my work with them as they do with me.
Thank you!!
Alan