Skip to main content

Projet final prototypage Louly Chloé Eloïse

🎯 Définition du projet

Nom du projet : Une mise en avant originale pour Louly.gurumi - Peluche mobile crochetée sur robot télécommandé

Objectif : Créer une plateforme robotique télécommandée sur laquelle on pose un animal crocheté à la main, comme une mascotte mobile. L’idée est de donner vie aux créations en crochet en les posant sur une base motorisée que l'on peut diriger à distance.


👥 Besoin & utilisateurs

Utilisateurs visés :

  • Créateurs et créatrices de crochet

  • Enfants (objet ludique)

  • Grand public (objets décoratifs vivants)

  • Ateliers pédagogiques autour de l’électronique + artisanat

Besoins identifiés :

  • Mettre en mouvement une peluche crochetée sans câblage visible

  • Base discrète et mobile

  • Plateforme réutilisable avec différents personnages


⚙️ Fonctionnalités

Fonction principale

  • Plateforme roulante contrôlée par un code arduino 

Fonctionnalités secondaires

  • Rembourrage de l'animal crocheté par impression 3D (dôme)
  • Plateforme stable pour fixation de l'animal en crochet par découpe laser (capôt qui recouvre l'arduino)

  • Logo (louly.gurumi + Fablab) gravés par découpe laser

  • Siège et volant pour décorer la voiture

🔍 Veille & inspirations

  • Châssis Magician DG007 utilisé dans l’enseignement Arduino

  • Projets similaires de robots décorés (sumo bots, robots mascottes)

  • Personnalisation (dôme, texture, couleur, taille)


📄 Lean Canvas

Capture d’écran 2025-04-02 à 14.29.39.png


🧰 Choix techniques

Élément Détail
Structure mobile Châssis DG007 (2 roues motrices + une roue pour le support)
Électronique Arduino Uno + shield moteur
Contrôle Une fois le code arduino téléversé, la voiture est auto-pilotée grâce à la batterie.
Alimentation Batterie Duracell Plus (9V)
Support supérieur Planche découpée au laser (MDF 3 mm)
Impressions 3D
  • Dôme : 10 cm rayon, 14 cm hauteur
  • Volant
  • Siège
Décorations Logo “Louly.gurumi” gravé à l'avant du capot, logo du Fablab à l'arrière

📅 Gestion de projet

MVP (Minimum Viable Product)

  • Robot motorisé pilotable à distance

  • Dôme supportant un animal crocheté

Planning

Capture d’écran 2025-04-02 à 11.09.27.png

Nous avons commencé le projet par plusieurs sessions de brainstorming pour mettre en commun nos idées et nos centres d’intérêt. C’est à ce moment-là que Louly nous a rappelé que son passe temps favoris est le crochet. Elle fabrique des animaux crochetés qu'elle propose à la vente. L'idée de notre projet est donc née : une voiture robotisée supportant une peluche crochetée by louly.gurumi !

Le projet a été validé par notre enseignant le lundi 31 mars. Ce même jour, nous avons directement commencé à concevoir le design du robot et de sa structure. Nous avons fait des croquis à la main, imaginé la forme du capot, le support pour la peluche, et commencé le montage du châssis. En parallèle, nous avons démarré la programmation sur Arduino.

Ensuite (toujours le 31 mars) nous avons modélisé un premier dôme sur Tinkercad et l’avons exporté vers IdeaMaker pour l’impression 3D. En même temps, nous avons aussi conçu la première version du capot sur Inkscape, que nous avons testée en découpe laser.

Le mardi 1er avril, nous sommes allés au FabLab pour récupérer l’impression 3D du dôme. Puis Louly a commencé à créer l’animal crocheté autour du dôme, en respectant ses dimensions. Ce même jour, nous avons poursuivi la modélisation 3D pour ajouter des éléments comme un volant et un petit siège pour rendre le support plus vivant.

