keepcalculator

06 Numbers and Powers

ESP32 E-Paper Flight Tracker: Build One for Your Desk

Card No. 06·28347 · Updated · Standard formula, shown below

Updates per day 288
Avg power (est.)
0.50 mW
Result
Refresh interval
5 min
You entered
Flights shown
8 count
You entered
You enter
Refresh interval, Flights shown
You get
Updates per day, Avg power (est.)
Rounding
0 dp · 2 dp

Yes, you can build a desk flight tracker using an ESP32 and an e-paper display, and it will show live aircraft positions, flight numbers, and altitudes without the constant power draw of an LCD. You feed it flight data from a public API or a local ADS-B receiver, and the e-ink screen updates every few minutes to show a snapshot of nearby or tracked flights. This article covers the hardware, the data sources, the build steps, and the common pitfalls so you can decide if it is the right project for you.

Formula

The calculator above estimates two things: how many times per day your display will refresh, and the average power draw in milliwatts. The first is simple: there are 1440 minutes in a day, so updates per day = 1440 divided by your refresh interval in minutes. The second is a rough estimate: each e-paper update (including the ESP32 waking, fetching data, and driving the display) averages about 0.05 mW per flight shown, plus a 0.1 mW baseline for the ESP32 in deep sleep between updates. These are typical figures for a 2.9-inch e-paper module with an ESP32 in modem-sleep mode; your actual numbers will vary with the display size and the Wi-Fi signal strength.

Worked Example

Using the defaults: a refresh interval of 5 minutes and 8 flights shown. Updates per day = 1440 / 5 = 288. Average power = 0.05 * 8 + 0.1 = 0.5 mW. So your desk tracker would wake up 288 times a day and draw about half a milliwatt on average, which is roughly 12 mWh per day — a tiny fraction of what a 2000 mAh battery holds.

Why E-Paper for a Flight Tracker?

E-paper displays (also called e-ink) hold an image without power, so the ESP32 can go into deep sleep between updates and only wake to refresh the screen. A typical 2.9-inch e-paper module draws about 0.3 mW when idle, compared to 50–100 mW for a small TFT LCD. That makes it ideal for a desk gadget that runs on a battery or a small solar panel. The trade-off is refresh speed: a full update takes 2–5 seconds, and partial updates can leave ghosting if not handled carefully. For a flight tracker that updates every few minutes, that is a non-issue.

What You Need: Hardware and Data

The core components are straightforward:

  • An ESP32 development board (any with Wi-Fi, e.g., the classic DevKitC or a WROOM module)
  • An e-paper display driver board — common sizes are 2.13″, 2.9″, and 4.2″ (the 2.9″ is a good balance of size and cost)
  • A way to get flight data: either a free API like OpenSky Network, or a local ADS-B receiver (like an RTL-SDR dongle) feeding data over Wi-Fi
  • A 3D-printed or laser-cut enclosure (optional but recommended for a desk look)

For the data source, the OpenSky Network API is the most common choice because it is free and does not require a receiver. You query it with your approximate latitude and longitude, and it returns aircraft within a radius. The free tier has rate limits (about 400 credits per day per IP), so you cannot refresh every second — but every 5 minutes is fine. If you want real-time data without rate limits, a local ADS-B receiver gives you unfiltered data from your own antenna, but it adds hardware and setup complexity.

How the Build Works

The software flow is simple, but the details matter. Here is the typical sequence:

  1. On boot, the ESP32 connects to Wi-Fi and fetches flight data from the API (or from your ADS-B receiver’s HTTP endpoint).
  2. It parses the JSON response, keeping only the fields you want: callsign, altitude, ground speed, and distance from your location.
  3. It sorts the flights by distance (or by altitude) and takes the top N.
  4. It renders the list to a bitmap buffer, then sends it to the e-paper display.
  5. It goes into deep sleep for the refresh interval, then wakes and repeats.

