Skip to content

Latest commit

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

init-flight-stack

StatusLicensePlatformLanguage

A mini brushed DC quadcopter built entirely from scratch. No off-the-shelf flight controller software. Custom hardware, custom firmware, custom drivers.


Table of Contents


Overview

This project is a complete from-scratch implementation of a mini quadcopter and its RC controller. The goal is to understand and build every layer of the stack — from raw sensor data to stable flight — without relying on existing flight controller frameworks.

Key design decisions:

  • Bare metal C using the Raspberry Pi Pico C/C++ SDK
  • Dual-core RP2040: Core 0 handles flight control, Core 1 handles radio
  • Custom drivers written from scratch for nRF24L01 and MPU6050
  • No FreeRTOS, no MicroPython, no Betaflight

Hardware

Drone

ComponentPartNotes
Flight controllerRaspberry Pi PicoRP2040 dual-core
IMUMPU6050I2C1, GP14/GP15, addr 0x68
RadionRF24L01 SMDSPI0, GP6-GP10, PCB antenna
Motor driverTA6586 x4PWM on IN1 (GP0-GP3), IN2 to GND
Motors8520 coreless brushed DC3.7V, ~50g thrust each, 1mm shaft
Battery1S LiPo 360mAh 30CJST-PH 1.25mm, direct to VSYS
BuzzerPiezoGP16
FrameCustom 3D printed75-100mm diagonal

Power architecture:

  • 1S LiPo (3.7-4.2V) direct to Pico VSYS
  • Pico 3.3V rail powers nRF24L01 and MPU6050
  • LiPo direct to TA6586 VM pins
  • No external voltage regulators

AUW: ~67g estimated. Ceiling: 133g (1.5:1 thrust ratio).

RC Controller

ComponentPartNotes
MCURaspberry Pi PicoRP2040
RadionRF24L01 PA+LNASPI0, GP6-GP10, external antenna
Analog muxCD40514 joystick axes via GP26 (ADC0)
Joysticks2x analog with buttonAxes to CD4051, buttons to GP2-GP3
Switches2x latchingGP4 arm/disarm, GP5 flight mode
Display0.96 inch OLEDI2C1, GP14-GP15
BuzzerPiezoPair and signal loss indicator
Battery18650 cellDirect to VSYS, TP4056 charging

Controls mapping:

InputFunction
Left stick YThrottle
Left stick XYaw
Right stick YPitch
Right stick XRoll
Switch 1Arm / Disarm
Switch 2Flight mode (reserved)
Left stick buttonPairing
Right stick buttonOLED navigation

Firmware

Written in bare metal C using the Pico C/C++ SDK. Structured across three repositories:

RepositoryDescription
pico-nrf24l01Custom nRF24L01 driver for Pico C SDK
pico-mpu6050Custom MPU6050 driver for Pico C SDK
init-flight-stackMain drone and controller firmware (this repo)

Radio protocol:

  • 12-byte packets at 100Hz default (configurable)
  • 6 channels: throttle, yaw, pitch, roll, arm, flight mode
  • Failsafe: motors cut immediately after 500ms signal loss
  • Drone buzzer activates continuously on signal loss for crash location

Dependencies:


Project Structure

init-flight-stack/
├── drone/
│ ├── src/
│ └── include/
├── controller/
│ ├── src/
│ └── include/
└── docs/

Structure will be populated starting Phase 2.


Build Status

PhaseStatus
Phase 1 - Requirements and ArchitectureComplete
Phase 2 - Hardware DesignIn progress
Phase 3 - Firmware DevelopmentPending
Phase 4 - Mechanical DesignPending
Phase 5 - Integration and Bench TestingPending
Phase 6 - Flight Testing and TuningPending

License

MIT License. See LICENSE for details.

About

From-scratch mini brushed DC quadcopter. Custom flight controller (Raspberry Pi Pico), custom RC controller, bare metal C, custom nRF24L01 and MPU6050 drivers.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors