Andy Little's Posts (10)

Sort by

Generic Flight controller mixing

Once upon a time RC control of an aircraft consisted of a Transmitter with a single button. Your aircraft had a rudder only. Hit the button once to go left, twice to go right.

Increasingly RC transmitters offered more functionality with different mixing facilities and modern transmitter software such as open TX offer very flexible facilities.

But, if your aircraft is being controlled by a flight controller, have mixing on the RC Transmitter is no good, you need the mixing to be on the flight controller.

The mixing for different model types so far has usually been hard coded into the flight controller so you get what you are given. PX4 improves matters with its mixing scheme but it is quite cryptic so I decided to try to offer an alternative.

The result is mixer_lang, a flexible mixer for Flight controllers

some features

  • High level Specification.

    The specification is based on a context free grammar and well documented semantics. The goal is consistent semantics, so that you arent reliant on the vagaries of a particular implementation.

  • Strongly typed, type deduction.

    Expressive economical language with type deduction, but strongly typed to give well defined and predictable qualities

  • Access to system values.

    The language enables defining system values either constant or variable and of real, integer or bool type as inputs to the mixer.

  • Inputs and Outputs as Integers, floats or booleans.

    Inputs and Outputs can be comprised of combinations of integer real and boolean. You can select the underlying integer and floating point types to the best combination for space and performance on your system.

  • Tunable at runtime.

    The language specifies how selected values in the mixer can be remotely modified in flight to tune best performance in real time.

  • Multipoint mixers specified in the language

For more info visit the project on github mixer_lang, a flexible mixer for Flight controllers

Read more…

STM32H7 previews

Next generation STM32. 400 MHz clock. Up to 1Mb RAM. Double precision hardware floating point. There is enough RAM there to start using dynamic loading of code. You can also increase the FLASH using memory mapped QUADSPI

And all at low power consumption they say! Nice!

Read more…

3689702739?profile=originalThe SkyHook Discovery.

Disclaimer: I was lucky enough to have been given one of the first prototypes as I helped in the design of the plane.

More info from :

There is also a pure glider version, which uses the same feathers, just a different fuselage pod

The Skyhook Discovery has been specifically designed for efficient soaring, whilst also being a good stable FPV platform.

The wingspan is 2.5 meters, but the model will break down to fit in a small box. The wing dismantles into 4 pieces, the fuselage boom separates easily from the fuselage pod and the V tail halves are easy to disassemble as well.

The plane has an MH32 wing section which includes a full length 20% chord flap. The MH32 is well known as a slippery airfoil, and the model is capable of flying very fast or very slowly depending on how you set the camber control in flight.

The wing and tail construction is foam with a glass skin sheeted over with balsa. This makes it very rigid. The surface finish is far superior aerodynamically to anything you can achieve with a foamie.

The ailerons are split with the wing panels and are hinged top side on the outer panel and bottom on the inner so you can set up an efficient "crow" flap mode too.

There is a good amount of space for gear in the "pod" between the wings and in the lower fuselage, and there are also pockets in the wings for yet more gear.

I chose a Turnigy GliderDrive 1120kV for mine and a 12 x 6 prop and an 80A Turnigy Plush ESC, and with a 3S 4000 Lipo, it get away nicely. The plane is very stable and rock solid as a camera platform , but also can do aerobatics.

So far I haven't had much time to try it beyond a couple of flights , but I'm looking forward to having some fun with this!

Read more…


Here is a preview of my current project, a flight controller with onboard OSD targetted mainly at ArduPlane. The Board incorporates an OSD for FPV similar to that in . The OSD video out also provides telemetry via the video start of frame to communicate position data to an Antenna tracker. (Ardupilot Code for the version in the video at )

The main application is smart thermal soaring, therefore the board is long and thin to fit in a small fuselage. The connectors face upwards so that they dont stick out sideways and access should be easy from above if for example installed in the fuselage bay cutout under the wing of a Glider style aircraft. The SD card is forward and on top for easy access.

The other feature of the board is that it has been designed to incorporate a Raspberry Pi Zero as a companion computer fitting neatly on the underside of the board as shown in the image below. The Raspberry PI has AV out and an aux avout has been added so that the FPV view can be switched to a view of the Raspberry PI display.


Though the board can be connected to work stand alone, it is also designed to work with my "sub hub" boards: , which are designed to allow most electronics and sensors, gps, rc receiver etc to be placed into the wings of the plane, each wing being connected to the fuselage by one 4 way connector thus allowing smaller fuselages, simple assembly and also improving rf separation for GPS RC etc.

Read more…

Simple Distributed Flight controller network


Following on from my previous blog, I hope to get the prototype sub-hub pcb back soon from OSHPark.

The purpose of the sub-hub is in order that arbitrary electronics can be put in the wing of a plane with 2 piece or more detachable wings while being able to connect the wing to the fuselage with a single 4 way connector for useability.

The sub-hub communicates with the FC via a high speed uart. The connector also provides power at 7 to 20 V. (There is a switching regulator on the pcb to convert this to 5V at 2 A for the servos.

The prototype PCB uses an stm32f0 as the mcu and has the following features:

* 2 servo PWM outputs which can provide 2A at 5V. ( More coud be added as necessary but I only need 2 servos on the current project)
* analog /digital RSSI input from the RcRx
* PPMsum receiver input from RcRx
* FrSky telemetry output to th RcRx
* UART (for GPS)
* Other analog input ( for airspeed sensor)
* I2C input (for magnetometer.- airspeed etc)

I'm assuming I can get a baud rate of 1 Mbit per sec over the link ( cable length is around 400 mm) , so the next task is to try to work out the detail of communication between a sub-hub and the FC.

The UART for comm with the FC is probably an overly simplistic way of doing things. Dependent on how this goes, I may try a UAVCAN version or even a USB version using an Raspberry Pi as the host

Read more…

Simple Distributed Flight controller network


Over the last few years of flying FPV I have flown one piece foamie flying wings of around 1 meter span pretty much exclusively.The main advantage of this type of aircraft is that the electronics can be distributed anywhere within the wing. The plane is stored assembled, therefore there is no need to assemble at the field. Servicing and accessing components is easy.

My main interest lies in soaring though. A 1 meter flying wing foamie loaded with electronics and sensors just doesnt soar very well!

The problem with FPVing a large soaring model is the issue of where to put the electronics and how to deal with all the sensor connections. From my flying wing experience, I know that for best rf range, it is optimal to separate the various components,in particular the GPS, RC receiver and video transmitter.  I also have bad memories of my first wing and tail FPV model, an EasyStar, where I put everything in the fuselage. I remember hours of fiddling with wire and connectors in the tiny fuselage. Each change of the flight-battery involved pulling wiring out and moving various components and connectors, which is when I decided to build flying wings in future. 

Recently I decided I really want a soarer type model but one in which I can place arbitrary electronics in the wings.

I bought a 12 foot Thermal soarer ( Hobbyking Aether ) and resolved to solve once and for all the problem of maintenance and assembly at the field.

I wanted to use a similar layout as I had come to use in my flying wings, putting various components in the wings, since I know it works well from an RF perpective and is easy for maintenance ( assuming you dont mind ironing solarfilm :))

I decided to use a distributed system, broken into subsystems with links where the aircraft needs to be physically disassembled for transport. Each part is to be connected with one connector. For the Aether that means wings to pod and tailboom to pod connections. (I made the Aether boom detachable so that it can be disassembled from the main fuselage pod for transport, but that now means making the elevator and rudder connections easily dismantleable)

  • In the port wing I provisionally put the Rc Receiver and airspeed sensor. There are also 2 port flapperon servos.
  • In the starboard wing I provisionally put the GPS, magnetometer and the 2 starboard flapperon servos

In the heading diagram the red edges are where there will need to be connectors. There is one connector for each wing to the fuselage pod conection and 1 connector for the tailboom, The black edges dont need to be disassembled at the field since they are all in the Pod .

For the tail "link" I decided to just run the Elevator and rudder servos direct from the flight controller so they dont need anything fancy, however, for the wings I figured I would make a "sub-hub" with a serial link to the main FC in the Pod.

The requirements on the sub hub were

  1. to provide bi-directional comms between the FC and sensors and servos.
  2. to provide power to the servos.

I looked at 3 comms choices. CAN, USB , UART. In each case the physical cable consists of 4 wires, Power, Ground and 2 signal wires.

USB would be interesting with the FC as the host . Might work well with a Raspberry PI FC in particular
CAN also looks interesting but decided to avoid it for now.
Both of these I should certainly investigate for the future, but for V1 I decided to use UARTs.
On the physically short links ( under 400 cm) a full duplex per wing baud rate of 1 M bit per sec should be achieveable with little overhead The sub hub can be attached to a PC for testing ( also true of the USB option). CAN seeems overall a bit heavyweight and a bus topology doesnt seem that great. (I think a star works better for a plane)

For  power to each sub-hub on this version,I opted to specify a minimum of 7 V and a maximum of 20 V at max 10 watts per link. That means the system can be powered direct from 2S to 5S flight batteries and each wing has 2 amps at 5V for powering the servos.

The actual sub-hub board has a mcu and a switching regulator on board to provide servo outputs, and various connectors to which can be attached some combination of a serial device, an I2C device, Rc Receiver and analog inputs, for the various devices that need to be connected.

With that in mind I am currently designing the sub-hub board.

Read more…

Ardupilot Flight Controller with on-chip OSD

Since my main interest is FPV, and I use an OSD, I was interested originally to make  a vector graphics replacement for MinimOSD. Here is the original diydrones discussion .  Though that worked well, I next decided to incorporate the Ardupilot code into the OSD so it is all integrated on the same IC.   The software and hardware is all Open Source. The Project is also different in using FreeRTOS rather than Nuttx or Posix  The source code is available on github

Above is the initial version. 

Currently I am designing a dedicated OSHW board for the project

Read more…

It's official ... MinimOSD is obsolete!


The title may be a bit provocative.. whatever.. MinimOSD is a great OSD and has, I am sure, much life left in it but is getting old. It has become less and less fun trying to squeeze new functionality into the small ram.

Some time ago I decided to do something about a replacement

Now it seems there are at least 2 other alternatives to MinimOSD

This is great and I am sure these will all benefit each others development

Actually, to acknowledge the past, Sami Korhonen did great work some few years ago on an OSD for  OpenPilot which eventually spawned BrainFPV some of whose whose code is in the PlayUAVOSD . He seems to be working on a new OSD too..

I should also mention and acknowledge SuperOSD which code was used in Sami Korhonen's original Openpilot code that eventually spawned BrainFPV et al and can still be seen there. It was ahead of its time

Future is looking good for OSD development :)


Read more…