Build Your Own Quadrotor

(Updated on 01/04/2017)

Here is a summary of how I built my quadrotors. The primary use of these quadrotors includes: flying for fun, autonomous flight for research. You may find configurations specialized for other purposes somewhere else from the Internet.

1. Hardware Components

  • Hardware
    • Flight controller * 1
    • (Companion computer * 1)
    • 250 frame * 1
    • DC brushless motors * 4
    • ESC for brushless motors * 4
    • Power distribution and BEC * 1
    • LiPo Battery (3S or 4S)
    • Radio receiver and remote controller

There are a lot of possible choices for flight controllers nowadays. I personally own OpenPilot Revolution, Pixracer and BrainFPV RE1. All these boards are based on STM32F4 MCUs and have reasonably rich hardware interfaces exposed, which allows you to add more extension modules. The main advantages of Pixracer and the PX4 software stack are its large user community and support for a large number of peripheral modules. But the downside is that the software packages (including firmware, GCS, ROS etc.) have become very large and can be confusing sometimes for you to fully understand (especially if you may also come across packages from the APM project). The code base for the OpenPilot-rooted project (librepilot, taulabs, dRonin) is relatively smaller and cleaner. The design of GCS is also very intuitive and user-friendly.

You also have a lot of choices for motors and ESCs from websites like Hobbyking and getFPV. I recently tried the DJI snail propulsion system. I have to say that I love this set of motors/ESCs. They are well-made, very powerful and well documented (for those who want to know better about the characteristics of the motors and propellers). And the price is very reasonable for its quality.

2. Software Structure

Low level flight controller

  • Acquire sensor data (IMU)
  • Flight attitude/position control
  • Motor control
  • Telemetry

High level controller

  • Computer vision
  • Motion planning

Workstation

  • System monitoring
  • Debugging

3. Interface with Sensors

There are generally two protocols widely used to interface with sensors like MPU9250, SPI or I2C. Since SPI is simpler in terms of signal timing (it uses more pins though) and more importantly much faster than I2C, it gets used in more and more recent flight controllers.

For digital sensors like MPU9250, the first step is to establish the communication between the MCU and the sensor. It can be very helpful at this time to use a logic analyzer if you cannot find out problems in your code that cause a communication failure.

../../../_images/mpu9250_whoami.jpg

The internal register WHO_AM_I of MPU9250 can be used to check the communication. The above screenshot is captured by a logic analyzer, showing this “handshake”: MCU sends the address of WHO_AM_I (0x80 | 0x75 = 0xF5 for reading from register) and gets 0x71 as a reply.

After the communication is set up properly, we can further configure the registers of MPU9250, like enabling/disabling gyro/acc, selecting full scale of gyro/acc and so on. You can refer to specific datasheet for more details of each sensor model.

4. The Completed Quadrotor

(Updated on 01/23/2016)

I finally get enough time and money to get all parts to build a complete quadrotor. I choose the CC3D Revolution flight controller since it has a very small foot print and uses similar chips as what I’ve partially tested before. All parts are selected according to the specifications of commonly seen FPV racing quadrotors. I did a lot of research to find a balance between the performance and my budget when choosing each component. The total cost of the quadrotor and necessary accessories is about $500 dollars.

../../../_images/quad250.JPG

The second build is improved in the following aspects:

  • Better quality frame: Moka Delux vs Kim250 Pro
  • Better motor/ESC: DJI Snail vs Multistar Elite 2306-2150KV ‘MINI MONSTER’ + Afro Race Spec Mini 20Amp
  • Better wire management
../../../_images/quad250-2.jpg

(I know it’s generally recommended to put the two antenas at 90 degrees. But I hadn’t found a good way to mount them in such configuration when I took this photo.)

(Updated on 10/02/2017)

More quadrotors (size 250, 150, 130, 90)

../../../_images/quad_family.jpg