Files

65 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# planeMapper
A wall-mounted ADS-B radar display in a picture-frame form factor. Receives live aircraft positions via RTL-SDR, renders them on an OpenStreetMap base map centred on a home airfield (~100nm radius), and refreshes a 6-colour e-ink display every 60 seconds.
Designed to sit on a desk or hang on a wall — always on, no interaction required, no glare.
## Hardware
| Item | Notes |
|------|-------|
| Raspberry Pi Zero 2W | Deployment target. Build and test on Pi 5 first. |
| Nooelec NESDR Smart v5 RTL-SDR dongle | 0.5PPM TCXO, SMA input. Needs micro-USB OTG adapter on Zero 2W. |
| FlightAware 1090MHz ADS-B antenna | Purpose-built for 1090MHz, 5.5dBi |
| Waveshare 7.3" 6-colour e-ink HAT | E-Ink Spectra 6, 800×480, 40-pin GPIO, SPI |
## Software Stack
- **dump1090** — decodes ADS-B from RTL-SDR, serves JSON at `http://localhost:8080/data/aircraft.json`
- **Python + Pillow** — fetches JSON, renders map image
- **Waveshare Python library** — SPI driver for the e-ink HAT
- **OpenStreetMap tiles** — base map, pre-cached for the local area
## Pipeline
```
RTL-SDR dongle
→ dump1090
→ JSON feed (positions, headings, altitudes, callsigns)
→ Python renderer (Pillow)
→ map image
→ Waveshare SPI driver
→ e-ink display
```
Refresh loop runs every 60 seconds.
## Map Design
- Centred on home airfield, ~100nm radius
- OpenStreetMap base tiles (pre-cached)
- Aircraft plotted as rotated arrows aligned to heading
- Short track line behind each aircraft
- Callsign and altitude label per aircraft
- Colour-coded by altitude band (6 colours match display palette)
- Home airfield marked
## Colour Bands (altitude)
The Waveshare E-Ink Spectra 6 supports black, white, red, yellow, blue, and green — mapped to altitude bands TBD during development.
## Build Order
1. RTL-SDR + dump1090 — confirm aircraft visible in JSON feed
2. Base map — render OSM tiles at correct scale, 100nm radius
3. Aircraft overlay — pull live positions, draw heading arrows and labels
4. E-ink output — push image via Waveshare library, set 60s refresh loop
5. Polish — airspace overlays, altitude colour coding, frame and mount
## Notes
- E-ink only draws power on refresh — very low idle draw, suits always-on use
- Pi Zero 2W runs the full stack comfortably given the relaxed 60s refresh cycle
- OTG adapter required to connect RTL-SDR dongle to the Zero 2W's single micro-USB port
- Lat/lon to pixel coordinate conversion is the trickiest part of the renderer