Simon 3D : Le jeu des années 70 révolutionné !

Nous sommes Nathan JAGUENEAU et Nathan NOËL, étudiants en deuxième année de cycle préparatoire (PEIP 2A) à Polytech Angers. Dans le cadre de notre formation, nous avons eu 100 heures pour réaliser un projet technique de A à Z. Pour nous, il a été question de réinventer le jeu des années 70 : le Simon.

Plutôt que de simplement copier l’original, nous avons décidé de briser la barrière de la 2D pour créer une version cubique et interactive. Voici le récit de notre aventure, entre lignes de code, fumée de soudure et modélisation 3D.

Le Concept

L’idée était simple mais ambitieuse : transformer un jeu statique en une expérience 3D immersive. Au lieu d’avoir toutes les couleurs sur une seule face, notre Simon est un cube où le joueur doit manipuler l’objet pour suivre la séquence lumineuse.

Les objectifs du cahier des charges

  • Liberté de design : Créer un objet esthétique et ergonomique.
  • Complexité accrue : Obliger le joueur à se déplacer ou à bouger le cube pour interagir avec les 5 faces actives.
  • Maintenabilité : Concevoir un système facilement démontable pour accéder à l’électronique.

Le cœur du projet : Électronique et Code

Sous sa structure en bois, notre cube cache un véritable concentré de technologie:

  1. Le Cerveau (ESP32) : Ce microcontrôleur gère toute la logique du jeu, de la génération de séquences aléatoires à la lecture de l’état des boutons.
  2. L’Affichage (NeoPixel) : Nous avons utilisé 5 chaînes de 4 LEDs adressables chacune, permettant des animations colorées et une luminosité réglable.
  3. L’Interface : Des boutons poussoirs reliés à des plaques de plexiglas montées sur ressorts pour un ressenti “arcade”.
  4. L’Autonomie : Le cube est totalement portable grâce à une batterie interne rechargeable via un module USB-C.
Représentation des différents composants électroniques principaux

Un aperçu de l’algorithme

Nous avons développé le code sous Arduino IDE. La structure repose sur une boucle principale qui surveille l’appui sur un bouton pour lancer la partie, puis alterne entre la phase d’affichage de la combinaison et la vérification des réponses du joueur.

Code utilisé pour représenter le tour du jour

Design et CAO : Une structure sur mesure

Pour que tout ce matériel tienne en place, nous avons dû maîtriser deux outils essentiels :

  • OnShape : Faute d’accès à SolidWorks, nous avons découvert ce site internet pour modéliser une structure intérieure complexe et reproduire notre structure au complet. Cette pièce centrale supporte l’électronique et assure la fixation des boutons.
  • Découpe Laser : Le boîtier extérieur en bois a été conçu via des patrons précis, puis gravé avec des motifs esthétiques pour donner envie de s’y intéresser.

Un énorme problème nous a pris énormément de temps

Tout projet comporte ses zones d’ombre. Pour nous, ce fut la soudure. Étant novices, nous avons passé entre 30 et 40 heures à souder, dessouder et réparer des liaisons fragiles.

Soudure de nos chaines de LEDs

Le moment critique : Le module MP3 fonctionnait parfaitement sur la platine de test, mais une fois intégré au cube, des interférences électriques l’ont rendu instable. L’échéance approchant, nous avons dû prendre la décision de donner une version sans son pour garantir un jeu fonctionnel.

Bilan du projet

En conclusion, ces 100 heures ont été une expérience technique incroyable. Nous avons appris à diagnostiquer des pannes, à optimiser du code et à concevoir un objet physique de A à Z.

Répartition du temps (Total ~100h)

PhaseDescriptionDurée
ÉlectroniqueSoudure, tests, câblage35h
ConceptionCAO (OnShape), Découpe laser, Impression 3D20h
RésolutionDiagnostic pannes, réparation soudures20h
ConceptsDesign, recherches composants10h
AssemblageMontage final dans le boîtier10h
CodeProgrammation Arduino, débogage5h

Projet réalisé par Nathan JAGUENEAU & Nathan NOËL – Polytech Angers 2026.

String art : nos plus belles œuvres, on ne les a pas faites

1. Qui on est ?

On est artiste. Créatif, on crée des tableaux en tissant des fils sur des clous à la main. Tellement créatif qu’on a fini par vouloir créer une machine et lui partager tout notre savoir technique.

Ce blog raconte comment on a mené ce projet. Le temps, l’énergie consacrés, notre patience, les difficultés mais aussi les succès et différentes avancées que nous avons rencontrés durant les 100 heures prévues pour notre projet, le projet string art.

2. Page blanche ?

La consigne principale était de réussir à faire une machine capable de faire des motifs de plusieurs couleurs. Les premières heures, on se demandait comment on allait réussir à faire ce projet. On a rapidement convenu d’un rendez-vous avec nos deux professeurs référents, M.Guyonneau et M.Mercier. On a alors appris qu’il ne s’agissait pas d’un projet comme les autres. On a été le seul groupe à avoir un projet qui avait été commencé par deux groupes des années passées. Il fallait donc améliorer ces machines, et même les faire fonctionner car les motifs qu’elles faisaient pour l’instant étaient irréguliers et non précis. Il était pour l’instant impossible de faire de beaux motifs d’une simple couleur.

3. Grisaille

Un gros objectif intermédiaire était déjà de faire fonctionner une première machine dotée uniquement d’un fil noir. Il fallait commencer par comprendre la mécanique et l’électronique de la machine. C’était assez simple, un plateau de 100 clous qui tournait à l’aide d’un moteur pas à pas, un capteur comptait le nombre de clous qu’on passait et un servomoteur faisait avancer et reculer l’aiguille lorsqu’on était à la position attendue.

Ensuite il a fallu comprendre l’informatique de la machine. C’est la partie qui nous a causé le plus de problème. Elle est programmée en C++ sur une carte Arduino. Il donc fallu étudier et comprendre tout un langage de programmation qui était nouveau pour nous.

Après l’acquisition de notre première machine unicolore, on était très fier de nous et soulagé d’avoir enfin quelque chose à rendre concernant notre projet. Cette première étape nous a pris la moitié du temps imparti.

Voici ci-dessous la première oeuvre que l’on a réalisée avec notre machine monochrome fonctionelle.

L’œuvre sans l’auteur, Antoine Le Mené et Ulysse Druaux, 50 x 50 cm, 2026

Par la suite, on a essayé de faire un dessin plus complexe, le logo de Polytech. Bien que la machine fonctionnait, on n’était pas vraiment satisfait du résultat.

4. Panne d’inspiration

Il était maintenant temps de viser encore plus gros et d’enfin attaquer ce qui nous avait été demandé de faire à l’origine, sur une deuxième machine, très légèrement différente à la première dans son fonctionnement. La différence étant que ce n’est pas un servo moteur mais un moteur pas à pas qui nous permet le tissage du fil. Le premier problème était qu’un gros travail d’imagination était demandé. Nous n’avions aucune idée de la manière dont le changement de couleur pouvait être réalisé. Il fallait que les deux fils soient utilisables à tout moment sans pour autant qu’ils s’emmêlent. C’était la période la plus compliquée et frustrante du projet, on avait l’impression de ne pas avancer et l’on se demandait même si on allait réussir à produire quelque chose avant la fin.

5. L’atelier

On a finalement réussi à finir cette traversée du désert en optant pour une solution dont nous étions très fiers, remplacer le noeud qui initie une couleur par un système d’ancre et un découpage de fil pour terminer une couleur. Cela semblait éviter tous les problèmes de mélange des fils et de création d’un noeud au début de chaque couleur.

Voici une première vidéo illustrant le système de coupe fil qui termine la première couleur pour passer à la deuxième :

Et dans cette vidéo, voici une explication plus générale sur le protocole de changement de couleur :

Pour continuer, pour réaliser un motif de plusieurs couleurs, il faut d’abord déterminer le motif que doit faire chaque couleur. Pour ça, on a créé un programme python qui sépare les couleurs d’une image pour obtenir au final trois images différentes : cyan, magenta, jaune (qu’on a adapté à seulement deux couleurs pour notre machine qui ne peut en faire que deux). Enfin, on superpose chacune des couleurs séparées sur le sites stringar.com, qui va nous donner 3 motifs différents que notre machine va superposer pour réaliser notre image initial souhaitée.

Voici un exemple d’une image traitée par notre programme :

Image originale :

Jaune isolé :

Magenta isolé :

Cyan isolé :

6. La palette

Voici au final la palette de couleurs de notre machine bicolore :

7. Critique

Notre machine pourrait être plus optimisée et sécurisée notamment au niveau des lames pour couper les fils. Mais ce qui nous a le plus limité depuis le début a été le nombre de clous de notre planche, cette planche venait des années passées et si on en voulait une plus grande, il aurait fallu tout refaire. C’est exactement pour cette raison que notre dessin complexe du logo Polytech n’a pas été aussi concluant que l’on attendait.

Image avec un plateau de 100 clous :

NB : Le nombre de lignes est seulement de 1000 ici car le tableau devient juste tout noir si j’en mets 3 000 comme dans la photo ci-dessous.

Même image avec un plateau de 200 clous :

Enfin, bien que tout le mécanisme de notre machine à couleurs fonctionne, il arrive encore que le fil de la deuxième couleur s’emmêle dans un clou alors qu’on n’est pas encore sensé l’utiliser, il aurait fallu ajouter un module de retenu du fil à ce niveau là.

8. Conclusion :

A travers ce blog, on a pu voir tout le processus de recherche et de fabrication que l’on a mené dans ce projet. Bien que ces 100 heures aient été remplies de problèmes, les moments de réussite valaient bien plus. Ça a été pour nous les meilleurs créneaux que l’on ait eu lors de notre cycle préparatoire à Polytech Angers.

Merci pour votre lecture,

Antoine Le Mené et Ulysse Druaux, Peip2A.

☆ La Boîte à Histoires ☆

C’est un petit objet destiné aux enfants pour écouter des histoires fantastiques, un peu comme la boîte Lunii® déjà commercialisée, qui permet d’écouter des histoires absolument n’importe où. En tout cas voici l’objet que nous avons finalement obtenu : 

Boîte à histoire Lunii® VS la nôtre

Objectifs

Au départ, avant même de commencer à toucher à l’ordinateur ou aux breadboards, nous avons pu examiner ce qui a été notre modèle au tout début de la session projet : la boîte à histoires de Maxime et Adrien, réalisée il y a maintenant 2 ans. On a pu pointer du doigt certains points d’amélioration parmi lesquels, je cite : 

  • Que la boîte soit transportable (donc plus besoin de la brancher en permanence)
  • Que le volume soit réglable plus facilement
  • Pouvoir changer les histoires sur la carte SD via un ordinateur
  • Un design plus adapté et plus sympa

Câblages et programmation de la boîte

Quand nous avons commencé, nous ne savions pas vraiment où nous allions. Nous avions peu de connaissances en électronique ou en programmation… 

On a donc appris, dans un premier temps, à programmer en langage C pour faire fonctionner une carte Arduino®. Cette carte est super importante pour que notre boîte fonctionne puisque c’est elle qui va avoir en mémoire tout notre codage (fonctionnement des boutons, du son ou de l’écran).

Aussi nous avons dû sélectionner plusieurs composants qui se devaient d’être compatibles les uns avec les autres. C’était assez complexe de tous les assembler ensemble car peu de personnes font leur boîte à histoires eux-mêmes et donc il est difficile de comprendre comment relier tel écran à tel autre composant. Nous avons donc dû regarder beaucoup de tuto Youtube et pas mal de datasheet (ce sont des documents qui indiquent comment fonctionne chaque composant).

Ensuite nous avons “simplement” soudé les fils les uns avec les autres afin qu’ils ne partent pas dans tous les sens (même si ça a un peu été le cas car ils n’étaient vraiment pas solides pour certains) ! Enfin bref, une fois tous les fils soudés (solidement) et les programmes importés, tout à commencé à fonctionner : nous avions le squelette de notre boîte à histoires ! Mais on ne pouvait pas s’arrêter en si bon chemin…

Structure de la boîte

Pour tout vous dire, nous avons, en réalité, travaillé à 4 sur ce projet mais nous avons dû proposer 2 boîtes et se diviser en 2 groupes. Pour notre part, nous vous proposons une superbe boîte à histoire en bois ! On pourrait croire que c’est simple à créer mais pas tant que ça. Nous avons utilisé pour ce faire le logiciel SolidWorks®. On avait déjà pu travailler avec ce logiciel par le passé mais ça n’avait là rien à voir puisque ce n’était pas du plastique. On à donc dû imaginer une boîte à plat et suffisamment solide pour que le bois ne cède pas, pour vous montrer : 


CAO de la boîte à histoires

On a pu utiliser une découpeuse laser et obtenir la structure de notre boîte que nous n’avions plus qu’à plier, pour obtenir tout une bordure continue et arrondie. On s’est aussi rendu compte que 5 mm d’épaisseur pour le bois : c’est très fin et évidemment ça casse… 

Après plusieurs maquettes brisées, on a fait ressortir notre côté artistique, créatif, inventif et nous avons poursuivi le design de notre boîte en y ajoutant des petites gravures un peu enfantines et joyeuses mais surtout qui faisaient rêver…


Comme vous pouvez le voir, on a un peu touché à tout dans ce projet, on a beaucoup appris et on s’est surtout beaucoup amusées à chercher des solutions à chacun de nos problèmes. Aussi, merci à nos représentants de projet M. Guyonneau et M. Mercier, qui nous ont bien aidé à résoudre certains de nos blocages.

Merci de nous avoir lu, en espérant que le projet vous ait autant plu qu’à nous 😉

Projet d’extrusion et de bobinage de PLA recyclé

Remerciements

Nous souhaitons tout d’abord remercier nos professeurs référents Mr Laurent Saintis et Mr Adel Haddad pour le accompagnement ainsi que Boris qui à toujours été présent au fablab pour nous donner des conseils et répondre à nos requêtes quelques fois un peu étranges.

BONJOUR !!!

Nous sommes Eliott et Tristan, dans le cadre du projet de Peip2, nous avons travaillés sur un système qui permet de recycler les déchets d’impression 3D (supports, rebus …) pour en refaire du fil utilisable par les imprimantes du fablab de Polytech’Angers. Cette année nous avons récupéré un projet existant depuis 2019, nous ne sommes donc pas partis de zéro, l’extrudeuse avait été acheté par les élèves précédent (2023), les rouleau de tirage, les supports de bobine et tous les guides étaient encore en très bon état nous les avons donc gardé.

CONTEXTE

Au fablab de Polytech’Angers, un nombre important de pièces 3D est imprimée, ce qui génère une quantité non négligeable de rebus sans solution de recyclage. Il existe bien des machine sur le marché mais à des prix trop élevés comparé au bénéfice.

OBJECTIFS

La conception devra : 

  • Évaluer le système existant à partir de tests de fonctionnement 
  • Reconcevoir le système de tirage, 
  • Reconcevoir le système de bobinage pour contrôler au mieux la vitesse de rotation, 
  • Réaliser des tests de fonctionnements avec les éléments obtenus du broyeur. 

Si le temps le permet, plusieurs améliorations complémentaires peuvent être envisagées : 

  • Adapter l’automatisme d’asservissement du tirage de fil en fonction du diamètre mesuré, avec le nouvel extrudeur, 
  • Reconcevoir le sous-système de refroidissement. 

PRISE EN MAIN

Nous avons passé nos première séance à comprendre le système de départ c’est à dire le fonctionnement de l’extrudeur, l’utilité de chaque sous système et de chaque composant. L’extrudeur était relativement simple à comprendre, le fonctionnement est très instinctif, il suffit de l’allumer, de régler la température souhaité puis de saisir la vitesse de rotation de la vis sachant que ces deux paramètres peuvent êtres modifiés à tout moment une fois la machine en marche.

Nous avons ensuite tenté de mettre en marche les moteurs faisant fonctionner les systèmes de tirage et de bobinage malheureusement les engrenages n’ont pas bougé d’un millimètre. C’est ainsi que nous avons fait face à notre premier problème majeur…

ALIMENTATION DES MOTEURS

Afin régler ce premier problème, il a d’abord fallu chercher la panne ce qui nous à pris quelques heures pour conclure sur une alimentation défectueuse. Il nous a donc fallu commander une alimentation neuve pour les moteurs en respectant le voltage (12V) et ampérage(1.5A).

En attendant l’arrivé de la nouvelle alimentation, nous avons branché les moteurs sur une alimentation moins performante pour effectuer des tests, avec ces tests nous avons découvert un nouveau problème : le bruit excessif des réducteurs. Les groupes précédents avaient utilisé des réducteurs planétaires, ces réducteurs sont complexes techniquement mais beaucoup trop bruyants, nous avons donc décidé de concevoir des nouveaux réducteurs pour les systèmes de tirage et de bobinage.

LES RÉDUCTEURS

système de bobinage

Nous avons réfléchi à de nouveaux réducteurs 1/100, pour concevoir de tels systèmes, nous avons du penser à plusieurs paramètre tel que le module de chaque engrenage, comment relier les axes aux moteurs et à la sortie des systèmes, la manière de maintenir guider les axes, etc.

Les roues dentées sont donc glissé sur des axes et entraines la rotation par un méplat, les axes sont tenus par des supports en P qui sont eux mêmes glissé sur deux rails de niveau différents. L’ensemble du système est fixé à la table par des support en forme de crochets qui servent aussi à empêché les support de glisser sur leurs rails. Les supports aillant un certain jeu sur le rail nous les avons calés avec des morceaux d’adhésif pliés qui nous permettent de les maintenir tout en pouvant les retirer si besoin.

Une fois les réducteurs imprimés et montés, nous avons pu nous attaquer à la partie programmation de l’automatisation du système général.

AUTOMATISATION DU SYSTÈME

capteur de diamètre

Le but principal de notre projet est de produire un fil utilisable par les imprimantes 3D, pour cela il faut respecter un diamètre constant de 1.75mm, ainsi nous devons coder un régulateur de vitesse de tirage en fonction du diamètre du fil. Nous avons commencé par déplacer le capteur d’épaisseur entre l’extrudeuse et les rouleaux de tirage, nous l’avons ensuite câblé sur la carte arduino et programmé pour récupérer des valeurs exploitables, seulement nous avons constaté un bruit électrique dans le capteur ce qui nous a obligé à lisser les valeurs avec une moyenne sur cent diamètres pour avoir un diamètre mesuré stable et exploitable par le régulateur.
Pour réguler le diamètre nous avons utilisé une bibliothèque arduino appelé PID (potentielle intégrale dérivée). Le principe des bibliothèques en arduino est de ne pas avoir à coder un système complexe, on peut ainsi entrer les paramètres souhaités et la bibliothèque s’occupe des calculs, nous lui avons indiqué des constantes de régulations, notre diamètre cible, l’adresse du diamètre mesuré et des bornes de vitesse pour éviter qu’il devienne instable et casse les moteurs.

Nous n’avons pas pu finaliser le réglage du régulateur pour le plastique PLA car le matériaux est trop instable.

INSTABILITÉ DU PLA

Nous avons eu du mal à trouver la bonne température de fusion du PLA, si il est trop fondu il est trop malléable et trop collant si il est juste au dessus de la bonne température il est trop granuleux et si il est en dessous il devient trop fragile. Il a donc été difficile de trouver la bonne température et une fois celle si trouvé nous avons eu un problème de capteur, il nous a lâché et ne délivrait plus aucune valeur ce qui rend notre projet inabouti et notre écran inutile.

INTERFACE HOMME / MACHINE

interface (écran LCD et bouton ON/OFF)

Pour être au courant de ce qu’il ce passe dans le système nous avons eu l’idée d’installer un écran LCD qui affiche le diamètre mesuré du fil nous avons installé cet écran sur un support avec un interrupteur permettant d’allumer et éteindre les moteurs, pour éviter de faire du bruit inutilement et pour les arrêts d’urgence plus pratiques.

Une fois tous ces petits problèmes réglés, nous avons pu lancer le tirage d’un fil mais l’extrudeur à commencé à avoir du mal à tourner.

NETTOYAGE DE L’EXTRUDEUR

premier nettoyage de l’extrudeur

Nous avons entrepris de démonter entièrement l’extrudeur pour retirer les éventuels bouchons de plastiques qui pouvaient bloquer la vis. Nous avons opéré au décapeur thermique pour retirer la vis et vider le conduit. Une fois la machine remontée la vis ne tournait toujours pas normalement, après analyse il s’est avéré qu’elle n’était plus fixé correctement à l’arbre moteur, c’est donc en refixant tous les composants que nous avons pu réparer l’extrudeur

FIN DU PROJET

Nous sommes ainsi arrivé à la fin de notre période de projets, nous allons maintenant le présenter aux élèves de Peip1 et au personnel de l’école, nous leur présenterons un projet certes peut fonctionnel mais avec beaucoup de travail de fait. Nous passons alors le flambeau aux prochains groupes à passer sur ce projet dans les années à venir …

Trieur de monnaie — Keple

Trieur de monnaie, késako ?

Photo personnelle de notre projet
  • 8 capteurs infrarouges (capteurs de distance)
Capteur infrarouge, wiki : Beercycle — « Les Fabriques du Ponant » https://www.wiki.lesfabriquesduponant.net/index.php?title=Beercycle
  • 1 écran LCD 128×64
  • 1 joystick Arduino
Joystick Arduino, Taller Arduino Ingenia | Aprendido Arduino https://aprendiendoarduino.wordpress.com/category/taller-arduino-ingenia/page/4/
  • 1 Arduino Mega
  • 1 haut-parleur Arduino (optionnel)
  • 1 moteur pour roue Arduino
  • Et 2 boutons !

Conception du projet

Capture de notre fichier SolidWorks de la rampe de tri

Code et circuit électronique

Ajout d’options

Résumé rapide du fonctionnement de la machine & bilan

DobotNet Arduino – Réseau de robots Dobots Magician

Bienvenue à toutes et à tous !

Dans cet article, nous allons partager avec vous les découvertes que nous avons faites lors de notre projet de deuxième année de classe préparatoire à Polytech Angers !

Ça, c’est ce qu’on a fait…

Vidéo de démonstration du projet DobotCity, by DobotNet

Oui oui, nos deux petits bras robotisés essaient de construire une ville miniature… Vous voulez savoir comment ? Et bien c’est parti !

1. Présentation du matériel

Notre objectif lors de ces six derniers mois était de créer une solution pour permettre la communication entre plusieurs Dobots Magician via une carte Arduino.

