Weather radar and aircraft radar on one round display

What it is

MeteoPlaneRadar is a standalone WiFi device with a round touch display. Park it on a shelf next to your monitor and a quick glance tells you what’s flying overhead and whether rain is about to start.

It runs on a single Waveshare ESP32-S3-Touch-LCD-2.1 board. Nothing to solder, nothing to wire, firmware flashed straight from the browser.

Version 0.6.0 turned it into more than two screens. There are now five – clock, planes, meteoradar, forecast and settings – and everything is configured in the browser.

The core rule still applies: it’s not a phone and it doesn’t try to be one.

Like the project? Thinking of building one? It’s completely free. If you want to support me you can buy me a coffee at buymeacoffee.com/chiptroncz

Where do you want to go?

I want to build one
Hardware · Case · Getting it running

I already have one and want 0.6.0
What’s new · Browser settings · WiFi update

What it can do
Clock · Planes · Meteoradar · Forecast · Air quality & pollen

I want to build on it
For developers · Where the data comes from · License · Community forks

What’s new in 0.6.0

Changes affect both the display and the browser. Configuration moved to a web interface, two new screens were added, and the meteoradar now works outside the Czech borders.

  • Browser settings – permanently available at meteoplaneradar.local. Location can be found by city name, screens and range can be switched remotely without touching the display.
  • Clock screen – large time, date, current weather and a seconds ring. No Home Assistant, everything pulled from the same data the device already fetches.
  • Forecast screen – next 6 hours and 3 days, plus air quality and pollen.
  • RainViewer as a second meteoradar source. Finally works outside Czechia.
  • Night mode based on sunrise and sunset. Separate day and night brightness.
  • Screen disabling and automatic cycling.
  • English on the display, on the web and in the captive portal.
  • Emergency squawk alerts for 7500, 7600 and 7700, altitude filters and tracked callsign.
  • Firmware update moved to the device’s normal address. No more special WiFi network for OTA.

All thanks to you. Your ideas, reported bugs, forks. Big thanks to everyone.

⚠️ Coming from 0.5.x? Saved WiFi credentials won’t transfer – they used to live in WiFiManager, which is no longer used. After the update the device will create its own network once and you’ll have to enter your credentials again. Location, brightness and map orientation are kept.

Older news (0.5.x)

  • Where the plane is coming from and going to – departure and destination cities, registration and aircraft type in the detail view.
  • Time and outdoor temperature on both radar screens.
  • “Whole Czechia” range on the meteoradar and fix for the jumping location marker at 200 km.
  • Detailed European map with finer Czech detail.
  • Map orientation according to your view and Czech labels on the display.
  • WiFi update and remembering the last screen and range.

Hardware

Single board: Waveshare ESP32-S3-Touch-LCD-2.1. Available from Czech retailer LaskaKit or Czech retailer Pajeníčko, which also sells a pre-assembled version.

  • ESP32-S3R8, 8 MB PSRAM, 16 MB flash.
  • Round IPS display 480×480, ST7701 controller over RGB interface.
  • CST820 capacitive touch.
  • TCA9554 I/O expander controlling reset, CS and display power.

Display and microcontroller are on one board. A USB-C cable is all you need.

3D-printed case

The recommended model is Case for round Waveshare 2.1″ display with ESP32-S3. It was created specifically for MeteoPlaneRadar and sent to me by Czech maker Radek B. via Facebook chiptron.cz – many thanks.

It contains two variants. The basic stand (Stojan__waveshare_2_1_ESP32-S3) and a version with holes for the USB-C cable at both connectors (Stojan__waveshare_2_1_ESP32-S3+kabel) – useful when the device will stay powered permanently.

Print settings: print on the display side, supports enabled, 3 perimeters, PLA or PETG, 2 top contact layers.

If it doesn’t fit, community alternatives exist: a case by Czech maker Michal Jeremenek on Thingiverse, an older model with different tilt (both still need the spacer) and another model on Printables.

How to control it

No on-screen buttons. Everything is controlled with your finger.

GestureAction
Swipe sidewaysChanges range on planes and meteoradar
Short tapSelects a plane; on the clock toggles day/night
Long press leftPrevious screen
Long press rightNext screen
BOOT on startup (~3 s)Factory reset

There are four screens plus settings: Clock, Planes, Meteoradar, Forecast. Any of the four can be disabled in the browser – it will then be skipped during cycling and its dot disappears from the top. Settings are always available.

You don’t even have to touch the display. Screens and range can be switched from the browser.

Clock

New screen in 0.6.0. From top to bottom: date, large time, current weather with temperature and precipitation, wind speed below.

A seconds ring runs around the edge – off, dots, smooth line or comet with fading trail. Clock and seconds colours are configurable.

Weather comes from the same request as the forecast, so the clock doesn’t cost an extra connection.

The device does not use NTP. Time is taken from the HTTP response headers it already fetches.

Planes

Aircraft icons are colour-coded by flight level.

AltitudeColourTypical traffic
Below 2 kmRedApproach and departure, helicopters, light aircraft
2–6 kmOrangeClimbing, descending, regional traffic
6–10 kmYellowLower cruise levels
10 km and aboveBlueLong-haul cruise

Red overhead means something is descending for landing nearby. A screen full of blue means you’re under a corridor and everyone is just passing through. Aircraft not reporting altitude are drawn grey, not red.

Tap to open the detail view. Altitude, speed, heading, climb rate, aircraft type, registration and origin/destination. It updates live while open.

Update interval depends on the chosen range – more frequent on small ranges, less frequent on large ones. This conserves the free API.

Emergency squawks and filters

New in 0.6.0. Enabled in the browser, the device watches three transponder codes: 7500 hijack, 7600 radio failure, 7700 general emergency.

Such an aircraft gets a double red ring and a red banner with the code and meaning appears instead of the aircraft count.

Filters are also available: altitude range, only aircraft with callsign, and a tracked callsign or ICAO highlighted in green. Filters affect drawing only – an emergency squawk or tracked aircraft is never hidden.

Rotate the map to match your view

North-up is correct. It doesn’t work so well by a window though. You’re looking east, you see a plane left of the roof, yet on the display it’s bottom-right.

In Settings there’s a row labelled Top with and + buttons. Set the direction you’re looking from the window and you’re done.

TopTop points toNorth then lies
Nnorthtop (default)
Eeastleft
Ssouthbottom
Wwestright

Eight positions in 45° steps, intermediates NE, SE, SW, NW. A small compass sits next to the buttons; S, E, S, W markers appear around the radar edge.

The meteoradar deliberately stays north-up. Precipitation maps are read north-up and the outline of Czechia keeps orientation. Rotating it would make it worse, not better.

Meteoradar

The device downloads the last six frames at five-minute intervals and loops them, so you immediately see which way the clouds are moving.

  • Each frame shows the time – “now” or “X minutes ago” – plus exact HH:MM.
  • Intensity legend in dBZ and mm/h, colours taken directly from the source palette so they match the map.
  • Country outlines and cities as background.
  • Range switches between 25, 50, 100, 200 km and whole Czechia.

ČHMÚ or RainViewer

Up to 0.5.5 the meteoradar had one limitation: ČHMÚ data stops just beyond the borders. If your location was abroad the screen stayed empty.

From 0.6.0 you can switch in the browser to RainViewer – a European and global precipitation radar, also free and keyless.

ČHMÚ remains the default and is sharper over Czechia. RainViewer is coarser, roughly 790 m per pixel. Closer ranges are composited from whatever is available. It simply has less detail.

The legend switches with the source and states which one you’re reading. Each radar has its own palette – the same yellow means 40 dBZ on one scale and 35 on the other.

Forecast

Second new screen. Top: next 6 hours, below the line: next 3 days.

Each row shows a vector weather icon derived from the WMO code, temperature, precipitation and wind. Days show high and low. The unit sits next to every value so there’s no confusion.

Data from Open-Meteo – free, no key, no registration. Refreshes every half hour.

Air quality & pollen

At the bottom of the screen, three rows in large text.

  • European AQI index, coloured according to the published bands.
  • PM2.5 in µg/m³, colour according to daily WHO recommendation.
  • Pollen – strongest value among alder, birch and grass, including species. A number without species would be useless.

Pollen data is a European product. It does not appear outside Europe.

Settings

The display only keeps what makes sense to change on the device itself: brightness, map orientation, units, language. Plus the address where you’ll find the rest.

Browser settings

The web server runs permanently. Open http://meteoplaneradar.local/ or the IP shown in Settings.

The page is split into six tabs so it works on mobile too:

  • Control – remote screen and range switching, device status.
  • Location – manual or by searching city name.
  • Screens – what to show, automatic cycling, meteoradar source.
  • Appearance – day and night brightness, night mode by sun, seconds ring, colours.
  • Planes – filters, squawks, tracked callsign, map orientation, units.
  • System – password, firmware update, settings backup, restart, factory reset.

The status page shows IP, signal strength, uptime, free memory, last restart reason and the result of the last fetch from each source. Diagnostics without a serial cable.

Password

Default is no password. Firmware update, settings import and factory reset are immediately accessible to anyone who reaches the device address. On a home network this is usually fine, but it’s good to know.

Once you set a password it is stored in plain text.

Note: a forgotten password can only be cleared by holding BOOT on startup. That performs a factory reset and wipes WiFi and everything else.

Getting it running (no programming)

What you need: Waveshare ESP32-S3-Touch-LCD-2.1 board, USB-C cable, home WiFi and a phone to scan the QR code.

No Arduino IDE, no toolchain, no libraries. Just Chrome or Edge.

1) Full programming – via USB cable

Writes the entire memory including partitioning. Always works, even on a brand-new board. Use it for the first flash and whenever you’re unsure.

  1. Download MeteoPlaneRadar_vX.ino.merged.bin (the one with merged) from GitHub releases.
  2. Connect the board via USB-C to your computer, into the connector marked USB.
  3. Open esp32flasher.chiptron.cz, select ESP32-S3 and the downloaded file, then flash.

The flasher runs entirely in the browser via Web Serial. In a few dozen seconds you’ll have a working radar on the round display.

2) OTA – update over WiFi

From 0.6.0 updates happen directly at the device’s normal address. The special WiFi network and “Firmware update” screen are gone.

  1. Download MeteoPlaneRadar_vX.ino.bin – note, the one without merged – from GitHub releases.
  2. Open http://meteoplaneradar.local/update. If mDNS doesn’t work in your network, use the IP shown on the Settings screen.
  3. Select the file and upload. Progress is visible in the browser.

Normal during update: the display goes dark. The RGB panel reads the image from PSRAM continuously and writing to flash cuts the data, so the image would flicker. It turns back on by itself when finished.

If the update fails, nothing is lost. The device reverts to the previous version and can always be recovered via USB.

⚠️ On a version older than 0.4, or unsure which version? Use Full programming via USB.

First boot

After flashing the device creates an open WiFi network MeteoPlaneRadar and shows a QR code on the display. Scan it with your phone, pick your home network and save.

The access point stays active until you enter credentials. Without a connection the device has nowhere to pull data from, so there’s nothing to download or display.

You don’t have to enter a location – it’s detected from the IP address. Manual entry always takes precedence, which is handy because IP-based location may not match reality. In the browser you can now just type a city name.

For developers

This section is only for those compiling the project in Arduino IDE. If you flashed a ready-made BIN you can skip it.

PSRAM must be set to OPI PSRAM, otherwise the display stays black with no other symptom. Also enable CDC on Boot and select Flash Size 16 MB.

Set Partition Scheme to “Custom” – the included partitions.csv with two app partitions will be used so there’s room for wireless updates. After compilation check the log that it reports of 6291456 bytes.

Libraries from Library Manager: GFX Library for Arduino, PNGdec and ArduinoJson v7. QRCode is bundled with the project.

WiFiManager is no longer used from 0.6.0. Its portal couldn’t be translated into Czech and blocked the main loop. Replaced by a custom access point and page.

Where the data comes from

