Aeroduel: The Coolest Project I Have Ever Worked On

aeroduelcapstonerc planesschool project
Aeroduel Logo
I’d like to take a moment to share the coolest project I have ever worked on: Aeroduel. In my fifth and final trimester at Atlas School, a local coding school, three of my classmates and I came together to build our final project. Over the course of several months of planning in advance, the project manager, the visionary behind the original concept, put together a prototype RC jet (with no aviation or RC plane building experience, might I add). Here’s a picture of the first aircraft we built:
20251113_115702
We later built a second, white version as well, nearly identical to the first one.

The actual project assignment began on November 14, 2025. Everything prior was before the official start date of the project and was done slowly during our free time in between other school assignments. The first and last weeks of the project were dedicated primarily to creating presentations - a pitch at the beginning and a demo at the end. That means only 3 weeks of the assigned project duration were dedicated to working on the project itself. This was a tight constraint we didn’t know about until shortly before the official start date. However, we managed to push through and have a working demo on time.

On November 20th, the day after the first presentation was due, we began elaborating on our design plan. Here’s a chart we sketched out on the whiteboard that day:

image
This flow chart illustrates how the different components of the project work together to create a realtime RC aerial combat system. Each aircraft is equipped with an ESP32-based hardware module containing a camera and LEDs that allow it to detect and identify opposing aircraft using computer vision and unique LED patterns. When a successful target lock or hit is detected, the onboard system processes the event and transmits the result to the match server via wireless communication.

My part of the project was to build the local backend server (though I wasn’t the only contributor - another member of the team restyled the app to look better). Users can download the desktop app (for Windows, Mac, or Linux), which then starts a server on the local network. The RC jets’ ESP32 modules, when powered on, then communicate with that server via WiFi (users can use their mobile hotspot for this if no WiFi connection is available). Then, the pilot opens their mobile app, which links their plane to their account and registers that the user is online and ready to connect. The user can then join the match via their mobile app, and the desktop app will display them as online and joined. The user on the desktop app can then setup and start the match, at which point a match timer begins counting down. In the case of a crash or illegal maneuver, the desktop app can disqualify a player during a match. The desktop app then keeps track of score, as the planes send hit events to the server, which are then passed to the mobile app to display live score.

Unfortunately, when demo day came, we were only about 95% done, and hadn’t tested the planes in flight yet. However, we had enough working components and a simulator to demonstrate how each system works together to create a robust real time combat system. Here’s a screenshot showing the Aeroduel Server app in action with the mobile & ESP32 simulators:

image
Here’s some more images of different components of the entire system. Or, if you want to skip to the website link and GitHub source code link, scroll to the bottom of this post.

Website:

Screenshot_20260615_143242
I’ll skip the mobile app screenshot because my markdown render renders at full width, which takes up a ton of vertical space on a portrait image. It wasn’t a good screenshot anyway. However, here’s a graphic containing a better screenshot, which we have on our website.
phone-app-circle
An assortment (but not the complete set) of branded graphics (iteration 1 of 2):
image
Assortment of hardware images:
IMG_3907
Computer vision color detection demo
IMG_3894
IMG_3895
IMG_3889
I also got to take home one of the planes and some of the hardware inside it! It’s now sitting on top of my desk shelf in my room at home.
20260615_145349
On demo day, against my objections, some of the team decided to try a test flight… in a the alley behind the school building downtown. That could never have ended well. I already didn’t think it would fly anyway. They put the throttle to max and threw the plane and… it nose dived straight into the ground and broke into several pieces. Turns out, the engines were on backwards. I think it was too heavy with not enough thrust power to lift off anyway. Maybe some day, I’ll retrofit mine with the right stuff to get it flying for real. For now though, it serves as a cool souvenir of my favorite project of all time.

For more information about Aeroduel, visit our website: www.aeroduel.com.

Our codebase is also open source and can be viewed here.

END OF LINE
Browse all posts