Ambianceur

de babyfoot

 

 

 

 

Salut à tous, vous avez un babyfoot, vous voulez l'animer pour vos soirées entre potes?  C'est ici qu'il faut vous arrêter.

Je vous présente la réalisation d'un ambianceur de babyfoot. Il pilote deux rubans néo pixel, une matrice led 64x32, une carte son et gère totalement la partie.

Grâce à lui vous pourrez créer une ambiance de jeux digne du stade de France.

Les capacités de cet objet sont presque infinies. A la fin de cet article j'ai fait un tuto qui vous permettra de le personnaliser. Je compte sur vous pour partager vos réalisations et enrichir les animations disponibles.

Comme pour tous les objets que je présente, je peux vous réaliser un ambianceur, n'hésitez pas à m'en faire la demande.

Les codes, schémas et autres fichiers de conceptions sont disponibles sur mon compte Github.

Je vous laisse découvrir ses capacités dans cette courte vidéo.

 

 

 

Sommaire

 

 

Le Matériel nécessaire pour réaliser l'ambianceur de babyfoot

 

L'ambianceur a besoin de beaucoup de ressources, effectivement la matrice led et les rubans Néo Pixels demandent sont très gourmant en mémoire. De plus l'ambianceur est équipé de 4 capteurs et de trois touches tactiles. C'est pour cela que j'ai choisi un esp32 pour piloter l'ensemble. J'en utilise toute sa capacité.

J'ai réalisé une petite vidéo du matériel utilisé.

 

 

 

 

arduino mega   tft 2 8 240 320
Pour piloter cet objet j'ai utilisé un uPesy , il est basé sur un ESP32. Ca puissance va nous permettre de contrôler L'ensemble des composants qui équipent notre ambianceur.

 

Comme afficheur, j'ai choisi une matrice LED 64x32 au pas de 3 MM. Elle va nous permettre d'avoir un affichage lumineux très dynamique. Il est possible de l'interfacer directement au uPesy.

NRF24L01   ESP8266 serial
Deux rubans LED néo pixel permettent d'ambiancer la lumière du babyfoot. Chaque ruban comporte 120 Led et mesure 2 mètres. Ce sont des rubans 12 volts, le courant absorbé est moins important que pour les rubans 5 volts.  En contre partie les LED fonctionnent par trois.  Un module Dfplayer permet de lire des fichiers MP3 afin de donner plus de vie à l'ensemble en lancçant des animations sonore de qualité.
Alimentation 800ma resistor 4.7K 
Une alimentation de 12 volts 10 ampères permet d'alimenter l'ensemble de l'installation. Deux résistances de 330 ohms sont connectées sur le circuit de pilotage  des rubans LED.
 power switch Bornier 
Un fusible de 5 ampères temporisé permet de protéger l'installation 5 Volts .  Nous avons aussi besoin de borniers, 4x2 au pas de 5,08 mm et 10x2 au pas de 3,81 mm.
broche 254 porte fusible 
3 Broches cassables droites au pas de 2,54 mm et 18 broches cassables coudées. Un porte fusible 5x20 mm destiné à protéger le circuit 12 volts. On y mettra un fusible de 10 Amp. 
convertisseur DC DC 4011
Un convertisseur DC/DC permet de convertir le 12 volts en 5 volts pour alimenter le processeur et la matrice LED. Le convertisseur est capable de fournir 5 ampères.  Trois portes 4011 permettent de créer des bascules RS afin de mémoriser les événements de courtes durées. ils me servent aussi de buffer pour mettre à niveau les signaux des capteurs qui fonctionnent en 5 volts.
connecteur capteur infra 
Connecteur d'alimentation, permet de brancher l'alimentation 12 volts. Deux capteurs infrarouges, de type suiveur, ils détectent le passage de balles pour valider les buts. Leur détection est limité et ils sont sensibles à la lumière du jour, il faudra donc détecter les balles dans une goulotte.
capteur choc DC3 16P 
Deux capteurs de chocs de type Piezo permettent de détecter les gamelles. Ces capteurs sont encore à l'essai, leur sensibilité peuvent générer des événements qui ne sont pas des gamelles. Peut être que le plus sage serait de les remplacer par des boutons . Un connecteur DC3 16 pôles qui permet de connecter l'écran à la carte principale. Généralement un câble plat est fournit avec l'écran.

 

 

 

Les cartes de l'ambianceur.

 

L'ambianceur est doté de deux cartes, cela permet de cacher plus facilement le câblage des capteurs et de n'avoir qu'un seul câble entre l'écran et la carte de connexions. Cette dernière pourra être facilement dissimulée dans le caisson du babyfoot.

La carte de connexion sert avant tout à relier les capteurs, elle est aussi équipée du lecteur MP3. Là aussi cela permettra de cacher le système d'amplification dans le caisson du baby foot. C'est une carte simple face, les schémas et PCB ont été réalisés grâce au logiciel Kicad, les fichiers sont tenus à jour sur mon compte Github.

pcb low


 

La seconde carte est beaucoup plus complexe, elle se fixe à l'arrière de l'écran. Elle est réalisée en double face. La gravure est fine et demande beaucoup d'attention.Pour réaliser la gravure j'ai utilisé une fraise javelot avec un angle de 20°.

Les soudures sont difficiles à réaliser, il m'a fallut utiliser du flux pour m'aider, en particulier avec les soudures du dessus. La carte est tropicalisée avec un verni translucide..

Aussi, volontairement j'ai inversé deux borniers pour faciliter le câblage. 

 

 

Drawing home controller

 

card on screen connected

 

 

 

 

 

 

Le boîtier et ses accessoires

 

Le boitier est réalisé en PLA, je réalise les modélisations avec le logiciel FreeCad. Le boîtier de l'écran d'affichage est volumineux, comptez 18 à 20 heures d'impression en résolution 0,2 mm. Prêtez attention aux ouïs de ventilation, il faut les laisser dégager afin d'évacuer la chaleur de l'écran et celle du convertisseur DC/DC. Le support d'écran est prévu pour être clipsé sur l'un des buts du baby foot. Les passages de câbles sont intégrés au support.

 

box screen

 

Un support minimaliste permet de fixer la carte de connexion. Elle sera cachée dans le caisson, Elle laisse un accès facile aux connexions.

 

support remote 

 

 

 

Le mode d'emploi

 

1-Fonctionnement:

Les boutons de commandes:

Il y a trois boutons sensitifs sur le haut de l'afficheur UP, OK et DOWN.

bouton

La mise en route:

-Une fois l'alimentation connectée  une animation d'attente est activée.

ecran attente

-Un premier appui sur OK lance une animation suivit d'un écran qui permet de choisir le terrain. 

ecran choix coté

-Choisissez le terrain avec les boutons UP ou DOWN, validez votre choix avec l'aide du bouton OK. La partie commence, l'écran des scores apparait, sur cet écran on peut y lire le score, le nombre des balles restantes et la durée de la partie.

ecran score

 

- Si un but est marqué le score est automatiquement incrémenté, une animation est lancée et le compteur de balle est décrémenté. Lorsque le dernier but est entré, une animation célébrant la victoire du joueur est lancée, suivit d'un écran de fin. Pour relancer une partie il suffit d'appuyer sur le bouton OK.

ecran fin

 

- Il est possible de corriger le score pendant la partie. Pour cela il faut appuyer sur le bouton OK, choisir le joueur avec le bouton UP ou DOWN. On valide le choix en appuyant une nouvelle fois sur le bouton OK. On peut maintenant changer le score avec les boutons UP et DOWN  suivit de OK pour valider la correction. 

 

ecran changement score

 

- Il est aussi possible d'engager des demis, pour cela il suffit d'appuyer sur les boutons UP et DOWN simultanément. Le dernier but sera décompté puis remis en jeu. Il est possible de faire plusieurs demis de suite, les buts seront remis en jeux. Les buts remis en jeu sont indiqués en rouge à la place du temps de match.

ecran demi

 

 

2-Interface WEB: 

