Finally have a new quadcopter design:
- Frame; 260mm with LEDs
- Motors/ESCs/props; 2205 @2300kv with 20apm ESC
- Transmitter/receiver Quanum i8 8ch AFHDS
estimated cost: $215.00
If you notice, there is no Flight Controller; the last one was a Teensy 3.1 with BaseFlight; well this time it will be Linux as Flight Controller OS with micro-controller decoding PPM/PWM and generating the PWM out for the ESC.
Which board? Udoo Neo will be the first one, the second board will be a Orange PI. The goal is to use Linux with PREMPT enabled. Did some initail testing with OrangePI with 4.6-rc4 and was able to generate a 50Hz square wave while running stress-ng, with no issues!
Using the Neo first because has a A9/M4 the Orange PI will need an external micro-controller.
So, how to port BaseFlight to Linux?
- Basics
- I2C: will use /sys/class/i2c
- SPI: Not supported yet; will get into that little latter
- PWM: (M4 Neo, OrangePI micro-controller)
- PPM/PWM deocde: (M4, OrangePI micro-controller)
- Software/Framework
- Boost ASIO
- asio offers as async/event loop
- High performance timers
- Support for serial events
- Support for network events
- Add support for DIO interrupts
- Boost logging
- integrated
- BaseFlight
- has a single poll loop to process events
- Will move each of these events to asio event:
- Serial: for GPS / Baseflight configurator
- Timer: process loop for FC
- Network: External WIFI (NEW)
Why not use use Ardcopter or TauLabs? This is a first pass and will be moving to one of them on the next round. Already have ported BaseFlight to Teensy 3.1; so already familiar with the code.
Which Kernel? Right now, the Udoo Neo is 4.5 with some patches for RPMSG. OrangePI, did some testing with 4.6-rc5; but waiting for more patches to go into mainline; so, 4.7.
BaseFlight has been ported to Linux; just debugging I2C; then pull apart main.c /loop and move to boost asio. Will post the modifications in a few weeks. Right now, getting Udoo Neo RPMSG working in 4.5.