Tableau d'affichage NHL en temps réel utilisant un ESP32-S3 et un panneau LED matriciel Hub75 32x64. Affiche les scores en direct, les équipes, et des animations de but.
- Scores en direct : Récupération des matchs NHL via l'API NHL
- Matchs internationaux : Support des équipes nationales (Jeux Olympiques, Coupes du Monde)
- Affichage dynamique : Panneau Hub75 32x64 avec logos d'équipes 20x20
- Animations de but : Scène animée déclenchée lors d'un but
- API Web : Interface REST pour contrôler l'affichage
- Interface Web : Page HTML pour sélectionner les matchs
- mDNS : Accès via
http://scoreboardapp.local
- ESP32-S3 (Freenove ESP32-S3 WROOM)
- Panneau Hub75 32x64 RGB LED Matrix
- Alimentation 5V pour le panneau LED
git clone <votre-repo>
cd ScoreboardCe projet utilise PlatformIO. Installez-le via VS Code ou CLI :
pip install platformioCopiez le template de secrets et ajoutez vos credentials WiFi :
cp include/secrets.h.template include/secrets.hÉditez include/secrets.h :
#define WIFI_SSID_SECRET "votre_ssid"
#define WIFI_PASS_SECRET "votre_mot_de_passe"Le dossier data/ contient les logos d'équipes et l'interface web. Uploadez-le sur le LittleFS :
pio run --target uploadfspio run --target uploadpio device monitorUne fois connecté, accédez à l'interface via :
- mDNS :
http://scoreboardapp.local - IP directe : Vérifiez l'IP dans le moniteur série
| Méthode | Endpoint | Description |
|---|---|---|
GET |
/schedule |
Liste des matchs du jour |
POST |
/select-game |
Sélectionner un match (JSON: {"gameId": 123456}) |
GET |
/current-game |
Match actuellement affiché |
POST |
/display/on |
Activer l'affichage |
POST |
/display/off |
Désactiver l'affichage |
POST |
/preview-goal |
Déclencher l'animation de but (test) |
├── data/ # Fichiers système (LittleFS)
│ ├── index.html # Interface web
│ └── logos/ # Logos NHL en RGB565 (20x20)
├── include/ # Headers
│ ├── api_server.h # Serveur API REST
│ ├── schedule_service.h # Service récupération matchs
│ ├── playbyplay_service.h # Service play-by-play
│ ├── secrets.h.template # Template credentials WiFi
│ └── display/ # Système d'affichage
│ ├── display_manager.h
│ ├── scoreboard_scene.h
│ ├── goal_scene.h
│ ├── animator.h
│ └── logo_cache.h
├── src/ # Code source
│ ├── main.cpp # Point d'entrée
│ ├── api_server.cpp
│ ├── schedule_service.cpp
│ ├── playbyplay_service.cpp
│ └── display/ # Implémentations affichage
├── tools/
│ └── logo_builder/ # Scripts Python génération logos
└── platformio.ini # Configuration PlatformIO
Génère les logos NHL et internationaux au format RGB565 pour le panneau Hub75.
Documentation complète : tools/logo_builder/README.md
Logos NHL :
cd tools/logo_builder
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python build_logos.pyLogos Internationaux (Jeux Olympiques, Coupes du Monde) :
cd tools/logo_builder
python build_international_logos.pyLes deux scripts copient automatiquement les logos générés vers data/logos/.
Équipes internationales supportées : CAN, USA, FIN, SWE, CZE, RUS, SVK, SUI, GER, ITA, LAT, DEN, NOR, AUT, FRA
- Vérifiez les connexions Hub75
- Vérifiez l'alimentation 5V du panneau
- Consultez
include/display/hub75_pins.hpour la configuration des pins
- Vérifiez
include/secrets.h - Vérifiez le moniteur série pour les erreurs
- Assurez-vous que le réseau WiFi est en 2.4GHz (pas 5GHz)
- Uploadez le système de fichiers :
pio run --target uploadfs - Assurez-vous que
board_build.filesystem = littlefsest dansplatformio.ini
- Accédez directement via l'IP affichée dans le moniteur série
- Sous Windows, installez Bonjour (ou iTunes)
- Sous Linux, installez
avahi-daemon
Les bibliothèques sont gérées automatiquement par PlatformIO :
- ArduinoJson (^7.0.0) : Parsing JSON
- ESP32-HUB75-MatrixPanel-DMA : Pilote Hub75
- Adafruit GFX Library : Primitives graphiques
Ce projet est fourni tel quel pour usage personnel et éducatif.
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
Fait avec ❤️ pour les fans de hockey 🏒