AMD Labs

How it works

The Blueprint of Our Drone

MoonLady Beta 1 is a 450 mm quadcopter with a custom flight controller, its own transmitter and a web ground station.

Select a block to explore

Sensor kit SPISPII2CUARTUARTWi-FiPWM3-phaseSPI2.4 GHz Accelerometer + gyroscopeMPU6500 BarometerBMP280 MagnetometerQMC5883L GPS moduleNEO-M8N ESP32-WROOM-32Telemetry bridge Web dashboardAeronexus STM32H743Flight controller ESCs ×4Skywalker 30A Motors ×4EMAX XA2212 980 KV Radio receivernRF24L01+PA+LNA Our transmitterESP32, 2 joysticks, OLED

Flight controller

Sensors

Pilot control

Motors

Telemetry

Try it

Move the sticks, see the motors

These bars use the same motor mixing formula as the firmware. Tilting the model is only an illustration, not a flight simulation.

M3 front left, CW
M4 front right, CCW
M1 rear left, CCW
M2 rear right, CW
M1 rear left   (CCW) = throttle + roll - pitch + yaw
M2 rear right  (CW)  = throttle - roll - pitch - yaw
M3 front left  (CW)  = throttle + roll + pitch - yaw
M4 front right (CCW) = throttle - roll + pitch + yaw

What is inside

Airframe and propulsion

  • F450 frame, 450 mm wheelbase
  • EMAX XA2212 980 KV motors
  • Hobbywing Skywalker 30A ESCs
  • 1045 propellers, 2 CW and 2 CCW

Power

  • 3S 5200 mAh 60C LiPo
  • MP1584 buck converter to 5 V
  • 3.3 V from onboard regulators
  • Ceramic and electrolytic decoupling

Flight controller

  • STM32H743VIT6
  • MPU6500 and BMP280 on SPI2
  • Magnetometer on I2C1
  • Gains stored in internal flash

Transmitter

  • ESP32 Devkit V1
  • Two analog joysticks
  • ADS1115 converter at 860 samples/s
  • 0.96" OLED and an 18650 cell

Links

  • nRF24L01+PA+LNA, 2.4 GHz, 250 kbps
  • Wi-Fi via onboard ESP32
  • STM32 to ESP32 at 115200 baud
  • Telemetry as JSON at 5 Hz

Software

  • STM32CubeIDE with C firmware
  • Arduino sketches on the ESP32s
  • Node.js, Socket.IO and Express
  • Three.js, Chart.js, Plotly, Leaflet

Flight modes

ModeWhat it does
StabilizeManual throttle with attitude PID. The default.
Altitude holdHolds barometer altitude, captured when entered.
LoiterHolds GPS position and altitude. Needs a GPS fix.
Return to launchFlies back to the GPS position set at arming.
AutoFlies to one waypoint, or a survey mission of up to 50.

Waypoint and survey modes are in the code. See the status list below for what has been shown in flight.

Block diagram from our presentation.

Built-in safety

If this happensThe drone does this
Radio lost for 500 msAirborne with GPS: return to launch. Without GPS: slow descent. Idling on the ground: disarm.
Dashboard silent for 3 sAbort auto mode and return to launch.
More than 500 m from homeForce return to launch.
More than 1000 m from homeDisarm immediately.
Extreme tilt while armedDisarm immediately to protect people and hardware.
Battery below 10.2 VNot active in the current code. The firmware has this logic, but its battery reading is fixed at 13.2 V, so it cannot trigger. Use a timer and a LiPo alarm until this is fixed.
GPS lost in autonomous modeFall back to altitude hold and descend.
I2C errors 5 times in a rowReset the bus by toggling the clock line, then restart the sensor.

Payload

A magnetometer as a metal detector

Coils are heavy and pick up motor noise, so we used a tiny digital magnetometer instead. It weighs a few grams and registers spikes in the magnetic field over concentrated metal. The readings are tagged with GPS and turned into maps on the dashboard.

What it can and cannot do

We class this as a preliminary sweeping platform. It can show the general zone of an anomaly for follow-up on the ground. It cannot give depth, volume or shape, and consumer GPS adds about 2 to 5 m of position error. It only senses metals that disturb the magnetic field, mainly ferrous ones.

Dashboard

Aeronexus ground station

What works today

DemonstratedCustom flight firmware with a 250 Hz control loop, sensor fusion and failsafes running on the STM32H743.
DemonstratedStable vertical liftoff, reached after about twelve months of testing, rig work and PID tuning.
DemonstratedAeronexus dashboard: live telemetry, live PID changes, saved gains and 3D magnetometer calibration.
DemonstratedCustom two-joystick transmitter with a radio link of about 100 m in clear line of sight.
LimitedSustained controlled hover in manual flight is not achieved yet. Thumb joysticks caused over-correction, so better gimbals are the next step.
LimitedMetal detection works as a first sweep. It finds the rough zone of a magnetic disturbance, not an exact point, depth or shape.
In codeGPS position hold, return-to-launch and waypoint survey missions are written in the firmware. We have not yet published flight results for them.
Needs fixingBattery monitoring: the firmware's reading is fixed at 13.2 V, so the dashboard value is not real and the low-battery failsafe cannot trigger.
Needs dataFormal detection tests, with known objects and measured noise levels in flight, are still to be recorded.

Known limits

5–7 minsafe flight time
~100 mradio range, line of sight
Low altitudedaylight and clear weather only
Near limitlittle spare lift for heavier payloads