Evropský radar letadel – mrkněte, co vám létá nad hlavou

Stručně: European Plane Radar je živý radar letadel, který běží na jediné desce – Waveshare ESP32-S3-Touch-LCD-2.1, kulatém dotykovém displeji 480×480 s ESP32-S3 přímo na desce. Nic se nepájí, nic nedrátuje, stačí USB kabel. Data o letadlech tahá z adsb.fi (zdarma, bez API klíče), letadla kreslí jako siluety natočené podle skutečného kurzu a barví je podle výšky, takže na první pohled poznáte přiblížení od přeletu. Klepnutím zobrazíte volací znak, výšku, rychlost, kurz a stoupání. Mapový podklad pokrývá celou EU plus Británii, Švýcarsko a Norsko – zhruba 31 000 bodů hranic a 1 100 měst ve zhruba 170 kB flash – takže funguje stejně v Praze, Varšavě, Lisabonu i Londýně. Kód je pod MIT licencí.

Chtěl jsem vědět, co mi zrovna letí nad hlavou – jakože letadla. Ne v mobilu, ne v další záložce prohlížeče – na malé kulaté věci na polici, vedle monitoru, na kterou se jen mrknu.

Výsledkem je zařízení se dvěma obrazovkami, mezi kterými se přepíná gestem posunutí prstu na obrazovce.

Připravujeme: Na chiptron.cz pracuji na kombinované verzi Meteo-PlaneRadar – srážkový radar z dat ČHMÚ a radar letadel na jednom zařízení. Ta je zatím ve vývoji. Tenhle článek popisuje samostatný projekt European Plane Radar, který je hotový a můžete si ho postavit hned.

První obrazovka je radar. Letadla se zobrazují jako okřídlené šipky mířící tam, kam skutečně letí, nad obrysem okolních států a jejich měst. Klepnutím na letadlo se otevře panel s detaily. Dlouhým stiskem kdekoliv změníte dosah – 10, 25, 50 nebo 100 km.

Druhá obrazovka je nastavení: jas, stav WiFi, poloha a tlačítko, které otevře konfigurační portál.

A to je celé. Záměrně se nesnaží být mobilem.

Letadla jsou barvená podle výšky

Tohle se ukázalo jako jediná změna, jak udělat radar čitelným na první pohled. Obrazovka plná stejných žlutých trojúhelníků vám řekne, že tam nějaký provoz je. Obrazovka, kde barva něco znamená, vám řekne, jaký provoz to je.

VýškaBarvaTypicky
Pod 2 kmČervenáPřiblížení a odlet, vrtulníky, malá letadla
2–6 kmOranžováStoupání, klesání, regionální provoz
6–10 kmŽlutáNižší cestovní hladiny
10 km a výšModráDálkové lety v cestovní hladině

Červená nad hlavou znamená, že něco klesá k přistání někde poblíž vás. Obrazovka plná modré znamená, že jste pod koridorem a všichni jen prolétají v cestovní hladině.

Jeden detail: letadlo, které nehlásí výšku, se kreslí šedě, ne červeně. Kdybyste „neznámou“ hodnotu přesunuli do nejnižšího pásma, bylo by to velmi matoucí.

Mapa je celá Evropa a velká města

Podklad pokrývá EU-27 plus Británii, Švýcarsko a Norsko: zhruba 31 000 bodů hranic a 1 100 měst, převzatých z Natural Earth (public domain) a GeoNames (CC BY).

Aby to bylo na mikrokontroléru použitelné:

Musí se to vejít. Souřadnice jsou uložené jako uint16 v pevné řádové čárce místo floatů, což cenu půlí. Kvantizační krok vychází zhruba na 122 m – hluboko pod ~555m tolerancí, na kterou byly obrysy zjednodušené, takže vás to nestojí nic viditelného. Celkem: asi 170 kB flash, zhruba 5 % APP partition. To je změřené, ne odhadnuté – zkompiloval jsem data a přečetl velikost sekce.

Musí to být rychlé. Kreslit 31 000 bodů každý snímek by bylo extrémně pomalé. Obrazovka proto spočítá, které geografické okno může být reálně vidět, a předá ho mapovému modulu, který celé státy odmítne podle bounding boxu ještě předtím, než sáhne na framebuffer. V praxi přežije kdekoliv v Evropě méně než ~300 úseček na snímek. Načtení samotné mapy je tak bleskurychlé.

Města jsou odstupňovaná podle počtu obyvatel, aby hustě osídlené regiony zůstaly čitelné. Na 100 km se kreslí jen města nad 300 tisíc; na 50 km nad 150 tisíc; pod 25 km všechno až po 50 tisíc. Bez toho by Porúří nebo Randstad pohřbily provoz pod hradbou popisků.

Tři věci, které bylo nutné opravit a upravit

Zajímavá část podobného projektu je jen zřídka ta, která funguje.

GeoNames si myslí, že Žižkov je město

