
Drone RC
dark-Phoenix2077/hover
A fully custom mini racing/stunt drone with ML-assisted balancing, automatic stunts, and some level of autonomous operation without costly cameras or GPS.

A fully custom mini racing/stunt drone with ML-assisted balancing, automatic stunts, and some level of autonomous operation without costly cameras or GPS.
Drone FC is an open-source printed circuit board by dark-Phoenix2077, from the dark-Phoenix2077/hover repository on GitHub, published under the MIT licence. It is a 4-layer board of 45.8 × 45.8 mm with 63 parts on 73 nets, routed with 1,006 tracks and 123 vias.
It is built around the STM32F103C8T6, AMS1117-3.3 and MPU-6050, with the SI2300 among its other parts. Its parts include 24 capacitors, 12 resistors, 7 connectors, 4 ICs and 4 diodes. It belongs with the robots and motor control boards and the STM32 boards of this library.
A fully custom mini racing/stunt drone with ML-assisted balancing, automatic stunts, and some level of autonomous operation without costly cameras or GPS.
I wanted a challenge that forced me to learn PCB design and embedded firmware from scratch, but also let me apply the area I already know well - machine learning. Designing a drone from a blank schematic, writing every driver by hand, and then training a custom tiny ML model felt like the right way to do all of that at once. My goal was simply to push my first ever hardware project as far as I could, not to have a completely polished project.
Hover is a tiny brushed micro quadcopter built entirely from custom hardware and firmware. There is no off-the-shelf flight controller, no commercial RC receiver, and no pre-written driver code. Everything was written/designed from scratch by me.
The system has two PCBs:
Flight Controller (FC): A 4-layer X-shaped PCB with a motor in each corner. It runs an STM32F103C8T6 at 72MHz, an ICM-42688-P IMU over SPI, a BK2423 2.4GHz RF transceiver, and four brushed motor drive circuits.
Remote Control (RC): A 2-layer PCB inside a 3D-printed enclosure. It uses the same STM32F103C8T6 and BK2423 RF ICs. It has two analog joysticks (ADC + DMA) for throttle, yaw, pitch, and roll, and eight buttons which are used for arming, auto take-off, auto land, return-to-home, a 360-degree flip trigger (one of my goals for this was to have some kind of smart one-button trick, and for this goal I settled on the 360 flip), and three spares for future use.
apart from that, this repository also includes:
ML Pipeline: A training and conversion pipeline for an onboard stabilisation model. Training data will be collected from real flight telemetry once the hardware is bought. The model will be converted to TFLite and dropped directly into the FC firmware, which already has the inference code in place and waiting.
CAD: Both the drone body and RC enclosure were designed in Onshape. The drone frame is a minimal 2-shell design with motor mounts, battery tray, and canopy, with both shells sandwiching the PCB in the middle. The RC enclosure uses the same 2-shell design with joystick cutouts, button extenders, and a battery bay below the PCB.
Firmware: Firmware created for both the FC and RC in STM32 CubeMX and CubeIDE, all firmware should work but is untested as I do not have the hardware right now. additionally, the ML inference file is writtenbut will not work until I create the .tflite model file.
BOM: A BOM generated from kicad for the FC & the RC and also other parts (excluding 3D printed parts and assorted screws). I will likely be purchasing all of these myself, and this is not completely final.
FC
RC
Other
| Component | Qty | Notes | Price (est.) |
|---|---|---|---|
| Brushed coreless DC motors (8020) | 4 | 8×20mm form factor, 1S compatible | ~$2.00 each |
| 55mm micro quad propellers (CW) | 4 | Match motor shaft diameter | ~$0.50 each |
| 55mm micro quad propellers (CCW) | 4 | Match motor shaft diameter | ~$0.50 each |
| 1S LiPo battery — 150mAh (drone) | 1 | Fits battery tray in drone frame | ~$4.00 |
| 1S LiPo battery — 800mAh (RC) | 1 | Fits battery bay in RC enclosure | ~$6.00 |
| 31.25mm wire for 2.4GHz antenna (drone) | 1 | Bare solid-core wire, soldered to ANT test point on FC PCB; length = λ/4 at 2.4GHz | ~$0.10 |
| 31.25mm wire for 2.4GHz antenna (RC) | 1 | Same as above, for RC PCB ANT test point | ~$0.10 |
| Silicone motor wire (26AWG) | ~1m | Connects motors to PCB JST connectors | ~$1.00 |
| 1S LiPo charger (USB) | 1 | Compatible with JST-PH or barrel jack input | ~$5.00 |
| Qty | Value | Footprint | References |
|---|---|---|---|
| 15 | 100nF | Capacitor_SMD:C_0402_1005Metric | C2, C4, C5, C6, C7, C8, C9, C10, C14, C15, C16, C17, C18, C20, C24 |
| 5 | 10k | Resistor_SMD:R_0402_1005Metric | R1, R6, R8, R10, R12 |
| 4 | 100R | Resistor_SMD:R_0402_1005Metric | R5, R7, R9, R11 |
| 4 | 10uF | Capacitor_SMD:C_0805_2012Metric | C1, C3, C19, C21 |
| 4 | 1N4148 | Diode_SMD:D_SOD-323 | D1, D2, D3, D4 |
| 4 | 22pF | Capacitor_SMD:C_0402_1005Metric | C12, C13, C22, C23 |
| 4 | SI2300 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2, Q3, Q4 |
| 2 | 16MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1, Y2 |
| 2 | 4.7k | Resistor_SMD:R_0402_1005Metric | R2, R3 |
| 1 | 1uF | Capacitor_SMD:C_0402_1005Metric | C11 |
| 1 | 22k | Resistor_SMD:R_0402_1005Metric | R4 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | ANT_2.4GHz | TestPoint:TestPoint_Pad_D1.5mm | TP1 |
| 1 | BATTERY_1S | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J1 |
| 1 | BK2423 | Package_DFN_QFN:QFN-20-1EP_4x4mm_P0.5mm_EP2.5x2.5mm | U4 |
| 1 | C | TestPoint:TestPoint_Pad_D1.5mm | TP3 |
| 1 | CHARGE_PORT | Connector_BarrelJack:DC-011D_SMD_Horizontal | J7 |
| 1 | D | TestPoint:TestPoint_Pad_D1.5mm | TP2 |
| 1 | GND | TestPoint:TestPoint_Pad_D1.5mm | TP4 |
| 1 | MOTOR1 | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J2 |
| 1 | MOTOR2 | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J3 |
| 1 | MOTOR3 | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J4 |
| 1 | MOTOR4 | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J5 |
| 1 | MPU-6050 | Sensor_Motion:InvenSense_QFN-24_4x4mm_P0.5mm | U3 |
| 1 | SLIDE_SWITCH | Button_Switch_SMD:SW_SPDT_CK_JS102011SAQN | SW1 |
| 1 | STM32F103C8T6 | Package_QFP:LQFP-48_7x7mm_P0.5mm | U2 |
| 1 | SWD_HEADER | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J6 |
| 1 | VCC | TestPoint:TestPoint_Pad_D1.5mm | TP5 |

dark-Phoenix2077/hover
A fully custom mini racing/stunt drone with ML-assisted balancing, automatic stunts, and some level of autonomous operation without costly cameras or GPS.



potpurri/A1-External-ESP8266-Cooling-Fan-Module
ESP8266-board driving an external fan for improved cooling of nozzle and prints

ArduProject/PCB_DRONE_C8
En este repositorio encontrareis los archivos de fabricación y las listas de montaje del PCB con STM32F103C8 que hemos visto en el curso.

Ferid10/STM32F103C8T6-design
my pcb design where i made a stm 32 board with temprature and pressure sensor using both spi and i2c communication

jayasinghedr/stm32f103-devkit
A development board with STM32F103C8T6 and an MPU6050 IMU


It measures 45.8 × 45.8 mm and has 4 copper layers, 1.36 mm thick.
63 parts, built around the STM32F103C8T6, AMS1117-3.3, MPU-6050 and SI2300. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the dark-Phoenix2077/hover repository on GitHub, at the commit this page was made from: the board is PCBs/Drone FC/Drone FC.kicad_pcb and its schematic PCBs/Drone FC/Drone FC.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).