LANCEUR DE VOLANT POUR BADMINTON
» On ne devient pas champion dans un gymnase. On devient champion grâce à ce qu’on ressent; un désir, un rêve, une vision. On doit avoir du talent et de la technique. Mais le talent doit être plus fort que la technique. «
Mohammed Ali
REMERCIEMENTS
Nous tenons a remercier nos professeurs tuteurs sans qui ce projet n’aurait certainement pas aboutis. Nous remercions également Mr De Sabbata qui a été présent à chaque étapes du projets ainsi que nos camarades qui ont fait preuve d’une bienveillance exceptionnelle lors de la conception et des tests.
Cet article fait office de rapport dans le cadre du cours Etudes et réalisation. Il s’agit de l’étape final de notre projet qu’est, vous l’aurez compris, le lanceur de volant. Ce projet à été choisie par nous même et réalisé sous la tutelle de nos professeurs référents que sont Mr Bazeille et Mr Verrier. Dans la suite de ce développement, nous allons essayer de vous expliquer et illustrer les étapes intrinsèques à notre réalisation, puis nous allons conclure sur une petite démonstration.
Objectif: Réaliser un lanceur de volant pour badminton
Membres de l’équipe: Alexandre DARTOIS, Adin BADIENZI et Marvin DARBOUX
Sommaire
I) Contextualisation
1) Présentation du projet
2) Gantt
II) Conception
1) Construction mécanique
2) Conception électrique
III) Programmation
IV) Conclusion
I) Contextualisation
Tout d’abord comme son nom l’indique notre projet sera un robot qui va lancer des volants à différentes positions du terrain. Il devra idéalement pouvoir faire des routines permettant l’entrainement du joueur. Notre projet n’a pas vraiment de cahier des charge unique car il évolue au fur est à mesure des besoins liées aux contraintes de jeux.
1) Présentation du projet
Avant de se lancer dans la conception d’un objet tels que celui ci , quelques prérequis sont importants. Par exemple la vitesse d’un lancer de volant qui peut atteindre les 450 km/h ou encore la taille du terrain étant de 13,40 m sur 5,20 m pour la réalisation des routines. De ce fait il nous est très vite venu l’idée de se servir de deux disques tournant en sens inverse de façons a pouvoir propulser un volant vers un endroit prédéfinis. On s’est aussi inspiré des modèles existants tels que :
– Le BLK
– Le Aliobot Supra
On peut voir que ces 2 lanceur sont vraiment riches en choix d’exercices et de fonctionnement car il peuvent faire énormément de routines ainsi que des routine spéciales crées par le joueur lui même en réglant la vitesse des volant. Mais le plus intéressant est que le BLK peut se connecter via le Bluetooth à un portable et a son application propre pour faire différente routines.
De ce fait, l’idée du support viens très rapidement afin de stabiliser le tout et permettre éventuellement de réaliser manuellement les routines. Pour que ce système soit un peu plus optimale voila les premiers objectifs que nous nous sommes fixés :
Le capteur devait servir à l’incrémentation des volants. Il permettait au lanceur de savoir si le volant est effectivement parti ou non. Si oui il devra permettre au lanceur de repositionner un autre volant de façon autonome et aussi de connaitre le nombre de volant que compose sa série. Pour ce faire il fallait bien évidement un support pour les volants et un système permettant de bloquer les volants le temps que le capteur perçoive un volant.
Afin de réaliser ce tour de force on a eu comme matériel droit à :
– Un RasPi 3 Model B
– Des kits de construction mechano ( gentillement fournis par l’iut lab)
– La possibilité de commander des composants sous peine d’accord de nos tuteurs
2) GANTT
Avant de pouvoir passer à la partie physique de notre projet on a du commencer par une approche plutôt papier sur l’étude de notre système: la répartition des tache, comment aboutir au résultat escompté, etc . Donc pour ce faire on a commencé par faire différentes analyses avec différents logiciel permettant la facilité pour l’avancement de notre projet et des taches a réaliser.
- Première analyse fonctionnelle dit « la Bête a corne » :
Cette première analyse nous a permis d’exprimer le besoin primaire, donc son exigence principal sous forme très simplifiée.
- Seconde analyse :
Maintenant qu’on a exprimé la fonction principal de notre lanceur on peut passer à une autre analyse qui est le « le MindMap », cette analyse est le fait de représenter les grande idée et partie qui vont constituer un même sujet qui pour nous est notre lanceur de volant:
- Dernière analyse :
Maintenant grâce a notre MindMap on peut faire notre Gantt qui est le fait de planifier toutes les idées trouvé lors de l’analyse précédente en fonction de la durée de notre projet ainsi que d’autres contraintes.
Grace a notre planification on peut voir les durée « prévisionnelle » et surtout la date de début et de fin du projet et de chaque sous partie.Notre projet commença le 30 novembre 2017 et la dernière consacré a celui-ci était le 22 janvier 2018.
II) Conception
Maintenant que toute l’étude est faite on peut passer au gros du projet qu’est la partie conception d’une structure adéquate pour notre lanceur.
1) Conception mécanique
Avant de pouvoir tester des programmes on doit tout d’abord ce pencher sur une structure permettant de lancer des volants.
D’où Notre choix qui c’est très vite porté sur les méchanos pour la réalisation de la structure à cause de la diversité des composants et outils que présente ces boites(Makeblock). On a commencé dans l’optique que ce que nous réaliserons avec les méchanos sera un prototype pour ensuite créer notre « vrai » réalisation. Dans un premiers temps nous nous sommes concentrés sur la structure:
- Première réalisation et problèmes associés
On peut voir sur cette image que notre réalisation n’est pas adéquate pour lancer des volants de part ça rigidité qui n’est pas bonne car certaines pièces sont déformé sous le poids de nos moteur et des tremblements du a la rotation des moteur. L’impacte de la mise en route des moteurs provoque un bruit assourdissant à cause de l’écart et des frottements entre les roues dentés.
- Après ces premiers résultats quelques peut chaotiques, voici ce que nous avions imaginé ensuite
On peut voir sur cette image que le second test juste l’aspect externe montre un peu plus de rigidité mais il y a d’autre aspect technique qui on était résolu comme par exemple le niveau des roue qui était du a la mauvaise rigidité de la structure ainsi que l’espace pour le volant ou encore les vibration des moteur qui on était réduite, etc. Donc au vue des aspects résolu on remarque qu’une grande partie était du a la rigidité de la structure. Cependant les 2 plus gros problème sont toujours a résoudre : Les tremblement ainsi que le bruit assourdissant.
Le modèle illustré ci-dessus fait office de premier prototype pour notre lanceur de volant. Bien que plutôt satisfaisant pour effectuer des lancers, on a préférer le solidifier pour le prototype finale, prototype que nous illustrerons dans la partie conception électrique car cette structure comporte des composant qui seront expliqué dans cette partie.
Maintenant que nous disposons d’une structure convenable au lancé on va pouvoir y incorporé des composant qui vont permettre le confort des utilisateurs ainsi que le bon fonctionnement de notre lanceur.
2) Conception électrique
Pour commencer voici un petit schéma qui regroupe les grandes parties qui compose notre lanceur et qui seront implantés dans la structure vu dans la partie conception mécanique :
Nous avons essayé par le biais du schémas ci-dessus de vous illustrer les différents composants électriques qui ont intervenus lors de la conception du lanceur.Voici une liste non exhaustive des composants que nous avions choisi:
- dans le cas des moteurs on a opté pour le 42BYG Stepper
- dans le cas du capteur Ultrason on a opté pour le Me Ultrasonic sensor
- pour l’affichage du choix des routines on a choisi le Me TFT LCD screen
- pour gérer l’ensemble des composants on a choisi le Me Orion
- pour choisir son mode de jeux on a préférer le Me 4Button
Pourquoi le 42BYG stepper ?
En résumé il s’agissait tout simplement du moteur pas à pas le plus puissant disponible dans les boites Makeblock. Avec sa puissance, on pouvait se rapprocher (avec un système similaire à celui des engrenages) d’un lancer ordinaire de volant par un individus quelconque. De plus par le biais du contrôleur qui lui est systématiquement associer on pouvait gérer le voltage et l’ampérage, donc agir sur la façons dont allait tourner le moteur ( les roues) .
Le Me 2H Microstep Driver est une pilote de moteur pas à pas hybride à 2 phases, et adopte l’alimentation de DC 12 ~ 36V. Il est adapté pour piloter le moteur pas à pas hybride à 2 phases avec une tension de 24 ~ 36V et un courant inférieur à 2,0A. Ce pilote utilise la boucle de courant numérique complète pour mettre en œuvre le contrôle de micropas, de sorte que le moteur présente une faible ondulation du couple, une faible vitesse et un fonctionnement fluide, des vibrations et du bruit faibles. Lorsqu’il tourne à grande vitesse, son couple de sortie est relativement élevé et sa précision de positionnement est élevée.
Le Me Orion , qu’est ce que c’est ?
Le Makeblock Orion est une sorte de carte mère basée sur Arduino Uno . Il se munit de huit ports RJ25 pour se connecter à tous les autres modules de la série Me (kit Inventor ou séparé sur demande) avec des étiquettes couleur. Il supporte la plupart des logiciels de programmation (Arduino / Scratch / AduBlock).
Maintenant que vous connaissez la plupart des composant qui seront implanté dans notre lanceur voici le résultat final après que chaque composants soit inséré :
On peut voir sûr cette image la structure final avec les solution technique au problème expliqué dans la partie conception mécanique et donc les solution sont pour le bruit on a utilisé une courroie entre l’axe du moteur et celui des roue qui permet d’évité le frottement entre les 2 axes et pour les tremblement on a opté pour des pied qui vont permettre au moteur de ne pas être directement en contacte avec le sol et ainsi limité au maximum les vibrations. On peut voir aussi les composant électrique utilisé comme : – la carte Me Orion (en haut au milieu)
– les 2 moteur (en bas) et leur driver (en haut)
– l’écran LCD (en haut)
– le capteur (au milieu de l’image)
– la télécommande (a gauche au milieu)
Maintenant que nous avons un prototype opérationnel on peut passez a la partie programmation.
III) PROGRAMMATION
Avant de ce lancé dans du code pur et dur voici un schéma explicatif de comment notre lanceur fonctionnera et donc de comment le programme sera fait.
1) Rasberry Pi 3
Qu’est ce que c’est ?
Le Raspberry Pi est un ordinateur à processeur ARM conçu par David Braben, dans le cadre de sa fondation Raspberry Pi2. Cet ordinateur permet l’exécution de plusieurs variantes du système d’exploitation libre GNU/Linux et des nombreux logiciels compatibles. Il existent actuellement plusieurs versions du Raspberry-Pi. Il est malgré sa taille réduite suffisamment ouvert (ports USB, réseau) et puissant (ARM 700 MHz, 256 Mo de mémoire vive pour le modèle d’origine, 512 Mio sur les dernières versions) pour permettre une grande palette d’utilisations.
Le Raspberry Pi 3 est quant à lui équipé d’un processeur ARM Cortex-A53 quad-core 64 bits (Bradcom BCM2837) fonctionnant à 1.2GHz, de 4 ports USB 2.0, 1Go de mémoire, 1 sortie vidéo HDMI 1.3a, 1 port Ethernet 10/100, 1 prise jack audio/vidéo. La version 3 ajoute le support du Bluetooth 4 BLE (BCM43438) et plus du WiFi 802.11 b/g/n (BCM43438). Enfin, il possède un connecteur CSI permettant de brancher une caméra compatible.
Un problème c’est alors très vite posé. Celui de se servir d’un rasberry Pi pour piloter une cate arduino. Afin de palier à ce problème une solution existe : le Megapi
Mais on très vite abandonné cette piste faute de matériel. Il fallait se munir d’un Megapi et coté timing on étais assez limités. On a donc écarté le fait d’inclure le Rasberry Pi dans notre projet.
Nous avons décidé d’utiliser arduino afin de programmer.
2) Arduino (logiciel)
Mais arduino qu’est ce que c’est ?
Le logiciel Arduino (IDE) open source fonctionne sous Windows, Mac OS X et Linux. L’environnement est écrit en Java et basé sur processing avec d’autres logiciels open-source. Il fonctionne également comme compilateur C. Le C est adopté dans le monde entier pour les microprocesseurs. Il offre un bon compromis entre l’effort de développement et l’efficacité du programme.
Maintenant que le domaine informatique est devenu limpide on va pouvoir passez au code que je vais séparé en plusieurs partie distincte pour que votre compréhension soit plus facile :
Pour commencé on a inséré les librairie qui sont propre a notre carte MeOrion et pour notre moteur pas a pas AccelStepper, ensuite on définie une longueur max pour notre écran LCD et après on a créer des variable qu’on a mit a 0 de base ou d’autre qu’on a juste créer ensuite on a définie chaque composant utilisé : – MeSerial (écran LCD) connecté au port 5.
– Me4Button(télécommande) connecté au port 8 et on définie ce qui ce passe quand on appuie sur le bouton.
– AccelStepper(Moteur pas à pas) on définie les 2 sens de marche et sur quel variable interne au MeOrion il sont connecté, le FULL2WIRE signifie qu’il n’y a que 2 fil pour un sens.
– MeUltrasonicSensor (capteur Ultrason) connecté au port 6 du MeOrion.
Maintenant qu’on a définie les librairies, les variables et les composant on peut passez a l’initialisation.
Pour l’initialisation on a juste définie une série d’action que notre lanceur va exécuté. Le mySerial.begin permet de définir la vitesse des bits donc des bauds et les mySerial.print(ln) permette d’écrire sur l’écran LCD. Donc cette série d’action va écrire UHA dans un rectangle ensuite on attend 3 seconde puis efface tous et on écris 3 phrase « Salut … » « Je suis B0-1 … » « Jouons ensemble ! » ensuite on efface tous et on écris « Owww tu vas kiffer » et aprés on efface tous.
Maintenant que notre initialisation est faite on va passez a la création de la fonction menu.
Pour la fonction menu ces une fonction qui est créé et qui pourra être appelez dans le programme, donc on peut voir que cette fonction est très simple elle permet juste d’écrire les 3 jeux qu’il y a et sur quel bouton il faut appuyé et sur quel bouton appuyé pour retourné au menu.
Maintenant on peut passez a la boucle infinie.
On peut voir dans cette boucle qu’au début définie ce que signifie appuyé sur le bouton et ensuite comme la variable start a été mise a 0 au début alors on appelle la fonction menu vu précédemment ensuite on passe start à 1 pour pouvoir commencé le programme.
Maintenant avant de passez a la création des jeux on va commencé par le capteur.
On peut voir que pour le capteur on commence par créer un compteur ensuite il faut que le moteur tourne toujours donc il faut constamment mettre des stepper(1/2).run() ensuite on demande pour que l’écran LCD écrive Nb_de volant suivi de la valeur du compteur. Puis pour un aspect visuelle on dit que pour chaque jeux on veut qu’il écrive le nom de ce jeux.
Maintenant pour un aspect visuelle on a définie des conditions.
On peut voir que ces condition sont active que quand soit tout les bits poubelle sont à 0 ou a 1 pour explication les bits poubelle sont définie pour l’activation(=1) ou la désactivation(=0) du mode de jeux pour résumé il permette soit que les moteur accélère pour pouvoir commencé le jeux soit qu’il décélère pour pouvoir arrêté le jeux, chaque jeux possède sont bit poubelle. Donc quand un des bits et a 0 alors on écrit que les moteurs vont s’arrêté et donc atteindre 0 tr/min et inversement quand un des bits et a 1 alors le moteur va atteindre 1200 tr/min.
Maintenant pour notre plus grand plaisir on a créé un événement.
On peut voir pour cette événement qu’il s’active quand le capteur a compté 10 volant et il va écrire sur l’écran « PFF petit joueur ».
Maintenant on peut passez a la création des jeux.
On peut voir pour la création du jeux 1 qu’on regarde quel bouton a été pressé si ces le bouton 1 alors on est dans le mode_jeux=1 et on incrémente la variable poubelle adéquate ensuite si celle-ci est égal a 1 alors on écrit le nom du jeux et la vitesse des moteurs. Ensuite on définie que la position actuelle des moteur est 0 et on lui donne une vitesse max une accélération et une position a atteindre (comme la position est très grande le moteur ne s’arrêtera pas tout de suite) et on fait cela pour les 2 moteurs.
Maintenant que la partie accélération et faite il faut passez a la partie décélération.
On peut voir comme je l’ai dit précédemment quand poubelle égal 2 (égal 0 car boucle infinie donc il voit poubelle égal à 0) alors le moteur est en phase de décélération, donc quand on appui de nouveau sur le même jeux la variable s’incrémente et donc on passe en phase de décélération (poubelle=2) dans cette phase on écrit la vitesse du moteur et le nom du jeux ensuite on prend la position du moteur actuelle et on lui dit qu’il a 5 fois cette distance pour s’arrêté.
Voici pour un mode de jeux mais le scénario ce répète a part que les moteur utilisé ne seront pas les même.
IV CONCLUSION
Quoi de mieux qu’une petite vidéo démonstrative pour conclure ?
Perspectives d’évolutions:
- gestion plus effective du temps et des priorités
- réalisation du vrai lanceur à l’instar d’un prototype
- réalisation d’un socle pour les volants et choix de moteurs plus puissants
Webographie: