Ambilight
- Rôle : Projet Personnel (R&D & Side-Project)
- Période : 2024
- Stack :
Python•Traitement d'image•Réseau UDP•Linux•Raspberry Pi•Bandeau LED WS2812
Vue d'ensemble du projet
Ce projet est une expérimentation visant à concevoir un système d'éclairage immersif ("Ambilight") sur-mesure pour un setup de travail et de divertissement. L'objectif technique était de construire une pipeline en Python capable de capturer le contenu de l'écran principal, d'analyser les bordures d'image en temps réel et d'en déduire les couleurs dominantes pour piloter un bandeau LED adressable (WS2812) relié à un Raspberry Pi.
Ce projet perso m'a permis de me challenger sur des problématiques d'ingénierie système précises : le traitement d'image à bas budget CPU, la gestion de la latence de capture et l'optimisation du transport réseau en flux continu.
Architecture & Défis d'Ingénierie
1. Pipeline de traitement d'image & Budget temps réel
Pour que l'immersion soit crédible, le délai entre l'affichage d'un frame à l'écran et l'allumage des LED correspondantes doit être imperceptible. L'enjeu principal en Python était de maîtriser le budget CPU pour éviter tout ralentissement de la machine hôte.
- Capture & Downsampling : Échantillonnage continu du flux vidéo et découpage de l'image en zones géométriques alignées sur la disposition physique du bandeau LED.
- Extraction & Lissage des couleurs : Traitement matriciel sur chaque zone pour extraire la couleur moyenne/dominante. Un filtrage temporel (smoothing) a été intégré pour éliminer le scintillement (flicker) sur les changements de scène rapides, maintenant un équilibre entre réactivité et stabilité visuelle.
2. Transport UDP & Communication embarquée
- Protocole de diffusion : Choix d'un transport via datagrammes UDP de l'hôte vers le Raspberry Pi. La faible surcharge d'UDP et l'absence de mécanisme de réémission en font le protocole idéal pour du streaming de frames d'éclairage (où la fraîcheur de la donnée prime sur la livraison garantie).
- Format de payload & Réception : Sérialisation d'un paquet binaire compact contenant la matrice de couleurs RGB. Côté Raspberry Pi, un service léger réceptionne le flux et le traduit immédiatement en signaux pour le contrôleur du bandeau WS2812.
Réalisations & Acquis Techniques
- Ingénierie temps réel : Moteur de capture et de traitement conçu avec une fréquence de rafraîchissement stable et une charge CPU contenue.
- Système hybride Software / Embedded : Orchestration complète de la chaîne, depuis la capture vidéo applicative sur PC jusqu'au rendu physique sur matériel embarqué via le réseau local.
- Arbitrage technique : Gestion fine des compromis entre taux de rafraîchissement (FPS), lissage visuel pour l'œil humain et tolérance aux pertes de paquets UDP.