Il est possible de ce connecter sur l'ambianceur de babyfoot via une page web. Cette page permet de régler la luminosité de l'écran et des rubans LED. Il est aussi possible de régler le volume sonore, les réglages sont enregistrés. La page permet aussi de mettre à jour le programme. Pour accéder à cette page il faut paramétrer l'ambianceur afin qu'il puisse se connecter à votre réseau wifi.

A la mise en route l'ambianceur va tenter de se connecter au réseau wifi, s'il n'y arrive pas il va ouvrir un portail d'accès. Dans ce cas  connectez vous au SSID Innogreentech, puis informez les informations de connexion à votre réseau en allant sur la page http://192.168.4.1/index.html. Avant de valider pensez à noter l'adresse MAC de l'appareil, cela pourrait vous aider à le retrouver. Une fois validé l'ambianceur redémarre et se connecte à votre réseau wifi.

 

SSID InnoGreenTech set wifi

 

Maintenant vous devriez pouvoir accéder à la page web de l'ambianceur de babyfoot, en tapant sur votre navigateur  l'adresse http://babyfoot.local . A noter que parfois la découverte du nom peut prendre un peu de temps et que cela ne fonctionne pas sur un appareil mobil. 

 

inter servo controller

 

3 Mise à jour du programme:

Depuis l'interface Web il est possible de mettre à jour le programme.

Pour cela il faut sélectionner le menu update, un authentification vous sera demandée, informez "admin" 'admin" pour vous connecter. Un formulaire vous permettra de sélectionner un fichier de mise à jour (xxxx.bin, nous verrons plus loin comment le générer), puis de l'envoyer à l'ambianceur de babyfoot. Une fois à jour le programme redémarre.

 

login update form update

 

 

 4-Créer une animation:

Si vous voulez personnaliser  votre baby, il va vous falloir réaliser de nouvelles animations.

Les animations sont basées sur des fichiers gif de 32x64 en couleurs 12 bits. Elles sont ensuite converties en tableaux C++ pour pouvoir être lu par le programme. Je vais vous présentez une méthode et les outils que j'utilise pour créer les animations.

Pour les réaliser j'utilise un logiciel pixel art open source, Piskel. Il va nous permettre d'importer des GIF ou de créer des animations de A à Z. 

 

Malheureusement Piskel travaille avec des couleurs 24 bits, convertir ces couleurs peuvent amener à des pertes importantes. Donc pour ne pas être déçu du résultat je vous conseille de réaliser vos animations en couleurs 12 Bits. Pour cela il faut que le code couleur hexadécimal 24 bits, ai un code qui fonctionne par paire, exp:Hffcc33. Pour vous aider il est possible d'importer des palettes de couleurs, l'image qui suit  ne contient que des couleurs 12 bits vous pourrez facilement créer une palette avec.

 

Palette import palette

 

Une fois votre animation réalisée, exportez la vers un format C file. Vous obtiendrez un tableau avec des couleurs 24 bits, elles sont enregistrées sur un mot de 32 Bits.

 

c file color 24 bits

 

Une fois cela fait, nous allons maintenant convertir le fichier en couleur 12 bits. Pour vous y aidez j'ai réalisé un utilitaire que vous trouverez ici, Il suffit de choisir le fichier à convertir puis de l'envoyer, un fichier converti sera renvoyé. Il faut ensuite l'enregistrer sous le répertoire "animations" du programme. Les couleurs sont maintenant enregistrées dans des mots de 16 bits ce qui réduit la taille du fichier par deux.

 

convert color c 12bits

 

 

4-Gérer et intégrer les animations dans le programme:

Vous trouverez le programme du babyfoot sur mon compte Github. Pour l'ouvrir vous pouvez télécharger et installer l'IDE Arduino.  Dans l'IDE il faut ensuite copier ce texte dans les paramètres.

"http://arduino.esp8266.com/stable/package_esp8266com_index.json,

https://dl.espressif.com/dl/package_esp32_index.json,

https://zevero.github.io/avr_boot/package_zevero_avr_boot_index.json"

