In the Fall of 2021, I stumbled across the RCFlightTest channel on Youtube and started researching RC autopilot systems. After checking out ArduPilot and the different hardware options to run it, I started wondering how difficult it would be to build a simpler version of this myself. I found this Quora post that provides a pretty good road map, and thought, well I'm an engineering student, maybe this is something I could do after I take some classes."
At the time I had zero electronics or RC Plane skills (still don't), but this past spring I took classes in both Instrumentation and Aircraft Design with Dr. Carlos Montalvo at the University of South Alabama, and decided to start figuring it out. Both classes required a final project, so I built a Dollar Tree foam board plane (center of gravity is super important y'all), and phoned it in with a hydroponic controller.
The experience of building the plane gave me a lot of ideas, and the instrumentation class laid a lot of the groundwork for figuring out how to make this work. Of course, I'll be leaning a lot on those that have come before, including Dr. C, who has an autopilot written for a Raspberry Pi and a Navio2, the Adafruit Libraries, and various YouTubers. I'll try to give credit when it is due.
I have a few ideas for where I want this project to go, with a few different milestones that I'd like to hit along the way:
1. Straight and Level Flight
2. Reliably switch from autopilot to receiver (RX) pass through.
2. Point orbit
3. Fly mission waypoints autonomously.
4. Launch mode
5. Landing node
6. Support for flaps/flaperons
7. Support for V-tail configuration
Each of these represents a milestone that should be challenging on its own, so I'm excited to make this happen.
Deciding on hardware was something I wanted to try to get (mostly) right from the start. From the Instrumentation class, I had an Adafruit Circuit Playground Bluefruit, and I had picked up a cheap Arduino Uno clone on Amazon to play with during the semester. But recognizing both as probably underpowered, I went back to the Quora post and decided to take the advice offered, so I started looking for something with at least a Cortex-M3 or M4, 32 kb flash, 128kb flash, and at least 48 MHz of clock speed.
It came down to a Raspberry Pi 4 (tons of processing power), an Adafruit Metro M4, or an Adafruit Feather M4. With the chip shortage ruling out the Pi 4 for me, I went with the Feather M4 for the Featherwing ecosystem and the ability to stack and chain them together. At some point I might design a PCB to put most of this stuff on the same board, but not anytime soon.
Going with the Adafruit hardware allowed me to take advantage of their servo driving wings, GPS wing, data logging wing, stacking headers, and doublers. At this point, this whole thing is probably going to be Adafruit hardware just because they have the code libraries and the hardware I need. It’ll also be a little smaller than the Metro M4, which is nice.
Other hardware includes some FliteTest 5g servos (purchased by mistake but good enough for glider testing), and an EMAX GT2215-09 motor from my previous plane. Unfortunately, the battery and ESC from my previous plane died so those will need to be replaced. The motor is probably overkill, but considering some of the relative accuracies of the weight estimate and coefficients of lift I performed for my first plane, it might be needed.
Lastly, the magnetometer on the IMU that I was using, an LSM6DS33+LIS3MDL, mysteriously stopped working. I’d like to replace it with a BNO085 for the onboard orientation calculations, but that is unavailable due to the chip shortage, so I bought the NXP 9-Dof from Adafruit to use in the meantime. I also picked up BMP390 to use for altitude.