Plane Spotter — a Tactical ADS-B Desk Radar (ESP8266 + 1 Inch OLED)

by danilocannas in Circuits > Microcontrollers

301 Views, 3 Favorites, 0 Comments

Plane Spotter — a Tactical ADS-B Desk Radar (ESP8266 + 1 Inch OLED)

image-1781881386490.jpg

A 3D-printed desk gadget that shows the aircraft flying closest to your home in real time — with a military-style radar, live weather, an NTP clock, and flight intel (airline, route, ETA). All data is free, no subscriptions.


This little terminal-style box pulls live ADS-B traffic from the OpenSky Network and renders a tactical UI on a tiny OLED: a PPI radar with a rotating sweep, the nearest target with a type icon, current weather + forecast, and a clock with live milliseconds. It costs about €10 in parts.

Full source code + STL files: https://github.com/DaniloCannas/esp8266-plane-spotter

Supplies

Electronics (~€10)

  1. Wemos/LOLIN D1 mini (ESP8266) — any ESP8266 board works
  2. 0.96" OLED, SSD1306, 4-wire SPI, 7 pins (GND VCC SCK SDA RES DC CS)
  3. 7× female-female jumper wires (or thin wire to solder)
  4. 1× micro-USB cable

Tools

  1. 3D printer + ~30 g of filament (PLA is fine)
  2. Soldering iron
  3. A computer with the Arduino IDE or PlatformIO


⚠️ Make sure the OLED is the SPI version (7 pins). The cheaper I²C one (4 pins) will not work with this wiring.

3D Print the Case

Print the two parts from the repo's hardware/ folder:

  1. Radar1.stl — main shell
  2. radar2.stl — base

Suggested settings:

  1. Material: PLA
  2. Layer height: 0.2 mm
  3. Infill: 15–20 %
  4. Supports: No, print with the screen hole as base and the print quality will be perfect without supports.

Wire the OLED to the ESP8266

This build uses hardware SPI, so SCK and SDA are fixed; the other three pins are configurable in software.

ESP8266 (NodeMCU) OLED SSD1306 SPI
┌───────────────────┐ ┌──────────────────┐
│ 3V3 ──────────────┼────────────┤ VCC │
│ GND ──────────────┼────────────┤ GND │
│ D5/GPIO14 ────────┼────────────┤ SCK │
│ D7/GPIO13 ────────┼────────────┤ SDA (MOSI) │
│ D0/GPIO16 ────────┼────────────┤ RES │
│ D2/GPIO4 ────────┼────────────┤ DC │
│ D1/GPIO5 ────────┼────────────┤ CS │
└───────────────────┘ └──────────────────┘


Get a Free OpenSky API Client

The aircraft data comes from the OpenSky Network. Anonymous access has a tiny daily budget and will rate-limit you, so create a free account:

  1. Sign up at opensky-network.org
  2. Go to Account → API clients and create a client
  3. Copy the clientId and clientSecret — you'll paste them in the next step

Weather (Open-Meteo) and route/airline data (hexdb.io) need no account.

Install the Firmware

  1. Install the ESP8266 board package in the Arduino IDE (Boards Manager → "esp8266").
  2. Install two libraries (Library Manager): U8g2 (olikraus) and ArduinoJson v7 (Benoit Blanchon).
  3. Download the code from GitHub. In firmware/plane_spotter/, copy config.example.h to config.h and fill in:
  4. Your WiFi SSID + password (2.4 GHz network)
  5. Your home coordinates (HOME_LAT / HOME_LON)
  6. Your OpenSky OPENSKY_CLIENT_ID / OPENSKY_CLIENT_SECRET
  7. WALL_HEADING_DEG — the compass heading the device faces (for the radar's wall tick)
  8. TIMEZONE — POSIX timezone for the clock
  9. Open plane_spotter.ino, select your board + port, and Upload.

Assemble & Use

Slot the board and OLED into the case, route the USB cable out the back, and power it from any USB charger. On boot it connects to WiFi, syncs the clock over NTP, and starts polling.

The display cycles through five tactical screens every 7 seconds:

  1. TARGET — nearest aircraft: callsign, type icon, distance, bearing, altitude, speed
  2. INTEL — airline, departure → arrival route, ETA
  3. RADAR — North-up PPI with a rotating sweep; blips move in real time (dead-reckoned)
  4. WX — current weather + next-hours forecast
  5. SYSTEM — big clock with live milliseconds, uptime, link stats

Mount it on a wall or stand it on your desk facing your favorite patch of sky. ✈️