Brushed quadcopter design. Main goal for this project is to develop a platform for testing flight controller algorithms, mainly stabilisation, out of least amount of off-the-shelf parts. It is built around 4-channel MOSFET driver YYNMOS-4 and uses Bluetooth for communication.
While there are plenty quadcopter designs out there, they seem to fall in two main categories: custom flight controllers with BLDC motors and FPV-setups with brushed motors and ready-made flight controllers. This repo tries to adress lack of materials around brushed designs with custom flight controllers.
Top | Bottom |
---|---|
Project is split in 3 crates as well as Godot project.
flight-controller
targets stm32f103 boards and includes logic handling pwm signals for motor control, IMU, bluetooth communication via UART.
client-util
targets PC and mainly provides helper functions for communication via Bluetooth with RFCOMM.
common
is a holds shared functionality between above crates and includes types describing message format for communication between stm32 device and host.
Godot is mainly used as a tool to build interactive UI serving as mission control for the drone.
- Main board - stm32f103c8
- IMU with Gyro and Accelerometer - mpu6050
- Telemetry and control via Bluetooth - JDY-31-SPP
- Power delivery - YYNMOS-4 MOSFET driver
- Battery - Syma X5C 3.7V 600mah or any other rated 25C
- Motors - 4 x 8520 coreless motor
- Propellers - 4 x 55mm (2 x CW + 2 x CCW), shaft diameter must match of motors
- Frame - 3d printed in 4 identical pieces, might need to adjust tolerances
Total weight assembled ~ 82g
Power for bluetooth module and IMU can be connected to main board directly for convenience.
GNDX
terminals on mosfet driver can be soldered together and connected to GND
on main board.
Important note is since motors need to spin in opposite directions, one needs to pay attention connecting motor wires to mosfet driver.
Motors polarity described as +
and -
and is reversed for 2nd and 4th motor.
Battery terminals are shared betewen DC+/-
connections on mosfet driver and 3V/GND
on main board.
- Share state types between client and device libraries
- Map controller to throttle correction and try to fly without stabilisation
- Test naive stabilisation
- Send state telemetry from device
- Update mission control UI to include state
- Check if Tokio or any other runtime can help to buffer telemetry on the client in separate task/thread
- IMU with mangetometer to correct for yaw drift
- IR sensor to measure distance to the ground
- Upgrade stabilisation to implement "Hover" mode
- Swap Bluetooth for RC to increase range
- Downward facing camera to detect position drift
- Toroidal propeller to improve noise / efficiency?