This is an old revision of the document!
The goal of this project is to have a stable, flying drone controlled via any web browser interface in the same local network as the drone. I started this project last summer as a learning exercise but it proved more difficult than anticipated and I couldn't manage to finish the drone up until now. The project is mostly DIY as the batteries, the body and the software being designed by me.
The drone's flight controller functions are executed by a ESP32 C6 super-mini paired with an MPU6050 Inertial Measuring Unit, which provides the raw data necessary for stabilization. To determine the drone’s precise orientation, a complementary filter is used and it blends high-frequency gyroscope data with stable accelerometer readings to achieve a balance between short-term accuracy and long-term stability. This orientation data feeds into a continuous control loop where a Proportional-Integral-Derivative (PID) controller calculates the required throttle adjustments based on the error between the desired and actual state, with these commands then being transmitted to the motors as Pulse Width Modulation (PWM) signals. Instead of a traditional radio transmitter, the drone is managed via a dedicated web interface stored in the microcontroller's flash memory and accessed through a local area network, providing a streamlined, browser-based control platform for the operator. The physical frame is made of 4 3d printed arms attached to a 3mm polycarbonate sheet.
| Component | Quantity |
|---|---|
| ESP32-C6-Super-Mini | 1 |
| MPU6050 (IMU) | 1 |
| A2208 1400KV 14T BLDC Motor | 4 |
| 30A ESC | 4 |
| Mateksys Mini Power Hub | 1 |
| 3S 12.6V 20A Li-ion BMS | 1 |
| Samsung 35E 18650 3500mAh 8A | 12 |
ESP32-c6-super-mini: Aproape toti pinii de pe microcontroller pot face aceleasi lucruri (PWM, SPI), asa ca i-am ales intr-un mod cat mai convenabil pentru asezarea circuitului pe breadboard. Am ales pinii 4, 5, 6, 7 pentru SPI, ramanand sa fie definiti in software ca SCLK, MOSI, MISO si CS. Pinii alesi pentru motoare trebuie sa fie capabili de PWM, iar toti pinii de pe microcontroller sunt capabili de a produce semnal PWM, asadar, am ales pinii 20, 19, 18, 15 pentru cele 4 motoare.
MPU6500: Acest IMU este compatibil si cu I2C si cu SPI, insa am ales SPI datorita vitezei mai mari a acestuia. Pentru SPI sunt folositi pinii: SCLK, SDI, SDO, NCS.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.