AMD Labs

How to make

Build the drone, stage by stage

Thirteen stages, in the order that finds faults earliest. Each ends with checks you must pass before moving on.

Start at stage 0
Read this first

This is a record of how a student team built a research prototype, not a certified product or a guarantee of safe flight. You are responsible for your own build and for testing it safely. Parts marked "to be confirmed by team" still need detail from us.

Stage 00

Safety, tools and LiPo handling

A 450 mm drone with 10-inch propellers and a 60C LiPo can cause serious injury and fire. Set these habits before you touch a part.

You need

Safety glasses, fire-safe LiPo bag, balance charger, LiPo voltage alarm, multimeter, soldering station, thread lock, ST-Link programmer, oscilloscope if you can borrow one

Steps

  1. Read the whole tutorial once before buying anything.
  2. Agree one rule for the team: propellers stay off unless the drone is on a rig or in an open flying area.
  3. Charge only with a balance charger, attended, in a fire-safe bag. Never charge or fly a swollen or damaged pack.
  4. Keep a separate power switch or a clear way to unplug the battery fast.
  5. Check your national drone rules before any outdoor test.
Standard practice

These LiPo and workshop steps are general good practice rather than steps from our report. Follow your charger and battery instructions.

Check before moving on

Stage 01

Parts list and sourcing

Parts must suit each other. The motor, propeller, ESC and battery are one system. Our list came from talking to experienced builders.

You need

See the full parts list and costs

Steps

  1. Buy the airframe and propulsion set: F450 frame, 4 × EMAX XA2212 980 KV motors, 4 × Hobbywing Skywalker 30A ESCs, 1045 propellers (2 CW, 2 CCW, plus spares), and a 3S 5200 mAh 60C LiPo.
  2. Buy the avionics: STM32H743VIT6 board, MPU6500, BMP280, QMC5883L, NEO-M8N GPS, ESP32-WROOM-32, nRF24L01+PA+LNA.
  3. Buy the transmitter set: ESP32 Devkit V1, 2 joysticks, ADS1115, 0.96-inch SSD1306 OLED, a second nRF24L01+PA+LNA, an 18650 cell and its charging and regulator parts.
  4. Buy power parts: MP1584 buck converter, a power distribution board, ceramic and electrolytic capacitors, and silicone wire.
  5. Test what you can on arrival. Read each sensor's ID register, because identical-looking boards can contain different chips.
Wire and connector sizes

The report does not list exact wire gauges, connector types or capacitor values. To be confirmed by team

Consider better gimbals from the start

Thumb joysticks are why we could not hold a hover. If you want manual hover, budget for Hall-effect gimbals instead.

Check before moving on

Common failures

Stage 02

Frame and propulsion assembly

Do the mechanical work first, so that faults show up before electronics are involved.

You need

F450 frame, motors, ESCs, screwdrivers, thread lock, soldering iron, heat shrink

Steps

  1. Fasten the arms to the centre plates using thread-locked screws, keeping the frame square.
  2. Bolt a motor to the end of each arm.
  3. Mount an ESC on the middle of each arm, where propeller airflow will cool it.
  4. Solder the three motor leads to the ESC and insulate every joint. You can fix spin direction later by swapping any two.
  5. Route the ESC power leads to the power distribution board, keeping them away from where sensors will sit.
The F450 frame, with red arms marking the front or rear so that you can see orientation in flight.

Check before moving on

Common failures

Stage 03

Motor and ESC test using a spare ESP32

Prove the motors and ESCs on their own, before your flight controller and its firmware can be blamed for anything.

You need

A spare ESP32, a simple test sketch that outputs 1000 to 2000 µs PWM, multimeter

Steps

  1. Connect each ESC signal line and a common ground to the ESP32.
  2. Calibrate the ESCs so that all four recognise the same minimum and maximum. Follow the ESC manual for the sequence.
  3. Drive one motor at a time at a low signal and check the direction. Swap two motor wires if it is wrong.
  4. Set the directions to match the firmware: rear left and front right CCW, rear right and front left CW.
  5. Run all four at several throttle levels and feel for heat at the ESCs, motors and power board.
  6. Optional but useful: measure RPM on each motor with a magnet and Hall sensor at the same PWM. All four should match closely.
Propellers off

Remove all propellers before you power this stage.

ESC calibration sequence

Our report records that this was done, but not the exact sequence. Use the steps in your ESC manual. To be confirmed by team

Check before moving on

Common failures

Stage 04

Flight controller board and power rails

A clean power rail is what stops sensors freezing when the motors spin up.

You need

Base PCB or breadboard for early tests, STM32H743VIT6 board, buck converter, capacitors, multimeter. See the schematics and pin tables

Steps

  1. Set the MP1584 output to 5 V with a multimeter before connecting anything to it.
  2. Feed the 5 V rail to the STM32 board and ESP32. Their onboard regulators supply 3.3 V to logic.
  3. Solder ceramic and electrolytic capacitors right across VCC and GND at each sensitive sensor and at the STM32 rail.
  4. Give the radio a stable 3.3 V supply, because it needs clean power at full transmit strength.
  5. Wire the battery voltage divider to the ADC (4:1 in the firmware).
  6. Wire the peripherals using the pin tables. Keep power leads away from the signal lines.
  7. Power up without sensors first, and measure each rail.