Když z GeoNames vyfiltrujete „místa nad 50 000 obyvatel“, dostanete Prahu – a taky Stodůlky, Žižkov a Chodov. To jsou pražské čtvrti. Totéž se děje všude: Hamburg-Mitte, bukurešťský „Sector 3″, City of Westminster. Všechno by se vykreslilo jako fantomová města naskládaná na to skutečné.

Oprava je geometrická, ne editorská. Každé místo, které leží do 12 km od města alespoň třikrát většího, se považuje za jeho čtvrť a zahodí se. To odstranilo 397 záznamů a nechalo 1 100 skutečných měst. Není to dokonalé – pohltí to i pár legitimních obcí jako L’Hospitalet vedle Barcelony – ale v těchhle měřítkách by se jejich popisky stejně překrývaly.

Vybrané letadlo se mi měnilo pod „prstem“

Tahle chyba byla zajímavá, protože vypadala jako glitch displeje a přitom šlo o chybu v datovém modelu.

Klepnete na letadlo, necháte detail otevřený, a asi po pěti sekundách vám tiše ukáže jiné letadlo.

Důvod: výběr byl uložený jako index do pole. Pole se při každém stažení dat staví od nuly a adsb.fi nic neslibuje o pořadí. Jedno letadlo opustí oblast, všechno za ním se posune, a index 7 je najednou někdo úplně jiný. Detailní panel poslušně ukazoval toho, kdo slot zdědil.

Oprava je klíčovat výběr na ICAO hex adresu – 24bitový identifikátor vypálený do draku letadla, který se mezi stahováními nemění. Panel teď buď sleduje letadlo, které jste skutečně vybrali, nebo se zavře, když opravdu opustí oblast.

Výhodou teď tedy je: detailní panel se teď aktualizuje živě, dokud je otevřený – výška a rychlost naskakují, jak přicházejí nová data, protože každý snímek znovu vyhodnotí identitu proti poslednímu stažení. A zavírání panelu se stalo záměrným: starý kód ho zavřel jen tehdy, když zastaralý index náhodou přetekl konec pole.

Překvapení na 84 kilometrech

Po zapojení evropské mapy jsem ji otestoval vycentrovanou na Prahu a nedostal žádnou hranici na 10, 25 ani 50 km. Jen tečky měst na černé.

Praha je totiž 84 km od nejbližší státní hranice. V těchhle rozsazích tam vážně není co kreslit.

Stojí za to o tom vědět, protože komukoliv ve vnitrozemí to bude připadat jako chyba. Není – přepněte na 100 km a obrys se třeba objeví.

Hardware

Jedna deska: Waveshare ESP32-S3-Touch-LCD-2.1.

  • ESP32-S3R8 – 8 MB PSRAM, 16 MB flash
  • Kulatý IPS displej, 480×480, řadič ST7701 přes RGB rozhraní
  • CST820 kapacitní dotyk
  • TCA9554 I/O expandér ovládající reset, CS a napájení LCD

Displej i mikrokontrolér jsou na jedné desce. Není co drátovat, pájet.

Dvě věci, které vás v Arduino IDE možná překvapí

PSRAM musí být nastavená na OPI PSRAM. Tools → PSRAM → OPI PSRAM. Když to neuděláte, displej zůstane černý bez jakéhokoliv jiného příznaku. Je to zdaleka nejčastější příčina „ono to nefunguje“.

LovyanGFX tenhle panel jen tak nerozjede. ST7701 běží přes RGB rozhraní a jeho chip-select visí na I2C expandéru, což knihovna out of the box neřeší. Použil jsem Arduino_GFX nad přímým esp_lcd RGB panelem s ručně psanou inicializační sekvencí. Pozor, chcete knihovnu „GFX Library for Arduino“ od moononournation – ne Adafruit GFX.

A ještě jedna, méně zjevná: kreslení přímo do panelu způsobí, že displej při každém překreslení bliká. Celý snímek se místo toho skládá do off-screen canvasu v PSRAM a posílá ven jediným flush().

Zprovoznění

Nahrajte firmware a zařízení vytvoří otevřenou WiFi síť PlaneRadar-Setup a zobrazí na displeji QR kód. Naskenujte ho mobilem, vyberte svou domácí síť, uložte.

Polohu zadávat nemusíte – detekuje se z IP adresy. Když ji zadáte ručně, ta má vždycky přednost.

Odkud data pocházejí

DataZdrojPoznámka
Letadlaadsb.fiZdarma, bez API klíče, osobní použití
Polohaip-api.comAutomatická detekce podle IP
HraniceNatural Earth 1:10mPublic domain
MěstaGeoNamesCC BY 4.0, populace 50 000+

Vlastní ADS-B přijímač nepotřebujete. adsb.fi agreguje data z tisíců dobrovolnických přijímačů a je zdarma bez registrace – ale uveďte ho, když ho použijete, a počítejte s tím, že bezplatné API je určené pro osobní, nekomerční použití. GeoNames je pod CC BY, což znamená, že uvedení zdroje je licenční podmínka, ne zdvořilost.

Co mě inspirovalo

Tohle nevzniklo z ničeho. Staví to na dvou už existujících projektech:

Kód