Les Dobots Magician sont des petits robots comme celui-ci, auxquels on peut ajouter une extension telle qu’une ventouse ou une pince pour attraper des objets, un crayon pour dessiner, ou même un laser pour graver dans la matière !

Ils ont une portée allant de 15cm à 32cm par rapport à leur base et une répétabilité des mouvements de 0.2mm.

Robot Dobot Magician
Carte Arduino MEGA

La carte Arduino MEGA va agir comme le cerveau de notre projet. Elle se verra attribuer diverses lourdes tâches comme relayer les informations entre les Dobots, mémoriser l’avancement de la construction de la ville, recevoir des commandes de la part de l’utilisateur…

Au début, nous avions une carte Arduino UNO, mais elle n’avait pas assez de RAM pour assumer toutes ces responsabilités, nous n’avons donc pas eu d’autre choix que de la changer !

Source de beaucoup d’ennuis, certes, mais la construction de notre ville ne pourrait pas se faire sans la caméra

En effet, nous allons avoir besoin de repérer des cubes dans l’espace, elle sera donc utile pour traiter le flux d’images qu’elle capture et récupérer en temps réel des informations précieuses que nous allons aborder dans quelques instants.

La caméra

2. Choix du projet

Comme nous l’avons expliqué, notre but lors de ces six derniers mois était de parvenir à faire collaborer deux Dobots Magician connectés à une carte Arduino. Nous souhaitions profiter au maximum de ces 100 heures de projet pour découvrir de nouveaux domaines liés à l’informatique, il est donc évident que le projet que nous vous présentons aujourd’hui ait piqué notre curiosité. Voici quelques raisons pour lesquelles nous avons choisi ce projet au-dessus des autres :

  • Satisfaction visuelle offerte par le travail en équipe de deux robots lors de la réalisation d’une tâche complexe
  • Publication en source libre pour apporter sa participation au développement de la communauté Dobot
  • Découverte de pratiques courantes en robotique qui seront nécessairement utiles dans le futur
  • Introduction et apprentissage autonome à la vision par ordinateur
  • Familiarisation avec du matériel électronique

Enfin bref, c’est finalement la liberté offerte par ce projet, que ce soit dans sa finalité comme dans les procédés pour l’atteindre, qui nous l’a fait remarquer au-dessus des autres.

Maintenant que vous savez pourquoi on l’a choisi, voyons comment nous nous y sommes pris pour construire une petite ville.

3. Premiers pas : Découverte de DobotStudio

Nous avons passé les premières heures de projet à expérimenter et à nous familiariser avec les robots grâce à l’interface de contrôle DobotStudio. Cette application propose de nombreux modes amusants et interactifs pour faire se mouvoir les Dobots. On retrouve notamment le Teach and Playback, où le robot exécute une série de mouvements prédéfinis, et le Write and Draw, qui laisse le robot dessiner un texte ou une image téléversée sur l’application.

En revanche, le mode qui nous intéressait réellement pour le début de ce projet était la programmation en Blockly, puisqu’il offre un accès simplifié aux commandes d’un Dobot grâce à des blocs préprogrammés. En seulement quelques minutes, nous pouvons créer le programme ci-dessous:

Illustration des mouvements d’un Dobot avec DobotStudio | Programme Blockly

Le résultat obtenu lors de l’exécution de ce programme est le suivant :

Illustration des mouvements d’un Dobot avec DobotStudio | Vidéo

Avec quelques essais supplémentaires, nous avions une bonne appréhension de la manière de se déplacer des Dobots. Il était donc temps de passer à l’étape suivante : leur interface de communication.

4. Communication en série avec les Dobots

Nous vous l’avions caché jusqu’à maintenant, mais nos petits robots disposent de diverses interfaces de connexion. La zone 6 sur la photo ci-dessous permet l’alimentation et le contrôle des extensions telles que la ventouse ou la pince.

En revanche, celle qui nous intéresse actuellement est l’interface de communication en zone 3. Parmi les 10 pins exposés dans cette zone, 2 d’entre eux (nommés RX et TX) constituent une interface UART, qui permet le transfert bidirectionnel et asynchrone de données en série.

Interface de contrôle d’un Dobot
Ports UART Arduino MEGA

Cette interface est d’autant plus intéressante qu’elle peut être associée à l’une des quatre interfaces UART installées par défaut sur une carte Arduino MEGA (entourées en rouge). Pour ce faire, il suffit de connecter les pins RX et TX à l’arrière du Dobot respectivement aux pins TX1 et RX1 de la carte Arduino. Une troisième connexion nécessaire est celle entre le GND de l’Arduino et celui du Dobot.

Une fois cette connexion réalisée, l’Arduino peut, avec le programme approprié, envoyer des commandes au robot à laquelle elle est liée.

Après quelques heures de recherche, nous sommes entrés en possession de deux fichiers importants. Le premier détaille le protocole de communication des Dobots (format des paquets de données) et contient une liste de leurs commandes enregistrées. Le second est un programme de démonstration faisant bouger un Dobot en connectant ses pins RX et TX à une carte Arduino MEGA.

Voici le résultat obtenu grâce au code de démonstration :

Une très bonne nouvelle pour nous fut que cette démonstration contenait l’implémentation d’une dizaine de commandes et d’un système assez modulaire (bien que parsemé de bugs embêtants) pour établir une communication à double sens avec un Dobot.

Après avoir passé plusieurs heures à lire, comprendre et corriger le code de démonstration, nous étions fin prêts à relever notre plus gros défi jusqu’à présent : la création d’une bibliothèque open-source pour permettre le contrôle de un ou plusieurs robots Dobot Magician depuis une unique carte Arduino Mega.

Démonstration Arduino

5. Création de DobotNet

C’est ici que naquit DobotNet. Avec un temps considérable passé à découvrir et à réorganiser la démonstration, nous avons été capables de marquer les parties du code nécessitant une réécriture complète et celles pouvant être utilisées sans grosse modification.

Il s’agissait de notre première expérience de création d’une bibliothèque open-source. Aussi, nous avons concentré nos efforts pour améliorer au maximum la lisibilité du code grâce à des fonctions documentées et simples à utiliser.

Voici l’évolution de la syntaxe pour faire se déplacer un robot vers un point donné, en commençant avec la méthode initialement proposée par la démonstration :

// Long, peu pratique et sans support pour plusieurs Dobots
PTPCmd gPTPCmd;
gPTPCmd.x = 200;
gPTPCmd.y = 0;
gPTPCmd.z = 0;
SetPTPCmd(&gPTPCmd, true,  &gQueuedCmdIndex);

Et maintenant, l’équivalent du code précédent en utilisant DobotNet, où “dobot” est une variable pouvant représenter n’importe lequel des robots connectés à la carte :

dobot.MoveTo(MOVL_XYZ, 200, 0, 0, 0);

En comparant ces deux extraits, on remarque que le gain de temps, de place et par conséquent de lisibilité du code source n’est pas négligeable, surtout pour des procédures de mouvements plus longues et complexes.

Nous avons également ajouté des exemples à notre bibliothèque DobotNet pour permettre une prise en main rapide et accompagnée. Elles vont d’une simple reproduction de la démonstration sur laquelle est basée notre bibliothèque, au code complet de la solution dont vous avez vu un extrait au début de cet article. On retrouve ci-dessous le résultat de l’exécution de l’exemple “NetworkDemo.ino

Exécution de l’exemple NetworkDemo.ino avec DobotNet

6. Création de la ville

Maintenant que nous pouvons facilement faire bouger nos Dobots, passons à la création de notre ville. Pour ce faire, il nous faut dessiner un plan aux proportions suffisamment impressionnantes pour l’aspect visuel, tout en restant dans la portée des robots. Il faut également faire attention à ce que les structures dans la ville ne soient pas trop proches les unes des autres pour s’assurer que l’ouverture de la pince ne démolisse pas des bâtiments adjacents.

Plusieurs versions ont été nécessaires, mais nous sommes finalement parvenus à un plan satisfaisant nos attentes :

Chaque couleur représente un type de bâtiment :

  • Maison (rouge) [2×1]
  • Arbre (vert) [2×1]
  • Immeuble (jaune) [3×2]
  • Voiture (bleu) [1×2]
  • Zone de transition (blanc)
Plan final de la ville DobotCity

La zone de transition est un emplacement auquel les deux Dobots ont accès, permettant le transfert des blocs d’une zone à l’autre.

En plaçant la tête du Dobot sur le point de calibration (rouge) au centre de l’image, nous pouvons récupérer un point de référence dans le système de coordonnées du Dobot, ce qui permet de convertir les coordonnées en millimètres des bâtiments. Il en est de même pour le Dobot de la partie suivante.

7. Création de la zone de stockage

Nous entrons maintenant dans la partie qui s’est avérée être la plus problématique de toutes pour notre projet : la zone de stockage. Il s’agit de l’endroit où les blocs sont déposés par l’utilisateur, pour ensuite être récupérés par un Dobot et placés sur la zone de transition. C’est maintenant que nous faisons appel à la caméra, dont la capture sera traitée pour essayer de déterminer la position des blocs dans la zone de stockage.

Voici ce à quoi ressemble notre zone de stockage (Théorique | Capturée par la caméra) :

Représentation de la zone de stockage
Capture réelle de la zone de stockage

Les quatre carrés noirs étranges autour de la zone de stockage sont appelés des marqueurs Aruco. Ils sont parfois utilisés en vision par ordinateur pour délimiter une zone, déterminer un repère ou traquer un objet mobile.

En utilisant la bibliothèque de traitement d’image OpenCV (Open Computer Vision) disponible sur Python, nous pouvons réaliser les étapes suivantes pour isoler la zone de stockage et détecter les cubes.

1) Trouver le centre des marqueurs Aruco sur l’image avec cv2.aruco.detectMarkers()

2) Transformer l’image de sorte que les centres trouvés soient aux coins de l’image avec cv2.getPerspectiveTransform(centres, coins) et cv2.warpPerspective(). Le résultat est présenté ci-dessous :

Image de la zone de stockage après transformation de la capture

3) Appliquer un flou gaussien pour réduire le bruit

4) Appliquer un algorithme de détection des contours avec cv2.Canny() et deux paramètres sélectionnés par l’utilisateur. Nous avons créé une interface qui permet de visualiser l’effet des deux paramètres (En vert sont les contours détectés)

Interface de calibration des paramètres de la caméra

5) Validation des dimensions des contours, calcul des centres et de la couleur des blocs

6) Compilation des résultats dans l’interface de contrôle

Interface de contrôle à distance

Il nous aura fallu beaucoup de temps pour comprendre les fonctions proposées par OpenCV et trouver une combinaison d’algorithmes donnant un résultat fiable. Nous avons cependant découvert de nombreux concepts en lien avec la manipulation d’image qui ont changé notre perception de ce domaine.

8. Interface Utilisateur Graphique (GUI)

Comme nous venons de le voir sur les deux captures précédentes, nous avons ajouté à notre projet des interfaces utilisateur pour faciliter le contrôle depuis un ordinateur. Ces interfaces ont été réalisées avec Tkinter. Chaque bouton sur l’interface de contrôle communique une commande à la carte Arduino via un module Bluetooth que nous avons ajouté. Un exemple simple est le bouton Construire qui permet de lancer / arrêter la procédure de construction de la ville, ou le bouton Reset qui permet de recommencer la procédure de zéro.

Nous avons également ajouté un écran LCD 4×20 connecté à l’Arduino pour afficher l’état actuel de la procédure. Le voici dans deux états différents :

Ecran LCD – Mode inactif
Ecran LCD – Mode construction

9. Perspectives d’amélioration

Comme nous vous l’avons expliqué au début de cet article, l’une des raisons principales pour laquelle nous avons choisi ce projet est sa capacité à constamment pouvoir être amélioré. Nous avions de nombreuses idées pour compléter le travail que nous avons fait jusqu’à présent, mais le temps nous a manqué pour réaliser certaines d’entre elles.

Nous souhaitions par exemple imprimer une carte électronique pour réduire le nombre de câbles apparents qui dégradent actuellement l’apparence extérieure de notre projet, mais par manque de temps, nous n’avons pas eu l’occasion d’aller au bout de cette idée.

Prototype de carte électronique, réalisée sur EAGLE by AutoDesk

Sans carte électronique et par conséquent sans certitude des dimensions, nous ne pouvions pas prendre le risque d’imprimer une boîte de rangement pour la carte Arduino et les modules qui y sont connectés.

Vision intérieure de la boîte
Vision extérieure de la boîte

Enfin, une dernière amélioration que nous aurions réellement aimé ajouter est celle laissant l’utilisateur dessiner sa propre ville. Elle correspond au bouton Dessiner sur l’interface de contrôle. Seul le temps pour créer une interface de dessin du plan nous manquait, puisque le code Arduino est déjà adapté pour accueillir ce genre de fonctionnalité.

10. Bilan

Si vous êtes encore là, merci beaucoup d’avoir pris le temps de lire cet article !

Ce projet a été pour nous une expérience inoubliable. Même si, comme nous venons de le voir, nous n’avons pas eu le temps d’aller au bout de nos perspectives, nous sommes tout de même très heureux du travail accompli lors de ces six derniers mois. Nous n’étions que deux pour réaliser ce projet, et les défis que nous a causé notre ambition ont été de taille. Même si notre technique pour aborder certains problèmes n’était pas parfaite, nous sommes fiers d’avoir accompli ce qui est notre projet aujourd’hui.

Vision par ordinateur, programmation sur Arduino, création d’une bibliothèque, design d’une carte électronique, modélisation 3D. Toutes ces compétences ne pourront que nous être bénéfiques pour le futur, et nous garderons un très bon souvenir de ce travail d’équipe pour surmonter les obstacles rencontrés sur le chemin.

11. Remerciements

Nous remercions évidemment l’ensemble des enseignants qui ont pu nous aider durant ce projet, et plus particulièrement :

  • Mr. BOIMOND Jean-Louis, notre référent de projet
  • Mr. LAGRANGE Sébastien
  • Mr. VERRON Sylvain

Ce projet a demandé beaucoup de rigueur, il aurait donc été impossible sans leur aide précieuse.

12. GitHub Repositories

Kind Regards, us

by Paquereau–Gasnier Alexis, Cholet Byron

Bombe factice

L’objectif de ce projet était de réaliser une fausse bombe à désamorcer, un genre d’escape game, c’est à dire qu’une suite d’étapes doit être réalisée dans un certain ordre avec deux erreurs maximum pour finir le jeu. Pour cela, nous étions 3, avions 100 heures et une totale liberté des énigmes.

Mais pourquoi avons nous choisi ce projet?

Tout d’abord, nous recherchions un projet qui nous permettait de créer quelque chose de concret. Ensuite nous avions un attrait particulier pour la programmation et nous aimions manipuler les composants électroniques. C’est pour cette raison que lorsqu’on nous a proposé le projet de bombe factice, nous avons tout de suite adhéré à l’idée. Mais pour concrétiser notre projet, il nous a fallu passer par différentes étapes et surmonter quelques difficultés.