The main code challenge is rendering text on the e-paper. Most libraries (like GxEPD2 for Arduino) include a font that supports the ASCII character set, but you may need to convert the callsign to uppercase and trim it to fit the display width. Also, the API returns altitudes in meters and speeds in m/s, so you will want to convert to feet and knots for readability — a common mistake is forgetting to convert units, which makes the display show absurd numbers like 12000 m instead of 39000 ft.

Choosing the Right Display and ESP32

Display size matters more than you might think. A 2.13″ display fits about 4–5 lines of flight data; a 2.9″ fits 8–10; a 4.2″ fits 15–20. For a desk tracker, the 2.9″ is the sweet spot — it shows enough flights without making the text too small. The ESP32 itself is not a bottleneck; any model with Wi-Fi works. The main consideration is power: if you plan to run on battery, choose an ESP32 with deep-sleep current under 10 µA (most are), and use a display with a built-in DC-DC converter that can be powered down. Some e-paper modules have a busy pin that must be monitored during refresh; others just need a delay. Check the datasheet for your specific module.

Common Problems and How to Fix Them

Three issues come up repeatedly in forum posts and project logs:

  • Ghosting or incomplete refreshes: E-paper needs a full refresh cycle every few updates to clear residual charge. If you only do partial updates, the screen will slowly accumulate faint outlines. Solution: do a full refresh every 5–10 updates.
  • API rate limits: OpenSky’s free tier is per IP, and if you share an IP (like a university or office network), you may hit the limit quickly. Solution: reduce refresh frequency, or switch to a local ADS-B receiver.
  • Wi-Fi reconnection failures: The ESP32 may fail to reconnect after deep sleep if the router has a short DHCP lease. Solution: add a 10-second delay before connecting, and retry up to 5 times before going back to sleep.

Another common misconception is that the display must be refreshed every second to be “live.� In practice, flight positions change slowly enough that a 5-minute update is perfectly usable for a desk display. If you need real-time, you are better off with a phone app or a web dashboard.

Costs, Power, and Alternatives

At typical hobby prices, an ESP32 board costs $5–10, a 2.9″ e-paper module costs $15–25, and a 3D-printed case costs a few dollars in filament. Total is under $40. Power consumption is low enough that a 2000 mAh Li-ion battery can run it for weeks, depending on refresh rate. If you do not want to build from scratch, there are commercial e-paper flight boards (like the ones from some DIY kit makers), but they cost $100+ and are less customizable. A cheaper alternative is to use an old smartphone with a flight-tracking app, but it will not have the always-on e-ink look or the low power draw.

Frequently Asked Questions

Do I need an ADS-B receiver, or can I use a free API? You can use a free API like OpenSky Network. It is enough for a desk display that updates every few minutes. A local ADS-B receiver gives you unlimited, real-time data but requires extra hardware and an antenna.

How often should I refresh the display? Every 5 minutes is a good default. More frequent updates waste power and may hit API rate limits; less frequent makes the display feel stale. A 2.9″ e-paper takes about 3 seconds to refresh, so even 1-minute updates are feasible if you want.

Can I show flights from a specific airport or route? Yes, but you will need to filter the API response by the airport’s ICAO code or by a bounding box. OpenSky’s API supports geographic filters, so you can query a small area around a specific airport and show only arrivals or departures.

What if the display shows garbled text or random characters? That usually means the font encoding is wrong. The ESP32 libraries often expect 5×7 or 6×8 pixel fonts, and if you feed it a character that is not in the font table, it prints a placeholder. Convert all callsigns to uppercase and strip non-ASCII characters before rendering.

Is it safe to leave it running 24/7? Yes, the power draw is minimal, and e-paper does not suffer from burn-in like OLED. The only risk is if you use a Li-ion battery without a protection circuit — always use a protected battery or a charge-management board.

Related

Formula used
in refresh | Refresh interval | min | 5 | 1 | 60
in flights | Flights shown | count | 8 | 1 | 20
out updates | Updates per day | - | 1440 / refresh | 0
out power | Avg power (est.) | mW | 0.05 * flights + 0.1 | 2

Each line is one input (in, sel, list) or one result (out: label, unit, formula, decimals). How the calculators work

Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.

More cards in this drawer

The whole Numbers and Powers drawer →