How ironicbadger/esp32-plane-radar works
Plane Radar is ESP32 firmware that guides the user from Wi-Fi setup to a live, location-centered aircraft radar. The main loop manages connectivity and refresh timing, fetches ADS-B traffic, enriches aircraft details, and refreshes the display; settings persist across reboots, while weather and local time feed the footer. The README also documents browser-based configuration, range controls, runway overlays, and authenticated OTA. Those documented capabilities are included, though unsampled service implementations are represented only at their supported source paths; uncertain internal wiring is omitted.
Main entry points: main.cpp Firmware loop · radar_display.cpp Radar renderer · wifi_setup.cpp Wi-Fi portal · radar_location.cpp Radar location
Components 22
Device workflow
- Firmware loop
src/main.cpp
Setup and settings
- Wi-Fi portal
src/services/wifi_setup.cpp - Radar location
src/services/radar_location.cpp - Display settings
src/services/display_settings.cpp - OTA updates
src/services/ota_update.cpp - Device preferences
Live data services
- ADS-B client
src/services/adsb_client.cpp - Flight enrichment
src/services/adsb_client.cpp - Weather and time
src/services/weather_time.cpp
Radar presentation
- Range presets
src/ui/radar_range.cpp - Radar renderer
src/ui/radar_display.cpp - Runway overlay
src/ui/runway_overlay.cpp - Airport data
src/data/large_airports_data.cpp - Display driver
src/hardware/display.cpp - Display fonts
src/hardware/display_font.cpp - Status screens
src/ui/status_screens.cpp
Other components
- Device user
- adsb.fi
- ADSBDB
- Open-Meteo
- NTP time
- Browser
Connections 42
- Device user → Firmware loop: powers and controls
- Firmware loop → Wi-Fi portal: connects and polls
- Firmware loop → Radar location: initializes and reads
- Firmware loop → Display settings: initializes
- Firmware loop → Range presets: initializes and advances
- Firmware loop → OTA updates: checks update state
- Firmware loop → ADS-B client: fetches and enriches
- Firmware loop → Weather and time: starts and refreshes
- Firmware loop → Radar renderer: draws and refreshes
- Firmware loop → Status screens: shows setup status
- Browser → Wi-Fi portal: configures device
- Wi-Fi portal → Radar location: saves coordinates
- Wi-Fi portal → Display settings: saves options
- Wi-Fi portal → Range presets: saves runway option
- Wi-Fi portal → OTA updates: sets password
- Wi-Fi portal → Device preferences: persists configuration
- Radar location → Device preferences: reads and writes
- Display settings → Device preferences: reads and writes
- Range presets → Device preferences: persists preset
- ADS-B client → adsb.fi: requests traffic
- ADS-B client → Flight enrichment: queues aircraft details
- Flight enrichment → ADSBDB: looks up routes and types
- ADS-B client → Radar renderer: provides aircraft list
- Flight enrichment → Radar renderer: updates aircraft details
- Radar location → ADS-B client: supplies center
- Range presets → ADS-B client: supplies fetch radius
- Weather and time → Open-Meteo: fetches conditions
- Weather and time → NTP time: synchronizes clock
- Radar location → Weather and time: supplies coordinates
- Weather and time → Radar renderer: provides footer data
- Display settings → Radar renderer: supplies display options
- Range presets → Radar renderer: supplies active scale
- Radar renderer → Runway overlay: draws overlay
- Runway overlay → Airport data: reads airport and runway data
- Radar location → Runway overlay: supplies radar center
- Range presets → Runway overlay: supplies radius
- Display settings → Runway overlay: supplies overlay and text options
- Radar renderer → Display driver: renders frames
- Status screens → Display driver: renders screens
- Radar renderer → Display fonts: selects text rendering
- Runway overlay → Display fonts: selects label rendering
- OTA updates → Device preferences: reads credentials