First time quadcopter build

Goal: I wanted to go from knowing nothing about remote control vehicles to building a quadcopter that could complete a route autononmously, i.e. without human control from the ground. I wanted as few black box elements as possible in the system and so used open source software and hardware wherever reasonably possible.

TODO: include photo of final build here.

Having some experience with hobbyist electronics projects I initially thought that I'd really be able to make a quadcopter from scratch, 3D printing elements of the frame, sourcing most of the components, like motors, as generic parts from a big distributor like Digi-Key, and only having to buy a few drone-specific components like propellars.

I was quite disappointed when I found various pages (such as this one from ArduPilot) making clear that this wasn't an option to consider when making ones first drone. Apparently I'd have to start with what's referred to as an ARF (almost ready to fly) kit, i.e. an unassembled frame and the parts for the propulsion system (propellars, motors etc.).

The ARF acronym makes it sound like all the interesting work has been taken care of and all that's left is to put things together lego style. But it turns out, if starting from scratch with no prior experience of drones, that there's quite enough additional complexity without also having to worry about the frame and the propulsion system.

Important: this build requires a small amount of soldering and it's assumed you've already got a soldering iron, solder etc.

TODO: add summary explaining that this page covers parts and that there are other pages - notes.md, stores.md, purchase-order.md and assembly.md. Fill out assembly.md file properly.

Parts

So what other parts do you need besides a frame and a propulsion system? The list of parts below makes clear that there's quite a bit more to this whole thing.

An approximate price in Euros has been given for every item (even though I bought most items in the UK or Switzerland). As you can see the most expensive items are the propulsion system, flight controller and transmitter. The batteries (especially if you buy two in order to have one in reserve) and charger also add a significant cost.

Each part is listed with one or more links to either a product page or a shop page that provides details about the part (in the case of shop pages I chose pages that provided the best description and not necessarily the shop from which I bought the given part).

I've put together a separate page - stores.md - which includes links to sites that carry the parts shown here.

Various acronyms used in the parts list, like ESC and PDB, are explained later in this pages or on one of the other pages here.

Major components

Price Description
€24
F450 frame - the basic platform to which everything else is attached (link 1, link 2).
€150
E305 propulsion system - propellars, motors and ESCs (link).
€175
Pixhawk flight controller - the "brains" of the system (link).
€41
u-blox NEO-M8 GPS (and compass) module (link).
€35
X8R receiver - the drone's wireless receiver (link).
€108
Taranis Q X7 transmitter (link).
€17.50
Power module - connects the battery to the flight controller and the PDB (link).
€37
LiPo 3300mAh 4S1P 14.8V 25C battery (link).

Support components

Price Description
€5
GPS mast - separates the GPS unit from interference from the rest of the system (link).
€4
FUL-1 TTL to RS232 converter - connects the telemetry port of the flight controller to the receiver (link).
€9
FUC-3 upgrade cable (link).
€2.50
SPC (smart port converter) (link).
€8
External LED and USB connector (link).
€2.50
I2C splitter - share the Pixhawk I2C connector between the GPS module's compass connector and the external LED and USB connector (link).
€7.50
Spare propellars (link).
€5
F450/F550 landing gear (link).
€4.50
Battery monitor alarm (link).
€40
S60 LiPo charger (link).
€7.50
T-plug charger cable - connects battery to charger (link).

Additional physical components

Price Description
€2
T-plug male power connector - connects the PDB to the power module (link).
€3
Vibration damping mounting set - isolates the flight controller from the vibration of the frame (link).
€3
Hook and loop velcro straps - attach battery to frame (link).
€2
Mounting foam - attach ESCs and other components to the frame (link).
€5
LiPo safety bag - keep LiPos safely contained when charging or not in use (link).

As already noted some minor soldering is required - it's assumed you already have a soldering iron and solder and know how to use them.

The F450 user manual additionally notes that you'll need threadlocker, a 2mm hex key, nylon cable ties, scissors and flush cutters. The hex key and the threadlocker (which is something I'd never heard of before) are covered in the miscellaneous parts note.

Websites

When putting together this page the most useful sites I found were:

The ArduPilot forums and PX4 forums were also useful.

Note: the terms Pixhawk and PX4 are often used interchangeably - though Pixhawk generally refers to the flight controller hardware while PX4 generally refers to the flight controller software stack.


The following sections cover the major components of the quadcopter. In writing this page I started including so many side notes that they started clogging up the whole thing, so I've moved these notes out into notes.md. They're worth scanning over quickly. They cover:

  • Brief notes on clockwise and counterclockwise motors and the external LED and USB connector.
  • The F450 ARF kit and why I choose to buy the F450 frame and propulsion system as separate components rather than bundled as an ARF kit.
  • The E300 vs E305 vs E310 propulsion systems.
  • The LiPo batteries, the T-plug battery connector, the charger, the battery alarm and the battery safety bag.
  • The IMU and MCU - the core parts of the flight controller and how you can experiment with them.
  • Vibration and why a vibration damping kit might improve the performance of the sensors in the flight controller.
  • Predefined waypoints and in-flight drone-to-computer communication (as opposed to using the hand-held transmitter).
  • The Pixhawk 2.1 and some background leading to my choice of the classic Pixhawk flight controller.
  • Pixhawk.org vs the ArduPilot site.
  • Bags and cases and why the size of the F450 makes it hard to find a good bag for it.
  • Chinese copies and how buying drone parts is a case of caveat emptor.

