This project demonstrates a successful implementation of ArduPilot firmware on an ESP32-S3 WROOM-1 N16R8 development board. The board has been successfully flashed with ArduCopter firmware and can communicate via both WiFi and USB serial connections with ground control stations like MAVProxy and Mission Planner.
- Board: ESP32-S3 WROOM-1 N16R8 (Custom Board)
- Status: Firmware flashed and fully operational
- Features: WiFi telemetry, UART GPS support, RC outputs configured
✅ Successful Build: ArduCopter firmware compiled and flashed without errors
✅ WiFi Connectivity: Creates "ardupilot-esp32" access point
✅ Telemetry: 885 parameters loaded successfully
✅ Ground Control: Compatible with MAVProxy and Mission Planner
-
Install Build Dependencies (Ubuntu/Pop!_OS):
Tools/environment_install/install-prereqs-ubuntu.sh -y # Re-open shell to pick up environment changes -
Install ESP32 Tools:
pip3 install esptool
-
Configure for ESP32-S3:
./waf configure --board esp32s3
-
Build ArduCopter:
./waf copter
-
Flash to ESP32 (put board in bootloader mode):
esptool.py --chip esp32s3 --port /dev/ttyACM0 --baud 460800 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 16MB 0x0 build/esp32s3/bin/arducopter.bin
- Firmware:
build/esp32s3/bin/arducopter.bin - Size: ~2.7MB binary
- Flash Memory: Uses 16MB ESP32-S3 flash
-
Connect to ESP32 WiFi Network:
nmcli dev wifi connect "ardupilot-esp32" password "ardupilot-esp32"
-
Launch MAVProxy:
mavproxy.py --master=tcp:192.168.4.1:5760 --console --map
-
Verify Connection:
- Look for "Detected vehicle" message
- Confirm parameter loading (885 parameters)
- Map view should display telemetry data
-
Check Serial Port:
ls /dev/ttyACM* -
Connect via MAVProxy:
mavproxy.py --master=/dev/ttyACM0 --baudrate 115200 --console --map
-
Alternative Serial Monitoring:
timeout 10 python3 -m serial.tools.miniterm /dev/ttyACM0 115200
-
Launch Mission Planner:
mono MissionPlanner.exe
-
Connection Options:
- WiFi: Use TCP connection to
192.168.4.1:5760 - USB: Select COM port and 115200 baud rate
- WiFi: Use TCP connection to
WiFi Connection Issues:
- Scan for available ports:
nmap -Pn -p 5760,14550 192.168.4.1 - Check if connected to ESP32 network:
ifconfig wlo1
USB Serial Issues:
- Check device permissions:
sudo chmod 666 /dev/ttyACM0 - Verify ESP32 output:
timeout 5 cat /dev/ttyACM0 - Check kernel messages:
dmesg | grep -i "esp32\|ttyACM"
MAVProxy Not Starting:
- Install dependencies:
pip3 install MAVProxy pymavlink - Check Python path issues with matplotlib warnings (non-critical)
- Flight Mode: STABILIZE (default)
- Parameters: 885 parameters loaded
- Telemetry: Loop rate ~192Hz (expected 400Hz)
- Map: Live GPS coordinate display
- Status: Vehicle detected as system ID 1
ArduPilot is the most advanced, full-featured, and reliable open source autopilot software available. It has been under development since 2010 by a diverse team of professional engineers, computer scientists, and community contributors. Our autopilot software is capable of controlling almost any vehicle system imaginable, from conventional airplanes, quad planes, multi-rotors, and helicopters to rovers, boats, balance bots, and even submarines. It is continually being expanded to provide support for new emerging vehicle types.
-
Support Forum: https://discuss.ardupilot.org/
-
Community Site: https://ardupilot.org
-
Github repository: https://github.com/ArduPilot/ardupilot
-
Main developer wiki: https://ardupilot.org/dev/
-
Developer discussion: https://discuss.ardupilot.org
-
Developer chat: https://discord.com/channels/ardupilot
- Flight code contributors
- Wiki contributors
- Most active support forum users
- Partners who contribute financially
-
The ArduPilot project is open source and we encourage participation and code contributions: guidelines for contributors to the ardupilot codebase
-
We have an active group of Beta Testers to help us improve our code: release procedures
-
Desired Enhancements and Bugs can be posted to the issues list.
-
Help other users with log analysis in the support forums
-
Improve the wiki and chat with other wiki editors on Discord #documentation
-
Contact the developers on one of the communication channels
The ArduPilot project is licensed under the GNU General Public License, version 3.
ArduPilot is comprised of several parts, vehicles and boards. The list below contains the people that regularly contribute to the project and are responsible for reviewing patches on their specific area.
- Andrew Tridgell:
- Vehicle: Plane, AntennaTracker
- Board: Pixhawk, Pixhawk2, PixRacer
- Francisco Ferreira:
- Bug Master
- Grant Morphett:
- Vehicle: Rover
- Willian Galvani:
- Vehicle: Sub
- Board: Navigator
- Michael du Breuil:
- Subsystem: Batteries
- Subsystem: GPS
- Subsystem: Scripting
- Peter Barker:
- Subsystem: DataFlash, Tools
- Randy Mackay:
- Vehicle: Copter, Rover, AntennaTracker
- Siddharth Purohit:
- Subsystem: CAN, Compass
- Board: Cube*
- Tom Pittenger:
- Vehicle: Plane
- Bill Geyer:
- Vehicle: TradHeli
- Emile Castelnuovo:
- Board: VRBrain
- Georgii Staroselskii:
- Board: NavIO
- Gustavo José de Sousa:
- Subsystem: Build system
- Julien Beraud:
- Board: Bebop & Bebop 2
- Leonard Hall:
- Subsystem: Copter attitude control and navigation
- Matt Lawrence:
- Vehicle: 3DR Solo & Solo based vehicles
- Matthias Badaire:
- Subsystem: FRSky
- Mirko Denecke:
- Board: BBBmini, BeagleBone Blue, PocketPilot
- Paul Riseborough:
- Subsystem: AP_NavEKF2
- Subsystem: AP_NavEKF3
- Víctor Mayoral Vilches:
- Board: PXF, Erle-Brain 2, PXFmini
- Amilcar Lucas:
- Subsystem: Marvelmind
- Samuel Tabor:
- Subsystem: Soaring/Gliding
- Henry Wurzburg:
- Subsystem: OSD
- Site: Wiki
- Peter Hall:
- Vehicle: Tailsitters
- Vehicle: Sailboat
- Subsystem: Scripting
- Andy Piper:
- Subsystem: Crossfire
- Subsystem: ESC
- Subsystem: OSD
- Subsystem: SmartAudio
- Alessandro Apostoli :
- Subsystem: Telemetry
- Subsystem: OSD
- Rishabh Singh :
- Subsystem: Avoidance/Proximity
- David Bussenschutt :
- Subsystem: ESP32,AP_HAL_ESP32
- Charles Villard :
- Subsystem: ESP32,AP_HAL_ESP32
