Panneau D'affichage LNH Mis À Jour En Temps Réel

by simon.sthilaire in Circuits > Gadgets

434 Views, 2 Favorites, 0 Comments

Panneau D'affichage LNH Mis À Jour En Temps Réel

DSCF9863.JPG

Que vous soyez fan de hockey ou non, avoir un panneau d'affichage qui se met à jour en temps réel est une attraction en soit. Ça peu aussi faire un beau cadeau pour quelqu'un qui ne manque aucun match!

Le principe est de sélectionner notre équipe préférée et pour le match en cours, afficher la période, le pointage de votre équipe préférée et celui de l'autre équipe. J'utilise un délais de rafraichissement de 1 secondes mais vous pouvez le modifier à votre guise.

Lorsqu'il n'y a pas de partie en cours, une petite animation d'horloge remplace la période et les pointages sont remplacés par le temps restant avant la prochaine partie en heures-minutes.

Le panneau est connecté à a la source officielle de la LNH par internet sur votre WiFi.

Je dois indiquer un niveau de difficulté élevé car même si la construction et simple et le code je vous l'offre, il faudra configurer une serverless application sur Amazon (je vous expliquerai) et qu'un peu de soudure est requise. Il faut également configurer votre microcontrolleur dans l'IDE et ajouter certaines librairies.

Vous trouverez des tutoriels pour fabriquer un panneau du genre sur Raspberry PI mais je trouvais le projet un peu cher pour un cadeau ou pour en produire plusieurs et en plus, ça demande un écran. Le petit côté défi était aussi très intéressant.

Supplies

- un compte AWS

- le logiciel Arduino IDE

- un module esp32. J'utilise celui-ci mais un différent fera l'affaire

- un fil usb avec conecteur micro (qui se connecte au module esp32 pour le programmer et pour l'alimentation)

- 3 panneaux dels de 8x8

- des fils "jumper" Nous ne souderons pas les fils par simplicité mais il est possible de le faire pour un résultat plus solide et durable. Dans ce cas, vous pouvez oublier ces fils et effectuer le raccordement à votre gout.

- et un boîtier pour contenir le tout. Voici le modèle que j'utilise.

Facultatifs:

- un piezo pour jouer des sons:

- des pattes en caoutchouc pour le support du boîtier

- un interrupteur on-off (non-momentanné) pour pouvoir éteindre le son

Préparation Des Panneaux Dels

20210113_131746.jpg
20210111_184208.jpg

Avant de connecter toutes les pièces ensemble, il faudra configurer physiquement les panneaux DEL. Comme on leur communique de l'information par un seul port I2C, il faudra leur assigner une adresse unique et pour ce faire il faut souder les jumpers qui se trouvent à l'arrière. Pour ce projet, je n'ai rien soudé pour le panneau de la période, soudé le A0 pour mon équipe (MTL!) et soudé A1 pour l'adversaire (voir image). Si vous utilisez d'autres addresses, il faudra simplement les modifier le code également. Tout ce que qu'il y a à savoir sur ces jumpers se trouve ici. *Notez que peu importe ce que vous lirez, le jumper A1 n'ajoute pas 2 comme il le devrait mais sa valeur semble inversée avec le A2. C'est pourquoi dans le code vous verrez que j'adresse 0x74 même si c'est le jumper A1 qui est soudé.

Assemblage

20210113_131506.jpg

Par soucis de simplicité pour le tutoriel j'utiliserai un breadoard pour effectuer les connections mais au final vous pouvez le faire de votre façon préférée: soudure, borniers, etc La version de base ne requiert que les 3 panneaux d'affichage. Il suffit donc de connecter ensemble:

- Les mises à la terre

- Les entrées 5v

- Les clocks (scl)

- Les data (sda)

puis de les raccorder au microcontrolleur. Sur le Esp32-Wroover module que j'utilise, le SCL est sur la broche 22 et le SDA sur la 21. Fie vous au diagramme du fabriquant pour identifier les 2 connecteurs I2C de votre module.

Le Code Esp32

Je vous fourni ici le code nécessaire. Vous devez configurer de votre module dans l'IDE. Vous devrez également ajouter des librairies :

Adafruit_GFX

Adafruit_LEDBackpack

possiblement une font Fonts/Picopixel)

Je n'entrerai pas ici dans les détails des configuration. Comme je le mentionnais, ce tutoriel est de niveau intermédiare alors il assume que vous pouvez faire tout cela.

Il y a au minimum 3 valeurs à modifier:

- La première est le endpoint aws. "const char* URL = ". J'en parlerai dans la prochaine étape.

- La seconde est le certificat de votre endpoint. Pareil pour ceci,

- Et l'équipe: const int TEAM = 8; //MTL = 8 Voir teamids.txt pour trouver la valeur de votre équipe préférée.

Downloads

Le Code Serveur

nhlserver.png

Le serveur de la LNH communique l'informations par fichiers json. Le fichier qui contient les données de parties devient vite énorme car il inclus absolumment toute l'info disponible: qui a gagné chaque mise-au-jeu, les arrêts de jeu, les mises en échec, etc Comme la mémoire est limitée sur notre petit microcontrolleur, il faut utiliser un proxy qui digérera l'information et nous retournera uniquement ce qui nous intéresse soit les buts et la période en cours.

Le code nécessaire se trouve ici:

https://github.com/SimonStHilaire/nhlservernode.gi...

Et une version utilisant les lambda d'AWS permettant de diminuer les coûts pour un serveur cloud:

https://github.com/SimonStHilaire/getScoreNHL

Il suffit de le déployer sur AWS (ou sur l'ordinateur de votre choix!) et de faire pointer l'URL du esp32 dessus. Si vous choisissez aws, vous devrez copier le certificat de sécurité de votre endpoint dans le code du esp32: il suffit de cliquer sur le petit cadedans dans votre navigateur pour l'afficher.

Construction

DSCF9864.JPG

À partir d'ici, vous êtes libres d'installer comme bon vous semble les composantes. J'ai choisi de les regrouper dans un boîtier de pvc pour avoir un fini solide mais vous pouvez laisser aller votre imagination.

Le Facultatif

DSCF0036_.JPG

Si vous le désirez, vous pouvez brancher un piezo. Vous n'avez qu'à consulter ou modifier le code pour la broche à utiliser. Vous pouvez également connecter un bouton pour permettre de reconfigurer le réseau facilement. Dans la première version j'ai également utilisé un interrupteur pour pouvoir éteindre le son lorsque la partie se joue dans l'ouest elle peut se terminer tard :)

Utilisation

Tant quil n'a pas été configuré, le panneau sera en mode "Configuration" au démarrage. Il crée alors un point d'accès mobile. Vous pouvez modifier son nom et mot de passe si vous le désirez. Il suffit de s'y connecter et de rejoindre l'adresse 192.168.1.4 pour lui fournir les accès de votre réseau WiFi. Ces informations sont sauvegardées donc il n'est pas nécessaire de recommencer à chaque mise hors tension. Pour les réinitialiser il suffit de mettre sous tension avec la broche de RESET_PIN avec une charge positive (d'où le bouton). Si vous n'avez pas besoin de tout ça, vous n'avez qu'à modifer le code à votre guise.

Conclusion

Le prochain développement sera sans doute de permettre à l'utilisateur de choisir et modifier son équipe. 2 petits boutons et un peu de code devraient faire l'affaire. Si vous avez des suggestions, n'hésitez surtout pas à me les partager.

Je suis conscient que ce tutoriel n'est pas simple mais je reste disponible pour combler les trous à mesure que je recevrai des questions ou commentaires.

Amusez-vous!