Now that's out of the way let's get onto the sections covering the major components...

Frame

The frame is the basic physical platform to which all other components are attached. While most of the other components are updated on a regular basis, frame design seems to evolve at a slower pace.

The DJI Flame Wheel F450 frame came out in early 2012 and still seems to be one of the most popular non-race quadcopter frames.

I choose it because it's recommended on many first time build page (such as the ArduPilot build your own multicopter) and it has more available space in its central section than it's little brother - the F350 - without the extra complexity and expense of its six armed big brother - the F550.

It consists of four arms and a top and bottom central plate. The bottom plate also serves as the PDB (power distribution board), i.e. the board that connects the motors (via ESCs) to the battery (via the power module).

The ESCs (covered later) are soldered directly to the PDB, as is a cable for connecting the PDB to the power module.

Note: if you buy the E305 propulsion system separately from the frame then it will come with a small PDB so that the propulsion system can be used with any frame, this separate PDB is not needed when using the F450 frame.

Power module

The power module is just a tiny circuit board that connects to the battery at one end and to the PDB (as described above) at the other end, it also has a 6-position connector that connects to the flight controller.

Flight controller

The flight controller is the brains of the operation. It's one of the largest components in the system, essentially it's a small computer with its own internal sensors and connectors allowing it to take input from external components (such as the GPS and compass), interact with receivers and control the rest of the system.

It's internal set of sensors are together called an IMU (inertial measurement unit). For a drone the typical IMU covers 10 degrees of freedom that are provided by:

  • A 3-axis gyroscope.
  • A 3-axis accelerometer.
  • A 3-axis magnetometer (compass).
  • A barometric pressure (altitude) sensor.

It's fairly obvious how important such sensors must be for a drone - if you'd like to experiment with such sensors (and with the MCU) then see the IMU and MCU section on the notes page.

There are many flight controllers but as noted above I wanted an open source hardware implementation. I chose the Pixhawk flight controller which is covered in the next section.

Note: the flight controller is often also called the autopilot.

Pixhawk

The Pixhawk is an open source hardware flight controller that originated at ETH Zurich and is the de-facto standard high end open source hardware flight controller.

It is the most commonly used flight controller when using the popular ArduPilot flight stack and the PX4 flight stack - at least in the hobbyist community - though neither of these flight stacks is tied to the Pixhawk.

It is the most expensive component in the parts list above and there are certainly cheaper flight controllers - the most interesting of which seems to be the OpenPilot CC3D Revolution which is a product of the LibrePilot project (a successor to the now defunct OpenPilot project).

However I chose the Pixhawk as I liked the flight stack projects that used it and liked the fact that it is popular in academic environments.

While the Pixhawk is open source hardware most discussions recommend the 3DR produced Pixhawk and warn against cheap chinese produced versions. However 3DR no longer produce the Pixhawk version you see covered by the pixhawk.org and px4.io sites and instead seem to have gone down a more closed source route. They now sell what they refer to as the Pixhawk Mini, however it is not branded as open source hardaware and they do not seem to have released schematics etc. for it.

So at the moment you have no choice but to go with a version produced by some other manufacturer. I did some searching and after excluding completely unknown knock-offs I came up with the following list:

The Unmanned and 3DXR Pixhawks are available directly from their producers, while the Holybro can be picked up e.g. from Synosystems DE and the RadioLink from e.g. from the RobotShop INT. There are no end of versions from anonymous manufacturers on sites like AliExpress and Banggood.

I went with the Pixhawk version from Unmanned Tech UK as they seem more engaged in the whole scene than many other suppliers, they are linked to as a supplier on the pixhawk.org site and are mentioned favorably on other sites. I bought it bundled with a Ublox Neo-M8N GPS module and an APM power module.

Flight stack

The flight stack is the software that runs on the flight controller hardaware and covers, among many other things, both basic direct remote control and fully autonomous autopilot operation.

