Embedded Systems / IoT / Real-Time Data Visualisation

Airspace Monitor

Airspace Monitor is a self-contained, real-time flight tracking device built on the ESP32 microcontroller platform. It integrates directly with the...

Airspace Monitor

Category: Embedded Systems / IoT / Real-Time Data Visualisation
Platform: LilyGO T-Display-S3 / TTGO T-Display (ESP32 / ESP32-S3)
Framework: Arduino via PlatformIO | C++
Status: Active — Production Ready


Project Overview

Airspace Monitor is a self-contained, real-time flight tracking device built on the ESP32 microcontroller platform. It integrates directly with the FlightRadar24 public API to continuously pull live aircraft data for a user-defined geographic region and render it on the compact TFT display of the LilyGO hardware. No subscriptions, no accounts, and no cloud services are required beyond a standard WiFi internet connection.

The device operates as a fully standalone unit — placeable anywhere with a power source and a WiFi signal, making it ideal for aviation enthusiasts, hobbyists, air traffic watchers, and professionals who want always-on situational awareness of local airspace.


Core Features

Real-Time Flight Data

  • Continuously polls the FlightRadar24 API for live aircraft positions within a configurable latitude/longitude bounding box
  • Displays aircraft sequentially in a scrolling ticker-style presentation
  • Configurable observation radius (in degrees) centred on any GPS coordinate

Embedded Aircraft Database

  • Ships with a comprehensive onboard database of aircraft types (manufacturer, model, engine type, engine count, aircraft category)
  • Full airline database with logos embedded in firmware — eliminates repeated API calls and renders instantly
  • Complete airport database (IATA codes, full names, city/region, coordinates) for departure/destination lookups
  • Country flags and country names for origin/nationality display
  • All databases compiled into firmware and stored in flash — no external storage required

Per-Flight Information Display

  • Aircraft registration and call sign
  • Aircraft type and airline carrier (with carrier logo where available)
  • Departure and destination airports (full names and regions)
  • Current altitude (metric or imperial)
  • Ground speed and heading
  • Vertical speed (climb/descent rate)
  • GPS coordinates of the aircraft

Advanced Filtering System

  • Toggle inclusion/exclusion of: airborne aircraft, grounded aircraft, gliders, and ground vehicles

Web Configuration Interface

  • Built-in web server accessible via browser over WiFi
  • WiFi credentials, location, radius, filters, units, and timezone configurable without reflashing
  • Initial setup via captive WiFi AP (FlightRadar) — device broadcasts its own hotspot on first boot

Clock Mode

  • Top hardware button toggles between flight display mode and a full-screen clock mode (timezone-aware)

HTML Status Dashboard

  • Browser-accessible status page showing device health, network info, current configuration, and live system state

Technical Architecture

Component Detail
MCU ESP32 (TTGO) / ESP32-S3 @ 240 MHz (T-Display-S3)
Display ST7789 IPS TFT — 135x240 (TTGO) / 170x320 (S3)
Display Library TFT_eSPI
Graphics Engine LVGL 8.3.x — hardware-accelerated UI framework
HTTP Client Arduino ESP32 HTTPClient (HTTPS with ArduinoJson streaming)
Web Interface Bootstrap 5 (gzip-embedded), custom Moustache templating
Configuration IotWebConf — persistent WiFi and settings management
Time micro-timezonedb — POSIX timezone database, NTP-synced
Build System PlatformIO (supports esp32dev and lilygo-t-display-s3 envs)

Key Libraries

  • bodmer/TFT_eSPI — display driver with DMA support
  • lvgl/lvgl — UI widgets and rendering pipeline
  • bblanchon/ArduinoJson — zero-copy JSON streaming parser
  • prampec/IotWebConf — captive portal and persistent config
  • rzeldent/micro-timezonedb — compact IANA timezone support
  • rzeldent/micro-moustache — minimal HTML template engine

Configuration Options

All settings adjustable via web interface without reflashing:

Setting Description
WiFi SSID and Password Network credentials for internet access
AP SSID and Password Configuration portal access credentials
Latitude / Longitude Observation centre point (decimal format)
Range (degrees) Observation radius around centre point
Filters Airborne / Grounded / Gliders / Ground Vehicles
Timezone IANA timezone string
Units Metric (km/h, meters) or Imperial (knots, feet)

Development History

Date Milestone
Dec 2019 Initial prototype — birth of the project
Oct 2022 LVGL integration for hardware-accelerated graphics
Oct 2022 Filtering system for airborne, grounded, gliders
Oct 2023 LilyGO T-Display-S3 support added
Jan 2026 Optimised data tables for faster lookups

Hardware Compatibility

Device Status
TTGO T-Display (ESP32) Fully Supported
LilyGO T-Display-S3 (ESP32-S3) Fully Supported

Deployment

  1. Clone repository and open in PlatformIO (VS Code extension)
  2. Select appropriate environment (esp32dev or lilygo-t-display-s3)
  3. Build and flash to device via USB
  4. On first boot, connect to the FlightRadar WiFi AP from any device
  5. Navigate to 192.168.4.1 and enter home WiFi credentials and location
  6. Device reboots and begins tracking flights immediately

Holding the top button during boot clears all configuration and returns to factory defaults.

Return to Projects