Le mercredi 2 avril, nous avons fait une deuxième découpe laser du capot, après avoir revu sa forme pour l’adapter aux dimensions de la planche avec l'arduino posé sur le dessus. Nous avons aussi extrait les fichiers du siège et du volant depuis Tinkercad vers IdeaMaker pour les imprimer.

Le jeudi 3 avril, nous avons assemblé toutes les pièces : le capot, le pingouin avec le dôme. Puis, nous avons fait les premiers tests complets du prototype. Nous avons ensuite lancé l'impression du siège et du dôme mais n'avons pas pu la terminer.

Finalement, le 28 avril, nous avons ajusté nos différents éléments comme suit : 

  • Impression 3D : n'ayant pas terminé l'impression le 3 avril, nous l'avons relancée le 28. Nous avons ensuite récupéré les pièces et les avons attachée à notre capot.
  • Découpe laser : Nous avons dû 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 donc augmenté les dimensions du rectangle de base de 0,5cm.
  • Code arduino : Lors de nos premiers tests, nous avons réussi à contrôler les moteurs pour faire avancer le chassis tout droit, à l'endroit et à l'envers. Néanmoins, nous voulions une trajectoire plus évoluée, nous avons donc décidé de faire faire à la voiture un carré, à l'endroit et à l'envers. (Cf code ci-dessous)

Enfin, nous nous sommes consacrées à la finalisation de la documentation et à la prise de photos pour illustrer le rendu final sur le wiki.


✏️ Design initial

  • Design attendu du robot + capot + peluche crochetée

ChatGPT Image 31 mars 2025, 21_11_13.png

Image du prototype générée par ChatGPT

  • Schéma du câblage Arduino + shield moteur