Kód je k dispozici na GitHubu: github.com/petus/EuropeanPlaneRadar

Licence MIT. Použijte to, změňte to, prodejte to.

Nad rámec licence jedna prosba: pokud na tom budete stavět, nechte na obrazovce nastavení řádek chiptron.cz ve stejné velikosti a barvě. Nic vás to nestojí a pro mě to něco znamená. Je to prosba, ne podmínka – licence platí v plném rozsahu tak jako tak.

Když z toho postavíte něco zajímavého, rád se o tom dozvím.

Tento projekt vznikl díky existujícím projektům (viz výše) a Claude AI.

Ptáte se

Potřebuju vlastní ADS-B přijímač?

Ne. Data přicházejí z adsb.fi, který agreguje feedy z tisíců dobrovolnických přijímačů. Potřebujete WiFi a nic jiného.

Funguje to i mimo Česko?

Ano – o to jde u evropské mapy. Chová se stejně ve Varšavě, Lisabonu, Vídni, Praze i Londýně. Mapa pokrývá EU-27 plus Británii, Švýcarsko a Norsko.

Proč nevidím žádný obrys státu?

Pravděpodobně jste hluboko ve vnitrozemí. Praha například leží zhruba 84 km od nejbližší hranice, takže v rozsazích 10, 25 a 50 km opravdu žádná hranice uvnitř kruhu radaru není. Přepněte na 100 km a objeví se. Možná.

Displej je černý. Co jsem udělal špatně?

Skoro určitě PSRAM. Musí být v Tools nastavená na OPI PSRAM. Tohle stojí za většinou hlášených problémů.

Proč jsou některá letadla kreslená jako kolečka místo šipek?

Protože nehlásí traťový kurz. Místo vymýšlení kurzu radar nakreslí kolečko – poloha je známá, směr ne.

Proč jsou některá letadla šedá?

Nehlásí výšku. Obarvit je červeně by naznačovalo, že letí nízko, což data nepodporují.

Můžu zobrazit jen některá letadla?

Zatím ne, ale přidat to je přímočaré – data už nesou výšku, volací znak, typ i rychlost, takže filtrování na kterémkoliv z nich je malá změna. Nepříjemná část není filtr, ale rozhraní: zařízení nemá klávesnici, takže jakýkoliv filtr, který byste reálně napsali, by se musel zadat přes WiFi portál z mobilu.

Kolik flash zabere evropská mapa?

Zhruba 170 kB, tedy asi 5 % APP partition. Souřadnice jsou uložené jako celá čísla v pevné řádové čárce místo floatů, což je úspornější pro paměť.

Kdy bude verze s meteoradarem ČHMÚ?

Pracuji na ní. Meteo-PlaneRadar zkombinuje srážkový radar ČHMÚ a radar letadel na jednom zařízení, ale zatím je ve vývoji. European Plane Radar popsaný v tomhle článku je samostatný projekt, který je hotový a funkční.
Sdílejte článek:
Ukaž světu,
že jsi Maker!
Koupit tričko
Kafe pro Chiptrona
Dodej energii dalšímu článku

Související články

Letadla, rádio, vysílačky nebo třeba satelity – to vše zachytíte pomocí levného RTL-SDR dongle za pár stovek korun. V tomto praktickém tutoriálu ukážu, jak jej rozjedete na Ubuntu/Debian Linuxu krok za krokem. Žádné složité závislosti, jen terminál a pár příkazů.​ Přidám i návod na…

V supermarketech jsou už Vánoce v plném proudu, je tedy nejvyšší čas sepsat článek plný tipů, co by si kutil/ka, bastlíř/ka a 3D tiskař/ka mohli přát pod vánoční stromeček. Sepsal jsem zajímavé nářadí a věci, které se jim mohou hodit.…

Tento článek vznikl jako reakce na dlouholetou diskuzi 3D tiskařů – čím ochránit majetek a samozřejmě i zdraví v případě, když se zařízení samovolně vznítí? Jaká jsou práva spotřebitelů při nákupu produktu v České republice a z Asie? Samozřejmě se…

Používání AI při bastlení už není sci-fi. Stává se z něj běžný nástroj – podobně jako datasheet, osciloskop nebo Google. Rozdíl je ale v tom, že kvalita výsledku extrémně závisí na tom, jak AI zadáte úkol. Dobře napsaný prompt vám…

Firmware 3.0 Živý Obraz

Projekt Živý Obraz má jeden velký update za druhým. Autor stále přidává nové widgety, vychytávky, rozšiřuje možnosti projektu. Nyní se dostala i velká aktualizace samotného firmware, kódu běžícího na řídících deskách od Laskakit, Pájeníčko, SeeedStudio a dalších. Tento firmware se…

Detekce předmětů, zvířat nebo osob. To lze dnes jednoduše zvládnout díky AI. Michal Ševčík napsal tento článek pro svůj projekt OnlyBirds – detekce ptáků. Stejné znalosti ale jde využít na detekci jiných zvířat či předmětů. Tady se dozvíte, jak na…

Trendy