Intérieur de la version finale du projet

        Brainstorming

La première étape était le brainstorming. Durant les trois premières heures, nous avons d’abord discuté et débattu en groupe pour nous mettre d’accord sur la trame à suivre pour désamorcer la bombe ainsi que sur son apparence.

Trame à suivre pour désamorcer la bombe

        Recherche et commande

Ensuite, après cette étape de mise en commun des idées, nous avons créé une liste avec tous les composants nécessaires à la décoration ainsi qu’au bon fonctionnement de la bombe. On a donc commencé nos recherches pour trouver les composants. On s’est vite rendu compte qu’une modélisation 3D était primordiale. En effet, il existe des composants ayant la même fonction mais avec des tailles bien différentes. Or nous avions comme contrainte la taille de notre mallette. Donc, il fallait trouver les composants appropriés pour pouvoir garder une mallette de taille abordable. Une fois cette étape finie, nous avons envoyé notre liste à notre responsable de projet (Mr. Sébastien Lagrange). Il s’est occupé d’effectuer la commande. Après la réception des produits, nous devions entamer notre partie préférée : la manipulation.

Plan 3D de la mallette

        Programmation de chaque élément

Nous avons alors commencé à créer un programme pour réaliser la trame de désamorçage de la bombe. Pour cela, il nous a fallu prendre chaque élément indépendamment pour comprendre comment il fonctionne et ainsi pouvoir mieux le contrôler après. Durant cette étape, nous avons rencontré plusieurs défis à relever car nous avions seulement de petites bases sur le langage que nous utilisions (Arduino). Mais, à chaque fois grâce à nos recherches et à l’aide de nos professeurs, nous avons pu résoudre nos problèmes et finaliser ce code.

Exemple de code, ici, une partie du code du jeu du Simon

        Création de l’intérieur de la mallette

Pour la création de l’intérieur de la mallette, nous avons utilisé plusieurs machines et plusieurs procédés de fabrication (par exemple l’impression 3D , le découpage par laser et l’impression de stickers). Le but premier était de maintenir les composants et de rendre l’intérieur de la mallette esthétique pour qu’ elle ressemble à une bombe à désamorcer. Nous avons donc par exemple rajouté une fiole contenant un liquide fluorescent. Ensuite, nous avons découpé une tablette pour fixer tous les composants et cacher la partie électronique. Nous avons réalisé le montage , et nous avons fait les soudures sur la carte électronique. Nous avons bien sûr aussi peint.

        Création de la carte électronique

La création d’une carte électronique était obligatoire pour éviter de garder les breadboards (plaquettes permettant de connecter facilement des fils), qui sont uniquement destinés aux prototypes. Nous avons donc dessiné le schéma d’une carte électronique. Cependant, des camarades sont venus nous prévenir que nous ne respections pas des règles obligatoires (la taille des pistes par exemple) pour que la machine puisse la découper. Une nouvelle version a donc dû être faite. Or cette fois ci, c’est un professeur qui nous a indiqué encore d’autres problèmes, comme des pistes trop proches. La troisième et dernière version fut la bonne. Après un bon moment de soudage des connecteurs, nous avons pu passer à l’assemblage.

        Assemblage

L’assemblage a été une étape plus longue que prévue. En effet, nous nous imaginions que nous allions simplement mettre tous les modules d’épreuve dans la mallette et que cela allait fonctionner au premier essai. En réalité, nous avons eu un certain nombre de problèmes, comme les boutons lumineux qui ne fonctionnaient plus, l’écran qui n’affichait plus rien et a donc dû être changé ou encore des fils qui s’arrachaient lors de la fermeture de la mallette. Ces derniers problèmes ont pu être résolus, rendant ainsi notre projet fonctionnel.

Dernières soudures avant de tout faire rentrer dans la mallette

Bilan

Nous sommes tous très fiers du travail que nous avons réalisé ainsi que du produit fini. En effet, pendant toute la durée du projet, nous nous sommes bien entendus et nous avons plutôt bien réparti les tâches entre chaque membre du groupe. De plus, le produit final est esthétique, aéré et agréable à manipuler. Il respecte le cahier des charges que nous nous sommes fixé au début du projet, à l’exception de l’énigme qui devait permettre d’ouvrir la mallette. Nous avons décidé de ne pas la mettre en place en cours de création car cela ne nous paraissait plus intéressant. En effet, cela nous aurait obligé à afficher quelque chose au-dessus de la mallette et nous avons pensé que cela serait plus judicieux de laisser la mallette comme nous l’avions reçue.

Merci de nous avoir lu

Matthias LEHOUELLEUR
Alan MARTINIER
Maël JUGDE

Système de stationnement automatique avec Arduino

Système de stationnement automatique

Bonjour à tous et bienvenue dans notre article.

Nous sommes Maxence, Victor et Margot, trois étudiants en 2ème année du cycle préparatoire intégré de Polytech Angers. Notre projet consiste à concevoir et mettre en place un système de stationnement basé sur Arduino (une maquette d’un parking automatisé). C’est à dire que la barrière s’ouvre et se ferme toute seule quand elle détecte une voiture. Les contraintes sur ce projet étaient de programmer avec Arduino, que le système doive permettre la gestion de stationnement: nombre des places inoccupées qui doivent être affiché sur un écran, la durée de stationnement (en heure) et le prix de stationnement pour chaque voiture garée dans le parking.​

Pourquoi avons nous choisie ce projet ?

Nous avons choisie ce projet car il permettait de toucher à tous les domaines : la conception, la programmation, la réalisation, l’impression 3D, etc. De plus, nous ne savions pas quelle spécialité choisir, donc travailler sur ce projet pouvait nous aider dans notre choix.

Étape de notre projet

  • Analyse fonctionnelle du système et de ses contraintes
  • Recherche de normes sur les vrais parkings
  • Recherche sur la maquette (pièces électroniques et planches)
  • Programmation sur Tinkercad
  • Devis
  • Fabrication pièces CAO
  • Construction maquette

Première phase: la recherche

Nous avons commencé notre projet par une phase de recherche, nous avons mis en commun nos idées sur le meilleur parking et ce que nous voulions faire. Tout d’abord nous avons fait un schéma fonctionnel pieuvre, que vous pouvez retrouver ci dessous. Grâce a cela nous avons eu une vision des contraintes : l’écologie, le prix, l’esthétique, etc.

schéma pieuvre

Ensuite nous avons fait un peu de recherche sur la construction d’un vrai parking, afin de respecter au mieux les normes est les dimensions.

La réflexion sur notre maquette

Après ces recherches, nous avons choisi à quoi notre maquette de parking allait ressembler. Nous voulions que le parking ait un étage, deux places handicapées ainsi que deux places électriques. Il y aura 23 places classiques avec une entrée et sortie différente. Les places libres seront indiqué grâce à deux écrans.

Nous avons fait plusieurs devis et commandes d’électronique et de bois pour la structure du parking.

Programmation sur Arduino

Au début nous avons utilisé le logiciel TINKERCAD avons d’avoir les composant. Ce logiciel est un simulateur Arduino avec les composant et la partie programmation. Cela nous a permis de commencé la programmation.

Ensuite nous avons programmé sur Arduino par l’intermédiaire d’une carte Arduino méga.

Conception support 3D

Nous avons principalement utilisé le logiciel SOLIDWORKS, c’est un logiciel de CAO très utilisé à Polytech. Nous y avons construit tout nos panneaux de signalisation ainsi que la barrière et un boitier pour couvrir les câbles et y mettre l’entrée et la sortie. Le point positif avec l’impression 3D est que l’on pouvait vraiment créer les pièces que nous voulions avec les mesures désirées.