WhatsApp Image 2025-04-28 at 10.49.22.jpegWhatsApp Image 2025-04-28 at 10.49.23.jpeg

     


    🧾 Matériel utilisé

    Élément Quantité Remarque
    Arduino Uno 1 Contrôle général
    Shield moteur (DFRobot / L298P) 1 Contrôle des moteurs
    Chassis DG007 1 Plateforme roulante
    Moteurs DC 2 Déjà montés
    Roue folle 1 Stabilisation
    Batterie (9V) 1 Alimentation mobile
    MDF 3 mm 1 Découpe laser (185x135x70mm)
    PLA - Impression 3D
    Animal crocheté 1 Pingouin personnalisé

    💻 Code Arduino 

    Voici le code final que nous avons utilisé. Pour l'obtenir, nous avons itéré sur une version du code plus simplifiée, trouvée sur le site DFRobot (cf sources en fin de Wiki). A partir de ce modèle, nous avons modifié la trajectoire pour la complexifier.

    // Définition des broches de 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ô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ô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ô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ôle de la vitesse du moteur 2 avec la broche E2
    }
    
    // Fonction pour stopper le moteur 1
    void M1_stop() {
      analogWrite(E1, 0);  // Arrêt du moteur 1 en mettant la vitesse à 0
    }
    
    // Fonction pour stopper le moteur 2
    void M2_stop() {
      analogWrite(E2, 0);  // Arrêt du moteur 2 en mettant la vitesse à 0
    }
    
    // Configuration initiale
    void setup() {
      // Configuration des broches des moteurs (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éparer les branchements
      delay(10000);  // Délai de 10 secondes avant de commencer
    }
    
    // Boucle principale où les actions sont répétées indéfiniment
    void loop() {
      // 1er 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é du carré
    
      // Tourner à droite (90°)
      M1_advance(100);  // Moteur gauche avance rapidement
      M2_advance(10);   // Moteur droit avance lentement pour effectuer un virage à droite
      delay(500);        // Délai ajustable pour réaliser un virage de 90° (ajuste si nécessaire)
    
      // 2ème côté : Avancer tout droit
      M1_advance(100);  // Moteur gauche avance
      M2_advance(100);  // Moteur droit avance
      delay(2000);      // Temps pour avancer le deuxième côté du carré
    
      // Tourner à droite (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ème côté : Avancer tout droit
      M1_advance(100);  // Moteur gauche avance
      M2_advance(100);  // Moteur droit avance
      delay(2000);      // Temps pour avancer le troisième côté du carré
    
      // Tourner à droite (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°
    
      // 4ème côté : Avancer tout droit
      M1_advance(100);  // Moteur gauche avance
      M2_advance(100);  // Moteur droit avance
      delay(2000);      // Temps pour avancer le quatrième côté du carré
    
      // Retourner en arrière pour faire le carré à l'envers (à reculons)
    
      // 1er côté en 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é du carré à l'envers
    
      // Tourner à gauche (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ème côté en arrière : Reculer tout droit
      M1_back(100);  // Moteur gauche recule
      M2_back(100);  // Moteur droit recule
      delay(2000);   // Temps pour reculer le deuxième côté à l'envers
    
      // Tourner à gauche (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ème côté en arrière : Reculer tout droit
      M1_back(100);  // Moteur gauche recule
      M2_back(100);  // Moteur droit recule
      delay(2000);   // Temps pour reculer le troisième côté à l'envers
    
      // Tourner à gauche (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ème côté en arrière : Reculer tout droit
      M1_back(100);  // Moteur gauche recule
      M2_back(100);  // Moteur droit recule
      delay(2000);   // Temps pour reculer le quatrième côté à l'envers
    
      // Stopper les moteurs
      M1_stop();  // Arrêter le moteur gauche
      M2_stop();  // Arrêter le moteur droit
    
      // Recommencer à partir du début pour refaire le carré
      delay(5000); // Pause avant de recommencer
    }
    

    🪚 Découpe Laser

    1) Prise de mesures :

    Nous avons commencé par relever avec précision les dimensions de la plateforme mobile:

    • Largeur, longueur et hauteur disponibles
    • Positions des éléments fixes (Arduino, moteurs, roues)
    • Zones à laisser dégagées pour permettre la rotation libre des roues.

    Ces mesures étaient essentielles pour concevoir une boite qui protège l'Arduino sans gêner le fonctionnement du châssis. 

    2) Génération de la boite avec MakerCase :

    Après avoir relevé les dimensions, nous avons utilisé MakerCase, un générateur en ligne de boîtes personnalisées.
    Les étapes ont été les suivantes :

    • Entrer les dimensions internes de la boîte correspondant au support

    • Choisir une boîte ouverte pour permettre l’accès à l’Arduino

    • Définir l’épaisseur du matériau utilisé : MDF de 3 mm

    • Télécharger le fichier vectoriel (.svg) prêt pour la découpe laser.

    3) Ajout et préparation des logos :

    Afin de personnaliser le support, nous avons décidé d'ajouter deux logos :

    • Le logo Louly.Gurumi

    • Le logo du Fablab

    Les étapes réalisées :

    • Récupération des logos en image (formats .png ou .jpg)

    • Vectorisation des logos pour les convertir en tracés exploitables par la découpeuse sur Inkscape

    • Attribution des couleurs spécifiques :

      • Rouge pour les lignes de découpe

      • Noir pour les zones destinées à être gravées

    Cela permettait à la machine de distinguer automatiquement les opérations de gravure et de découpe.

    image.png

    4) Réglage de la découpe laser :

    • Vérification de l’échelle et de l’emplacement des logos et du modèle de boîte

    • Paramétrage du laser :

    • Organisation optimale des pièces sur la planche pour minimiser les pertes de matériau.

    La découpe laser a ensuite été lancée, suivie par l'assemblage de la boîte pour valider l'ajustement général.



    🖨️ Impression 3D

    1) Prise de mesures et réflexion sur les formes :

    Avant toute modélisation, nous avons commencé par relever avec précision les dimensions nécessaires pour concevoir un dôme adapté au robot :

    • Dimensions de la zone disponible sur la plaque supérieure du châssis (largeur/longueur).

    • Hauteur maximale possible sans déséquilibrer le robot.

    • Besoin d’un support arrondi pour fixer l'animal en crochet de manière stable.

    Nous avons choisi de créer un dôme simple pour coller au mieux la forme d’une peluche, tout en limitant le poids pour ne pas gêner le mouvement du robot.

    2) Modélisation 3D sur Tinkercad :

    La modélisation a été réalisée sur Tinkercad en suivant les étapes suivantes :

    • Création d'un dôme solide de 10 cm de rayon et 14 cm de hauteur.

    • Simplification du modèle pour éviter des supports internes inutiles.

    • Ajout d'un volant et d'un siège dans un second temps pour renforcer l’aspect esthétique du robot.

    Astuces : 

    • Le dôme a été volontairement semi-plein, car la tentative d’avoir un creux n'était pas stable à l'impression.

    • Pour le siège, nous avons formé un angle droit pour éviter d'avoir besoin de supports supplémentaires.

    3) Extraction sur IdeaMaker :

    Après la modélisation, les fichiers ont été exportés au format .stl et préparés sur IdeaMaker :

    • Hauteur de couche : 0,3 mm (impression rapide et correcte pour des pièces non-détaillées)

    • Densité de remplissage : 5 % (très faible pour réduire le temps et le poids)

    • Motif de remplissage : Grille (plus rapide et suffisant pour le dôme)

    • Supports d’impression :

      • Aucun support pour le dôme (surface simple et stable)

      • Supports activés pour le volant (formes en porte-à-faux plus fragiles)

    4) Lancement et réussite de l’impression :

    L'impression du dôme s'est déroulée sans problème :

    • Temps d'impression : 8h20 min

    • Quantité de filament utilisée : 120 g environ

    • Aucun besoin de reprise ni de correction après impression.

    Le volant et le siège ont également été imprimés correctement :

    • Temps d'impression : 6h23 min
    • Quantité de filament utilisée : non connue
    • Ajout de support obligatoire pour le volant 
    • Aucun besoin de reprise ni de correction après impression 

    Paramètres d’impression IdeaMaker utilisés :

    • Imprimante : Raise3D E2

    • Filament : PLA 1.75 mm

    • Remplissage : 5 %, motif grille

    • Supports : Oui uniquement pour les pièces complexes (volant)

    • Adhérence : Jupe uniquement

    • Épaisseur de couche : 0,3 mm

    Notes complémentaires :

    1. Le choix d’une faible densité et d’un motif grille --> solidité et rapidité d’impression.
    2. Réussite du premier coup --> stabilité du modèle créé.

    • Modélisation 3D du dome sur TINKERCAD 

    WhatsApp Image 2025-03-31 at 15.06.05.jpeg

    • Extraction du dome sur IDEAMAKER et paramètres d'impression 

    WhatsApp Image 2025-03-31 at 15.08.16.jpeg

    WhatsApp Image 2025-03-31 at 15.08.40.jpeg

    Hauteur de couche : 0,3mm

    Impression intérieur : initiale --> Gyroïde vs finale --> Grille pour optimiser le temps d'impression 

    Densité de remplissage : 5% (faible car pas nécessaire comme on a fait un trou directement sur modélisation tikercad)

      • Extraction du siège et du volant sur IDEAMAKER

      Capture d’écran 2025-04-28 à 14.57.17.png


      ✅ Tests, essais & ajustements

      Tests & ajustements de la partie impression 3D :

      • Ajustement forme du dôme pour stabiliser la peluche

      Tests & ajustements de la partie découpe laser :

      • Première itération: Plaque lisse avec quatre trous

      Initialement, nous avons conçu une simple plaque plate avec quatre trous pour fixer l’Arduino via des vis.
      Problème rencontré : La plaque ne tenait pas solidement, car l’Arduino monté en dessous déséquilibrait l’ensemble.

      WhatsApp Image 2025-04-28 à 11.29.35_e22663ec.jpg

      • Deuxième itération: boite en plexiglas

      Pour améliorer la stabilité, nous avons réalisé une boîte en plexiglas.
      Problème rencontré : Le matériau étant très lisse, la boîte glissait sur la plateforme, ce qui rendait l’installation instable.

      WhatsApp Image 2025-04-28 à 11.29.59_2c8a27e0.jpg

      • Troisième itération: boite en MDF 3mm 

      Nous avons remplacé le plexiglas par une boîte identique réalisée en MDF 3 mm et pour plus de stabilité nous avons utilisé la colle pour bien fixer la boite. 
      Résultat : L’adhérence était meilleure.
      Problème rencontré : La boîte était trop juste et bloquait le mouvement des roues.

      WhatsApp Image 2025-04-28 à 14.43.09_4909aa97.jpg

      • Quatrième itération: Agrandissement de la boite

      Pour corriger ce problème, nous avons augmenté la largeur et la longueur de la boîte de 0,5 cm chacun, tout en conservant la même hauteur. Nous avons aussi augmenté le nombre d'indentations afin de stabiliser et sécurisé le montage. La colle a aussi été utilisée. 
      Résultat : L’espace était meilleur, mais encore légèrement insuffisant pour un mouvement totalement fluide.

      Nous avons aussi remis la carte Arduino et la pile à l'intérieur du châssis ainsi que la pile. Le tout a été sécurisé grâce à des vis. 

      • Cinquième itération: Surélévation de la plateforme

      Pour finaliser l'ajustement, nous avons légèrement surélevé la plateforme mobile, afin de libérer totalement les roues.
      Résultat final : La boîte protège l’Arduino tout en permettant un mouvement libre et sans blocage.

      WhatsApp Image 2025-04-28 à 14.42.45_0ee78c7b.jpg

      Tests & ajustements de la partie code Arduino :

      • Test moteurs : avec code minimal
      • Test moteurs avec une trajectoire simple
      • Ajustements de la trajectoire, pour qu'elle forme un carré, et ajustement des angles pour que ce soit bien des angles droits. Pour les ajustements du code, nous avons surtout réglé la vitesse de marche des roues ainsi que la durée de marche. Ces deux paramètres permettent ainsi de régler la rotation des roues (pour se faire : il faut baisser la vitesse d'une des deux roues et d'augmenter celle de l'autre).

      Pour toute la partie code, nous avons mis 1 jour pour faire fonctionner les moteurs sans l'alimentation par le câble USB. 

      Le problème résidait dans le fait qu'il n'y avait pas de connexion directe entre le shield et l'Arduino. Nous avons donc dû les relier manuellement avec des câbles pour que la voiture fonctionne à distance !


      📦 Réalisation physique

      • Montage Arduino + shield + châssis

      • Impression du dôme, du siège et du volant (Tinkercad → IdeaMaker)

      • Découpe laser du capot avec dents pour imbrication

      • Gravure logo “Louly.gurumi” sur la plaque

      • Crochetage de l'animal sur le dôme 

      • Pose de la peluche sur le capot


      📸 Photos

      • Montage du châssis 

      WhatsApp Image 2025-04-28 at 10.49.23.jpeg

      • Impression du capot 

      • Gravure laser 

      • Confection de l'animal crocheté autour du dôme

      Capture d’écran 2025-04-02 à 09.59.44.png


      🔁 Pistes d’amélioration

      • Ajouter des capteurs (obstacle, lumière) pour augmenter la complexité

      • Ajouter des effets de sons ou de lumière pour augmenter les interactions
      • Rendre le robot autonome via un contrôle bluetooth ou appli mobile

      • Utiliser une batterie rechargeable + interrupteur ON/OFF


      📚 Sources & inspirations