As already mentioned the Pixhawk supports two flight stacks - PX4 and ArduPilot (the pixhawk.org site used to feature a page covering the choice between the two, it's now gone but you can still find it on the Wayback Machine).

Note: the ArduPilot stack, often abbreviated as APM (for ArduPilotMega), is rather misleadingly named. It comes from its early days when it originally ran on the Arduino Mega. Those days are long gone and it now runs on ARM processors, like the one found in the Pixhawk, and various other platforms. This code overview shows it can run on Linux and that when it runs on the Pixhawk it actually sits on top of the PX4 firmware.

When it comes to comparing the PX4 and ArduPilot flight stacks there's lots of confusing and often contradictory information out there. For some information see this thread and this one on the ArduPilot forums and this thread and this one on the the PX4 forums.

The ArduPilot stack and the PX4 one can both be found on Github and both are clearly under active development.

PX4 appears to be more a product of the academic community while ArduPilot appears to a product of the hobbyist community with some resulting differences in focus, e.g. PX4 seems to focus more on autonomous flight while ArduPilot perhaps more on direct control.

Both though work with ground control software for autonomous operation, e.g. Mission Planner (for ArduPilot) and QGroundControl (originally developed to work with PX4 but now also compatible with ArduPilot). See the ground station section of the ArduPilot site for some comparison of ground control applications.

Important: the pixhawk.org and ardupilot.org sites cover much more than just flight stacks, most of the content on both is useful irrespective of which flight stack one uses.

ESC

The propulsion systems constists of the propellars, motors and ESCs (electronic speed control). ESCs are responsible for spinning the motors at the speed requested by the flight controller. An ESC contains its own microcontroller (generally an Atmel ATmega or a Silabs 8051). For more information on ESCs see the DroneTrest guide.

I chose the E305 propulsion system as it's the standard system sold with the F450 frame (and can be bought bundled together with it as a kit). The ESCs are the most expensive element in the E305 propulsion system (one ESC being just a little more expensive than its corresponding motor).

There are open source hardware ESC implementations and many commercial ESCs are flashable with open source firmware (the main open source firmwares being BLHeli and SimonK). However there seem to be no really popular open source hardware implementations and configuring the open source firmwares for your particular ESCs (whether commercial or open source) is non-trivial.

So for this piece of hardware it seemed easiest to stick with the commercial ones from DJI and consider them non-upgradable black boxes.

Many closed source hardware manufacturers produce ESCs that come with the BLHeli firmware as standard, e.g. the Turingy Multistar 20A or the DYS XM20A.

DJI make a big deal of the fact that their propulsion systems, including the E305, are "tuned" propulsion systems - that the ESCs rather than being sold for use with arbitrary motors have been specifically tuned to work very well with the motors sold as part of the same system. This seems to have been well received by reviewers.

Note: for earlier DJI propulsion systems the system and the ESCs had the same name, e.g. E300. For the E305 system that's no longer the case and the ESCs are named 420 LITE.

Transmitter and receiver

The transmitter is the handheld control unit while the receiver is the corresponding component in the drone that receives instructions from the ground and communicates them to the flight controller. The names transmitter and receiver reflect their primary/historical function - these days communication between the two is now two way.

The transmitters and receivers from the manufacturers FrSKY and Futaba seem to be the most popular choices for pairing with the Pixhawk.

I went with FrSKY as there as the information relating to hooking FrSKY components up to the Pixhawk seemed easier to follow.

The Taranis X9D+ is a mid-spec transmitter that's a very popular choice for setups like the one here. However I'm not primarily interested in direct remote control so I chose the Q X7 which is a cut down cheaper version of the X9D+ but is very similar in many respects and runs the same OpenTX firmware. See the DroneTrest blog for a comparison of the two transmitters.

Depending on where you look the recommended corresponding receiver is either the FrSKY D4R-II or the X8R.

The FrSKY D4R-II is the recommended receiver on the pixhawk.org FrSKY page and as outlined on their FrSKY telemetry page you can use an FrSKY FUL-1 converter to connect the Pixhawk to the receiver so it can send telemetry data to the transmitter.

However the ArduPilot FrSKY telemetry page describes the D4R-II as deprecated and recommends the FrSKY X8R, again with the FUL-1 but with an additional smart port converter (the same converter as bundled with the FrSKY USB upgrade cable above).

In the parts list you'll see a number of additional components related to the receiver:

  • FUL-1 - needed for connecting the telemetry port of the flight controller to the receiver.
  • FUC-3 - upgrade cable.
  • SPC (smart port converter).

It's always good to be able update the firmware of any given component and the FUC-3 is needed for doing this with FrSKY products. Upgrading the receiver isn't just a good idea - it may be required, see the warning in the pixhawk.org section covering FrSKY receivers.

The SPC is needed in two quite different situations - it's needed to connect the upgrade cable to the older style connector of the D4R-II and when using the X8R receiver it's needed for adapting the FUL-1 to connect the receiver to the flight controller.

Connecting the telemetry output of the flight controller to the receiver is optional - the receiver simply forwards the telemetry information to the receiver which can then display it to the user on its small LCD screen.

Note: the FUL-1 is not a special purpose component, it's completely generic and many other manufacturers produce something similar - it just performs the task of converting TTL to RS232 (see here for more information), something that's needed in many situations.

Telemetry kit

TODO: install the telemetry kit and see if it simply relays telemetry information or if it allows direct control from the ground station. If it's interesting add it into the parts list.