IMA4 2018/2019 P42 : Différence entre versions

De Wiki de Projets IMA
(Semaine 11)
(Documents Rendus)
 
(132 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 109 : Ligne 109 :
  
 
==Cahier des charges==
 
==Cahier des charges==
[[Fichier:Piste_crep.PNG|300px|thumb|right|Ébauche pour déterminer les dimensions de la piste]]
+
[[Fichier:Piste_crep.PNG|200px|thumb|left|Ébauche pour déterminer les dimensions de la piste]]
[[Fichier:Robot.PNG|200px|thumb|right|Ébauche pour déterminer les dimensions du robot vu de devant]]
+
[[Fichier:Robot.PNG|200px|thumb|right|Ébauche pour déterminer les dimensions du robot (vu de devant)]]
  
 
Après avoir étudié plusieurs scénarios (Minecraft, à bord d'une station spatiale ...), nous avons décidé de réaliser le scénario "à bord d'une station spatiale".  
 
Après avoir étudié plusieurs scénarios (Minecraft, à bord d'une station spatiale ...), nous avons décidé de réaliser le scénario "à bord d'une station spatiale".  
Ligne 138 : Ligne 138 :
  
 
* Afin que notre piste et notre robot correspondent à un univers spatial, notre piste ne comportera malheureusement pas de parcelles triangulaires.
 
* Afin que notre piste et notre robot correspondent à un univers spatial, notre piste ne comportera malheureusement pas de parcelles triangulaires.
 +
<div style="clear: both;">
  
 
==Choix techniques : matériel et logiciel==
 
==Choix techniques : matériel et logiciel==
Ligne 218 : Ligne 219 :
 
|  
 
|  
 
|  
 
|  
 +
|
 +
|
 +
|
 +
|
 +
| 10
 
|-
 
|-
 
| '''Modélisation du robot'''
 
| '''Modélisation du robot'''
Ligne 232 : Ligne 238 :
 
|  
 
|  
 
| 5
 
| 5
 +
|
 +
|
 +
|
 +
|
 +
| 19
 
|-  
 
|-  
 
| '''Modélisation de la piste'''
 
| '''Modélisation de la piste'''
Ligne 246 : Ligne 257 :
 
| 6
 
| 6
 
| 2
 
| 2
 +
|
 +
|
 +
|
 +
|
 +
| 20
 
|-  
 
|-  
 
| '''Réalisation de la piste'''
 
| '''Réalisation de la piste'''
Ligne 260 : Ligne 276 :
 
| 1
 
| 1
 
|  
 
|  
 +
| 4
 +
|
 +
| 8
 +
|
 +
| 49
 
|-
 
|-
 
| '''Réalisation du robot'''
 
| '''Réalisation du robot'''
Ligne 274 : Ligne 295 :
 
| 4
 
| 4
 
|  
 
|  
 +
| 2
 +
| 6
 +
|
 +
|
 +
| 16
 
|-
 
|-
| '''Programmation du robot'''
+
| '''Programmation'''
 
|  
 
|  
 
|  
 
|  
Ligne 288 : Ligne 314 :
 
| 4
 
| 4
 
| 8
 
| 8
 +
| 2
 +
| 4
 +
| 2
 +
|
 +
| 40
 
|-
 
|-
 
| '''Scénario'''
 
| '''Scénario'''
Ligne 302 : Ligne 333 :
 
|  
 
|  
 
|  
 
|  
 +
|
 +
|
 +
|
 +
|
 +
| 6
 +
|-
 +
| '''Rédaction du rapport et du wiki'''
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| 8
 +
| 8
 
|-
 
|-
 
| '''Total'''
 
| '''Total'''
Ligne 316 : Ligne 371 :
 
| 15
 
| 15
 
| 15
 
| 15
 +
| 8
 +
| 12
 +
| 10
 +
| 8
 +
| 168
 
|}
 
|}
  
Ligne 321 : Ligne 381 :
 
==Semaine 1==
 
==Semaine 1==
  
Cette semaine, nous nous sommes attardé à la modélisation de la piste et du robot en 3D.
+
[[Fichier:CREP_robot_3D.png|300px|thumb|left|Plan 3D du robot]]
 +
[[Fichier:Piste3D.PNG|200px|thumb|right|Piste en dimension réelle]]
 +
[[Fichier:Joint_central.PNG|200px|thumb|right|Joint central modélisé]]
 +
 
 +
Cette semaine, nous nous sommes attardé à la modélisation de la piste et du robot en 3D :
  
 
Le robot ayant des dimensions raisonnables, il est possible d'imprimer son châssis avec une imprimante 3D du Fabricarium. Pour la modélisation, nous avons choisi le logiciel Solidworks car il permet, en plus de sa simplicité d'utilisation, de réaliser les composants (moteurs, roues, cartes électroniques, etc.) pour pouvoir construire un assemblage final et ainsi éviter les erreurs de dimensionnement en plus de nous obliger à prévoir des moyens de fixation. Voici le résultat de cette séance : (Notes : les nouvelle dimensions du robot sont les suivantes : 132x150x100 mm (lxLxh))
 
Le robot ayant des dimensions raisonnables, il est possible d'imprimer son châssis avec une imprimante 3D du Fabricarium. Pour la modélisation, nous avons choisi le logiciel Solidworks car il permet, en plus de sa simplicité d'utilisation, de réaliser les composants (moteurs, roues, cartes électroniques, etc.) pour pouvoir construire un assemblage final et ainsi éviter les erreurs de dimensionnement en plus de nous obliger à prévoir des moyens de fixation. Voici le résultat de cette séance : (Notes : les nouvelle dimensions du robot sont les suivantes : 132x150x100 mm (lxLxh))
 
[[Fichier:CREP_robot_3D.png]]
 
  
 
Pour les prochaines séances, il restera à :
 
Pour les prochaines séances, il restera à :
Ligne 333 : Ligne 395 :
 
* Finaliser l'esthétisme du robot.
 
* Finaliser l'esthétisme du robot.
  
Puis nous avons aussi designer la piste en modélisation 3D aux bonnes dimensions à l'aide d'OpenSCAD afin de mieux visualiser le rendu final visé:
+
Puis nous avons aussi designer la piste en modélisation 3D aux bonnes dimensions à l'aide d'OpenSCAD afin de mieux visualiser le rendu final visé :
 
 
 
 
[[Fichier:Piste3D.PNG|piste modélisé en 3D]]
 
  
  
 
Nous remarquons que dans nos jardins nous aurons la place pour respecter la contrainte de forme des parcelles du cahier des charges de la CREP (zone jaune) alors que les trais blanc représentent le découpage de la piste en 4 planches de contreplaqués de 1*1,5 m.
 
Nous remarquons que dans nos jardins nous aurons la place pour respecter la contrainte de forme des parcelles du cahier des charges de la CREP (zone jaune) alors que les trais blanc représentent le découpage de la piste en 4 planches de contreplaqués de 1*1,5 m.
Ensuite nous avons modéliser les jointures pour lier les planches de contre-plaqué selon plusieurs contraintes de liaison et d'esthétisme:
 
 
 
[[Fichier:stylevis.PNG|500px|thumb|left|jointure esthétique de type vis]][[Fichier:stylecarré.PNG|500px|thumb|right|jointure classique juste utile]]<br style="clear: both" />
 
 
  
 +
Ensuite nous avons modéliser les jointures pour lier les planches de contre-plaqué selon plusieurs contraintes de liaison et d'esthétisme :
  
 
En discutant des modélisation nous avons finalement décidé de mettre chacune des planches sur des pieds et les lier avec moins de jointure ce qui nous permettra d'avoir une piste plus stable :
 
En discutant des modélisation nous avons finalement décidé de mettre chacune des planches sur des pieds et les lier avec moins de jointure ce qui nous permettra d'avoir une piste plus stable :
[[Fichier:Joint_central.PNG]]
 
 
  
 
Pour les prochaines séances, il restera à :
 
Pour les prochaines séances, il restera à :
Ligne 358 : Ligne 411 :
  
 
==Semaine 2==
 
==Semaine 2==
 +
[[Fichier:Solution2.PNG|200px|thumb|right|Le seconde solution de découpe retenue]]
 +
[[Fichier:Piece.PNG|200px|thumb|left|Pièces nécessaires pour notre piste]]
 +
[[Fichier:CREP_robot.PNG|200px|thumb|left|Ajout des roulettes sur le robot]]
 +
 
Après délibération nous avons décidé de faire des joints de dessous soutenu par des piliers pour pouvoir mettre sous la piste tout l'électronique nécessaire à l'activation des portes et de l'éclairage.
 
Après délibération nous avons décidé de faire des joints de dessous soutenu par des piliers pour pouvoir mettre sous la piste tout l'électronique nécessaire à l'activation des portes et de l'éclairage.
  
Ligne 363 : Ligne 420 :
  
 
Vous trouverez donc ci joint nos designs 3D de ces différentes pièces sur Onshape:
 
Vous trouverez donc ci joint nos designs 3D de ces différentes pièces sur Onshape:
 
[[Fichier:Piece.PNG]]
 
  
 
La modélisation du robot a aussi avancé, les roues folles ont été ajoutées. Le prochaine étape sera de concevoir le bumper :
 
La modélisation du robot a aussi avancé, les roues folles ont été ajoutées. Le prochaine étape sera de concevoir le bumper :
  
[[Fichier:CREP_robot.PNG]]
+
Nous avons aussi prévu le découpage des plaques de contreplaqué pour optimiser au maximum les chutes. Nous avons décidé de prendre 6 plaques de contreplaqué de 160x80 cm. Voici le découpage prévu (à gauche) :
 
 
Nous avons aussi prévu le découpage des plaques de contreplaqué pour optimiser au maximum les chutes. Nous avons décidé de prendre 6 plaques de contreplaqué de 160x80 cm. Voici le découpage prévu :
 
 
 
[[Fichier:CREP_piste.png]]
 
  
 
Avec ce découpage nous avons donc notre piste de 3x2 mètres et 6*80 cm + 4*160 cm + 4*140 cm = 1680 cm de murs de 10 cm de haut chacun (nous avons en tout 1400 cm de murs sur notre piste).
 
Avec ce découpage nous avons donc notre piste de 3x2 mètres et 6*80 cm + 4*160 cm + 4*140 cm = 1680 cm de murs de 10 cm de haut chacun (nous avons en tout 1400 cm de murs sur notre piste).
Ligne 378 : Ligne 429 :
  
 
Alors que la solution avec des planches de la dimension au dessus (250*122cm) nous donne 800cm de chute par planche soit beaucoup trop :
 
Alors que la solution avec des planches de la dimension au dessus (250*122cm) nous donne 800cm de chute par planche soit beaucoup trop :
 
[[Fichier:Solution2.PNG]]
 
  
 
De plus elle nous revient à 166.53€ soit 18.2€ le m² pour 9.15m² elle n'est donc pas viable car elle produit trop de chute et coûte trop cher.
 
De plus elle nous revient à 166.53€ soit 18.2€ le m² pour 9.15m² elle n'est donc pas viable car elle produit trop de chute et coûte trop cher.
  
C'est pour cela qu'on utilisera six planches de dimensions 160*80*0.5cm.
+
C'est pour cela qu'on utilisera six planches de dimensions 160*80*0.5cm (à droite).
  
 
La semaine prochaine nous devrons acheter nos plaques de contre-plaqué et imprimer les pièces 3D.
 
La semaine prochaine nous devrons acheter nos plaques de contre-plaqué et imprimer les pièces 3D.
 +
 +
<div style="clear: both;">
  
 
==Semaine 3==
 
==Semaine 3==
  
Nous avons été cherché le bois nécessaire à la construction de la piste. La découpe des planches a été réalisé par un technicien du magasin, cependant chaque trais de découpe enlevait 3 cm de matière donc nous avons décidé de faire la découpe des murs (de 10 cm de largeur) à la découpeuse laser.
+
[[Fichier:CREP_planches.jpg|300px|thumb|left|Planche de contre-plaqué découpées]]
 +
[[Fichier:Piece_joint_central.jpg|300px|thumb|right|Joint centraux imprimés en 3D]]
  
[[Fichier:CREP_planches.jpg]]
+
Nous avons été cherché le bois nécessaire à la construction de la piste. La découpe des planches a été réalisé par un technicien du magasin, cependant chaque trais de découpe enlevait 3 cm de matière donc nous avons décidé de faire la découpe des murs (de 10 cm de largeur) à la découpeuse laser, de plus nous avons commencé à imprimer en 3D les joints de notre piste:
  
Cette semaine nous avons commencer à imprimer en 3D les joints de notre pièce :
+
La prochaine étape sera de tracer le chemin des murs, des trous pour les jardins,imprimer toutes les pièces 3D nécessaires et les pions des piliers.
  
[[Fichier:Piece_joint_central.jpg]]
+
<div style="clear: both;">
 
 
La prochaine étape sera de tracer le chemin des murs, des trous pour les jardins,imprimer toutes les pièces 3D nécessaires et les pions des piliers.
 
  
 
==Semaine 4==
 
==Semaine 4==
 +
[[Fichier:CREP_Triangles.png|400px|thumb|right|Jointure des cotés pour la piste]]
 +
[[Fichier:CREP_piste_murs.png|400px|thumb|left|Disposition des murs sur la piste]]
 
Cette semaine nous avons travaillé sur la piste ainsi que sur les pièces qui serviront de liaison pour cette dernière.
 
Cette semaine nous avons travaillé sur la piste ainsi que sur les pièces qui serviront de liaison pour cette dernière.
 
[[Fichier:CREP_Triangles.png]]
 
  
 
Nous avons placés les murs sur la piste en découpant certains d'entre eux pour les ajuster.
 
Nous avons placés les murs sur la piste en découpant certains d'entre eux pour les ajuster.
Ligne 410 : Ligne 460 :
 
Nous avons ensuite tracé les trous de 1 cm de diamètre à percer.
 
Nous avons ensuite tracé les trous de 1 cm de diamètre à percer.
  
[[Fichier:CREP_piste_murs.png]]
+
<div style="clear: both;">
  
 
==Semaine 5==
 
==Semaine 5==
 +
 +
[[Fichier:CREP_Robot_Forme.PNG|300px|thumb|right|Modélisation finale du robot]]
  
 
Cette semaine nous avons percé les repères tracés la semaine dernière. Les trous ont été faits pour que les pions des jointures s’emboîtent avec un peu de résistance pour créer un encastrement rigide grâce aux frottements. Nous sommes satisfait de cette solution pour le moment mais il faudra veiller à l'usure de ces liaisons qui pourraient abîmer le bois à terme.
 
Cette semaine nous avons percé les repères tracés la semaine dernière. Les trous ont été faits pour que les pions des jointures s’emboîtent avec un peu de résistance pour créer un encastrement rigide grâce aux frottements. Nous sommes satisfait de cette solution pour le moment mais il faudra veiller à l'usure de ces liaisons qui pourraient abîmer le bois à terme.
Ligne 433 : Ligne 485 :
 
Pour la suite il restera a prévoir un passage pour les câbles et les leds
 
Pour la suite il restera a prévoir un passage pour les câbles et les leds
  
[[Fichier:CREP_Robot_Forme.PNG]]
+
<div style="clear: both;">
  
 
==Vacances de février==
 
==Vacances de février==
 +
[[Fichier:CREP_PercTeacher.PNG|400px|thumb|right|Interface graphique de l'application]]
  
 
La conception du robot arrive bientôt à sa fin. Pour prendre de l'avance, nous avons profité de ces vacances pour nous essayer à la programmation du robot.
 
La conception du robot arrive bientôt à sa fin. Pour prendre de l'avance, nous avons profité de ces vacances pour nous essayer à la programmation du robot.
Ligne 450 : Ligne 503 :
  
 
Voici l'interface réalisée :
 
Voici l'interface réalisée :
 
[[Fichier:CREP_PercTeacher.PNG]]
 
  
 
Le logiciel n'est pas encore complet. En effet, il ne manque que l'envoi des données via liaison série. Cette partie pourra être réalisée à l'aide d'une librairie comme [http://rxtx.qbang.org/wiki/index.php/Main_Page RxTx].
 
Le logiciel n'est pas encore complet. En effet, il ne manque que l'envoi des données via liaison série. Cette partie pourra être réalisée à l'aide d'une librairie comme [http://rxtx.qbang.org/wiki/index.php/Main_Page RxTx].
  
 
Enfin, un projet git a été créé sur le gitlab de l'école et est disponible en cliquant sur le lien suivant : [https://archives.plil.fr/pfrison/projet-crep Projet git du groupe 42].
 
Enfin, un projet git a été créé sur le gitlab de l'école et est disponible en cliquant sur le lien suivant : [https://archives.plil.fr/pfrison/projet-crep Projet git du groupe 42].
 +
 +
<div style="clear: both;">
  
 
==Semaine 6==
 
==Semaine 6==
 
+
[[Fichier:pilier_joint.jpg|200px|thumb|right|Pilier de jointure de de la piste]]
 
PercTeacher (voir [[IMA4_2018/2019_P42#Vacances_de_f.C3.A9vrier|Vacances de février]]) est maintenant fonctionnel et est capable d'envoyer les informations à une carte Arduino par liaison série. Le projet git a été mise à jour.
 
PercTeacher (voir [[IMA4_2018/2019_P42#Vacances_de_f.C3.A9vrier|Vacances de février]]) est maintenant fonctionnel et est capable d'envoyer les informations à une carte Arduino par liaison série. Le projet git a été mise à jour.
  
Ligne 466 : Ligne 519 :
  
 
Tous les joints de la piste on été imprimés en 3D et collés à l'aide d'un pistolet à colle aux piliers de PVC :
 
Tous les joints de la piste on été imprimés en 3D et collés à l'aide d'un pistolet à colle aux piliers de PVC :
 
[[Fichier:pilier_joint.jpg]]
 
  
 
Nous avons aussi avancé sur le scénario, que nous allons prochainement réécrire en pièce de théâtre avec plusieurs actes.
 
Nous avons aussi avancé sur le scénario, que nous allons prochainement réécrire en pièce de théâtre avec plusieurs actes.
  
 
Nous allons maintenant commencer à imprimer les jointures mur/piste afin que cette dernière soit prête pour l'arrivé des LEDs et contrôleurs à LED.
 
Nous allons maintenant commencer à imprimer les jointures mur/piste afin que cette dernière soit prête pour l'arrivé des LEDs et contrôleurs à LED.
 +
 +
<div style="clear: both;">
  
 
==Semaine 7==
 
==Semaine 7==
 +
[[Fichier:CREP_Robot_peinture.jpg|400px|thumb|right|Résultat du robot imprimé et peint]]
  
 
Cette semaine, le châssis du robot a été imprimé à l'aide des imprimantes 3D du Fabricarium. Parce que nous avons utilisé deux imprimantes chargées avec deux couleurs de PLA différentes, nous avons unifié la couleur du robot avec de la peinture acrylique noire. Voici le résultat avec à gauche, le robot assemblé et à droite, le compartiment pour l'électronique d'ouvert (l'arduino uno est ici pour l'exemple, nous utiliserons bien une méga comme prévu) :
 
Cette semaine, le châssis du robot a été imprimé à l'aide des imprimantes 3D du Fabricarium. Parce que nous avons utilisé deux imprimantes chargées avec deux couleurs de PLA différentes, nous avons unifié la couleur du robot avec de la peinture acrylique noire. Voici le résultat avec à gauche, le robot assemblé et à droite, le compartiment pour l'électronique d'ouvert (l'arduino uno est ici pour l'exemple, nous utiliserons bien une méga comme prévu) :
 
[[Fichier:CREP_Robot_peinture.jpg]]
 
  
 
Aussi, les roulettes et le servomoteur du bumper ont été installé, il faudra attendre le reste du matériel pour avoir le robot complet.
 
Aussi, les roulettes et le servomoteur du bumper ont été installé, il faudra attendre le reste du matériel pour avoir le robot complet.
Ligne 494 : Ligne 546 :
  
 
Nous avons aussi continuer de travailler le scénario qui devrait être prêt en fin de semaine prochaine.
 
Nous avons aussi continuer de travailler le scénario qui devrait être prêt en fin de semaine prochaine.
 +
<div style="clear: both;">
  
 
==Semaine 8==
 
==Semaine 8==
 
+
[[Fichier:Schématique_P42.PNG|150px|thumb|right|Schéma électronique de la piste]]
 +
[[Fichier:PCB_42.PNG|300px|thumb|left|PCB de la piste avec les 3 contrôleurs de LEDs]]
 
Cette semaine nous avons continuer à monter nos murs sur la piste cependant cette étape est très longue car nous disposons d'un seul étaux, nous devons donc fixer les mur un par un.
 
Cette semaine nous avons continuer à monter nos murs sur la piste cependant cette étape est très longue car nous disposons d'un seul étaux, nous devons donc fixer les mur un par un.
  
Ligne 502 : Ligne 556 :
  
 
Nous avons utilisé Fritzing pour créer notre carte en utilisant 3 contrôleurs par carte nous avons donc choisis une capacité de découplage de 10 nF ainsi qu'une résistance de 2.5 kOhms pour fixer notre courant d'entrée à 20 mA pour chacun de nos contrôleurs avec la schématique suivante:
 
Nous avons utilisé Fritzing pour créer notre carte en utilisant 3 contrôleurs par carte nous avons donc choisis une capacité de découplage de 10 nF ainsi qu'une résistance de 2.5 kOhms pour fixer notre courant d'entrée à 20 mA pour chacun de nos contrôleurs avec la schématique suivante:
 
[[Fichier:Schématique_P42.PNG]]
 
  
 
En ajoutant des un connecteur ainsi que quelques jumpers nous arrivons au circuit suivant :
 
En ajoutant des un connecteur ainsi que quelques jumpers nous arrivons au circuit suivant :
  
[[Fichier:PCB_42.PNG]]
+
Nous l'enverrons à nos professeurs ce lundi pour vérification.
  
Nous l'enverrons à nos professeurs ce lundi pour vérification.
+
<div style="clear: both;">
  
 
==Semaine 9==
 
==Semaine 9==
 
+
[[Fichier:Solution1porte.PNG|400px|thumb|right|Solution retenue pour ouvrir les portes]]
 +
[[Fichier:CREP_Robot_test.jpg|400px|thumb|left|Branchements pour le test du robot]]
 
Cette semaine nous avons réfléchit à la meilleur option pour ouvrir les portes avec le servomoteur, nous avons opté pour la porte raccordée par des fils passant sous la piste à une roue contrôlée par le servomoteur :
 
Cette semaine nous avons réfléchit à la meilleur option pour ouvrir les portes avec le servomoteur, nous avons opté pour la porte raccordée par des fils passant sous la piste à une roue contrôlée par le servomoteur :
 
[[Fichier:Solution1porte.PNG]]
 
  
 
Nous avons aussi corrigé les erreurs du PCB des drivers de leds.
 
Nous avons aussi corrigé les erreurs du PCB des drivers de leds.
Ligne 522 : Ligne 573 :
  
 
Voici le robot monté dans le phase de test (Pour ce test, un seul controleur moteur a été cablé) :
 
Voici le robot monté dans le phase de test (Pour ce test, un seul controleur moteur a été cablé) :
 
[[Fichier:CREP_Robot_test.jpg]]
 
  
 
Nous avons aussi avancé dans la programmation des arduino en C via AVR. Nous :
 
Nous avons aussi avancé dans la programmation des arduino en C via AVR. Nous :
Ligne 530 : Ligne 579 :
 
* avons programmé et testé le code pour contrôler les servomoteurs
 
* avons programmé et testé le code pour contrôler les servomoteurs
 
* avons programmé et testé le code pour contrôler les moteurs pas à pas.
 
* avons programmé et testé le code pour contrôler les moteurs pas à pas.
 +
<div style="clear: both;">
  
 
==Semaine 10==
 
==Semaine 10==
 +
[[Fichier:CREP_VRGNY.gif|600px|thumb|middle|Démonstration animée de l'application (cliquez sur l'image pour voir l'animation)]]
 +
[[Fichier:shield.PNG|400px|thumb|left|PCB shield pour arduino]]
 +
[[Fichier:schéma.PNG|400px|thumb|left|Schéma électronique du shield pour l'Arduino Mega]]
  
 
Dans la continuité de la [[IMA4_2018/2019_P42#Semaine_9|semaine dernière]], nous avons continué la programmation en C des arduino. Cette semaine, nous avons programmé le code pour le contrôle des leds via le tlc5947. Pour cela, nous nous sommes inspiré du travail réalisé par Lirui Zhang et Lihe Zhang ([[IMA4_2017/2018_P18|projet P18 de l'année dernière]]) en reprenant leurs fichiers tlc5947.c et tlc5947.h.
 
Dans la continuité de la [[IMA4_2018/2019_P42#Semaine_9|semaine dernière]], nous avons continué la programmation en C des arduino. Cette semaine, nous avons programmé le code pour le contrôle des leds via le tlc5947. Pour cela, nous nous sommes inspiré du travail réalisé par Lirui Zhang et Lihe Zhang ([[IMA4_2017/2018_P18|projet P18 de l'année dernière]]) en reprenant leurs fichiers tlc5947.c et tlc5947.h.
Ligne 540 : Ligne 593 :
  
 
Voici un aperçu animé :
 
Voici un aperçu animé :
 
[[Fichier:CREP_VRGNY.gif]]
 
  
 
Bien que l'interface soit fonctionnelle, il reste quelques détails :
 
Bien que l'interface soit fonctionnelle, il reste quelques détails :
Ligne 549 : Ligne 600 :
 
Cette semaine nous avons modifié le PCB des 3 drivers leds ainsi crée un souveau en tant que shield pour l'arduino de notre robot:
 
Cette semaine nous avons modifié le PCB des 3 drivers leds ainsi crée un souveau en tant que shield pour l'arduino de notre robot:
  
Vous trouverez ici notre schématique :
+
Vous trouverez ci-dessous notre schématique.
  
[[Fichier:schéma.PNG]]
+
et ci-dessus notre circuit imprimé.
  
et ici notre circuit imprimé :
+
<div style="clear: both;">
  
[[Fichier:shield.PNG]]
+
==Semaine 11==
 +
[[Fichier:PCB_shield_42.PNG|400px|thumb|left|Version finale du shield pour arduino]]
 +
[[Fichier:Erreur_pcb.PNG|400px|thumb|right|Illustration de l'erreur sur le PCB de la piste]]
  
==Semaine 11==
 
 
Cette semaine nous avons imprimé nos cartes électroniques c'est à dire le shield et le contrôleur de leds.
 
Cette semaine nous avons imprimé nos cartes électroniques c'est à dire le shield et le contrôleur de leds.
  
Pour le shield aucun problème n'est survenu pendant la production il a été correctement produit nous avons donc commencé à le souder.
+
Pour le shield aucun problème n'est survenu pendant la production il a été correctement produit nous avons donc commencé à le souder, voici sa version finale à gauche.
 +
 
 +
Pour le contrôleur de leds nous avons eu un problème pour tracer certaines voies qui disparaissaient lors du fraisage comme ici à droite.
 +
 
 +
après avoir cherché à l'aide du logiciel de visualisation de la machine de Thierry Flamen nous en avons déduit qu'à cet endroit la machine utilisait une fraise de 3 mm au lieu de 1 mm.
 +
 
 +
Nous avons tenté de modifier ces erreurs en utilisant des fils pour remplacer les voies ( vous pouvez y voir des traces de soudures sur la photo ci-dessus ) mais malheureusement ces voies étaient trop petites ( 12 mm ).
  
Pour le contrôleur de leds nous avons eu un problème pour tracer certaines voies qui disparaissaient lors du fraisage :
+
Nous avons donc essayé de corriger cette erreur directement sur Fritzing et nous avons réussi en retraçant nos voies en partant du TLC5947 vers le header et non l'inverse.
 +
<div style="clear: both;">
  
 
==Vacances d'avril, semaine 1==
 
==Vacances d'avril, semaine 1==
 +
[[Fichier:CREP_Robot_Shield.jpg|400px|thumb|right|Résultat final du robot sans la partie haute]]
 +
 +
Cette semaine, nous avons terminé de souder le shield de l'arduino pour le robot. Cependant, nous nous sommes aperçu de plusieurs problème de conception :
 +
* Les deux contrôleurs moteur ont été placé du mauvais côté. Il nous a donc fallu les souder du côté du cuivre, ce qui a induit un second problème : il était maintenant impossible de mettre les headers pour y brancher l'arduino puisque la hauteur induite par les contrôleurs moteur gênait l’emboîtement entre le shield et l'arduino. De plus, il nous a fallu faire attention a ce que les pins des contrôleur moteurs ne touche pas la masse du port USB de l'arduino. Dans un premier temps, nous avions alors créer des headers plus long avec des fils rigides. Cependant, le compartiment électronique du robot, n'est pas assez haut pour y loger l'ensemble. Après une courte réflexion, nous avons plié les "headers" dans le sens de la largeur, ce qui a permit de loger les contrôleur moteurs (avant gêné par le port USB) entre le port USB et le port d'alimentation. L'ensemble shield + arduino loge maintenant dans le compartiment électronique du robot.
 +
* Nous avion oublié de mettre une résistance de pull-down au blank du contrôleur de leds.
 +
 +
Voici une photo du résultat :
 +
 +
Bien que l’esthétique du shield ne soit pas au rendez-vous, les tests du contrôle des moteurs, du contrôleur de led et du servo pour le bumper sont concluant. La carte a fonctionné et la partie fonctionnel du robot est maintenant terminée.
 +
<div style="clear: both;">
  
 
==Vacances d'avril, semaine 2==
 
==Vacances d'avril, semaine 2==
 +
[[Fichier:Murs.PNG|400px|thumb|left|Fixations des LEDs au mur]]
 +
[[Fichier:Servoporte.PNG|400px|thumb|right|Système servomoteur et roue. Pièce moteur pour l'ouverture de la porte]]
 +
Cette semaine nous avons commencé par faire fonctionner l'application PercTeacher avec le robot, cet essaie a été concluant, nous pourrons donc nous en servir afin de faire parcourir la piste à notre robot.
 +
 +
Puis nous avons tenté de souder notre carte contrôleur de leds mais ce fut difficile sans la patte à braiser que l'on peut utiliser en C201. nous avons donc décidé d'attendre la rentrée pour souder cette dernière.
 +
 +
Nous avons ensuite placé toutes les leds sur la piste selon l'organisation blanc->bleu,rouge pour les murs simple et blanc,bleu,rouge pour les murs double en mettant les leds blanches dans le sens inverse des deux autres couleurs. Nous avons ensuite percé le robot pour y mettre 24 leds.
 +
 +
Nous avons fini le scénario nous n'avons plus qu'à y ajouter un timing pour nous aider lors de la programmation.
 +
 +
Pour finir nous avons relié notre roue pour l'ouverture des porte à un servomoteur ( que nous avons programmé pour tourner pendant un certain temps ) et installé le système sur notre piste et testé ce dernier manuellement :
 +
 +
Le système semble bien fonctionné mais nous remarquons beaucoup de frottements sur la ficelle nous allons alors utiliser pièce métalliques à la rentrée pour pallier à ce frottement ficelle/bois.
 +
<div style="clear: both;">
 +
 +
=Conclusion du projet=
 +
Ce projet nous as permis de mettre en œuvre une véritable démarche d’ingénieur à commencer par l’établissement d’un cahier des charges, puis à élaboration du suivi d’une liste de matériel pour respecter ce dernier et enfin, à la réalisation d’un calendrier prévisionnel du travail à faire.
 +
 +
Nous avons ensuite commencé notre projet par une modélisation grâce à plusieurs logiciels de conception. SolidWorks pour la modélisation des impressions en 3D, OpenSCAD pour le plan de la piste et Fritzing pour l’élaboration des circuits électronique.
 +
 +
Plusieurs problèmes imprévus nous ont barré la route mais une analyse de risque nous a permis de rapidement pallier aux plus simples et de prévoir leurs solutions avant même qu’ils n’apparaissent. Au fur et à mesure de l’avancée du projet, nous nous sommes vite rendu compte que nous avions eu les yeux plus gros que le ventre quant à la conception de la piste, nous l’expliquons par la peur d’un manque de contenu IMA dans le projet. Après de nombreux échecs nous avions décidé de nous concentrer pleinement sur le robot afin d’avoir du contenu IMA à présenter quitte à délaisser notre piste.
 +
 +
Pour nos derniers mots nous voulions souligner le fait que, malgré notre échec à  remplir l’entièreté du cahier des charges, ce projet nous as permis de développer des compétences de gestion de projet et de travail d’équipe qui des fois, malgré une parfaite entente entre nous, peut s'avérer plus difficile que prévu. Et par-dessus tout, ce projet nous a permis de mettre en application nos compétences en modélisation 3D, en électronique et en programmation ce qui est le point le plus important des projets IMA selon nous.
 +
 +
Voici en cette fin de projet les points du cahier des charges qui ont été respectés:
 +
* Le robot devra avoir une forme de 'U' inversé afin de pouvoir parcourir les parcelles et les arroser par le dessus.
 +
* Le robot devra posséder un bumper robotisé pouvant s'abaisser et pousser la caisse de fruits que l'on souhaite déplacer.
 +
* Le robot devra se déplacer avec une importante précision.
 +
* Le robot devra être esthétique.
 +
* La piste comportera plusieurs jeux lumineux afin de nous plonger dans un univers spatial.
 +
 +
Vous trouverez ci-dessous un calendrier finale de notre travail :
 +
 +
[[Fichier:Ganttfinal.PNG]]
  
 
=Documents Rendus=
 
=Documents Rendus=
 +
 +
Le rapport du projet : [[Fichier:CREP_Rapport_projet.pdf]].
 +
 +
Les codes sources sont disponible sur le gitlab de l'école : [https://archives.plil.fr/pfrison/projet-crep projet-crep].
 +
 +
Carte électronique de la piste : [[Fichier:Tlepoivr_driver.zip]].
 +
 +
Carte électronique du shield : [[Fichier:Tlepoivr_shield.zip]].

Version actuelle datée du 9 mai 2019 à 01:58


Présentation générale

Nom du projet : Coupe de robotique des écoles primaires

Élèves : Thibault LEPOIVRE, Pierre FRISON

Encadrant : Emmanuelle PICHONAT

Projet git : projet-crep

Description

Cette année, pour notre projet de filière IMA (Informatique Microélectronique et Automatique) de l'école Polytech Lille nous avons décidé de travailler à la mise en place de la Coupe de Robotique des Écoles Primaires (CREP). Dans ce but, notre travail sera découpé en plusieurs parties :

  • Organisation et participation aux interventions.
  • Réalisation d'un robot et d'une piste répondant au cahier des charges de la CREP avec des solutions utilisées dans le milieu professionnel et dans le cadre de notre formation.
  • Organisation de la journée CREP.

Dans ce wiki vous trouverez l'avancée détaillée de nos travaux.

Objectifs

Dans le cadre de l'organisation des interventions nous devrons :

  • Communiquer avec l'inspectrice de la circonscription de Lambersart (Mme François) et son Enseignant Référent pour les Usages Numériques (E-RUN) (M. Bourkache).
  • Intervenir dans les douze écoles qui participent à la CREP. Avec deux interventions dans chacune des écoles.

Pour la partie technique de ce projet, notre robot et notre piste devront, en plus de répondre au cahier des charges de la CREP imposé aux écoles, offrir un véritable divertissement à présenter aux enfants le jour de la CREP.


Notre robot devra être capable de respecter le cahier des charges imposé par la CREP :

  • Suivre un scénario prédéfini par nos choix (dans notre cahier des charges) dans un milieu proche du monde des maraîchers.
  • S’arrêter devant un objet du décor et l'admirer.
  • Déplacer un objet du décor.
  • Faire une marche arrière.
  • Esquiver un ou plusieurs objets ou personne en mouvement.

Notre piste devra respecter une certaine architecture :

  • Posséder un triangle isocèle collé à triangle équilatéral avec un coté de même longueur et un parallélogramme.
  • Avoir trois volumes différents pouvant faire partis du décor.
  • Et sera limitée en surface : de 4 à 6 m², en largeur < 2 m, en longueur < 3 m et en hauteur < 1 m.


Pour finir, la journée CREP s'organisera afin de répondre aux objectifs suivant :

  • Chaque école aura 20 minutes de présentation comprise dans un amphithéâtre de 1H30: 10 minutes de présentation de la piste, de l'histoire, du code et 10 minutes de défi (réalisation du cahier des charges).
  • Chaque école pourra découvrir la vie associative de Polytech Lille au travers des activités organisés par différents clubs.
  • Les élèves pourront aussi découvrir les divers domaines abordés à Polytech Lille (agro-alimentaire, matériaux, etc).

Analyse du projet

Positionnement par rapport à l'existant

Du côté des interventions, de multiples entreprises proposent déjà des activités dans les écoles pour faire découvrir aux enfants divers domaines.

Du côté de la visite, les grandes écoles (comme Polytech) ouvrent déjà leur portes au public. Cependant, ces visites ne sont généralement pas adaptées à un publique aussi jeune et les clubs ne sont pas présentés.

Aussi, un intérêt majeur de la CREP est la réalisation, par les écoles, d'un défi qui les suivra tout au long de l'année, offrant ainsi l'occasion aux enseignants de grouper plusieurs matières autour d'une seule thématique, rendant le tout plus ludique.

Analyse du premier concurrent

Notre premier concurrent est la société "Bricks 4 Kidz". L'entreprise propose des activités centrées sur la robotique aux enfants entre 5 et 13 ans. L'entreprise propose ces activités pendant les vacances scolaire ou sur demande (e.g. pour un anniversaire) aux particuliers, et intervient aussi dans les écoles primaires.

Le concept est assez similaire à celui de la CREP : faire découvrir aux enfants le monde de la robotique d'une manière ludique. Parmi les différences, on peut compter la visite de Polytech et ses Clubs, ainsi qu'un défi à réalisé par les écoles tout au long de leur année scolaire.

Analyse du second concurrent

Notre second concurrent est "Les savants fous". Tout comme "Bricks 4 Kidz", l'entreprise propose des activités aux enfants de 5 à 12 ans, mais est plus axé sur les sciences générales que sur la robotique.

De par ses différences avec la CREP (pas de visite de l'école, axée sur les sciences plutôt que sur la robotique), "Les savants fous" sont des concourants relativement éloignés.

Scénario d'usage du produit ou du concept envisagé

La CREP a déjà plusieurs années d’existences (de 2014 à nos jours). Elle permettait aux écoles volontaires d'initier ses élèves à la robotique et de visiter notre école d'ingénieurs.

Cette année, nous aimerions montrer aux enfants la réalisation du cahier des charges, qu'ils auront respecté, par des élèves ingénieurs avec des contraintes supplémentaires :

  • La piste sera robotisée.
  • Le robot et la piste communiqueront pour déclencher des événements.
  • La position du robot sur la piste sera affichée sur un écran.

Réponse à la question difficile

Question : Est-ce nécessaire d'avoir une piste intelligente ?

Non : avec la connexion au robot, la piste n'aura pas besoin d'être complètement autonome. Du coup, la piste ne comportera pas de capteur. De ce fait, le robot devra connaître sa position en permanence afin de pouvoir déclencher les événements liés à la piste.

Préparation du projet

Cahier des charges

Ébauche pour déterminer les dimensions de la piste
Ébauche pour déterminer les dimensions du robot (vu de devant)

Après avoir étudié plusieurs scénarios (Minecraft, à bord d'une station spatiale ...), nous avons décidé de réaliser le scénario "à bord d'une station spatiale". Comme précisé dans les objectifs, notre cahier des charges se décompose en deux parties : la piste et le robot.

Pour le robot :

  • Devra avoir une forme de 'U' inversé afin de pouvoir parcourir les parcelles et les arroser par le dessus.
  • Posséder un bumper robotisé pouvant s'abaisser et pousser la caisse de fruits que l'on souhaite déplacer.
  • Devra connaître sa position sur la piste en temps réel.
  • Devra se déplacer avec une importante précision.
  • Être esthétique.

Pour la piste :

  • Comportera plusieurs jeux lumineux afin de nous plonger dans un univers spatial.
  • Comportera 3 portes motorisées reliant les différentes pièces de la station.
  • Les trois solides seront fabriqués en plexiglas, indépendant et décorés de façon électronique.
  • Au vue de la charge de travail déjà présente, l'esquive de l'usager se déplaçant sur la piste sera optionnelle.
  • Afin que notre piste et notre robot correspondent à un univers spatial, notre piste ne comportera malheureusement pas de parcelles triangulaires.

Choix techniques : matériel et logiciel

Au niveau du matériel, notre projet requière :

  • 80 LEDs bleus [1]
  • 80 LEDs rouges [2]
  • 80 LEDs blanches [3]
  • 10 contrôleur à LED (TLC5947DAP) [4]
  • 6 interrupteurs [5]
  • 4 servomoteurs (SG92R) [6]
  • 2 cartes Arduino Mega [7]
  • 2 modules Bluetooth (MH-10) [8]
  • 2 moteurs pas-à-pas (SY35ST26-0284A) [9]
  • 2 contrôleurs moteur (DRV8825) [10]
  • 2 roulettes à bille [11]
  • 1 paire de roues en caoutchouc [12]
  • 1 bloc de 4 piles AA [13]
  • Environ 7 m² de contreplaqué (à acheter en magasin pour demander une coupe aux bonnes dimensions)
  • Du plexiglas

Au niveau des logiciels, nous pensons utiliser :

  • PaintDotNet pour la création des textures de la piste
  • Solidworks pour la modélisation des objets en 3D (châssis du robot, décorations...)
  • Inkscape pour d'éventuels découpages à la découpeuse laser

Liste des tâches à effectuer

Nos tâches, à effectuer vont se diviser en deux parties, tout d'abord le design de notre robot et notre piste, puis la programmation de ces derniers.

Tout d'abord le robot :

  • Modélisation 3D du châssis du robot en "U" inversé et réalisation.
  • Montage et câblage du robot (assemblage moteur, roue, ...).
  • Modélisation, impression et assemblage du bumper.

Ensuite la piste :

  • Modélisation 3D des jointures des plaques de contreplaqué et impression.
  • Teste et assemblage des plaques entre-elles.
  • Réalisation du circuit leds et implémentation sur la piste.
  • Design des portes et fabrication.

Pour finir pour la programmation :

  • Programmation du robot afin de parcourir la piste.
  • Programmation de la piste : jeux de lumière et ouverture des portes.
  • Communication de la position du robot à un serveur web afin de l'afficher par vidéo, si le temps nous le permet.

Calendrier prévisionnel

Gantt.PNG

Réalisation du Projet

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Vac. février Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Heures S11 Vac. pâques Vac. pâques Heures S12 Total
Analyse du projet 10 10
Modélisation du robot 4 4 2 4 5 19
Modélisation de la piste 6 6 6 2 20
Réalisation de la piste 6 8 6 4 4 8 1 4 8 49
Réalisation du robot 4 4 2 6 16
Programmation 10 4 2 4 4 8 2 4 2 40
Scénario 2 2 2 6
Rédaction du rapport et du wiki 8 8
Total 10 10 10 8 10 10 10 10 10 12 15 15 8 12 10 8 168

Prologue

Semaine 1

Plan 3D du robot
Piste en dimension réelle
Joint central modélisé

Cette semaine, nous nous sommes attardé à la modélisation de la piste et du robot en 3D :

Le robot ayant des dimensions raisonnables, il est possible d'imprimer son châssis avec une imprimante 3D du Fabricarium. Pour la modélisation, nous avons choisi le logiciel Solidworks car il permet, en plus de sa simplicité d'utilisation, de réaliser les composants (moteurs, roues, cartes électroniques, etc.) pour pouvoir construire un assemblage final et ainsi éviter les erreurs de dimensionnement en plus de nous obliger à prévoir des moyens de fixation. Voici le résultat de cette séance : (Notes : les nouvelle dimensions du robot sont les suivantes : 132x150x100 mm (lxLxh))

Pour les prochaines séances, il restera à :

  • Fixer les roues folles à l'arrière
  • Dessiner le bumper à l'avant
  • Prévoir un compartiment pour l'électronique
  • Finaliser l'esthétisme du robot.

Puis nous avons aussi designer la piste en modélisation 3D aux bonnes dimensions à l'aide d'OpenSCAD afin de mieux visualiser le rendu final visé :


Nous remarquons que dans nos jardins nous aurons la place pour respecter la contrainte de forme des parcelles du cahier des charges de la CREP (zone jaune) alors que les trais blanc représentent le découpage de la piste en 4 planches de contreplaqués de 1*1,5 m.

Ensuite nous avons modéliser les jointures pour lier les planches de contre-plaqué selon plusieurs contraintes de liaison et d'esthétisme :

En discutant des modélisation nous avons finalement décidé de mettre chacune des planches sur des pieds et les lier avec moins de jointure ce qui nous permettra d'avoir une piste plus stable :

Pour les prochaines séances, il restera à :

  • Modéliser les joints de cotés
  • Acheter les plaques de contre plaqués pour la piste
  • Imprimer en 3D les joints et les monter sur la piste
  • créer un scénario précis afin de commencer à coder le robot.

Semaine 2

Le seconde solution de découpe retenue
Pièces nécessaires pour notre piste
Ajout des roulettes sur le robot

Après délibération nous avons décidé de faire des joints de dessous soutenu par des piliers pour pouvoir mettre sous la piste tout l'électronique nécessaire à l'activation des portes et de l'éclairage.

De plus nous allons utilisé des joints pour fixer nos mur, certains seront fixés à la piste(ceux de cotés) alors que d'autres seront collés sur cette dernière.

Vous trouverez donc ci joint nos designs 3D de ces différentes pièces sur Onshape:

La modélisation du robot a aussi avancé, les roues folles ont été ajoutées. Le prochaine étape sera de concevoir le bumper :

Nous avons aussi prévu le découpage des plaques de contreplaqué pour optimiser au maximum les chutes. Nous avons décidé de prendre 6 plaques de contreplaqué de 160x80 cm. Voici le découpage prévu (à gauche) :

Avec ce découpage nous avons donc notre piste de 3x2 mètres et 6*80 cm + 4*160 cm + 4*140 cm = 1680 cm de murs de 10 cm de haut chacun (nous avons en tout 1400 cm de murs sur notre piste). Ce découpage revient donc à un prix totale de 99.9€ soit 16.65€ la planche et 1€ de découpe.

Alors que la solution avec des planches de la dimension au dessus (250*122cm) nous donne 800cm de chute par planche soit beaucoup trop :

De plus elle nous revient à 166.53€ soit 18.2€ le m² pour 9.15m² elle n'est donc pas viable car elle produit trop de chute et coûte trop cher.

C'est pour cela qu'on utilisera six planches de dimensions 160*80*0.5cm (à droite).

La semaine prochaine nous devrons acheter nos plaques de contre-plaqué et imprimer les pièces 3D.

Semaine 3

Planche de contre-plaqué découpées
Joint centraux imprimés en 3D

Nous avons été cherché le bois nécessaire à la construction de la piste. La découpe des planches a été réalisé par un technicien du magasin, cependant chaque trais de découpe enlevait 3 cm de matière donc nous avons décidé de faire la découpe des murs (de 10 cm de largeur) à la découpeuse laser, de plus nous avons commencé à imprimer en 3D les joints de notre piste:

La prochaine étape sera de tracer le chemin des murs, des trous pour les jardins,imprimer toutes les pièces 3D nécessaires et les pions des piliers.

Semaine 4

Jointure des cotés pour la piste
Disposition des murs sur la piste

Cette semaine nous avons travaillé sur la piste ainsi que sur les pièces qui serviront de liaison pour cette dernière.

Nous avons placés les murs sur la piste en découpant certains d'entre eux pour les ajuster.

Puis nous les avons numérotés afin de ne pas perdre de temps pour les replacer.

Nous avons ensuite tracé les trous de 1 cm de diamètre à percer.

Semaine 5

Modélisation finale du robot

Cette semaine nous avons percé les repères tracés la semaine dernière. Les trous ont été faits pour que les pions des jointures s’emboîtent avec un peu de résistance pour créer un encastrement rigide grâce aux frottements. Nous sommes satisfait de cette solution pour le moment mais il faudra veiller à l'usure de ces liaisons qui pourraient abîmer le bois à terme.

Nous avons aussi tracé des repères sur les murs pour placer nos 216 leds. Pour optimiser les couleurs et la lumière, nous avons réuni les leds rouges et bleus au même endroit. Avec les leds blanches, il y a donc 144 trous à percer ce qui représente environ 1 led tous les 10 cm. Nous nous somme assuré que le placement des leds était cohérent (e.g. un trou n'est pas trop proche d'un mur). Pour répartir les trous sur les murs nous avons utilisé la formule suivante :  \textstyle \frac{L_{mur}\times 144}{L_{murtotale}} = nb_{troumur}

La modélisation du robot a aussi beaucoup avancé :

  • La forme global a été décide
  • Le mécanisme du bumper a été dessiné (nous avons bien sûr vérifié qu'il n'y avait aucune collision lors du déploiement du bumper)
  • Un compartiment pour l'électronique a été ajouté

Néanmoins, nous pensons que l'espace réservé à l'électronique est trop petit, il est prévu de l'agrandir en modifiant la longueur du robot.

Le châssis du robot sera en deux partie :

  • Une partie "coiffe" ou "du haut" qui comporte un creux pour loger l'électronique
  • Une partie "corps" ou "du bas" qui va du bas du châssis jusqu'au plan formé par le bas de la boîte prévu pour l'électronique

Cette découpe nous permettra aussi de viser le servomoteur associé au bumper. Il restera à dessiner un moyen de fixation entre la partie haute et basse. Nous pensons modéliser des trous et des pions pour les emboîter.

Pour la suite il restera a prévoir un passage pour les câbles et les leds

Vacances de février

Interface graphique de l'application

La conception du robot arrive bientôt à sa fin. Pour prendre de l'avance, nous avons profité de ces vacances pour nous essayer à la programmation du robot.

Pour nous faciliter l'écriture du parcours que devra faire le robot, nous avons eu l'idée de créer un logiciel pour piloter le robot depuis un PC via liaison série et d'enregistrer le parcours ainsi créé. Nous avons choisi de le réaliser en Java, car la création d'une interface graphique est plus simple. Chaque mouvement est décomposé en "action". Une action correspond à deux valeurs de pas à effectué par les deux moteur pas-à-pas ainsi que deux délais qui correspondent à la durée d'attente entre chaque pas (plus le délai est cours, plus la vitesse est importante). Ce tableau d'action s'exporte en quatre tableaux de long (pas moteur gauche + droit + délais moteur gauche + droit) qui pourrons être directement utilisé dans le programme final.

En plus de l'interface graphique, le logiciel possède des raccourcis claviers comme suit :

  • Les touches du pavé numérique de 1 à 9 (excepté 5) correspondes aux différents mouvements.
  • La touche espace ajoute une nouvelle action.
  • La touche 0 du pavé numérique ajoute une pause (ouvre un dialog demandant la durée).
  • La touche retour arrière permet de retourner en arrière.

Le logiciel a été nommé "PercTeacher" ("Perc" étant le nom donné au robot dans le scénario).

Voici l'interface réalisée :

Le logiciel n'est pas encore complet. En effet, il ne manque que l'envoi des données via liaison série. Cette partie pourra être réalisée à l'aide d'une librairie comme RxTx.

Enfin, un projet git a été créé sur le gitlab de l'école et est disponible en cliquant sur le lien suivant : Projet git du groupe 42.

Semaine 6

Pilier de jointure de de la piste

PercTeacher (voir Vacances de février) est maintenant fonctionnel et est capable d'envoyer les informations à une carte Arduino par liaison série. Le projet git a été mise à jour.

Les trous dans les murs pour les LEDs ont été réalisé d'après les repères dessinés à la Semaine 5.

Le robot a été séparé en deux parties comme souhaité dans le rapport de la Semaine 5. L’emboîtement est réalisé grâce à deux trous dans chaque partie : deux pions (externes aux deux parties pour sauver du PLA) qui ont été fabriqués en sciant une tige métallique s’emboîteront dans les trous, formant ainsi la liaison.

Tous les joints de la piste on été imprimés en 3D et collés à l'aide d'un pistolet à colle aux piliers de PVC :

Nous avons aussi avancé sur le scénario, que nous allons prochainement réécrire en pièce de théâtre avec plusieurs actes.

Nous allons maintenant commencer à imprimer les jointures mur/piste afin que cette dernière soit prête pour l'arrivé des LEDs et contrôleurs à LED.

Semaine 7

Résultat du robot imprimé et peint

Cette semaine, le châssis du robot a été imprimé à l'aide des imprimantes 3D du Fabricarium. Parce que nous avons utilisé deux imprimantes chargées avec deux couleurs de PLA différentes, nous avons unifié la couleur du robot avec de la peinture acrylique noire. Voici le résultat avec à gauche, le robot assemblé et à droite, le compartiment pour l'électronique d'ouvert (l'arduino uno est ici pour l'exemple, nous utiliserons bien une méga comme prévu) :

Aussi, les roulettes et le servomoteur du bumper ont été installé, il faudra attendre le reste du matériel pour avoir le robot complet.

De plus nous avons essayé de monter les murs sur la piste et cette tâche s'est retrouvée plus difficile que prévu nous avons commencé par tester notre première solution :

Nous avons donc imprimé une pièce que devait servir de joint entre la piste et un mur extérieur, l'impression fini nous l'avons tester et surprise : la pièce et le bois n'étaient pas compatible (ouverture_pièce < épaisseur_bois) puis nous avons testé avec un autre morceau de bois et là l'inverse s'est produit !

Nous pouvons donc en tirer des leçon sur les marges d'erreur des plaques de contreplaqués chez Leroy Merlin ainsi que celle des imprimantes 3D.

Nous avons ensuite tenter des les coller directement avec de la colle à bois présente au Fabricarium, et bien sur nous avons été naïf car cela n'a point fonctionné.

Nous avons alors décider d'améliorer cette solution en utilisant des équerres fabriquées avec deux morceaux, coupé d'une poutre en bois, provenant des chutes du Fabricarium :

  • En vissant les deux pièces entre-elle : pas concluant, car le bois se fissure à cause de la pression exercé par la vis.
  • En réutilisant la colle en bois : concluant, nous allons donc continuer avec cette solution pour le reste du projet.

Nous avons aussi continuer de travailler le scénario qui devrait être prêt en fin de semaine prochaine.

Semaine 8

Schéma électronique de la piste
PCB de la piste avec les 3 contrôleurs de LEDs

Cette semaine nous avons continuer à monter nos murs sur la piste cependant cette étape est très longue car nous disposons d'un seul étaux, nous devons donc fixer les mur un par un.

De plus nous avons finis la carte électronique pour utiliser contrôleurs de LED pour notre piste :

Nous avons utilisé Fritzing pour créer notre carte en utilisant 3 contrôleurs par carte nous avons donc choisis une capacité de découplage de 10 nF ainsi qu'une résistance de 2.5 kOhms pour fixer notre courant d'entrée à 20 mA pour chacun de nos contrôleurs avec la schématique suivante:

En ajoutant des un connecteur ainsi que quelques jumpers nous arrivons au circuit suivant :

Nous l'enverrons à nos professeurs ce lundi pour vérification.

Semaine 9

Solution retenue pour ouvrir les portes
Branchements pour le test du robot

Cette semaine nous avons réfléchit à la meilleur option pour ouvrir les portes avec le servomoteur, nous avons opté pour la porte raccordée par des fils passant sous la piste à une roue contrôlée par le servomoteur :

Nous avons aussi corrigé les erreurs du PCB des drivers de leds.

Après avoir été cherché le matériel, nous avons monté les moteurs et les roues sur le robot et nous avons tester le tout avec les contrôleurs moteur. Nous avons dû imprimer en 3D un adaptateur entre la roue (3 mm de diamètre) et le moteur (5 mm de diamètre).

Voici le robot monté dans le phase de test (Pour ce test, un seul controleur moteur a été cablé) :

Nous avons aussi avancé dans la programmation des arduino en C via AVR. Nous :

  • avons rédigé un makefile pour l'atmega2560
  • nous sommes assuré que l'ordonnancement était possible sur l'atmega2560
  • avons programmé et testé le code pour contrôler les servomoteurs
  • avons programmé et testé le code pour contrôler les moteurs pas à pas.

Semaine 10

Démonstration animée de l'application (cliquez sur l'image pour voir l'animation)
PCB shield pour arduino
Schéma électronique du shield pour l'Arduino Mega

Dans la continuité de la semaine dernière, nous avons continué la programmation en C des arduino. Cette semaine, nous avons programmé le code pour le contrôle des leds via le tlc5947. Pour cela, nous nous sommes inspiré du travail réalisé par Lirui Zhang et Lihe Zhang (projet P18 de l'année dernière) en reprenant leurs fichiers tlc5947.c et tlc5947.h.

Pour nous faciliter la programmation des animations des leds de la piste, nous avons développé un logiciel nous permettant de créer et modifier des animations et de pouvoir les simuler. L'interface de la timeline est similaire à ce que l'on peut trouver dans les logiciels de montage : il est possible de zoomer, dézoomer et de se déplacer de droite à gauche si les paternes sortent du champs. Les données seront ensuite exportées sous forme de tableau, directement intégrables dans notre programme arduino.

Le logiciel a été développé en Java car c'est un langage qui nous est familier et dont la mise en place d'une interface graphique est relativement simple. Le nom du logiciel est directement lié au nom de la station de notre scénario : VRGNY (en référence à Virginie Quarez, étudiante en GB-IAAL qui organise la CREP avec nous).

Voici un aperçu animé :

Bien que l'interface soit fonctionnelle, il reste quelques détails :

  • pouvoir télécharger les animations dans un arduino depuis l'application
  • utiliser des raccourcis claviers

Cette semaine nous avons modifié le PCB des 3 drivers leds ainsi crée un souveau en tant que shield pour l'arduino de notre robot:

Vous trouverez ci-dessous notre schématique.

et ci-dessus notre circuit imprimé.

Semaine 11

Version finale du shield pour arduino
Illustration de l'erreur sur le PCB de la piste

Cette semaine nous avons imprimé nos cartes électroniques c'est à dire le shield et le contrôleur de leds.

Pour le shield aucun problème n'est survenu pendant la production il a été correctement produit nous avons donc commencé à le souder, voici sa version finale à gauche.

Pour le contrôleur de leds nous avons eu un problème pour tracer certaines voies qui disparaissaient lors du fraisage comme ici à droite.

après avoir cherché à l'aide du logiciel de visualisation de la machine de Thierry Flamen nous en avons déduit qu'à cet endroit la machine utilisait une fraise de 3 mm au lieu de 1 mm.

Nous avons tenté de modifier ces erreurs en utilisant des fils pour remplacer les voies ( vous pouvez y voir des traces de soudures sur la photo ci-dessus ) mais malheureusement ces voies étaient trop petites ( 12 mm ).

Nous avons donc essayé de corriger cette erreur directement sur Fritzing et nous avons réussi en retraçant nos voies en partant du TLC5947 vers le header et non l'inverse.

Vacances d'avril, semaine 1

Résultat final du robot sans la partie haute

Cette semaine, nous avons terminé de souder le shield de l'arduino pour le robot. Cependant, nous nous sommes aperçu de plusieurs problème de conception :

  • Les deux contrôleurs moteur ont été placé du mauvais côté. Il nous a donc fallu les souder du côté du cuivre, ce qui a induit un second problème : il était maintenant impossible de mettre les headers pour y brancher l'arduino puisque la hauteur induite par les contrôleurs moteur gênait l’emboîtement entre le shield et l'arduino. De plus, il nous a fallu faire attention a ce que les pins des contrôleur moteurs ne touche pas la masse du port USB de l'arduino. Dans un premier temps, nous avions alors créer des headers plus long avec des fils rigides. Cependant, le compartiment électronique du robot, n'est pas assez haut pour y loger l'ensemble. Après une courte réflexion, nous avons plié les "headers" dans le sens de la largeur, ce qui a permit de loger les contrôleur moteurs (avant gêné par le port USB) entre le port USB et le port d'alimentation. L'ensemble shield + arduino loge maintenant dans le compartiment électronique du robot.
  • Nous avion oublié de mettre une résistance de pull-down au blank du contrôleur de leds.

Voici une photo du résultat :

Bien que l’esthétique du shield ne soit pas au rendez-vous, les tests du contrôle des moteurs, du contrôleur de led et du servo pour le bumper sont concluant. La carte a fonctionné et la partie fonctionnel du robot est maintenant terminée.

Vacances d'avril, semaine 2

Fixations des LEDs au mur
Système servomoteur et roue. Pièce moteur pour l'ouverture de la porte

Cette semaine nous avons commencé par faire fonctionner l'application PercTeacher avec le robot, cet essaie a été concluant, nous pourrons donc nous en servir afin de faire parcourir la piste à notre robot.

Puis nous avons tenté de souder notre carte contrôleur de leds mais ce fut difficile sans la patte à braiser que l'on peut utiliser en C201. nous avons donc décidé d'attendre la rentrée pour souder cette dernière.

Nous avons ensuite placé toutes les leds sur la piste selon l'organisation blanc->bleu,rouge pour les murs simple et blanc,bleu,rouge pour les murs double en mettant les leds blanches dans le sens inverse des deux autres couleurs. Nous avons ensuite percé le robot pour y mettre 24 leds.

Nous avons fini le scénario nous n'avons plus qu'à y ajouter un timing pour nous aider lors de la programmation.

Pour finir nous avons relié notre roue pour l'ouverture des porte à un servomoteur ( que nous avons programmé pour tourner pendant un certain temps ) et installé le système sur notre piste et testé ce dernier manuellement :

Le système semble bien fonctionné mais nous remarquons beaucoup de frottements sur la ficelle nous allons alors utiliser pièce métalliques à la rentrée pour pallier à ce frottement ficelle/bois.

Conclusion du projet

Ce projet nous as permis de mettre en œuvre une véritable démarche d’ingénieur à commencer par l’établissement d’un cahier des charges, puis à élaboration du suivi d’une liste de matériel pour respecter ce dernier et enfin, à la réalisation d’un calendrier prévisionnel du travail à faire.

Nous avons ensuite commencé notre projet par une modélisation grâce à plusieurs logiciels de conception. SolidWorks pour la modélisation des impressions en 3D, OpenSCAD pour le plan de la piste et Fritzing pour l’élaboration des circuits électronique.

Plusieurs problèmes imprévus nous ont barré la route mais une analyse de risque nous a permis de rapidement pallier aux plus simples et de prévoir leurs solutions avant même qu’ils n’apparaissent. Au fur et à mesure de l’avancée du projet, nous nous sommes vite rendu compte que nous avions eu les yeux plus gros que le ventre quant à la conception de la piste, nous l’expliquons par la peur d’un manque de contenu IMA dans le projet. Après de nombreux échecs nous avions décidé de nous concentrer pleinement sur le robot afin d’avoir du contenu IMA à présenter quitte à délaisser notre piste.

Pour nos derniers mots nous voulions souligner le fait que, malgré notre échec à remplir l’entièreté du cahier des charges, ce projet nous as permis de développer des compétences de gestion de projet et de travail d’équipe qui des fois, malgré une parfaite entente entre nous, peut s'avérer plus difficile que prévu. Et par-dessus tout, ce projet nous a permis de mettre en application nos compétences en modélisation 3D, en électronique et en programmation ce qui est le point le plus important des projets IMA selon nous.

Voici en cette fin de projet les points du cahier des charges qui ont été respectés:

  • Le robot devra avoir une forme de 'U' inversé afin de pouvoir parcourir les parcelles et les arroser par le dessus.
  • Le robot devra posséder un bumper robotisé pouvant s'abaisser et pousser la caisse de fruits que l'on souhaite déplacer.
  • Le robot devra se déplacer avec une importante précision.
  • Le robot devra être esthétique.
  • La piste comportera plusieurs jeux lumineux afin de nous plonger dans un univers spatial.

Vous trouverez ci-dessous un calendrier finale de notre travail :

Ganttfinal.PNG

Documents Rendus

Le rapport du projet : Fichier:CREP Rapport projet.pdf.

Les codes sources sont disponible sur le gitlab de l'école : projet-crep.

Carte électronique de la piste : Fichier:Tlepoivr driver.zip.

Carte électronique du shield : Fichier:Tlepoivr shield.zip.