How hasona57/pcb-drone works
This repository combines a custom ESP32 drone PCB project with ESP-Drone firmware. The principal runtime workflow is app-issued flight commands entering the firmware, being interpreted as setpoints, processed by stabilization and control, then sent to the motors; sensor readings inform state estimation along the way. The tree also shows communications, positioning, persistent storage, and configuration capabilities. Most firmware source was not excerpted, so several connections are shown as dashed, unverified relationships rather than asserted call paths.
Main entry points: stabilizer.c Stabilizer · wifilink.c Wi-Fi link · commander.c Command handling · main.c Firmware entry
Components 19
Command and communications
- Firmware entry
Firmware/esp-drone/main/main.c - Wi-Fi link
Firmware/esp-drone/components/core/crazyflie/hal/src/wifilink.c - Command handling
Firmware/esp-drone/components/core/crazyflie/modules/src/commander.c - CRTP transport
Firmware/esp-drone/components/core/crazyflie/modules/src/crtp.c
Flight control
- Stabilizer
Firmware/esp-drone/components/core/crazyflie/modules/src/stabilizer.c - State estimation
Firmware/esp-drone/components/core/crazyflie/modules/src/estimator.c - INDI control
Firmware/esp-drone/components/core/crazyflie/modules/src/controller_indi.c - Position control
Firmware/esp-drone/components/core/crazyflie/modules/src/position_controller_indi.c
Board and hardware
- Motor output
Firmware/esp-drone/components/drivers/general/motors/motors.c - Sensor drivers
Firmware/esp-drone/components/core/crazyflie/hal/src/sensors.c - ESP32 drone PCB
Positioning
- TDoA engine
Firmware/esp-drone/components/core/crazyflie/utils/src/tdoa/tdoaEngine.c - Anchor data
Firmware/esp-drone/components/core/crazyflie/utils/src/tdoa/tdoaStorage.c - Clock correction
Firmware/esp-drone/components/core/crazyflie/utils/src/clockCorrectionEngine.c
Firmware services
- Storage service
Firmware/esp-drone/components/core/crazyflie/hal/src/storage.c - Key-value store
Firmware/esp-drone/components/core/crazyflie/utils/src/kve/kve_storage.c - EEPROM
Firmware/esp-drone/components/drivers/i2c_devices/eeprom/eeprom.c - Firmware configuration
Firmware/esp-drone/components/config/include/config.h
Other components
- Android app
Connections 18
- Android app → Wi-Fi link: sends commands
- Wi-Fi link → Command handling: delivers commands
- Firmware entry → Wi-Fi link: starts link
- Firmware entry → Stabilizer: starts flight loop
- Command handling → Stabilizer: sets commands
- CRTP transport → Command handling: routes setpoints
- Sensor drivers → State estimation: supplies readings
- State estimation → Stabilizer: provides state
- Stabilizer → Position control: dispatches control
- Stabilizer → INDI control: dispatches control
- Position control → INDI control: provides references
- Stabilizer → Motor output: sends motor output
- ESP32 drone PCB → Sensor drivers: hosts sensors
- ESP32 drone PCB → Motor output: connects ESCs
- TDoA engine → Anchor data: uses anchor data
- TDoA engine → Clock correction: updates correction
Firmware/esp-drone/components/core/crazyflie/utils/src/tdoa/tdoaEngine.c - Storage service → Key-value store: stores values
Firmware/esp-drone/components/core/crazyflie/hal/src/storage.c - Storage service → EEPROM: reads and writes
Firmware/esp-drone/components/core/crazyflie/hal/src/storage.c