DataSourceNote
Aircraftadsb.fiFree, no key, personal use
Route and aircraft typeadsbdb.comFree, no registration
Precipitation CZČHMÚ opendataSource attribution required
Precipitation Europe & worldRainViewerFree, no key, non-commercial
Weather, forecast, sunOpen-MeteoFree, non-commercial, source attribution required
Air quality & pollenOpen-Meteo Air QualityPollen Europe only
City searchOpen-Meteo GeocodingFree, non-commercial
Locationip-api.comAutomatic IP-based detection

Aircraft radar and Meteoradar RainViewer work anywhere; the map background covers EU-27 plus the UK, Switzerland and Norway.

Code and license

GitHub repository: github.com/petus/MeteoPlaneRadar

Firmware is under the MIT license. You may use, modify and redistribute it.

Details are in LICENSE.txt.

MIT does not apply to the data. The map background is derived from Natural Earth (country borders, public domain) and GeoNames (cities, CC BY 4.0 license). If you redistribute the project please credit both sources.

Beyond the license, one request: if you build on this, leave the chiptron.cz line on the settings screen in the same size and colour. It costs you nothing and means something to me.

Note: this is a hobby project. I make no guarantees about future functionality – I do it because I enjoy it.

Inspiration

This project didn’t come from nowhere. It builds on three existing ones:

A fourth was added. CooLajz/waveshare-hodiny is not a MeteoPlaneRadar fork but a standalone project on the same board – a Czech Home Assistant dashboard built on LVGL.

It caught my attention enough that I borrowed several ideas from it: clock screen, seconds ring, night mode by sun and web configuration.

Project created with help from Claude AI.

Community forks

Fork for BigTreeTech Knomi V1

Knomi V1 running MeteoPlaneRadar
Knomi V1

Vilém Kužel sent his repo for the BigTreeTech Knomi V1 board – classic ESP32 and round 1.28″ 240×240 GC9A01 over SPI.

github.com/Vilda007/MeteoPlaneRadar

Fork by OK1CDJ: APRS and PlatformIO

Ondra OK1CDJ took MeteoPlaneRadar 0.5.5 and improved it significantly. Then the tables turned: his version became the template for my 0.6.0.

RainViewer, the forecast screen, screen disabling, automatic cycling and English were all added following his work. So features that were recently “extra at Ondra’s” are now in both versions.

What remains only in his fork:

  • APRS station (aprs.fi) – map screen with the position of one configured station, map centred on it, range changed by swiping. Bottom shows age of last position in colour; moving stations also show speed and heading. Tap for detail with distance and bearing from you. Requires a callsign and free API key from aprs.fi (My Account → API key). I did not port this screen to my version.
  • PlatformIO and CI build – for those who compile the firmware themselves. pio run and you’re done.

GitHub: github.com/ok1cdj/MeteoPlaneRadar (Czech and English README). More of Ondra’s projects are at apps.ok1cdj.com.

Many thanks to Ondra for the APRS screen, the PlatformIO conversion and the inspiration.

Sent via WhatsApp

Share the article:
Show your
Maker soul!
Buy a T-Shirt
Coffee for Chiptron
Give a boost to the next article

Related Articles

If you’ve ever wondered what plane is flying over your house, you’ve probably used an app like FlightRadar24. The ESP32 Plane Radar project offers a more interesting solution though – your own desktop radar built on ESP32 that displays planes…

I wanted to know what was flying over my head. Not on a phone, not in a browser tab – on a small round thing sitting on a shelf that I could glance at.

The weather station is the first DIY project which makers do after sometime of playing with electronics. It is project which is helpful and makers using this long time. This article introduce my weather station which is based on board…

Aeris-10

When radar is mentioned, most people picture a metal dish on an airport roof or a giant military installation surrounded by barbed wire. The AERIS-10 project (short for Array Electronic Radar with Integrated System) is embarking on the development of…

I liked the project zivyobraz.eu because it simply makes ePaper/eInk display technology accessible to regular people without programming knowledge. They can easily create their own information display. What appears on the display is entirely up to them. The service offers…

Josef Zvol?nek (facebook, google plus, twitter) shared this amazing project of his weather station with tri-color ePaper display. Josef shared complete project with ino file for ESP8266 and also gerber files for PCB. Thanks a lot for sharing. You can…

Trends