The Falcon 2 is a 50mm x 50mm (2" x 2") multi-rotor (drone) flight controller based on the Arduino Zero. It's also an enhanced version of the Falcon 1, detailed here: Falcon 1 Flight Controller - Exhibition / Gallery - Arduino Forum
It uses the larger sibling of the SAMD21 micro-controller family: the 32-bit, 48MHz ARM Cortex M0+ SAMD21J18A, (rather than the Zero's and Falcon 1's smaller SAMD21G18A). The Falcon 2 itself is programmable via the micro-controller's own native USB port. This allows the board to be selected and programs to be uploaded directly using the Arduino IDE. It's essentially an Arduino Zero in a flight controller's body.
The Falcon 2 is a capable of both manual and automated flight with the following flight modes: rate (gyroscope only), auto-level, heading free, altitude hold, loiter and return to lauch (RTL). To this end, it uses an I2C based motion processing unit, the MPU-9250. The MPU-9250 is a 3-axis gyroscope/accelerometer/magnetometer (compass) in a tiny 3mm x 3mm package. The board also has a MS5611 barometer for altitude measurement. A uBlox GPS can be attached to one of the board's serial ports to acquire latitude/logitude position.
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 32K EEPROM. There's also a reset button (top left).
The Falcon 2 has 8 input channels (on the left hand side), these connect to a traditional RC receiver and are for throttle, airelon, elevator, rudder, gear, aux1, 2 and 3 (the gear and auxillary channels are 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 2 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 2 also has an external I2C and 3 serial ports. The external I2C is used to connect an external magnetometer (compass). One of the serial ports is used for GPS the others are reserved for future expansion.
Here's the Falcon 2's specification:
Hardware:
Board Dimensions: 50.5mm x 50.5mm
Mounting Holes: diameter 3mm, 45mm spacing
Processor: RISC 32-bit, 48MHz, Atmel ARM Cortex M0+ SAMD21J18A, 64-pin TQFP package
Memory: 256k flash, 32k RAM, 32k on-board external EEPROM
Display: 1.3” monochrome OLED (super fast hardware SPI bus driven)
Gyro/Accel/Magnetometer: MPU9250
Barometer: MS5611 + cable tie and foam to protect it from wind and sunlight
Inputs: 8 receiver channels (T, A, E, R, G, 1, 2 & 3) + battery voltage monitor input
Outputs: 8, 11-bit resolution PWM channels at 400Hz (motors/digital servos) or 14-bit resolution at 50Hz (analog servos) + buzzer output
Serial1: general purpose serial port
Serial2: general purpose serial port
Serial3: general purpose serial port
Serial4: satellite receiver input (on the throttle input channel)
I2C: I2C expansion port
Firmware updates: via micro USB connector
Off-board GPS: uBlox, automatic configuration, supports UBX binary protocol, 10Hz at 9600bps, connects to general purpose serial port
Software:
Modes: Rate, Auto-Level, Heading Free, Altitude Hold, Loiter and Return To Launch
Receivers: Standard, CPPM, plus DSM2 and DSMX satellite receivers, (sorry, no S.BUS yet)
Mixer modes: 12 channels with the following pre-set configurations – Tricopter, V-Tail, Quadcopter x, Quadcopter +, Hexacopter x, Hexacopter +, Octocopter x, Octocopter +, Singlecopter 1M4S, Singlecopter 2M2S, Dualcopter, Y4, Y6, X8 +, X8 x, H6, H8, V6 and V8
Sub Menus: Radio, PI Editor, Settings, Display, Calibrate, Motor Layout, Factory Reset, Version
Camera Gimbal: 2 axis gimbal option on outputs 7 and 8, standard and SS gimbals supported, (though currently only tested on two HS-82MG servos)
Here's a Youtube video of my earlier "Raven" flight controller (8-bit, Mega based design) in action: - YouTube