Battery monitoring is not active in the current code

In main.c, the firmware reads the ADC, discards the result and sets battery_voltage = 13.2f. The dashboard therefore always shows 13.2 V and the low-battery failsafe can never trigger. Until this is fixed, do not trust that reading. Use a physical LiPo alarm and a flight timer, and land early.

PCB files

The report has the schematic, but the PCB design files are not in the repository yet. To be confirmed by team

Flight controller schematic. Select to enlarge.

Check before moving on

Common failures

Stage 05

Flash the firmware

Now the flight controller gets its brain. The firmware boots, tests its sensors and refuses to arm until it has calibrated.

You need

PC, STM32CubeIDE v1.13 or newer, ST-Link, USB cable

Steps

  1. Clone the project repository.
  2. Open Aeronexus firmware/ as a project in STM32CubeIDE. The pin setup is in UAV_main_program.ioc.
  3. Build, then flash through ST-Link on the SWD pins.
  4. Connect USB. The board should appear as a virtual COM port.
  5. Use the ST-Link debugger to watch live sensor values if something looks wrong.
Propellers off

Remove all propellers before you power this stage.

Boot order: clocks → motors held off (1100 µs) → IMU init + calibration → I2C scan for magnetometer (0x0D, 0x1E, 0x2C)
            → barometer zero → UART interrupts → radio → load gains from flash → DISARMED → 250 Hz timer

Check before moving on

Common failures

Stage 06

Mount the sensors

Where a sensor sits decides how noisy it is. These physical steps do more than filtering can.

You need

3M closed-cell foam tape, 3D-printed mast, open-cell foam, twisted wire

Steps

  1. Mount the flight controller at the balance point of the frame, on layers of foam tape instead of rigid standoffs. This stops motor vibration reaching the IMU.
  2. Bolt the 3D-printed mast to the top deck and mount the magnetometer on it, away from motors, ESCs and power wiring.
  3. Twist the magnetometer's I2C wires together and route them around the frame's edge, away from high-current leads.
  4. Place a small piece of open-cell foam over the barometer's opening, to block propeller wash without sealing it.
  5. Mount the radio and telemetry ESP32 on the lower deck. Solder the UART connection between the ESP32 and STM32, crossing TX to RX.
Mast and case models

The 3D print files are not in the repository yet. To be confirmed by team

Check before moving on

Common failures

Stage 07

Build and program the transmitter

Your hands are part of the control system. This stage builds the link between you and the drone.

You need

ESP32 Devkit V1, 2 joysticks, ADS1115, SSD1306 OLED, nRF24L01+PA+LNA, 18650 cell with charging and regulation, Arduino IDE 2

Steps

  1. Wire the ADS1115 and OLED to I2C (SDA 21, SCL 22) and the radio to SPI (SCK 18, MISO 19, MOSI 23, CE 4, CSN 5). Power the joysticks from 3.3 V.
  2. Connect the joysticks to the ADC: A0 yaw, A1 throttle, A2 roll, A3 pitch.
  3. In Arduino IDE, install RF24, Adafruit_ADS1X15, Adafruit_SSD1306 and Adafruit_GFX.
  4. Open AMD24 mini transmitter/ESP32_Remote/ESP32_Remote.ino and flash it.
  5. Release the sticks and read the raw centre values. Update ADC_YAW_MID, ADC_PITCH_MID and ADC_ROLL_MID to match your own joysticks, along with ADC_MAX if needed.
  6. Confirm the display reads 0 at centre and that throttle runs from 1000 to 2000.
  7. Power the flight controller and check that the signal indicator shows a link.
Transmitter schematic. Select to enlarge.
Battery and case details

The exact charging and regulator circuit and the case model are not documented in the report. Use a protected cell and a proper charger module. To be confirmed by team

Check before moving on

Common failures

Stage 08

Telemetry ESP32 and dashboard

This gives you eyes on the drone: live attitude, PID sliders and magnetometer calibration.

You need

ESP32-WROOM-32, PC with Node.js 18 or newer, a 2.4 GHz Wi-Fi network or hotspot

Steps

  1. In Arduino IDE, install FastLED and open Aeronexus telemetry/ESP32_Telemetry.ino. Flash it.
  2. Run the dashboard server, shown below. It serves the site on port 3000 and listens for the drone on TCP port 5000.
  3. Change the default fleet admin password and drone PINs in the server code, before using a shared network.
  4. With no saved Wi-Fi, the ESP32 starts its own Aeronexus-Setup network. Connect to it, then follow the setup in the dashboard's fleet page to send your Wi-Fi details and PC's IP address.
  5. When the ESP32 reconnects, assign the new connection a drone name in the fleet page.
  6. Alternatively, connect over USB. The server auto-detects the STM32 as a direct connection.
  7. Tilt the frame by hand and watch the attitude display respond.