le boitier d’entrée/sortie

Conception de la maquette

Une fois toutes nos planches reçues, nous avons commencé la construction de la maquette.

La première étape était de tracer toutes les places et passages sur les planches au crayon de bois. Cela nous a permis de voir comment rendait le parking et de faire quelque changement comme agrandir l’espace pour les barrières. Nous avons fait cela sur les deux planches.

première image de la maquette

Ensuite nous avons dimensionné et coupé les poteaux permettant de surélever le parking et de créer l’étage.

Après nous avons installé les capteurs et écrans (toutes l’électronique). Nous avons décidé de faire passer tous les fils sous la maquette pour que le rendu soit plus propre. Donc il a fallu faire plusieurs trous pour faire passer les capteurs.

En parallèle, nous avons imprimé les panneaux 3D ainsi que les barrières de protection et les barrières d’ouverture. Nous avons aussi créé des cartes de différentes couleurs avec des planches de bois et des stickers que nous avons conçu. Ces cartes vont permettre d’être reconnues par les capteurs couleur à l’entrée et à la sortie du parking, cela permet de simuler les cartes d’abonnement d’un parking réel.

Pour finir, nous avons tout fixer : les piliers sur l’étage, panneaux, barrière et toute la partie électronique, ainsi que repasser au crayon Posca tous les marquages. Notre maquette est prête ! Maintenant c’est le moment de tester. Nous vous avons mis ci-dessous une vidéo du fonctionnement complète de la maquette.

vidéo du fonctionnement du capteur couleur

Merci à vous !!!

La boite à histoire

Notre projet s’intitule “boîte à histoires”. Une boîte à histoire est un objet destiné aux enfants qui raconte des histoires préenregistrées adaptées pour le développement de l’enfant. Il existe toutes sortes de boîtes à histoires sur le marché, l’objectif du projet est de concevoir de A à Z une boîte à histoire à prix équivalent de ce qui existe sur le marché.  En plus, nous devions trouver un moyen d’ajouter facilement des histoires avec un câble USB.

Durant les 100 heures de projets, nous avons découvert le monde de l’électronique, nous avons pu faire de la soudure, de la programmation, de la recherche d’information sur des composants, une prise en main de logiciels comme EAGLE, de la conception CAO…

Déroulement du projet

Le projet s’est déroulé en plusieurs étapes pour arriver à la construction finale de la boîte à histoire. La première est la recherche des composants dont nous avions besoin pour faire fonctionner la boîte et la découverte de l’Arduino.

1) Recherche des composants de la boite et la découverte de l’Arduino

Tout d’abord, comme nous partions de zéro, il fallait faire des recherches sur les composants qui nous seraient utiles pour la conception de la boite à histoire. Pour commencer, nous avons fait des recherches et testé des shields que nous avions déjà à l’école. Ensuite, nous avons commandé le matériel qui nous manquait pour construire la boite à histoire. Nous avons testé tout les shields séparément avant de les combiner ensemble.

C’était assez fastidieux car nous ne savions même pas si c’était possible de fabriquer une boîte à histoire avec Arduino.

Carte Arduino Uno

Au départ, nous avons essayé un écran de 128*128 pixel.  Il allait servir d’écran d’information pour la sélection des histoires. Nous avons réussi à créer une interface correcte pour l’Arduino. Nous lui avons aussi créé un logo pause pour qu’il change en fonction d’un bouton.

écran avec l’interface graphique
écran fixé à la boite
DFplayer

Ensuite, nous sommes passés sur la programmation du son. Nous avons testé au départ un shield  “Music Maker” qui contenait une carte SD. Le son marchait bien, cependant nous n’avons trouvé aucun moyen d’accéder à la carte par USB. Cela nous a obligé à changer des composants et d’utiliser un DFplayer, un module mp3 pour Arduino. Ce qui nous intéressait dans le DFplayer était sa connexion USB+ et USB-. Cela nous a permis d’accéder facilement à la carte SD sans l’enlever.

Après nous avons enchainé par à la programmation des boutons. Nous avions besoin de 5 boutons :  

Boutons types pour Arduino
  • un bouton avancer et un bouton reculer, ils servent à changer de musique. Le numéro de la musique sera modifié après l’appui sur un des 2 boutons.
  • un bouton pause, un appui met la musique en pause et l’écran change son affichage. Un second appui relance la musique et change l’interface de l’écran.
  • un bouton qui augmente le son et un qui le baisse, ces deux boutons sont tous les 2 responsables du volume. Nous aurions pu utiliser un seul bouton rotatif.

Une fois cette étape de test terminée, nous avons combiné tous les programmes ensemble pour en former un seul (dont on vous épargnera le contenu) . Nous avons utilisé un breadboard pour placer les boutons et le DFplayer. La connexion USB pour modifier les fichiers à l’intérieur de la carte SIM du DFplayer était faite grâce à une câble USB dénudé. C’est à ce moment-là que nous avons pu voir si le projet était faisable sur Arduino. Étonnement, la connexion par USB fonctionnait, et les boutons aussi.

2) Impression du shield Arduino

La première étape était terminée, la seconde était de transformer l’amas de fils présent sur le breadboard en une carte électronique. Nous avons utilisé le logiciel EAGLE pour créer la carte sur mesure.  

Pour imprimer la carte, il faut tout d’abord importer les composants et faire leurs liaisons sur la partie “shematic” d’EAGLE. C’est assez long car il faut retrouver la référence de chaque composant que l’on veut ajouter

Schématique de la carte

Une fois la partie “shématic” faite, nous passons à la partie “ bord” du logiciel. Cette partie a pour objectif de reproduire les mêmes liaisons entre les composants que celles présente lors de l’impression. Nous ne pouvons pas croiser les fils de la carte contrairement à la partie “shématic”.

board désignée sur Arduino
board mini carte

Nous avons eu besoin de faire 2 prototypes pour que la carte marche entièrement. Avec cette carte, nous avons aussi imprimé une petite carte qui servira d’entrée USB. Le VCC, le GND, le USB+ et USB- seront récupérés par des borniers à vis au bout de la petite carte.

3) La batterie

La dernière étape pour avoir un objet fonctionnel était l’ajout de la batterie. La boîte à histoire doit être transportable, il nous faut donc une batterie rechargeable pour assurer son  fonctionnement. Nous avons utilisé un shield arduino batterie ainsi qu’une batterie de 3.7 volt et de 1.2 Ampères. La batterie est rechargée par un connecteur micro USB.

Shield batterie Arduino

3) CAO

Nous avons ensuite fabriqué un boîtier pour la boîte à histoire. Il nous restait peu de temps pour faire un design stylisé, nous avons donc fait un design très simple. Le boutons présent sur le shield imprimé sont superposés par des surboutons.

Coté sortie USB B et son
Coté sortie USB et son

Conclusion

Nous avons apprécié faire ce projet, c’était très enrichissant. Nous avons découvert l’univers de l’électronique à notre façon. Cette période de projet était très intéressante pour nous. Être en autonomie nous a appris à nous débrouiller et à apprendre à notre rythme. Nous avons pu progresser par nos propres expériences, ce qui est encore plus gratifiant. De plus, ce projet a joué un rôle important pour notre avenir. Nous voulons tous les 2 travailler dans un milieu proche de l’électronique ou de l’informatique. 

Nous sommes satisfait de notre travail, la boite est fonctionnelle. Il reste toujours beaucoup d’éléments à perfectionner. Avec plus de temps, nous aurions pu par exemple ajouter un mode veille ou créer un meilleur visuel. Pour plus d’information, lien vers le GitLab Angers.

