FlightDesk est un radar aérien personnel de bureau basé sur un écran tactile rond Waveshare ESP32-S3 Touch LCD 2.8C. L'objectif : visualiser les avions autour de chez soi en temps réel, sélectionner un vol au toucher, écouter des annonces vocales et poser des questions à un assistant vocal Gemini intégré.
État actuel : prototype live utilisable. Le simulateur web sert à itérer l'interface, et une cible autonome Xiaozhi Ball V2 rend maintenant le radar directement sur l'ESP32-S3 sans dépendre de Home Assistant ni de la gateway FlightDesk.
- Radar vert animé inspiré d'un scope aérien compact.
- Suivi des avions proches via données ADS-B récupérées par Internet, avec rayon 20 / 50 / 100 / 250 km.
- Sélection tactile d'un avion pour afficher indicatif, compagnie, distance, altitude, vitesse et direction.
- Favoris pour mettre certains vols en avant.
- Assistant vocal Gemini pour interroger les avions visibles.
- Annonces vocales via micro I2S INMP441, ampli MAX98357A et haut-parleur.
- Réglages embarqués : code postal, position maison, rayon, intensité radar, mode nuit, volume, muet, langue, Wi-Fi et OTA.
- Xiaozhi Ball V2 pour la preview ronde ESPHome actuelle.
- Waveshare ESP32-S3 Touch LCD 2.8C.
- Microphone I2S INMP441.
- Amplificateur audio I2S MAX98357A.
- Haut-parleur 40 mm, 4 Ω / 3 W.
- Fournisseur de données trafic via Internet.
- Boîtier imprimé en 3D.
- Alimentation USB-C 5 V / 2 A.
Le firmware autonome est dans
firmware/standalone-xiaozhi-v2.
Il se connecte directement au Wi-Fi, récupère le trafic Internet via
Airplanes.live, dessine le radar localement sur le GC9A01A, gère le tactile
CST816 et peut appeler Gemini directement quand une clé est configurée dans
include/secrets.h.
La carte embarquée est pour l'instant un filigrane local stylisé. Les tuiles OpenStreetMap et les photos avion restent dans le simulateur web, car leur cache/décodage doit être traité proprement sur ESP32 avant d'être fiable.
L'ancienne preview matérielle ESPHome est documentée ici : docs/XIAOZHI_BALL_V2.md.
Elle utilise une config ESPHome publique et nettoyée :
firmware/esphome/xiaozhi-ball-v2.
Le principe historique est volontairement simple :
- le serveur FlightDesk rend
/api/esp32/radar.pngen 240 × 240 ; - la Ball télécharge l'image toutes les 30 s ;
- la Ball dessine localement le balayage toutes les 100 ms ;
- les touches sont envoyées à
/api/esp32/action.
- Installer VS Code et PlatformIO.
- Ouvrir le dossier
firmware. - Copier
include/secrets.example.hversinclude/secrets.h. - Renseigner les secrets localement, sans les publier.
- Compiler l'environnement
flightdesk. - Avant le premier flash réel, reporter dans
include/board_pins.hles broches de l'exemple officiel Waveshare correspondant exactement à la révision reçue.
Un simulateur web permet de travailler l'interface avant réception du matériel :
cd simulator
python3 server.pyPuis ouvrir http://127.0.0.1:4173/live.
Le simulateur couvre déjà le radar animé, une vraie carte OpenStreetMap en filigrane vert, le trafic live via Airplanes.live avec fallback OpenSky, la sélection d'un vol, les favoris, le code postal, les réglages principaux et une réponse IA contextuelle sur le trafic.
Si OpenSky est indisponible ou limité, la preview repasse automatiquement sur des vols de démonstration animés.
La preview locale proxifie les données trafic, les tuiles OpenStreetMap et les
images avion via le serveur simulator/server.py, afin d'éviter les blocages
CORS ou les restrictions du navigateur mobile.
Pour activer Gemini côté serveur, définir une clé avant de lancer le simulateur :
cp simulator/.env.example simulator/.env
# renseigner GEMINI_API_KEY dans simulator/.env
python3 simulator/server.pySans clé, FlightDesk garde un mode IA local qui résume les vols visibles sans appel externe.
Un kit de publication est disponible dans docs/social/PROMOTION.md avec une description GitHub, des topics et des textes courts pour réseaux sociaux/forums.
FlightDesk/
├── docs/
│ ├── assets/
│ ├── ARCHITECTURE.md
│ └── ROADMAP.md
├── enclosure/
├── firmware/
│ ├── esphome/
│ ├── include/
│ ├── src/
│ └── platformio.ini
├── hardware/
├── simulator/
├── LICENSE
└── README.md
v0.1: architecture PlatformIO, modèle avion, radar simulé, réglages.v0.2: simulateur web, intégration écran Waveshare, LVGL et tactile.v0.3: Wi-Fi, position maison, fournisseur Internet et cache réseau.v0.4: pipeline audio INMP441 / MAX98357A.v0.5: Gemini, transcription, réponses vocales et contexte avions.v1.0: OTA, boîtier imprimé, guide de montage et release publique.
La roadmap détaillée est dans docs/ROADMAP.md.
Ne jamais publier une clé Gemini, Wi-Fi ou fournisseur trafic dans GitHub.
firmware/include/secrets.h est ignoré par Git. Seul
firmware/include/secrets.example.h doit rester versionné.
MIT
