The Falcon 1 is a 50mm x 50mm (2” x 2”) multi-rotor (drone) flight controller based on the Arduino Zero.
It uses the same tiny 32-bit, 48MHz ARM Cortex M0+ microcontroller: the SAMD21G18A. The Falcon 1 itself is programmable via the microcontroller's own native USB port. This allows the board to be selected as an Arduino/Genuino Zero (Native USB Port) and for programs to be uploaded directly using the Arduino IDE. It's essentially an Arduino Zero in a flight controller's body.
The Falcon 1 is a primarily a manual flight controller, capable of both rate (gyroscope only) and auto-level modes. To this end, it uses an I2C based MPU-6050 gyroscope and accelerometer.
The flight control firmware's been written from the ground up and isn't based on any existing code such as multiwii, baseflight, cleanflight, etc... This allows for seamless integration with the hardware and freedom to control all aspects of the design.
Communication with the processor is via 4 buttons and a super fast, SPI driven, miniature OLED display. Using a menu system, the pilot can select the flight controller's various settings, all stored in its on-board 16K EEPROM. There's also a reset button (top left).
The Falcon 1 has 5 input channels (on the left hand side), these connect to a traditional RC receiver and are for throttle, airelon, elevator, rudder and aux, (aux is the auxillary channel used to switch between flight modes). Alternatively, it's possible to connect a single CPPM (Pulse Position Modulation) receiver channel, or a satellite receiver, (nothing to do with satellites, just a tiny receiver that communicates the channels' data over a serial port instead).
It also has 8 PWM outputs (on the right hand side), these are high resolution, hardware PWM outputs allowing the flight controller to control various brushless motors and servos from Tri, Quad, Hexa and Octocopters, through to stranger configurations such as Single and Dual copters. The mixer tables for each PWM channel allow custom configurations for the stabilization of any practical motor and servo combination. In addition to 400Hz PWM for motors/digital servos, or 50Hz PWM for analog servos, there's also an option for Oneshot125.
The Falcon 1 has provision for a battery monitor, that's capable of measuring LiPo battery voltages up to 6S (25V) and a +5V buzzer connector. The buzzer can be used to indicate to the pilot: a change of flight mode, motors armed, battery low warning, lost alarm, etc... On board LEDs indicate power and armed status. The Falcon 1 also has an external I2C and serial port, these are reserved for future expansion. I've already used these ports to connect an external gyro/accelerometer/magnetometer/barometer breakout board and GPS, to test my autonomous flight firmware for the Falcon 2: Falcon 2 Flight Controller - Exhibition / Gallery - Arduino Forum.
Here's a Youtube video of my earlier “Raven” flight controller (8-bit, Mega based design) in action: - YouTube