Skip to the content
4 layers70 × 70 mm1.Electronics, the printed circuit board in 3D

Quadcopter design based on STM32F411CEU Blackpill flight controller. Compatible with INAV 6.0 firmware.

Size
70 × 70 mm
Copper layers
4
Thickness
1.6 mm
Parts
57
Nets
57
Pads
173
Tracks, vias
278, 261
Pours
11
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
14 Jul 2025
Updated
13 Nov 2025

Overview

1.Electronics is an open-source printed circuit board by I-M-Robotics-Lab, from the I-M-Robotics-Lab/STM32-Quadcopter repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 70 × 70 mm with 57 parts on 57 nets, routed with 278 tracks and 261 vias.

It is built around the TLV73333PDBV, IRLML6344 and TX 1. Its parts include 13 connectors, 11 resistors, 10 capacitors, 3 ICs and 3 diodes. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

3

README

README.md

STM32-Quadcopter: Low-cost Quadcopter Design

Description

Firmware Platform License: GPL v3

Website | Documentation | Community Discord | 3D Models & Prints

This is a quadcopter design based on the STM32F411CEU Blackpill flight controller. The flight controller is compatible with INAV 6.0 firmware. The flight controller uses an MPU6500 for inertial measurements and a BMP280 for altitude sensing, and also supports an optional GPS and magnetometer module.

The frame is composed mostly of 2D parts cut from carbon-fiber sheets. Alternatively, you can 3D-print parts in carbon-fiber-reinforced filaments (PET-CF, PAHT-CF, PA6-CF, PPS-CF), with less-critical components in ABS.

pic1
pic2pic3
Front view of frameFront view of frame

Table of Contents


Frame

Use the assembled CAD model in the 3.Models/ folder as a reference to build.

Front view of frame Front view of frame

CF Components

CF cut patterns

All files are under 3.Models/. Add dogbones and tolerances for manufacturability.

ABS Components

3D-printed ABS parts

Recommend using a 0.4 mm or 0.6 mm high-strength print profile.

Mechanical Components BOM

Item NameQty
M3 Hex Nut19
M3 x 12mm Button Head Bolt2
M3 x 20mm Button Head Bolt7
M3 x 20mm Socket Head Bolt6
M3 x 30mm Socket Head Bolt16
M3 x 35mm Button Head Bolt3
M3 x 40mm Button Head Bolt1
Nylon Spacer 3-5-11.28
Nylon Spacer 3-5-2016
Nylon Spacer 3-5-304
Nylon Spacer 3-5-52

Electronics

Structure

text
1. Electronics/
  ├── Extra/
  │   ├── *.step
  │   └── ...
  ├── Hardware-backups/
  │   └── ...
  ├── Production/           ← Gerber output for fabrication
  │   ├── Hardware-B_Cu.gbl
  │   └── ...
  ├── Hardware.kicad_pcb    ← KiCAD PCB file
  ├── Hardware.kicad_sch    ← KiCAD Schematics file
  ├── Hardware.kicad_pro    ← KiCAD project
  ├── JLCPCB.kicad_dru      ← Rules for JLCPCB manufacturing
  ├── Production.zip        ← Gerber
  └── Schematics.pdf        ← Schematics

Electronics BOM

ComponentQty
RS2205 BLDC Motor4
BLHeli_S 20A ESC4
5030R Propeller2
STM32F411CEU6 “Blackpill”1
MPU6500 / MPU9250 Module1
BMP280 Module1
330 µF @ 50 V Capacitor1
FS-iA6B Receiver1
FS-iA6B Transmitter1
Ovonic 1500 mAh 120C 3s Battery1
XT60 Connector1

SMD Components

Gerber files and BOM are available under the electronics folder.

Pins

Sample Diagram

Diagram only; not actual wiring. Please follow the strict pin assignments.

GPS (UART1) Wiring

Ensure connectors are wired correctly according to the pinout. Note that RX should connect to TX: RX1 → GPS TX, TX1 → GPS RX.

Capacitor for Spike Filtering

One or more bulk electrolytic capacitor is recommended to protect against voltage spikes. Use an electrolytic capacitor such as 330 µF @ 50 V and place it between VBAT and GND near the input. For extra protection, a TVS diode clampeing at ~12 V is ideal.


Firmware

Build

The firmware used is INAV v6.0.0 (github link). This project does not support INAV v7+ currently due to USB issue. If one wants to modify the target file or other configurations of the firmware, they must rebuild the binary. Follow this guide to build:

Prerequisites

  • CMake ≥ 3.15
  • Ninja
  • gcc-arm-none-eabi toolchain

Clone INAV

shell
git clone https://github.com/iNavFlight/inav.git
cd inav
git checkout 6.0

Add Target

Copy the entire 2.Firmware/GYW_BLACKPILL_F411 folder into the local INAV repository under src/main/target/ so that it ends up as:

text
inav/
└── src/
    └── main/
        └── target/
            ├──  GYW_BLACKPILL_F411/
            └── ...

Patch Code

INAV 6.0 doesn’t support a 25 MHz HSE clock by default, so if your board (like the Blackpill F411) uses a 25 MHz crystal, you must update the PLL setup in src/main/target/system_stm32f4xx.c as follows:

In system_stm32f4xx.c, locate the PLL setup region and modify it as follows:

diff
#if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx) || defined(STM32F446xx) || defined(STM32F410xx) || defined(STM32F411xE)
+   #if HSE_VALUE == 25000000
+       #define PLL_M   25
+   #elif HSE_VALUE == 24000000
-   #if HSE_VALUE == 24000000
        #define PLL_M   24
    #elif HSE_VALUE == 16000000
        #define PLL_M   16
    #elif HSE_VALUE == 8000000
        #define PLL_M   8
    #else
        #error Invalid HSE_VALUE
    #endif
#else
    #error Undefined CPU
#endif

Build

Ensure that you have installed all dependencies. Inside the inav root repository execute:

shell
mkdir -p build && cd build
cmake .. -G Ninja \
  -DBOARD=GYW_BLACKPILL_F411 \
  -DCMAKE_TOOLCHAIN_FILE=../tools/cmake/toolchain-arm-none-eabi.cmake
ninja

The firmware binary should be at build/inav_6.0.0_GYW_BLACKPILL_F411.hex.

Flash

First, download the INAV Configurator v6.0.0 from this link. Once installed, launch INAV Configurator and connect to the Blackpill via USB. Cut the red wire in the USB cable to prevent it from powering the Blackpill. Instead, power the flight controller using an external 3S battery.

USB

To enter DFU mode, hold the BOOT button on the Blackpill while powering it on. Alternatively, you can press RESET while holding the BOOT button. When in DFU mode, the blue LED on the Blackpill will be off, and the board should appear in the INAV Configurator’s drop-down menu as a DFU device. Move to the Firmware Flasher tab on the left. Click Load Firmware, select the file inav_6.0.0_GYW_BLACKPILL_F411.hex (found in the firmware folder), then click Flash Firmware.

1

A progress bar will appear during firmware flash.

2

When the firmware is successfully flashed, click connect. The configuration menu should show up.

3

MPU9250 Issue

If you are using a MPU9250 module, you may encounter the problem that INAV does not recognize the accelerometer. This is due to many boards labeled MPU9250 actually house only an MPU6500 (omitting or substituting the magnetometer). Since drones often use an external magnetometer, this usually isn’t critical if your accelerometer and gyro (MPU6500) work.

To identify your chip, read the WHO_AM_I register (0x75) via I²C (use an Arduino or something similar to do this part). Example Arduino code:

cpp
#include <Wire.h>
const uint8_t MPU_ADDR     = 0x68; // I²C address
const uint8_t WHO_AM_I_REG = 0x75;
void setup() {
  Serial.begin(115200);
  Wire.begin();
  delay(100);
  Wire.beginTransmission(MPU_ADDR);
  Wire.write(WHO_AM_I_REG);
  if (Wire.endTransmission(false) != 0) {
    Serial.println(F("no device found")); while (1);
  }
  Wire.requestFrom(MPU_ADDR, (uint8_t)1);
  if (Wire.available()) {
    uint8_t id = Wire.read();
    Serial.print(F("WHO_AM_I = 0x"));
    Serial.println(id, HEX);
  } else {
    Serial.println(F("no data returned"));
  }
}

If it prints 0x71, it’s MPU6500; 0x73 indicates MPU9250.

The current binary file and target is configured for MPU6500. To use MPU9250, comment out the block for MPU6500 and uncomment the MPU9250 block in the target file. Rebuild the binary and flash. It looks like this:

c
#define USE_IMU_MPU9250
#define IMU_MPU9250_ALIGN   CW0_DEG
#define MPU9250_CS_PIN      PB12
#define MPU9250_SPI_BUS     BUS_SPI2

Configuration and Setting Up

Follow standard inav configuration procedures.

Parts