cd "Aeronexus dashboard"
npm install
npm start
# then open http://localhost:3000
Command dashboard.

Check before moving on

Stage 09

Balance and calibrate

The firmware assumes a balanced drone and accurate sensors. These steps make that true.

You need

String, bubble level, dashboard running

Steps

  1. Balance: with everything installed, including the battery, hang the drone from its centre with string. Move the battery and modules until it hangs level in both directions. Mark the battery position.
  2. IMU: place the drone on a level surface and keep it still at boot. The firmware averages 500 samples to find its offsets.
  3. Magnetometer: open the dashboard's calibration panel. Slowly rotate the drone through all axes until the points form a sphere. Accept the offsets, which are saved to flash.
  4. Keep the battery plugged in and all parts in final position during calibration, and stay away from large metal objects.
  5. Check the compass heading against a phone compass. The firmware includes a local declination value, so update it for your location.
Propellers off

Remove all propellers before you power this stage.

The magnetometer calibration panel.

Check before moving on

Common failures

Stage 10

Rig tuning

Starting gains are only estimates. A rig lets you find the limits with no risk of a crash.

You need

A sturdy wooden pivot rig, heavy anchor weights, the dashboard, a person dedicated to the disarm control

Steps

  1. Direction test, propellers off. Arm and give about 30% throttle. Tilt the drone by hand. The motors on the low side must speed up, pushing that side back up. If the high side speeds up, stop and fix it before fitting propellers.
  2. Build a rig that holds the drone firmly but allows it to rotate on one axis. Secure the rig so it cannot tip.
  3. Fit propellers, checking direction on each motor. Keep everyone clear of the propeller disc. Never hold a drone by hand with propellers on.
  4. Tune one axis at a time, with small changes. Start from the firmware defaults for roll and pitch: P 1.2, I 0.5, D 0.012.
  5. P first: raise it until fast oscillation starts, then lower it by 10 to 15%.
  6. D second: add it gradually until overshoot is damped. Back off if motors get hot or noisy.
  7. I last: raise it carefully until the drone holds its angle against a steady push or offset.
  8. Repeat for the other axis, then disarm and send the save command. Power-cycle and confirm the gains persisted.
Stay clear

A spinning propeller on a rig is still dangerous. Wear safety glasses, keep your hands out of the arc, and have one person ready to disarm.

Our single-axis rig.
GainRoll / pitch rangeYaw range
P0.8 to 2.50.6 to 2.0
I0.2 to 1.00.2 to 1.0
D0.005 to 0.0250 to 0.005
F0 to 0.10

Suggested safe ranges for this hardware, from the repository's tuning guide.

Check before moving on

Common failures

Stage 11

First liftoff

This is the riskiest step. Keep it short, low and boring.

You need

Open flat area, charged battery, timer, LiPo alarm, spotter, pre-flight checklist

Steps

  1. Complete the whole pre-flight checklist.
  2. Test the radio failsafe on the ground with propellers off: switch off the transmitter and confirm the drone disarms.
  3. Stand well back, in the open, in daylight with low wind. No one stands in the flight path.
  4. Arm using throttle down and yaw right held for 1 second, or from the dashboard.
  5. Raise the throttle slowly until the drone lifts off a short distance, then land. Do not chase it with big corrections.
  6. Review: if it drifts, oscillates or fights you, return to the rig and to stages 3, 9 and 10. Disarm with throttle down and yaw left.
  7. Land by your timer, leaving a margin. Our safe flight time was about 5 to 7 minutes.
What happened to us

We achieved stable vertical liftoff, but we could not hold a sustained controlled hover by hand. The drone responded faster than our thumb joysticks allowed us to control, causing over-correction. Expect this if you use the same joysticks, and consider Hall-effect gimbals.

First flight limits

The report sets no fixed go or no-go values, so agree yours before flying and write them down.

Check before moving on

Common failures

Stage 12

Survey test

Use the magnetometer as a sensor, and see what it can and cannot find.

You need

Known metal test object, open ground, survey page on the dashboard, GPS fix

Steps

  1. Start on the ground. Move the drone by hand, powered with propellers off, over a known metal object, and watch the magnetic reading respond.
  2. Open survey.html and capture a baseline, using the auto baseline to reduce the effect of outliers.
  3. Check the GPS quality badge. The survey rejects points with poor GPS quality or at the wrong speed.
  4. Walk or fly a low, slow pattern over the area, with the metal in a position you know.
  5. Compare the map with the known position, then export the CSV for your records.
  6. Only try lawnmower missions after manual flight is reliable. Keep a pilot ready to take over.
Autonomous flight

Waypoint and survey modes exist in the firmware, but we have not yet published flight results. Treat them as experimental. The firmware falls back on loss of radio or GPS, but test each failsafe yourself first.

Validation data

Formal test results for detection, with noise floor and ground truth, have not been published yet. To be confirmed by team

Check before moving on

Common failures

Finished?

Tell us how it went or suggest improvements.