Boîte à histoire
En partant de la droite, Adrien et Maxime

Merci d’avoir lu jusqu’au bout !

Adrien Morille et Maxime Lambert

Projet PEIP 2A – Robot 5R

La PlotClock

Bonjour à tous !


L’objectif de ce projet est de réaliser une Plotclock où le robot a pour tâche d’écrire l’heure en temps réel. Ce robot fonctionne avec deux bras, composés tous les deux de deux avant-bras, reliés entre eux au niveau de la tête d’écriture. Les deux bras sont dirigés de manière à dessiner l’heure sur l’écran à l’aide de servomoteurs.

Notre robot est équipé, en tête d’écriture, d’une LED UV pour écrire l’heure sur l’écran phosphorescent. Après que le robot est affiché l’heure grâce à la LED UV, elle s’efface toute seule, avec le temps.


Voici quelques étapes de la conception de notre robot en passant par la CAO, la programmation, l’électronique et bien sûr quelques problèmes rencontrés.


Notre projet a débuté par une phase de recherche

Avant de nous lancer dans la conception de notre robot, nous avons cherché à comprendre comment un robot 5R fonctionne. Pour cela, nous avons fait de nombreuses recherches sur la cinématique inverse, les angles que les servomoteurs doivent réaliser afin que la tête d’impression aille aux coordonnées cartésiennes que nous souhaitons. Pour cela nous avons fait des simulations avec les servomoteurs sur TinkerCAD pour comprendre comment manipuler les servomoteurs et comment fixer les angles afin de pouvoir maîtriser les mouvements des bras.

Simulation des servomoteurs avec potentiomètres à l’aide du logiciel TinkerCAD

Après ces essais et de nombreux schémas, nous sommes parvenus à établir trois fonctions qui seront utiles pour déplacer les bras aux coordonnées souhaitées :

//consine formula function
double cosineRule(double a, double b, double c) {
    return acos((sq(a)+sq(c)-sq(b))/(2*a*c));
}

//distance computation macro 
#define dist(x,y) sqrt(sq(x)+sq(y))

//atan2 formula macro 
#define angle(x,y) atan2(y,x)


Conception de notre robot sur SolidWorks

La deuxième étape est de concevoir notre robot sur Solidworks. Nous avons modélisé les bras, les avant-bras, le socle et son couvercle. Le socle, le robot en lui-même, contient les servomoteurs ainsi que le ruban phosphorescent qui a été placé dessus. Lors de la modélisation des bras, nous avons fait face à un problème majeur. En effet, lors de la première impression, les bras et les avant-bras étaient de la même taille, en plus d’être trop long. En faisant des essais avec les servomoteurs, nous nous sommes rendus compte qu’à cause de leur taille, les bras allaient trop facilement dans leur position limite. C’est-à-dire comme le montre l’image suivante :

Voici quelques vues de nos bras, de notre socle et enfin de l’assembage de notre robot avant l’impression, après avoir rectifier le problème rencontré :

Modélisation du bras 1
Modélisation du bras 2

Ce bras ci-dessus (bras 2) est un peu plus épais que les autres afin qu’on puisse garder la tête d’écriture parfaitement parallèle par rapport à l’écran de ruban.

Modélisation du bras 4 (avec la tête d’écriture)
Vidéo de l’impression 3D des bras du robot
Modélisation du socle
Vidéo de l’impression 3D du socle de notre robot

Après avoir modélisé chaque pièce une par une, nous les avons assemblées afin de mieux visualiser notre robot final.

Modélisation de l’assemblage complet

Assemblage & programmation de notre robot

Ensuite, une fois l’impression terminée, les bras réimprimés plus petits, nous avons assemblé chaque composant entre eux, collé le ruban adhésif phosphorescent sur le robot, fixé les bras sur les servomoteurs. Après avoir reçu tous nos composants dont le module horloge afin d’écrire l’heure correctement, nous avons soudés et connectés les câbles sur la carte Arduino.

Voici une image de notre robot avec tous les câbles assemblés. Sur l’image de droite, vous pouvez voir un schéma de l’assemblage sur TinkerCad afin de mieux visualiser les branchements de chaque composant.

À partir de ce moment-là, nous devions essayer le programme que nous avions développé en même temps que la modélisation et l’impression. Lors du lancement de notre programme, le robot affichait l’heure mais à l’envers c’est-à-dire en mode miroir (comme vous pouvez le voir sur la vidéo ci-contre). Nous avions donc un problème avec notre repère des coordonnées. En effet, en faisant de multiples tests, nous avons compris que le sens de l’axe des x était inversé.

Après avoir identifié le problème, nous devions le corriger dans notre programme, inverser le sens des chiffres, mais aussi inverser le sens de l’écriture. Nous avons donc modifié les coordonnées de chaque chiffre et nous avons repensé leur position sur l’écran d’écriture. Dû au fait d’une calibration non parfaite, des petits réglages ont été effectués pour que les chiffres soient droits. Prenons l’exemple du chiffre 2 :

Avant l’ajustement :

 case 2: 
            digitStart(0,3/4);
            digitArc(1/2,3/4, 1/2,1/4, 1/2, -1/8);
            digitArc(1,0, 1,1/2, 3/8, 1/2);
            digitMove(1,0);
            break;

Après l’ajustement

case 2: 
            digitStart(1,3/4);
            digitArc(1/2,3/4, -1/2,1/4, 1/2, -1/8);
            digitArc(0,0, -1, 1/2, 3/8, 1/2);
            digitMove(0,1/4);
            break; 

Pour finir, pour que notre robot soit autonome, nous avons ajouté une batterie. De plus, nous voulions mettre un interrupteur afin qu’on puisse éteindre l’alimentation de notre carte Arduino pour que la batterie dure plus longtemps. Nous nous sommes vites rendus compte que notre module horloge devait être alimenté en continue pour qu’il écrive l’heure en temps réel. Notre projet de mettre un interrupteur n’était donc pas possible avec ce module horloge. Il existe d’autres modules horloge qui possèdent une pile intégrée afin qu’ils restent constamment alimenter pour qu’ils ne perdent pas l’heure. Nous avons donc décidé de mettre des piles rechargeables 6V de 1600mA pour éviter qu’elles ne se déchargent trop vite.


Bilan & Critiques

Ce projet a été très enrichissant et intéressant. Nous avons pu mettre à profit de nombreuses compétences notamment en conception mais aussi en électronique, en électricité et en programmation. La partie la plus dure a été la programmation avec un langage qui était nouveau pour nous.

De plus, nous avons appris à être autonome et prendre des décisions dans un projet de A à Z. Savoir se débrouiller face à différents problèmes et ne pas abandonner sont aussi deux points importants dans un projet. De plus, le travail d’équipe est une compétence essentielle pour le bon déroulement d’un projet. Nous avons donc dû savoir s’écouter entre coéquipier, exprimer chacun ses idées. Nous n’étions pas forcément toujours d’accord sur certaines choses mais en discutant ensemble, nous trouvions toujours un compromis.

Notre robot n’est qu’un prototype, il y a donc certaines choses à améliorer comme l’alimentation de la carte Arduino ou bien le module horloge. De plus, nous pourrions développer davantage notre programme pour qu’il est différente fonctionnalité comme écrire la date ou dessiner quelque chose demandée par l’utilisateur. Pour aller plus loin, développer une application pour le diriger depuis son portable pourrait être intéressant afin d’avoir de multiples fonctionnalités.

Nous tenons à remercier notre référent, M. LAGRANGE, pour nous avoir aider et guider tout au long de ce projet.

Merci pour votre lecture !!!

Mohamad DEIRI / Méline TARLEVE