57
QtyValueFootprintReferences
40.1u 10VCapacitor_SMD:C_0603_1608MetricC3, C8, C9, C10
310kResistor_SMD:R_0603_1608MetricR2, R6, R8
3470Resistor_SMD:R_0603_1608MetricR9, R10, R11
21uF 10VCapacitor_SMD:C_0603_1608MetricC6, C7
24.7kResistor_SMD:R_0603_1608MetricR3, R4
2GNDTestPoint:TestPoint_Pad_D1.0mmTP4, TP6
10.1u 25VCapacitor_SMD:C_0805_2012MetricC2
1100Resistor_SMD:R_0603_1608MetricR7
110u 25VCapacitor_SMD:C_0805_2012MetricC1
122u 16VCapacitor_SMD:C_0805_2012MetricC4
122u 16VCapacitor_SMD:C_0805_2012MetricC5
133kResistor_SMD:R_0603_1608MetricR5
13V3TestPoint:TestPoint_Pad_D1.0mmTP5
14.7uInductor_SMD_Wurth:L_Wurth_WE-LHMI-7050L1
154.9kResistor_SMD:R_0603_1608MetricR1
15VTestPoint:TestPoint_Pad_D1.0mmTP3
1BLUELED_SMD:LED_0805_2012MetricD3
1BMP280_Breakout1_my_custom:BMP280_ModJ2
1BuzzerConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalBZ1
1GPS_MagConnector_JST:JST_SHL_SM06B-SHLS-TF_1x06-1MP_P1.00mm_HorizontalJ3
1GREENLED_SMD:LED_0805_2012MetricD2
1IRLML6344Package_TO_SOT_SMD:SOT-23Q1
1M11_my_custom:PAD_1x02_5mmJ9
1M21_my_custom:PAD_1x02_5mmJ10
1M31_my_custom:PAD_1x02_5mmJ11
1M41_my_custom:PAD_1x02_5mmJ12
1MPU9250_Breakout1_my_custom:MPU9250_ModJ1
1PWM1Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5
1PWM2Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ6
1PWM3Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ7
1PWM4Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ8
1REDLED_SMD:LED_0805_2012MetricD1
1RX1TestPoint:TestPoint_Pad_D1.0mmTP8
1ReceiverConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ4
1S1TestPoint:TestPoint_Pad_D1.0mmTP10
1S2TestPoint:TestPoint_Pad_D1.0mmTP11
1S3TestPoint:TestPoint_Pad_D1.0mmTP12
1S4TestPoint:TestPoint_Pad_D1.0mmTP13
1SCLTestPoint:TestPoint_Pad_D1.0mmTP2
1SDATestPoint:TestPoint_Pad_D1.0mmTP1
1STM32F411CEU11_my_custom:Stm32f411ceu_moduleU1
1TLV73333PPackage_TO_SOT_SMD:SOT-23-5U2
1TPS563200Package_TO_SOT_SMD:SOT-23-6U3
1TX1TestPoint:TestPoint_Pad_D1.0mmTP7
1VBATTestPoint:TestPoint_Pad_D1.0mmTP14
1VBAT1_my_custom:PAD_1x02_5mmJ13
1iBUSTestPoint:TestPoint_Pad_D1.0mmTP9

Similar boards

  • 2 layers91.4 × 73.7 mmSoc, the printed circuit board in 3D

    Soc

    mattstock/bexkat1

    An experimental CPU design

    64 parts15
  • 4 layers30.9 × 30.9 mmFpv video in v1, the printed circuit board in 3D

    Fpv video in v1

    Cinetronix/fpv-video-in-v1

    KiCad hardware design for an HDMI-to-MIPI CSI bridge board, designed for FPV camera systems.

    48 parts11
  • 2 layersDps rs232, the printed circuit board in 3D

    Dps rs232

    radioelf/DPS5015--Nextion

    Control 2 DPS5015 con pantalla Nextion y arduino nano

    33 parts7
  • 2 layers10.6 × 18.5 mmAsmartcap xMoto, the printed circuit board in 3D

    Asmartcap xMoto

    xpix/XMOTO_TINYAVR

    This code is designed for a motor controller and has merged the PID code of Josh Kopel with the code of the Makerbot servo-controller board. This code can be used on some boards by changing some values.

    21 parts6
  • 4 layers79 × 93 mmWeatherStation, the printed circuit board in 3D

    WeatherStation

    hcmusthinhcode2k2/WeatherStation_Thesis

    Graduation thesis topic is the design of a weather monitoring station using NB-IoT technology

    203 parts2
  • 2 layers50 × 80 mmDev Board, the printed circuit board in 3D

    Dev Board

    yasir-khilji-64/CAN-Transceiver-with-PIC18F2580-and-MCP2551

    62 parts2
  • 2 layers51.5 × 92 mmEcoport bridge v1, the printed circuit board in 3D

    Ecoport bridge v1

    jrowe88/ecoport-bridge

    CTA-2045 (EcoPort) bridge for a Rinnai REHP65 heat pump water heater

    74 parts1AGPL-3.0

Questions

How big is the 1.Electronics PCB?

It measures 70 × 70 mm and has 4 copper layers, 1.6 mm thick.

What parts does the 1.Electronics use?

57 parts, built around the TLV73333PDBV, IRLML6344 and TX 1. 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.

Where can I download the 1.Electronics KiCad files?

From the I-M-Robotics-Lab/STM32-Quadcopter repository on GitHub, at the commit this page was made from: the board is 1.Electronics/Hardware.kicad_pcb and its schematic 1.Electronics/Hardware.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the 1.Electronics design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).