Table des matières:

CheminElectrique (jeu d'adresse) - SRO2002 : 9 étapes
CheminElectrique (jeu d'adresse) - SRO2002 : 9 étapes

Vidéo: CheminElectrique (jeu d'adresse) - SRO2002 : 9 étapes

Vidéo: CheminElectrique (jeu d'adresse) - SRO2002 : 9 étapes
Vidéo: 9 Exercices Pour le Cerveau Qui Renforceront Ton Intelligence 2024, Juillet
Anonim
CheminElectrique (Jeu d'adresse) - SRO2002
CheminElectrique (Jeu d'adresse) - SRO2002
CheminElectrique (Jeu d'adresse) - SRO2002
CheminElectrique (Jeu d'adresse) - SRO2002
CheminElectrique (Jeu d'adresse) - SRO2002
CheminElectrique (Jeu d'adresse) - SRO2002

Aujourd'hui je vous présente le making of d'un jeu que j'ai réalisé pour la fête de fin d'année scolaire de mon fils. En France on appelle ces fêtes "kermesses", je ne sais pas si elles existent dans d'autres pays et comment elles s'appellent…

Dans ces soirées il y a souvent les mêmes jeux, c'est ce que j'appellerais des jeux classiques, et cette année j'ai décidé de faire une version plus moderne d'un de ces jeux classiques: le "Chemin electrique" ou "Main chaude".

Le but du jeu est très simple, il y a un fil où passe un courant électrique, vous avez alors un "joystick" composé d'un cercle métallique à son extrémité qui passe autour du fil électrique et le but du jeu est de parcourir le fil d'un bout à l'autre sans le toucher sinon un voyant et/ou un son s'éteint et vous avez perdu.

Traditionnellement, il n'y a pas vraiment d'électronique pour créer ce jeu, une simple batterie 12V avec une ampoule et du fil électrique suffit mais j'ai eu quelques idées sympas pour rendre le jeu plus moderne.

Voyons donc ce que j'ai ajouté comme fonctionnalité !

Étape 1: Fonctionnalités

Comme je viens de le dire ce jeu allume simplement une lumière lorsque le joueur touche par mégarde le fil avec le "joystick", il arrive aussi assez souvent que le jeu produise un son lors du contact. Dans ma version du jeu il y aura au total 6 blocs de 4 leds (vert-jaune-jaune-rouge) qui s'allumeront simultanément, un buzzer qui produira un son et aussi un vibreur intégré à la manette qui s'activera lorsqu'il y a contact entre le fil électrique et le "joystick".

Les LED s'allumeront progressivement du vert au rouge en fonction de la durée du contact entre le fil et le contrôleur.

J'ai également ajouté une sélection du niveau de difficulté (facile-normal-difficile) ainsi que la possibilité d'activer/désactiver le vibreur et le son. Le volume sonore sera également réglable avec un potentiomètre.

Le choix de la difficulté est en fait simplement un délai plus ou moins long entre le moment où il y a un contact entre le fil et le joystick et le moment où le jeu commence à s'allumer/sonner/vibrer. Je fixe des temps prédéfinis par programmation, par exemple en mode facile le jeu attend 1 seconde avant de déclencher les avertissements, alors qu'en mode difficile les avertissements seront déclenchés immédiatement.

J'ai conçu le jeu pour qu'il soit facile à démonter, fiable et surtout qu'il ne présente aucun danger pour les enfants qui l'utiliseront. En effet puisque le fil électrique est traversé par un courant et qu'il est dénudé je devais m'assurer qu'il ne présente aucun danger pour les utilisateurs du jeu.

Étape 2: Avis de non-responsabilité et informations supplémentaires

Avis de non-responsabilité et informations supplémentaires
Avis de non-responsabilité et informations supplémentaires

Clause de non-responsabilité:

Le jeu sera alimenté par 4 piles de 1.5V, soit une tension totale de 6V, je limite également le courant qui traverse le fil à seulement quelques microampères. On est donc dans le domaine de la très basse tension de sécurité (TBTS) avec une valeur de courant extrêmement faible accessible à l'utilisateur.

Mais attention je précise bien qu'aucune valeur de courant électrique n'est anodine, un courant faible peut dans certains cas être dangereux pour la personne qui s'électrifie. J'ai fait beaucoup de recherches à ce sujet lors de la création de ce projet, et même s'il n'y a pas de consensus scientifique sur la valeur limite avant laquelle le courant n'a pas d'impact sur le corps humain le courant de quelques microampères qui traverse le câble électrique a très peu chance de blesser une personne.

Mais attention je ne pourrai être tenu responsable en cas d'accident ! Des précautions doivent toujours être prises lors de la manipulation de conducteurs électriques sous tension, même à des valeurs de courant très faibles. Je vous conseille vivement de vous informer le plus possible sur les risques de l'électricité et les bonnes précautions à prendre

De plus amples informations:

Ce projet fonctionne très bien et possède toutes les fonctionnalités que je voulais mais il a quelques défauts. Lorsque je crée un projet électronique j'essaie que tout soit le plus optimisé possible en termes de coût, de nombre de composants, d'espace, et surtout que le fonctionnement de l'ensemble soit le plus "logique" possible.

Pendant que je faisais ce projet et après l'avoir terminé, je pense qu'il y a des choix que j'ai faits qui ne sont pas les meilleurs mais j'étais pressé par le temps, je n'avais que 2 semaines pour tout faire à partir de zéro (conception, programmation, commande de composants, création du structure, et surtout l'assemblage de tous les éléments).

J'indiquerai au fur et à mesure des étapes de fabrication ce qui, selon moi, pourrait être optimisé si je devais recréer ce jeu. Mais je le répète le projet est assez fonctionnel comme ça, mais je suis perfectionniste…

Je regrette aussi de ne pas avoir pris plus de photos des différentes étapes du projet, mais j'ai préféré me consacrer le plus possible au projet afin de pouvoir le finir à temps.

Je suis content de ce projet car il a eu un grand succès lors de la fête de l'école de mon fils, alors voyons ce qu'il y a dans le ventre de la bête;)

Étape 3: Obligations

- Doit être alimenté par batterie (pour la sécurité et la mobilité) - Le jeu doit être sûr (il sera utilisé par des enfants de 2 à 10 ans)

- Des réglages doivent être disponibles (choix de l'activation du son/vibrateur, et choix de la difficulté)

- Les réglages doivent être simples à comprendre et facilement accessibles (il faut partir du principe que la personne qui s'occupera du jeu pendant la partie ne connaît rien en électronique/technique)

- Le son doit être suffisamment fort (le jeu sera utilisé à l'extérieur dans un environnement assez bruyant).

- Le système doit être démontable au maximum pour le stockage et les pièces physiques facilement remplaçables (joystick, fil électrique…)

- Doit être attrayant pour les enfants (c'est l'objectif principal pour lequel ils jouent…:))

Étape 4: Composants (BOM)

Pour le cas:- planche de bois

- La peinture

- quelques outils pour percer et couper….

Pour le "joystick":- 1 vibromasseur

- câble jack 3.5 (stéréo)

- connecteur jack 3.5 (stéréo)

- fil électrique 2.5mm²

- un petit tube PVC

Composants electroniques:

- 16F628A

- 12F675

- ULN2003A

- 2x2N2222A

- Diode Zener 2.7V

- 12 LED bleues

- 6 LED vertes

- 6 LED rouges

- 12 LED jaunes

- 5 résistances 10K

- 2 résistances 4.7K

- 1 résistance 470 ohm

- 6 résistances 2.2K

- 6 résistances 510 ohm

- 18 résistances 180 ohm

- 1 potentiomètre 1K

- 1 interrupteur ON-OFF

- 2 interrupteurs ON-OFF-ON

- 1 buzzer

- 1 convertisseur DC boost

- fil électrique 2.5mm²

- 2 connecteurs banane mâle

- 2 connecteurs banane femelle

- connecteur jack 3.5 (stéréo)

- support pour 4 piles LR6

- quelques cartes de prototypage PCB

Outils électroniques:- Un programmeur pour injecter le code dans un Microchip 16F628A et 12F675 (par exemple PICkit 2) -

Je vous conseille d'utiliser Microchip MPLAB IDE (freeware) si vous souhaitez modifier le code mais vous aurez également besoin du compilateur CCS (shareware). Vous pouvez également utiliser un autre compilateur mais vous aurez besoin de nombreux changements dans le programme.

Mais je vais vous fournir. HEX afin que vous puissiez les injecter directement dans les microcontrôleurs.

Étape 5: Analyse fonctionnelle

Analyse fonctionnelle
Analyse fonctionnelle
Analyse fonctionnelle
Analyse fonctionnelle

Microcontrôleur 16F628A (Func1): C'est le "cerveau" de tout le système, c'est ce composant qui détecte la position des interrupteurs de réglages, qui détecte s'il y a contact entre le "joystick" et le fil électrique, et qui déclenche le avertissements (lumière, son et vibreur). J'ai choisi ce composant car j'ai un stock assez important et parce que j'ai l'habitude de programmer avec, et comme je n'avais pas beaucoup de temps pour faire ce projet j'ai préféré prendre du matériel que je connais bien.

Interface d'alimentation ULN2003A (Func2):Ce composant sert d'interface d'alimentation entre le 16F628A et les circuits qui consomment plus d'énergie que ne peut en fournir le microcontrôleur (LED, buzzer, vibreur).

Contrôle du buzzer (Func3):

Le PIC 16F628A ne peut pas fournir assez de courant pour alimenter le buzzer, d'autant plus que le buzzer doit être alimenté via un convertisseur boost afin d'augmenter sa puissance sonore.

En effet puisque le montage est alimenté en 6V et que le buzzer nécessite du 12V pour fonctionner au maximum j'utilise un convertisseur pour obtenir la bonne tension. J'utilise donc un transistor comme interrupteur (mode de commutation) pour contrôler l'alimentation du buzzer. Le composant que j'ai choisi est un 2N2222A classique qui convient très bien à cet usage.

Voici les caractéristiques du buzzer: 12V 25mA, cela signifie qu'il a besoin d'une puissance théorique de P=UI=12 x 25mA=0.3W

Il y a donc une exigence de puissance de 0,3 W sur le convertisseur DC boost, le module DC boost a un rendement de 95% donc il y a environ 5% de perte. Par conséquent, une puissance minimale de 0,3 W + 5 % = 0,315 W est requise à l'entrée du convertisseur.

On peut maintenant en déduire le courant Ic qui va traverser le transistor Q1:

P = U * Ic

Ic = P / U

Ic = P / Vcc-Vcesat

Ic = 0, 315 / 6-0, 3

Ic = 52mA

On calcule maintenant la résistance de base permettant au transistor d'être bien saturé:

Ibsatmin = Ic / Bétamine

Ibsatmin = 52mA / 100

Ibsatmin = 0.5mA

Ibsat = K x Ibsatmin (je choisis un coefficient de sur-saturation K=2)

Ibsat = 2 x Ibsatmin

Ibsat = 1mA

R12 = Ur12 / Ibsat

R12 = Vcc - Vbe

R12 = (6 - 0,6) / 1mA

R12 = 5.4K

Valeur normalisée (E12) pour R12=4,7K

Contrôle vibreur (Func4):

Quant au buzzer, le 16F628A ne peut pas fournir assez de courant au vibreur qui nécessite un courant de 70mA, de plus il doit être alimenté au maximum avec une tension de 3V. J'ai donc choisi d'utiliser une diode zener couplée à un transistor pour réaliser un régulateur de tension 2,7V pour le vibreur. Le fonctionnement de l'association zener-transistor est simple, le zener fixe la tension 2.7V sur la base du transistor et le transistor "copie" cette tension et fournit la puissance.

Le courant qui va traverser le transistor Q2 est donc égal à Ic = 70mA

On calcule maintenant la résistance de base permettant au transistor d'être bien saturé:

Ibsatmin = Ic/Bétamine

Ibsatmin = 70mA / 100

Ibsatmin = 0, 7mA

Ibsat = K x Ibsatmin (je choisis un coefficient de sur-saturation K=2)Ibsat = 2 x Ibsatmin

Ibsat = 1, 4mA

Le courant minimum dans la diode zener doit être d'au moins Iz = 1mA pour son fonctionnement, on peut donc en déduire le courant traversant la résistance R13:

Ir13 = Ibsat + Iz

Ir13 = 1, 4mA + 1mA

Ir13 = 2, 4mA

Pour s'assurer que le courant de la diode zener Iz est toujours dans la bonne plage de fonctionnement, une marge de sécurité est prise avec un: Ir13_fixed = 5mA (choix de valeur totalement arbitraire)

Calculons maintenant la valeur de R13:

R13 = U13 / Ir13_fixe

R13 = VCC-Vz / Ir13_fixe

R13 = 6-2, 7 / 5mA

R13 = 660 ohms

Valeur normalisée (E12) pour R13=470 ohm

J'aurais pu choisir 560 ohm dans la série E12 mais je n'avais pas cette valeur donc j'ai pris la valeur précédente…

Peut être optimisé

Quand j'ai fait la conception du projet je n'ai pas pensé au Vbe du transistor donc au lieu d'avoir 2,7V pour alimenter le vibrateur je n'ai que 2,7V-0,6V= 2,1V. J'aurais dû prendre un zener 3.3V par exemple, le vibreur aurait été un peu plus puissant même si le résultat est tout à fait satisfaisant, je n'exploite pas toute la puissance du vibrateur…

LED d'avertissement (Func5):

Les LED sont positionnées verticalement comme si elles formaient une jauge: Rouge

Jaune2

Jaune1

Vert

Lorsqu'un contact est détecté entre le "joystick" et le fil électrique, ils s'allument progressivement du vert au rouge.

Les LEDs sont connectées au VCC par groupes selon leur couleur:

- Toutes les anodes des LED vertes sont connectées entre elles

- Toutes les anodes des LED jaunes1 sont connectées ensemble

- Toutes les anodes des LED jaunes2 sont connectées ensemble

- Toutes les anodes des LED rouges sont connectées ensemble

Le microcontrôleur les active ensuite en mettant à la terre leur cathode via l'ULN2003A.

Noter:

Sur le schéma il n'y a qu'une seule LED de chaque couleur avec un symbole "X6" à côté car j'utilise une version gratuite de Cadence Capture et je suis limité par un nombre maximum de composants par schéma donc je ne pourrais pas faire apparaître toutes les LEDS …

Gestion du niveau sonore du buzzer (Func6):

C'est simplement un potentiomètre en série avec le buzzer qui permet de régler le volume du son.

LED "Décoration" (Func7 - Schéma/Page 2):

Le but de ces LED est de créer une chasse pour la décoration du jeu. Ils s'éclairent de gauche à droite. Il y a un total de 12 LED bleues: 6 au début du parcours représentant la ligne de départ et 6 à la fin du parcours représentant la ligne d'arrivée

J'ai choisi de faire un multiplexage d'affichage pour ces LED car il aurait fallu beaucoup plus de broches pour les commander (6 broches avec multiplexage, 12 broches sans multiplexage).

De plus il est indiqué dans leur fiche technique que le Vf est de 4V donc je n'ai pas pu mettre 2 LEDs en série (VCC est de 6V), et je n'ai pas pu non plus mettre en parallèle car elles ont THÉORIQUEMENT besoin de 20 mA et que le microcontrôleur ne peut fournir que 25 mA max par broche, donc 40mA aurait été impossible.

Pour résumer je n'ai pas pu faire une association de LED (mise en série ou en parallèle) et je n'avais pas assez de pin sur le microcontrôleur pour les piloter de toute façon… J'ai donc choisi d'utiliser un autre microcontrôleur (12F675) de 8 pins afin de pouvoir pour les piloter. Grâce à ce microcontrôleur je contrôle l'activation des LED en fixant un niveau logique haut (VCC) sur leurs anodes et j'utilise les PIC 16F628A et ULN2003A pour effectuer le multiplexage.

Peut être optimisé:

J'ai réalisé en effectuant les tests sur une maquette que pour le même courant I=20mA les LED avaient une grande différence de luminosité selon leurs couleurs. Par exemple avec 20mA les LED bleues étaient beaucoup plus lumineuses que les vertes. Je n'ai pas trouvé esthétique que certaines LED soient beaucoup plus lumineuses que d'autres, j'ai donc fait varier la résistance en série avec les LED bleues jusqu'à obtenir la même puissance lumineuse que les LED vertes alimentées avec un courant de 20mA.

Et je me suis rendu compte que les LED bleues avaient la même luminosité que les LED vertes avec un courant de seulement 1mA ! Ce qui veut dire que si j'avais su ça avant j'aurais pu choisir de mettre les leds bleues en série (par groupe de 2). Et je n'avais besoin que de 3 broches supplémentaires sur le 16F675A (qui sont disponibles), donc je n'ai pas eu besoin d'ajouter un autre microcontrôleur dédié à la gestion de ces LED.

Mais à ce moment de la conception je ne le savais pas, il y a parfois une différence non négligeable entre les caractéristiques des documentations techniques et les caractéristiques réelles des composants…

Limitation du courant (Func0):

Je n'avais pas du tout prévu cette partie au moment de la conception je ne l'ai ajoutée qu'à la toute fin du projet, quand tout était déjà fini. Au début j'avais simplement connecté le VCC directement au fil électrique avec simplement une résistance pull-down afin de mettre l'entrée du microcontrôleur qui détecte le contact à la terre.

Mais comme je l'ai dit auparavant, j'ai fait beaucoup de recherches pour savoir si le courant traversant le fil électrique pouvait être dangereux s'il venait à entrer en contact entre le fil et un corps humain.

Je n'ai pas trouvé de réponse précise à ce sujet donc j'ai préféré rajouter une résistance entre le VCC et le fil électrique afin de réduire au maximum le courant traversant le fil.

J'ai donc voulu mettre une résistance de haute valeur afin de réduire le courant à la valeur la plus basse possible mais comme j'avais déjà fini le projet et donc tout soudé et câblé les différentes cartes je ne pouvais plus retirer la résistance pulldown de 10Kohm. J'ai donc dû choisir une valeur de résistance afin d'obtenir 2/3 de VCC sur la broche BR0 (broche 6 de 16F628A) pour que le microcontrôleur détecte bien que ce soit un niveau logique élevé lorsqu'il y a contact entre le joystick et le fil électrique. Si j'avais ajouté trop de résistance j'aurais eu le risque que le microcontrôleur n'ait pas détecté le changement entre l'état logique bas et l'état logique haut.

J'ai donc choisi d'ajouter une résistance de 4,7K afin d'obtenir une tension d'environ 4V sur la broche lorsqu'il y a contact entre le joystick et le fil électrique. Si l'on ajoute à cela la résistance de la peau humaine en cas de contact du fil électrique avec la main par exemple le courant circulant dans le corps serait inférieur à 1mA.

Et même si une personne touche le fil, elle ne sera en contact qu'avec la borne positive des batteries et non entre la borne positive et négative mais comme je l'ai dit dans la clause de non-responsabilité, faites TOUJOURS attention à ce que vous faites avec le courant électrique.

Remarque: j'ai longtemps hésité à ajouter cette résistance car le courant électrique éventuellement accessible à l'utilisateur (via le fil électrique) est faible et que le montage est alimenté par batterie avec seulement 6V de tension et qu'il est peut-être strictement inutile de limiter le courant des batteries mais comme c'est pour les enfants, j'ai préféré prendre le plus de précautions possible.

Étape 6: Programmation

Programmation
Programmation

Les programmes sont écrits en langage C avec MPLAB IDE et le code est compilé avec le compilateur C CCS.

Le code est entièrement commenté et assez simple à comprendre, mais je vais vous expliquer rapidement les principales fonctions des 2 codes (pour 16F628A et 12F675).

Le premier programme -CheminElectrique.c- (16F628A):

Gestion du multiplexage LED:Fonction: RTCC_isr()

J'utilise le timer0 du microcontrôleur pour provoquer un débordement toutes les 2ms ce qui permet de gérer le multiplexage des leds.

Gestion de la détection des contacts:

Fonction: void main()

C'est la boucle principale, le programme détecte s'il y a un contact entre le joystick et le fil électrique et active les leds/buzzer/vibreur en fonction du temps de contact.

Gestion des paramètres de difficulté:

Fonction: longue GetSensitivityValue()

Cette fonction permet de vérifier la position de l'interrupteur qui permet de sélectionner la difficulté et renvoie une variable représentant le temps d'attente avant d'activer les alarmes.

Gestion du réglage des alarmes:

Fonction: int GetDeviceConfiguration()

Cette fonction permet de vérifier la position du commutateur qui sélectionne l'activation du buzzer et du vibreur et renvoie une variable représentant les alarmes qui doivent être actives.

Le deuxième programme -LedStartFinishCard.c- (12F675):

Gestion de l'activation de la LED bleue:Fonction: void main()

C'est la boucle principale du programme, elle active les leds les unes après les autres de gauche à droite (pour créer un chase)

Voir ci-dessous un fichier zip du projet MPLAB:

Étape 7: Soudage et assemblage

Soudure et assemblage
Soudure et assemblage
Soudure et assemblage
Soudure et assemblage
Soudure et assemblage
Soudure et assemblage
Soudure et assemblage
Soudure et assemblage

Partie "physique": j'ai commencé par créer la boite, j'ai donc découpé des planches en bois d'environ 5mm d'épaisseur pour le dessus et les côtés et choisi une planche de 2 cm d'épaisseur pour faire le fond pour avoir plus de poids et que le jeu ne bouge pas.

J'ai assemblé les planches entre elles avec de la colle à bois, je n'ai mis ni vis ni clous et c'est vraiment solide !

Afin de rendre le jeu plus attrayant qu'une simple boîte peinte j'ai demandé à ma femme de créer un décor pour le dessus de la boîte (car je suis vraiment nul en graphisme…). Je lui ai demandé de faire une route sinueuse (pour avoir un rapport avec le fil…) Les LED bleues des décors seront comme les lignes de départ et d'arrivée. Elle a créé un décor de style "Route 66", avec une route qui traverse une sorte de désert, et après plusieurs impressions pour trouver le bon emplacement des LED nous étions plutôt contents du résultat !

Ensuite, j'ai percé des trous pour tous les connecteurs, les interrupteurs et bien sûr les LED.

Le fil électrique est torsadé pour créer des zig-zags pour augmenter la difficulté du jeu, et chaque extrémité est vissée dans un connecteur banane mâle. Les connecteurs seront ensuite connectés aux connecteurs bananes femelles qui sont attachés au couvercle du boîtier.

Partie électronique:

J'ai décomposé la partie électronique en plusieurs petites cartes prototypes.

Il y a:

- une carte pour 16F628A

- une carte pour 12F675

- 6 cartes LED d'avertissement

- 4 cartes pour LED décoratives (ligne de départ et ligne d'arrivée)

J'ai fixé toutes ces cartes sous le couvercle de la box, et j'ai mis le support de batterie dans la partie basse de la box avec le buzzer et le module DC boost.

Tous les éléments électroniques sont reliés par des fils enroulés, je les ai regroupés au maximum selon leur sens et je les ai torsadés ensemble et fixés à la colle chaude pour qu'ils soient le plus "propres" possible et surtout qu'il y ait pas de faux contacts ou de fils qui se déconnectent. Il m'a vraiment fallu beaucoup de temps pour couper/dénuder/souder/positionner les fils correctement !

Partie "Joystick":

Pour le joystick j'ai pris un petit bout de tube PVC (1,5cm de diamètre et une longueur de 25cm). Et puis j'ai soudé le connecteur jack femelle comme ça:

- une borne reliée au fil au bout du joystick (ContactWire sur schéma)

- une borne reliée à la borne positive du vibreur (connecteur 2A sur J1A sur schéma)

- une borne reliée à la borne négative du vibreur (1A sur connecteur J1A sur schéma)

J'ai ensuite intégré le fil, le vibreur et le connecteur jack à l'intérieur du tube et fixé le jack avec de la colle chaude pour m'assurer que rien ne bouge lors de la connexion du câble jack entre le joystick et l'autre partie du système.

Étape 8: Vidéo

Étape 9: Conclusion

Maintenant que le projet est terminé, c'était vraiment cool de faire ce projet même si je regrette d'avoir très peu de temps pour le faire. Cela m'a permis de relever un nouveau défi;) J'espère que ce jeu fonctionnera pendant de nombreuses années et qu'il amusera de nombreux enfants qui fêteront la fin de leur année scolaire !

Je fournis un fichier d'archive qui contient tous les documents que j'ai utilisés/créés pour le projet.

Je ne sais pas si mon style d'écriture sera correct car j'utilise en partie un traducteur automatique afin d'aller plus vite et comme je ne suis pas anglophone nativement je pense que certaines phrases seront probablement bizarres pour des personnes écrivant parfaitement l'anglais.

Si vous avez des questions ou des commentaires sur ce projet, faites-le moi savoir!

Conseillé: