Projet final prototypage Louly Chloé Eloïse
🎯 DéDéfinition du projet
Nom du projet : Pingroue - Peluche mobile crochetécrochetée sur robot télécommandétélécommandé
Objectif : CréCréer une plateforme robotique télécommandétélécommandée sur laquelle on pose un animal crochetécrocheté àà la main, comme une mascotte mobile. L’idéL’idée est de donner vie aux crécréations en crochet en les posant sur une base motorisémotorisée que l'on peut diriger àà distance.
Diapo: Pingroue - Presentation
👥 Besoin & utilisateurs
Utilisateurs visévisés :
-
CréCréateurs etcrécréatrices de crochet -
Enfants (objet ludique)
-
Grand public (objets
dédécoratifs vivants) -
Ateliers
pépédagogiques autour del’él’électronique + artisanat
Besoins identifiéidentifiés :
-
Mettre en mouvement une peluche
crochetécrochetée sanscâcâblage visible -
Base
discrèdiscrète et mobile -
Plateforme
réréutilisable avecdiffédifférents personnages
⚙️ FonctionnalitéFonctionnalités
Fonction principale
-
Plateforme roulante
contrôlécontrôlée par un code arduino
FonctionnalitéFonctionnalités secondaires
- Rembourrage de l'animal
crochetécrocheté par impression 3D (dôdôme) -
Plateforme stable pour fixation de l'animal en crochet par
dédécoupe laser (capôcapôt qui recouvre l'arduino) -
Logo (louly.gurumi + Fablab)
gravégravés pardédécoupe laser SièSiège et volant pourdédécorer la voiture
🔍 Veille & inspirations
-
ChâChâssis Magician DG007utiliséutilisé dansl’l’enseignement Arduino -
Projets similaires de robots
décorédécorés (sumo bots, robots mascottes) -
Personnalisation (
dôdôme, texture, couleur, taille)
📄 Lean Canvas
🧰 Choix techniques
Structure mobile | |
Arduino Uno + shield moteur | |
Une fois le code arduino |
|
Alimentation | Batterie Duracell Plus (9V) |
Support |
Planche |
Impressions 3D |
|
Logo |
📅 Gestion de projet
MVP (Minimum Viable Product)
-
Robot
motorisémotorisé pilotableàà distance -
DôDôme supportant un animalcrochetécrocheté
Planning
Nous avons commencécommencé le projet par plusieurs sessions de brainstorming pour mettre en commun nos idéidées et nos centres d’intérêd’intérêt. C’C’est àà ce moment-làlà que Louly nous a rappelérappelé que son passe temps favoris est le crochet. Elle fabrique des animaux crochetécrochetés qu'elle propose àà la vente. L'idéidée de notre projet est donc nénée : une voiture robotisérobotisée supportant une peluche crochetécrochetée by louly.gurumi !
Le projet a étéété validévalidé par notre enseignant le lundi 31 mars. Ce mêmême jour, nous avons directement commencécommencé àà concevoir le design du robot et de sa structure. Nous avons fait des croquis àà la main, imaginéimaginé la forme du capot, le support pour la peluche, et commencécommencé le montage du châchâssis. En parallèparallèle, nous avons démarrédémarré la programmation sur Arduino.
Ensuite (toujours le 31 mars) nous avons modélisémodélisé un premier dôdôme sur Tinkercad et l’l’avons exportéexporté vers IdeaMaker pour l’l’impression 3D. En mêmême temps, nous avons aussi conçconçu la premièpremière version du capot sur Inkscape, que nous avons testétestée en dédécoupe laser.
Le mardi 1er avril, nous sommes alléallés au FabLab pour récupérécupérer l’l’impression 3D du dôdôme. Puis Louly a commencécommencé àà crécréer l’l’animal crochetécrocheté autour du dôdôme, en respectant ses dimensions. Ce mêmême jour, nous avons poursuivi la modémodélisation 3D pour ajouter des élééléments comme un volant et un petit sièsiège pour rendre le support plus vivant.
Le mercredi 2 avril, nous avons fait une deuxièdeuxième dédécoupe laser du capot, aprèaprès avoir revu sa forme pour l’l’adapter aux dimensions de la planche avec l'arduino poséposé sur le dessus. Nous avons aussi extrait les fichiers du sièsiège et du volant depuis Tinkercad vers IdeaMaker pour les imprimer.
Le jeudi 3 avril, nous avons assembléassemblé toutes les pièpièces : le capot, le pingouin avec le dôdôme. Puis, nous avons fait les premiers tests complets du prototype. Nous avons ensuite lancélancé l'impression du sièsiège et du dôdôme mais n'avons pas pu la terminer.
Finalement, le 28 avril, nous avons ajustéajusté nos diffédifférents élééléments comme suit :
- Impression 3D : n'ayant pas
terminéterminé l'impression le 3 avril, nous l'avonsrelancérelancée le 28. Nous avons ensuiterécupérérécupéré lespièpièces et les avonsattachéattachéeàà notre capot. DéDécoupe laser : Nous avonsdûdûredéredécouper notre capot en augmentant la longueur. En effet, lors de nos premiers tests, le capotéétait trop petit et touchait donc les roues, ce qui modifiait leur trajectoire. Nous avons doncaugmentéaugmenté les dimensions du rectangle de base de 0,5cm.- Code arduino : Lors de nos premiers tests, nous avons
réréussiààcontrôcontrôler les moteurs pour faire avancer lechâchâssis tout droit,àà l'endroit etàà l'envers.NéNéanmoins, nous voulions une trajectoire plusévoluéévoluée, nous avons doncdécidédécidé de faire faireàà la voiture uncarrécarré,àà l'endroit etàà l'envers. (Cf code ci-dessous)
Enfin, nous nous sommes consacréconsacrées àà la finalisation de la documentation et àà la prise de photos pour illustrer le rendu final sur le wiki.
✏️ Design initial
Image du prototype générégénérée par ChatGPT
🧾 MatéMatériel utiliséutilisé
Remarque | ||
---|---|---|
Arduino Uno | 1 | |
Shield moteur (DFRobot / L298P) | 1 | |
1 | Plateforme roulante | |
Moteurs DC | 2 | |
Roue folle | 1 | Stabilisation |
Batterie (9V) | 1 | Alimentation mobile |
MDF 3 mm | 1 | |
PLA | - | Impression 3D |
Animal |
1 | Pingouin |
💻 ÉÉlectronique
La partie éélectronique s'est décomposédécomposée en 3 parties :
- montage du
châchâssis -
câcâblage de l'Arduino, du shield & des moteurs contrôcontrôle des moteurs & de leur trajectoire via un code Arduino
Voici le dédétail de chaque partie :
1. Montage du châchâssis
Le montage du châchâssis DG007 a étéété la premièpremière éétape de notre projet. Pour le construire, il nous a suffit de suivre la notice fournie dans le kit, ainsi qu'un tutoriel youtube (cf sources).
Nous n'avons pas eu de difficultédifficultés particulièparticulières pour la construction, hormis la fixation des moteurs des roues (nous avons dûdû enlever une vis de part et d'autre car la deuxièdeuxième ne passait pas).
2. CâCâblage de l'Arduino, du shield & des moteurs
Concernant le câcâblage de l'Arduino et du shield, il nous a suffit de les emboiter l'un àà l'autre.
Le câcâblage des moteurs n'a pas étéété compliquécompliqué non plus, nous avons simplement suivi le tutoriel du wiki DFRobot (cf sources). La seule particularitéparticularité a étéété de vévérifier le sens des branchements afin que les roues tournent toutes les deux dans le mêmême sens.
ÀÀ tout cela, nous avons ajoutéajouté la batterie, rattachérattachée au shield (et non pas àà l'Arduino !!). En effet, nous pensions que le fait d'avoir emboîtéemboîté le shield et l'Arduino suffirait àà les lier mais ce n'éétait pas le cas !! Nous avons mis du temps àà comprendre que le lien entre l'Arduino et le shield n'éétait pas automatique !
Ce que nous aurions
aiméaimé savoir :
La connexion entre le shield et l'Arduino n'est pasforcéforcément faite. Bien penseràà ajouter cette connexion si elle n'est pas induite !
3. ContrôContrôle des moteurs & de leur trajectoire via un code Arduino
Concernant le contrôcontrôle des moteurs, nous nous sommes basébasées sur le code du wiki DFRobot que nous avons modifiémodifié afin d'avoir une trajectoire plus compliquécompliquée.
Voici donc la version finale du code, afin que la trajectoire de la voiture soit un carrécarré. La voiture fait un carrécarré en avançavançant puis en reculant.
Ce que nous aurions
aiméaimé savoir :
Il est important de comprendre que pourcrécréer des angles dans la trajectoire, il faut diminuer la vitesse d'une des deux roues.
// DéDéfinition des broches de contrôcontrôle des moteurs
const int E1 = 3; ///< Vitesse du moteur 1
const int E2 = 11; ///< Vitesse du moteur 2
const int M1 = 4; ///< Direction du moteur 1
const int M2 = 12; ///< Direction du moteur 2
// Fonction pour avancer le moteur 1
void M1_advance(char Speed) {
digitalWrite(M1, LOW); // Le moteur 1 avance en utilisant la broche M1
analogWrite(E1, Speed); // ContrôContrôle de la vitesse du moteur 1 avec la broche E1
}
// Fonction pour avancer le moteur 2
void M2_advance(char Speed) {
digitalWrite(M2, HIGH); // Le moteur 2 avance en utilisant la broche M2
analogWrite(E2, Speed); // ContrôContrôle de la vitesse du moteur 2 avec la broche E2
}
// Fonction pour reculer le moteur 1
void M1_back(char Speed) {
digitalWrite(M1, HIGH); // Le moteur 1 recule en utilisant la broche M1
analogWrite(E1, Speed); // ContrôContrôle de la vitesse du moteur 1 avec la broche E1
}
// Fonction pour reculer le moteur 2
void M2_back(char Speed) {
digitalWrite(M2, LOW); // Le moteur 2 recule en utilisant la broche M2
analogWrite(E2, Speed); // ContrôContrôle de la vitesse du moteur 2 avec la broche E2
}
// Fonction pour stopper le moteur 1
void M1_stop() {
analogWrite(E1, 0); // ArrêArrêt du moteur 1 en mettant la vitesse àà 0
}
// Fonction pour stopper le moteur 2
void M2_stop() {
analogWrite(E2, 0); // ArrêArrêt du moteur 2 en mettant la vitesse àà 0
}
// Configuration initiale
void setup() {
// Configuration des broches des moteurs (entréentrée/sortie)
for (int i = 3; i < 9; i++) {
pinMode(i, OUTPUT); // Configurer les broches de 3 àà 8 en sortie
}
for (int i = 11; i < 13; i++) {
pinMode(i, OUTPUT); // Configurer les broches 11 et 12 en sortie
}
// Pause initiale de 10 secondes pour prépréparer les branchements
delay(10000); // DéDélai de 10 secondes avant de commencer
}
// Boucle principale oùoù les actions sont répétérépétées indéindéfiniment
void loop() {
// 1er côtécôté : Avancer tout droit
M1_advance(100); // Moteur gauche avance àà pleine vitesse
M2_advance(100); // Moteur droit avance àà pleine vitesse
delay(2000); // Temps pour avancer le premier côtécôté du carrécarré
// Tourner àà droite (90°90°)
M1_advance(100); // Moteur gauche avance rapidement
M2_advance(10); // Moteur droit avance lentement pour effectuer un virage àà droite
delay(500); // DéDélai ajustable pour réréaliser un virage de 90°90° (ajuste si nénécessaire)
// 2è2ème côtécôté : Avancer tout droit
M1_advance(100); // Moteur gauche avance
M2_advance(100); // Moteur droit avance
delay(2000); // Temps pour avancer le deuxièdeuxième côtécôté du carrécarré
// Tourner àà droite (90°90°)
M1_advance(100); // Moteur gauche rapide
M2_advance(10); // Moteur droit lent pour virage àà droite
delay(500); // Temps de virage pour tourner àà droite
// 3è3ème côtécôté : Avancer tout droit
M1_advance(100); // Moteur gauche avance
M2_advance(100); // Moteur droit avance
delay(2000); // Temps pour avancer le troisiètroisième côtécôté du carrécarré
// Tourner àà droite (90°90°)
M1_advance(100); // Moteur gauche rapide
M2_advance(10); // Moteur droit lent pour virage àà droite
delay(500); // Temps de virage pour effectuer le virage àà 90°90°
// 4è4ème côtécôté : Avancer tout droit
M1_advance(100); // Moteur gauche avance
M2_advance(100); // Moteur droit avance
delay(2000); // Temps pour avancer le quatrièquatrième côtécôté du carrécarré
// Retourner en arrièarrière pour faire le carrécarré àà l'envers (àà reculons)
// 1er côtécôté en arrièarrière : Reculer tout droit
M1_back(100); // Moteur gauche recule
M2_back(100); // Moteur droit recule
delay(2000); // Temps pour reculer le premier côtécôté du carrécarré àà l'envers
// Tourner àà gauche (90°90°) pour revenir àà l'envers
M1_advance(10); // Moteur gauche lent pour tourner àà gauche
M2_advance(100); // Moteur droit rapide pour tourner àà gauche
delay(350); // Temps de virage ajustable pour tourner àà gauche
// 2è2ème côtécôté en arrièarrière : Reculer tout droit
M1_back(100); // Moteur gauche recule
M2_back(100); // Moteur droit recule
delay(2000); // Temps pour reculer le deuxièdeuxième côtécôté àà l'envers
// Tourner àà gauche (90°90°) pour revenir àà l'envers
M1_advance(10); // Moteur gauche lent pour virage àà gauche
M2_advance(100); // Moteur droit rapide
delay(350); // Temps de virage pour tourner àà gauche
// 3è3ème côtécôté en arrièarrière : Reculer tout droit
M1_back(100); // Moteur gauche recule
M2_back(100); // Moteur droit recule
delay(2000); // Temps pour reculer le troisiètroisième côtécôté àà l'envers
// Tourner àà gauche (90°90°) pour revenir àà l'envers
M1_advance(10); // Moteur gauche lent pour virage àà gauche
M2_advance(100); // Moteur droit rapide
delay(350); // Temps de virage pour tourner àà gauche
// 4è4ème côtécôté en arrièarrière : Reculer tout droit
M1_back(100); // Moteur gauche recule
M2_back(100); // Moteur droit recule
delay(2000); // Temps pour reculer le quatrièquatrième côtécôté àà l'envers
// Stopper les moteurs
M1_stop(); // ArrêArrêter le moteur gauche
M2_stop(); // ArrêArrêter le moteur droit
// Recommencer àà partir du dédébut pour refaire le carrécarré
delay(5000); // Pause avant de recommencer
}
🪚 DéDécoupe Laser
1) Prise de mesures :
Nous avons commencécommencé par relever avec préprécision les dimensions de la plateforme mobile:
- Largeur, longueur et hauteur disponibles
- Positions des
élééléments fixes (Arduino, moteurs, roues) - Zones
àà laisserdégagédégagées pour permettre la rotation libre des roues.
Ces mesures éétaient essentielles pour concevoir une boite qui protèprotège l'Arduino sans gêgêner le fonctionnement du châchâssis.
2) GénéGénération de la boite avec MakerCase :
AprèAprès avoir relevérelevé les dimensions, nous avons utiliséutilisé MakerCase, un génégénérateur en ligne de boîboîtes personnalisépersonnalisées.
Les éétapes ont étéété les suivantes :
-
Entrer les dimensions internes de la
boîboîte correspondant au support -
Choisir une
boîboîte ouverte pour permettrel’accèl’accèsààl’l’Arduino -
DéDéfinirl’él’épaisseur dumatématériauutiliséutilisé : MDF de 3 mm -
TéléTélécharger le fichier vectoriel (.svg)prêprêt pour ladédécoupe laser.
3) Ajout et prépréparation des logos :
Afin de personnaliser le support, nous avons décidédécidé d'ajouter deux logos :
-
Le logo Louly.Gurumi
-
Le logo du Fablab
Les éétapes réaliséréalisées :
-
RécupéRécupération des logos en image (formats .png ou .jpg) -
Vectorisation des logos pour les convertir en
tracétracés exploitables par ladédécoupeuse sur Inkscape -
Attribution des couleurs
spéspécifiques :-
Rouge pour les lignes de
dédécoupe -
Noir pour les zones
destinédestinéesààêêtregravégravées
-
Cela permettait àà la machine de distinguer automatiquement les opéopérations de gravure et de dédécoupe.
4) RéRéglage de la dédécoupe laser :
-
VéVérification del’él’échelle et del’l’emplacement des logos et dumodèmodèle deboîboîte -
ParaméParamétrage du laser : -
Organisation optimale des
pièpièces sur la planche pour minimiser les pertes dematématériau.
La dédécoupe laser a ensuite étéété lancélancée, suivie par l'assemblage de la boîboîte pour valider l'ajustement génégénéral.
🖨️ Impression 3D
1) Prise de mesures et réréflexion sur les formes :
Avant toute modémodélisation, nous avons commencécommencé par relever avec préprécision les dimensions nénécessaires pour concevoir un dôdôme adaptéadapté au robot :
-
Dimensions de la zone disponible sur la plaque
supésupérieure duchâchâssis (largeur/longueur). -
Hauteur maximale possible sans
désédéséquilibrer le robot. -
Besoin
d’d’un support arrondi pour fixer l'animal en crochet demanièmanière stable.
Nous avons choisi de crécréer un dôdôme simple pour coller au mieux la forme d’d’une peluche, tout en limitant le poids pour ne pas gêgêner le mouvement du robot.
2) ModéModélisation 3D sur Tinkercad :
La modémodélisation a étéété réaliséréalisée sur Tinkercad en suivant les éétapes suivantes :
-
CréCréation d'undôdôme solide de 10 cm de rayon et 14 cm de hauteur. -
Simplification du
modèmodèle pourééviter des supports internes inutiles. -
Ajout d'un volant et d'un
sièsiège dans un second temps pour renforcerl’l’aspectesthéesthétique du robot.
Astuces :
-
Le
dôdôme aétéété volontairement semi-plein, car la tentatived’d’avoir un creux n'éétait pas stableàà l'impression. -
Pour le
sièsiège, nous avonsforméformé un angle droit pourééviter d'avoir besoin de supportssupplésupplémentaires.
3) Extraction sur IdeaMaker :
AprèAprès la modémodélisation, les fichiers ont étéété exportéexportés au format .stl et préparépréparés sur IdeaMaker :
-
Hauteur de couche : 0,3 mm (impression rapide et correcte pour des
pièpièces non-détaillédétaillées) -
DensitéDensité de remplissage : 5 % (trètrès faible pourréréduire le temps et le poids) -
Motif de remplissage : Grille (plus rapide et suffisant pour le
dôdôme) -
Supports
d’d’impression :-
Aucun support pour le
dôdôme (surface simple et stable) -
Supports
activéactivés pour le volant (formes en porte-àà-faux plus fragiles)
-
4) Lancement et réréussite de l’l’impression :
L'impression du dôdôme s'est déroulédéroulée sans problèproblème :
-
Temps d'impression : 8h20 min
-
QuantitéQuantité de filamentutiliséutilisée : 120 g environ -
Aucun besoin de reprise ni de correction
aprèaprès impression.
Le volant et le sièsiège ont éégalement étéété impriméimprimés correctement :
- Temps d'impression : 6h23 min
QuantitéQuantité de filamentutiliséutilisée : non connue- Ajout de support obligatoire pour le volant
- Aucun besoin de reprise ni de correction
aprèaprès impression
ParamèParamètres d’d’impression IdeaMaker utiliséutilisés :
-
Imprimante : Raise3D E2
-
Filament : PLA 1.75 mm
-
Remplissage : 5 %, motif grille
-
Supports : Oui uniquement pour les
pièpièces complexes (volant) -
AdhéAdhérence : Jupe uniquement -
ÉÉpaisseur de couche : 0,3 mm
Notes complécomplémentaires :
- Le choix
d’d’une faibledensitédensité etd’d’un motif grille -->soliditésolidité etrapiditérapiditéd’d’impression. RéRéussite du premier coup -->stabilitéstabilité dumodèmodèlecréécréé.
ModéModélisation 3D du dome sur TINKERCAD
- Extraction du dome sur IDEAMAKER et
paramèparamètres d'impression
Hauteur de couche : 0,3mm
Impression intéintérieur : initiale --> GyroïGyroïde vs finale --> Grille pour optimiser le temps d'impression
DensitéDensité de remplissage : 5% (faible car pas nénécessaire comme on a fait un trou directement sur modémodélisation tikercad)
- Extraction du
sièsiège et du volant sur IDEAMAKER
✅ Tests, essais & ajustements
Tests & ajustements de la partie impression 3D :
-
Ajustement forme du
dôdôme pour stabiliser la peluche
Tests & ajustements de la partie dédécoupe laser :
PremièPremièreitéitération: Plaque lisse avec quatre trous
Initialement, nous avons conçconçu une simple plaque plate avec quatre trous pour fixer l’l’Arduino via des vis.ProblèProblème rencontrérencontré : La plaque ne tenait pas solidement, car l’l’Arduino montémonté en dessous désédéséquilibrait l’l’ensemble.
DeuxièDeuxièmeitéitération: boite en plexiglas
Pour améaméliorer la stabilitéstabilité, nous avons réaliséréalisé une boîboîte en plexiglas.ProblèProblème rencontrérencontré : Le matématériau éétant trètrès lisse, la boîboîte glissait sur la plateforme, ce qui rendait l’l’installation instable.
TroisièTroisièmeitéitération: boite en MDF 3mm
Nous avons remplacéremplacé le plexiglas par une boîboîte identique réaliséréalisée en MDF 3 mm et pour plus de stabilitéstabilité nous avons utiliséutilisé la colle pour bien fixer la boite. 18x13x7cmRéRésultat : L’adhéL’adhérence éétait meilleure.ProblèProblème rencontrérencontré : La boîboîte éétait trop juste et bloquait le mouvement des roues.
QuatrièQuatrièmeitéitération: Agrandissement de la boite
Pour corriger ce problèproblème, nous avons augmentéaugmenté la largeur et la longueur de la boîboîte de 0,5 cm chacun, tout en conservant la mêmême hauteur. Nous avons aussi augmentéaugmenté le nombre d'indentations afin de stabiliser et sécurisésécurisé le montage. La colle a aussi étéété utiliséutilisée. 19x14x7cmRéRésultat : L’L’espace éétait meilleur, mais encore légèlégèrement insuffisant pour un mouvement totalement fluide.
Nous avons aussi remis la carte Arduino et la pile àà l'intéintérieur du châchâssis ainsi que la pile. Le tout a étéété sécurisésécurisé grâgrâce àà des vis.
CinquièCinquièmeitéitération:SuréléSurélévation de la plateforme
Pour finaliser l'ajustement, nous avons légèlégèrement surélevésurélevé la plateforme mobile, afin de libélibérer totalement les roues.RéRésultat final : La boîboîte protèprotège l’l’Arduino tout en permettant un mouvement libre et sans blocage.
📦 RéRéalisation physique
-
Montage Arduino + shield +
châchâssis -
Impression du
dôdôme, dusièsiège et du volant (Tinkercad→→ IdeaMaker) -
DéDécoupe laser du capot avec dents pour imbrication -
Gravure logo
““Louly.gurumi”gurumi” sur la plaque -
Crochetage de l'animal sur le
dôdôme -
Pose de la peluche sur le capot
📸 Photos
-
Montage du
châchâssis
- Confection de l'animal
crochetécrocheté autour dudôdôme
RéRésultat Final
🔁 Pistes d’améd’amélioration
-
Ajouter des capteurs (obstacle,
lumièlumière) pour augmenter lacomplexitécomplexité - Ajouter des effets de sons ou de
lumièlumière pour augmenter les interactions -
Rendre le robot autonome via un
contrôcontrôle bluetooth ou appli mobile -
Utiliser une batterie rechargeable + interrupteur ON/OFF
📚 Sources & inspirations
-
Tinkercad pour
modémodélisation dudôdôme -
Inkscape pour la gravure laser
-
Tutoriels IRremote Arduino
-
Documentation du FabLab Sorbonne
- Tutoriel pour construire le
châchâssis - https://github.com/DFRobot/pxt-motor et https://wiki.dfrobot.com/Quad_Motor_Driver_Shield_for_Arduino_SKU_DRI0039 pour le
contrôcontrôle des moteurs duchâchâssis