Cela vous permettra d'accéder à de multiples cartes  dont l'esp32. Ensuite il faut installer les carte ESP 32 depuis le Boards Manager. Votre IDE est prêt. 

 

Préferences arduino Acces board manager board manager

 

Après avoir téléchargé le programme depuis mon compte Github vous allez pouvoir l'ouvrir en  cliquant sur l'un des fichiers, le programme s'affiche sous forme de plusieurs onglets.  

 

download software onglets

 

Dans un premier temps nous allons nous rendre dans l'onglet "read_gif_file" , c'est ici que nous allons déclarer l'animation que nous venons de créer. Pour cela il faut indiquer le chemin d'accès au fichier C de l'animation. 

#include "animations/nom_du_fichier.c"

 Une fois cela fait nous allons mettre en forme ce morceaux code en suivant les instructions en commentaire puis le coller à la fin du l'onglet. 

/*
 * Nom de l'animation
 */

int nom_fonction(unsigned long speed_frame){ // Informez ici le nom de la fonction que vous souhaitez créer
  
/* Read matrix picture */

if (frame== 0 or (last_frame + speed_frame)< millis()){   
  for(int y=0; y<32; y++){ 
  
              for (int x=0; x<64; x++){
                int pix= y*64+x;
                unsigned int color= nom_data[frame][pix];  // Mettre à jour le nom du tableau de donner, il faut utiliser le nom utiliser dans le fichier de l'animation ligne 9 
                //Serial.println(color,HEX);
                matrix.drawPixel(x, y,color);
                uint32_t color_32 = convert_16bit_color(color);  
                edge_color(x,y,color_32);                                     // anime les rubans LED
                 
                }
   }
   last_frame=millis();
   frame++;
   strip1.show();
   strip2.show();
}
if (frame>=NOM_FRAME_COUNT){if(!bitRead(statut_animation,LOOP)){bitSet(statut_animation,FINISH);}frame=0;}  // Mettre à jour le nom du NOM_FRAME_COUNT qui ce trouve ligne 3 du fichier d'animation.

}

 Il est maintenant possible, d'accéder à l'animation. Pensez à supprimer les animations que vous n'utilisez plus, cela libéra de la place mémoire. Maintenant rendons nous  sous l'onglet Animations. C'est ici que vous allez pouvoir activer les animations en fonction des événements. En faisant défiler le fichier, les commentaires vous aideront à savoir sur quel événement vous aller travailler. Il suffit de suivre les exemples pour intégrer votre travail. DFPlayer.play(x) vous permet de lancer une piste audio, appelez l'animation que vous souhaitez lancer en suivant cette syntaxe nom_animation(speed), speed étant la durée en millisecondes entre chaque image cela vous permet de changer la vitesse d'execution de l'animation.

void gamelle_animation(){
    if(frame==1){DFPlayer.play(4);}
    read_time(100);
  
 }

 /*
  *  Animation sur un but
  */
  
void but_animation(){
    if(frame==1){DFPlayer.play(3);}
    read_goal(100);  
}

 

Lorsque vous avez terminé vos animations, il faut compiler votre programme. Dans un premier temps sélectionnez la carte ESP32 WROWER dans l'onglet tool et choisissez la partition minimal SPIFF, elle va vous permettre de mettre à jour le programme à distance. Si vous souhaitez avoir plus de capacité mémoire, vous pouvez utiliser la configuration HUGE APP, mais cette configuration ne permet pas une mise à jour à distance.  Puis rendez-vous sur l'onglet Sketch est cliquez sur Export Compiled Binary. Un fichier .Bin sera créé là où ce trouve votre programme. Maintenant je vous renvoies au début de l'article pour accéder à l'interface WEB de l'ambianceur afin de faire une mise à jour de votre contrôleur de babyfoot.

 

tool choice Afficheur
export binary

 

 

J'espère que cet article vous permettra de prendre en main facilement cet ambianceur, et je compte sur vous pour le commenter et le partager. C'est vraiment un bel objet.

Keep contact like and share

 

 

 

Veuillez vous connecter ou créer un compte pour pouvoir poster un commentaire.