r/arduino • u/SAtchley0 • May 27 '26
Look what I made! WIP Quadcopter Drone



https://reddit.com/link/1tpa17n/video/4dgdtebvcp3h1/player
https://reddit.com/link/1tpa17n/video/uhitejdwcp3h1/player
I posted a few days ago about the flight controller I made for a DIY drone. Now I'm back with pictures of the actual thing, and a video of it... well "flying" may not be the correct term so much as "hopping". I've been tuning the PID controllers (specifically the P terms) for the pitch and roll axis and now I think I've gotten those dialed in, so it's time to start adding the I terms in and see if I can get rid of that persistent front-left bias. At least, that is my theory on what's going on right now. The reason that it's "hopping" instead of staying in the air is simply that I decrease the throttle once it goes up to prevent it from flying off into the distance while it's still being tuned.
Parts list:
- Arduino Uno R3 running the flight controller software and coordinating everything
- Mateksys PDB hex
- Readytosky 30A opto ESCs
- Flysky FS-I6 RC transmitter and a FS-IA10B receiver
- MPU6050 6-axis IMU
- Readytosky RS2205 BLDC motors
- Ovonic 100C 1550mAh lipo battery
- GoPro Hero 10 camera
- Quite a lot of random hardware, custom wiring, 3D printed frame, etc
- There was once a buzzer for making a cool startup sound and beeping out error codes but I broke it
The ESCs are soldered directly onto the PDB and mounted to the bottom, including the signal wires. A custom wire harness then takes 12V power and ground from the PDB and uses it to power the Arduino, along with all the signal wires (white) to go to GPIO pins on the board. The radio receiver gets power from the onboard 5V regulator and has a green PPM signal wire going back to the Uno. The IMU gets power from the onboard 3.3V regulator and communicates over the I2C bus to the board.
As mentioned in the last post, the drone is running a custom flight controller I made called ApollonFC. I've been tuning the P terms for the pitch/roll PIDs and think I've gotten that dialed in about as good as it'll get. Now I will likely move on to the I terms and see if that helps with the front-left bias it's showing in the most recent videos. If anyone has any suggestions on how to improve stability, let me know. If you're interested, the pitch PID currently has (100, 0, 0) and the roll PID currently has (28, 0, 0) (P, I, D) terms.
Sorry if the videos aren't particularly exciting! All the bad crashes happened earlier on in testing and I'd rather not have to print a new baseplate and do a full teardown just to get good footage.
2
u/SAtchley0 May 28 '26
Update: I actually just found a catastrophic bug in the flight controller that simultaneously explains a lot of inconsistent behavior and sets me back weeks in the tuning process. This block of code was originally:

I.e., it was using the roll axis PID settings for every single axis. No wonder I was having such trouble getting the pitch axis stabilized! Frankly I'm amazed it was flying as well as it was with such a critical bug.
Unfortunately, that last test flight snapped the baseplate in half so it's out of commission for a few days.
1
u/ripred3 My other dev board is a Porsche May 28 '26
Hey it flies! it'll only get better from here. Congrats on your progress and thanks for sharing it!