A Multirotor Flight Controller Hardware/Firmware

HippoFly is a fully custom multirotor flight controller board and firmware.  Taking input from a range of sensors and control signals from an RC Tx/Rx, it can stabilize and control a multicopter. That is to say, the pilot need only define a desired orientation, and the aircraft will automatically adjust its orientation. Software has been written for tricopter and quadcopter flight configurations.

An early prototype was tested on a tricopter platform, a later version was integrated into a quadcopter platform.

HippoFly Controlling a Tricopter


A three or four rotor multicopter is a complex system, many of the aerodynamic forces, and thrusts/torques from the motors, are subtle and often unpredictable. Precise control is a challenge, especially considering the inherently unstable flight configurations. A series of PID loops consider the aerodynamics of the aircraft and act to keep it stable.


  1. Powered by a high performance 50Mhz 32bit Atmel processor
  2. Equipped with a three-axis gyro, accelerometer, and magnetometer for accurate and drift free orientation tracking.
  3. Equipped with an atmospheric pressure sensor for automatic altitude control
  4. Firmware written for both Tricopter and Quadcopter configurations, but can in theory control up to an Octacopter.
  5. Serial and I2C headers available for future GPS integration.

A four layer PCB was used to improve EMI tolerance and keep the board size down by simplifying the I2C bus, power and ground routing.

Flight Software

HippoFly's flight software was written in C/C++.  Orientation sensor fusion was performed using the Madgwicks DCM filter. TinyGPS was used for an initial GPS tracking implementation. Modified libraries from the Atmel Software Framework were used to interface with the microcontroller functions, as well as interface with the different ICs on the PCB.

The controller loop rate is 100Hz, which is easily achieved by the microcontroller. The controller implements a cascading PID loop, regulating off raw gyro data for the rotation rate, and the output from Madgwicks filter for the true orientation.  A safety channel is implemented that resets the I-controller history and kills power to the motors.