The YMFC Flight Controller and Mini Drone is a simple, affordable, Arduino-programmable, open source circuit board that can be used as a mini drone unto itself, or as a flight controller for a larger (F450 size) drone. Its simplicity in design and control and its open source nature make YMFC perfect for educational projects and drone enthusiasts.
This board is perfect for anyone who is interested in understanding flight controller code instead of using an off-the-shelf, proprietary module that you can’t fully know or control. The flight controller code for this board is simpler than other common open source flight controller projects, being based on the ubiquitous Arduino IDE, so very little mathematical or coding skills are required. Just about anyone can learn how to control their YMFC done. And because the board can be its own mini drone, beginners can dive in without much additional expertise or hardware.
YMFC is also a very safe starter drone when used in the mini drone configuration. As a mini drone, it’s very lightweight at around 40 g including motors and a battery. And there is far less torque when the drone uses small brushed motors than if a large drone were configured with more powerful and bulky brushless motors. Having insight into the actual open source code also allows greater control over safety.
This project is based on a famous YouTube tutorial series by Joop Brokking that walk the viewer through building the YMFC quadcopter flight controller. The term YMFC was coined by Joop and stands for Your Multicopter Flight Controller.
You can find more information about the original YMFC project on Joop’s YouTube channel and website. You can also learn more about the project history on this page. This project was undertaken with Joop’s permission.
If you intend to control your drone with a wireless controller, we suggest you include an RX2A receiver with your drone. This plugs right into the YMFC board, and pairs it with many standard radio controllers.
|Name||YMFC-32||Flip MWC||Hobbypower APM|
|Lines of code||700 (flight controller)||16,000 (v2.4)||540,000 (v4.0)|
|MCU||STM32F103C8T6||ATmega2560 or ATmega328P||ATmega2560 (v2.8)|
|Dimensions||10 x 10 cm||5 x 5 cm||8.3 x 4.4 cm (v2.8)|
|Open source||Schematics, code, PCB files||Schematics, code||Schematics, code|
|Lines of code||700 (flight controller)||56,000 (v5.3)||270,000 (v2.1)|
|Dimensions||10 x 10 cm||10 x 10 cm||9.2 x 9.2 cm|
|Weight (incl. battery, motors)||40 g||46 g||27 g|
|Open source||Schematics, code, PCB files||Schematics, code||Schematics, code, PCB files|
Current documentation can be found in the GitHub repo, and we welcome questions and interaction through the issues there. The PCB design files will be published after the campaign succeeds.
You can also find video tutorials on our YouTube channel.
In his videos, Joop introduces the basic principles of flight controllers alongside his original code.
For example, some terms that are commonly incorporated in other flight controllers are quaternion and double-loop PID, which look intimidating just by their names. Joop, however, uses the simplest algorithm possible. Very little knowledge of mathematics or jargon is required, and it still works in a robust manner. Inspired by Joop, in our code we have used the same PID value to control both mini drones and larger F450 quadcopters, which gives drone hobbyists an idea how robust the algorithm is.
Joop also talks about how to write low level code according to the datasheets of the MCU and sensors. Instead of directly copying generic driver code from elsewhere, Joop analyzed the related sections of datasheet and showed people why and how to specify the registers to make chips work as wished.
While this is all very inspiring, enthusiasts of Joop’s original YMFC quadcopter flight controller build know that soldering the hardware components on a protoboard takes an immense amount of time, up to two months or more in our experience. Also, Joop’s tutorial is meant for large quadcopters, which are dangerous to fly for beginners. Because of all this, we were inspired to bring the YMFC Flight Controller and Mini Drone PCB, and our own code, to life.