Skip to content

ziFly Quadcopter Flight Controller

A quadcopter flight controller based on STM32F103 with remote control, PCB, 3D models, and ROS 2/PX4 simulation support.

  • Drone
  • No license: all rights reserved by the creator
  • ROS 2
  • 3D printable

Suggested by Robotheca, created by @zirun672 (opens in a new tab), from github.com/zirun672/zifly-flight-controller (opens in a new tab). Pinned to commit ab687f7 (opens in a new tab).

Hardware license
No license
Software license
No license
Commercial use
Unknown

No license is stated for part of this robot.

The creator chose the hardware and software licenses on Robotheca; the repository has no license file for them yet.

Photo

Its license doesn't let Robotheca show its photos.
See the photos on GitHub (opens in a new tab)

What it can do

Written by Robotheca from the project's documents.

  • Four-axis quadcopter flight with X-configuration motor mixing
  • Attitude control using cascaded PID loops (angle outer loop + angular rate inner loop)
  • Altitude hold using SPL06 barometer data
  • Horizontal position hold using Mini optical flow module
  • 2.4 GHz remote control via nRF24L01 with 32-byte data frames
  • Flight modes: attitude mode, altitude+optical flow mode, failsafe lock, manual lock
  • Three-step throttle unlock sequence
  • Over-tilt protection and remote signal loss lock

Bill of materials

This repository has no parts list Robotheca can read yet.

Build guide

The creator's steps, each with its instructions.

  1. 1Assemble the quadcopter frame using 3D models
  2. 2Solder components onto the flight controller PCB
  3. 3Solder components onto the remote control PCB
  4. 4Flash the flight controller firmware using Keil MDK
  5. 5Flash the remote control firmware using Keil MDK
  6. 6Perform initial power-on checks
  7. 7Calibrate sensors and flight parameters
  8. 8Set up ROS 2 and PX4 simulation environment
  9. 9Test flight controller in simulation

The creator's guide is written in Chinese. It has no license, so all rights stay with the creator: Robotheca doesn't show it here or translate it, and gives its own notes about the robot instead.

Read the creator's guideAsk the creator on GitHub (opens in a new tab)

Wiring and electronics

Notes written by Robotheca from the project's documents.

Main parts

  • STM32F103C8 microcontroller on flight control board
  • STM32F103C8 microcontroller on left-hand throttle remote control board
  • MPU6050 6-axis IMU (gyroscope ±1000 °/s, accelerometer ±4 g)
  • SPL06-001 barometer for altitude estimation
  • Mini optical flow module connected via USART1 at 19200 baud
  • NRF24L01 2.4 GHz transceiver for remote control communication
  • Four PWM motor outputs via TIM2 CH1–CH4 on PA0–PA3
  • AT24C02 EEPROM for storing remote calibration values
  • USART3 debug port at 115200 baud for telemetry

Connections

  • MPU6050 connected via software I2C to flight control board
  • SPL06 connected via I2C (default address 0x77) to flight control board
  • NRF24L01 connected via SPI to both flight control and remote control boards
  • Four PWM outputs from TIM2 CH1–CH4 (PA0–PA3) to motor ESCs or coreless motors
  • Remote control sticks connected to ADC1 with DMA on PA0–PA3 for throttle, yaw, roll, pitch
  • AT24C02 EEPROM connected via I2C for storing remote calibration