C'est l'été ! Fleur.gif

ENIB 2025 :Tassive Mits : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Troubleshooting)
(Code Arduino)
Ligne 66 : Ligne 66 :
 
===Code Arduino===
 
===Code Arduino===
 
<syntaxhighlight lang="Arduino" line>  
 
<syntaxhighlight lang="Arduino" line>  
#define PIN 9
+
///////////////
#include <Arduino_GFX_Library.h>
+
// Petit Bot //
 +
///////////////
 +
// MAJ 250121
 +
// Un programme pédagogique des petits débrouillards ?=+ pour gérer le robot "Petit Bot"
 +
// Voir sur http://ancien.wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi
 +
// Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&t=6419#sthash.gd1tJhwU.dpuf
 +
// Sous licence CC-By-Sa
 +
// Par des gens bien
  
void setup() {
+
/* Schéma
   // put your setup code here, to run once:
+
Lolin (Wemos) D1 mini
 +
                                   
 +
                                _________________
 +
                              /    D1 mini    \
 +
                              |[ ]RST        TX[ ]|
 +
                              |[ ]A0  -GPIO  RX[ ]|
 +
                              |[ ]D0-16    5-D1[X]|----\
 +
                              |[ ]D5-14    4-D2[X]|--\  \
 +
                              |[ ]D6-12    0-D3[ ]|  |   |
 +
                              |[ ]D7-13    2-D4[ ]|  |  |
 +
                              |[ ]D8-15    GND[X]|  |  |
 +
                              |[ ]3V3        5V[ ]|  |  |
 +
_                            |      +---+      |  |  |
 +
| |                          |_______|USB|_______|  |  /                           _
 +
| |      _                                        / /                  _        | |
 +
| |    _| |_________                        _____/  /        _________| |_      | |
 +
| |    |    ______  |_data D1______________/        |_data D2_|  ______    |    | |
 +
| |  __|  | SG90 |  |_______________GND_______________________|  | SG90 |  |___  | |
 +
| |_|      |Servo |  |_______________Vin_______________________|  |Servo |      |_| |
 +
| |_|      |Gauche|  |                                        |  |Droit |      |_| |
 +
| | |__    |______|  |                                        |  |______|    ___| | |
 +
| |    |__  ________|                                        |_________  __|    | |
 +
| |      |_|                                                            |_|      | |
 +
| |                                                                                | |
 +
|_|                                                                                |_|
 +
                                                                   
 +
    ___
 +
  / ___ \
 +
|_|  | |
 +
      /_/
 +
      _  ___  _
 +
    |_| |___|_| |_
 +
          ___|_  _|
 +
        |___| |_|
 +
  Les petits Débrouillards - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
 +
  Antony Le Goïc-Auffret janvier 2025
 +
*/
  
 +
// on appelle la bibliothèque qui gère le Wemos D1 mini
 +
#include <ESP8266WiFi.h>
 +
 +
// Gestion du Wifi
 +
#include <ESP8266WebServer.h>
 +
#include <DNSServer.h>
 +
#include <ESP8266mDNS.h>
 +
#include <WiFiClient.h>
 +
 +
//  Definition du WiFi
 +
const char *nomDuReseau = "kill_me";    // Nom du réseau wifi du petit bot
 +
const char *motDePasse = "";    // Mot de passe du réseau wifi du petit bot
 +
// ATTENTION - le mot de passe doit faire soit 0 caractères soit 8 ou plus sinon
 +
// La configuration de votre réseau wifi ne se fera pas (ni mot de passe, ni nom de réseau !).
 +
//création du monServeur
 +
ESP8266WebServer monServeur(80);              // Création de l'objet monServeur
 +
 +
//Gestion des servomoteurs
 +
#include <Servo.h>  //appel de la bibliothèque qui gère les servomoteurs
 +
 +
// création des servomoteurs
 +
Servo servo1;  // Nom du servo qui gère la première roue
 +
Servo servo2;    // Seconde roue
 +
 +
//déclaration des Variables
 +
int val = -1; // Val nous sert à stocker la commande de l'utilisateur (stop, avance, ...).
 +
int curseurValue = 20;
 +
 +
void setup(){
 +
  delay(1000);
 +
  Serial.begin(115200); // Ouvre une connexion série pour monitorer le fonctionnement du code quand on reste branché a l'ordinateur
 +
  Serial.println();
 +
  Serial.println(); 
 +
  configDuWifi();
 +
  servo1.detach();  // Place les servos hors tension
 +
  servo2.detach();
 +
  pinMode(LED_BUILTIN, OUTPUT);    //met la led du Wemos en sortie
 +
  digitalWrite(LED_BUILTIN, LOW);  //met la led du Wemos sur le niveau bas ce qui l'allume.
 +
 +
  servo1.attach(D1);
 +
  servo2.attach(D2);
 +
}
 +
 +
void loop(){
 +
    val = -1;
 +
    monServeur.handleClient();
 +
}
 +
 +
///////////////////////GESTION DES INSTRUCTIONS///////////////////////////
 +
void GestionDesClics() {
 +
  monServeur.on("/verser", HTTP_GET, []() {
 +
  val = 1;
 +
  Serial.println("verser");
 +
  redactionPageWeb();
 +
  });
 +
 
 +
  monServeur.on("/", HTTP_GET, []() {
 +
  val = -1;
 +
  if (monServeur.hasArg("curseur")) {
 +
    curseurValue = monServeur.arg("curseur").toInt();
 +
    Serial.println(curseurValue);
 +
  }
 +
  redactionPageWeb();
 +
  });
 +
 +
}
 +
 +
///////////////////////////LA PAGE WEB DE CONROLE DU PETIT BOT/////////////////////////////////////////
 +
void redactionPageWeb(){
 +
  // Prépare la page web de réponse (le code HTML sera écrit dans la chaine de caractère "pageWeb").
 +
  String pageWeb = "<!DOCTYPE HTML>\r\n";
 +
  pageWeb += "<html>\r\n";
 +
  pageWeb += "<head>\r\n";
 +
  pageWeb += "<meta charset=\"utf-8\">\r\n";
 +
  pageWeb += "<title>Petit bot</title>\r\n";
 +
  pageWeb += "</head>\r\n";
 +
  pageWeb += "<body>\r\n";
 +
  pageWeb += "<center>";    //On ouvre la balise qui va centrer les boutons
 +
  pageWeb += "<h1 style=\"font-size:300%;\"\> La Tassive Mits Machine ";
 +
  pageWeb += "<style type=\"text/css\">  body { color: #212121; background-color: #FFFFFF } </style>";
 +
 +
  // On finalise l'écriture de la page Web et on donne les instructions aux servos
 +
  instruction(val, curseurValue); // pour cela on appelle la fonction "instruction"
 +
 +
  // On termine l'écriture de la page Web
 +
  pageWeb += "</h1>";
 +
  pageWeb += "<br>"; //aller à la ligne
 +
  pageWeb += "<br>"; //aller à la ligne
 +
 +
  //curseur
 +
  pageWeb += "<form action=\"/\" method=\"get\">\r\n"; // Formulaire pour envoyer la valeur
 +
  pageWeb += "rapport dilué/quantité totale en % : <input type=\"range\" name=\"curseur\" min=\"0\" max=\"100\" value=\"" + String(curseurValue) + "\">\r\n";
 +
  pageWeb += "<input type=\"submit\" value=\"Envoyer\">\r\n";
 +
  pageWeb += "</form>\r\n";
 +
 +
  pageWeb += "<br><br>";
 +
  pageWeb += "<a href=\"/verser\"\"><button style=\"font-size:200%; width: 18%; background-color:#0CCC16; border-radius: 12px\"\>Verser </button></a>\r\n";      // créer un bouton "Stop", qui envoie sur l'URL /stop
 +
  pageWeb += "</center>"; // tout est centré sur la page
 +
  pageWeb += "</body>\r\n";
 +
  pageWeb += "</html>\n"; //Fin de la page Web
 +
 +
  // On envoie la page web
 +
  monServeur.send(200, "text/html", pageWeb);
 +
  delay(1);
 
}
 
}
  
void loop() {
+
///////////////////INSTRUCTIONS/////////////////////////////////////////////////////////
   // put your main code here, to run repeatedly:
+
void instruction(int valeur, int curseurValue){ //Cette fonction traite les instructions qui sont reçues
 +
   if (valeur == 1){
 +
    Serial.println(curseurValue);
 +
    Serial.println(2000*curseurValue / 100);
 +
    Serial.println(2000*(100-curseurValue) / 100);
 +
    Serial.println("pouring..."); ////////////////////////
 +
    servo1.write(0);
 +
    delay(1000);
 +
    servo1.write(90);
 +
    delay(2000*curseurValue / 100);
 +
    servo1.write(180);
 +
    delay(1000);
 +
    servo1.write(90);
 +
    delay(1000);
  
 +
    servo2.write(0);
 +
    delay(1000);
 +
    servo2.write(90);
 +
    delay(2000*(100-curseurValue) / 100);
 +
    servo2.write(180);
 +
    delay(1000);
 +
    servo2.write(90);
 +
    delay(1000);
 +
    Serial.println("done pouring, enjoy ! \n");
 +
  }
 +
}
 +
////////////////////////CONFIGURATION WIFI///////////////////////////////////////////////
 +
void configDuWifi(){  // Fonction de configuratio du Wifi
 +
  WiFi.mode(WIFI_AP); // le wemos est en mode "Point d'Accès" (il déploie un réseau wifi)
 +
  WiFi.softAP(nomDuReseau, motDePasse, 2); // on démarre le "Point d'Accès".
 +
  MDNS.begin(nomDuReseau);                // gérer les DNS ce qui rendra votre petit bot accessible
 +
  MDNS.addService("http", "tcp", 80);      // via http://nomDuReseau.local
 +
  IPAddress monIP = WiFi.softAPIP();      // on récupère l'adresse IP du petit Bot
 +
  Serial.print("Adresse IP de ce Point d'Accès : ");
 +
  Serial.println(monIP);                  // on l'écrit sur le moniteur série
 +
  GestionDesClics();
 +
  monServeur.begin();                          //Démarrage du monServeur
 +
  Serial.println("Serveur HTTP démarré");
 +
  return;                                  // on retourne à l'endroit ou la fonction a été appelée.
 
}
 
}
  

Version du 23 janvier 2025 à 16:26

Titre de la fiche expérience :

Description

TMMLogo.png

Tassive Mits est un dispositif innovant qui permet de verser dans un verre deux liquides préalablement sélectionnés, avec des doses précisément ajustées selon les besoins. Grâce à son système de dosage automatisé, il garantit une précision optimale et une expérience utilisateur fluide.

Introduction

Base du projet

Brouillon du prototype

Nous sommes partis du matériel disponible pour le petit robot et avons imaginez un prototype présent sur le papier ci-dessus.

Prototype

Système de distribution d'un liquide
Prototype vue du dessus
Goulot de sortie.

Outil et matériel

Liste des outils et du matériel nécessaires
**Quantité** **Matériel/Outil**
2 Servomoteur à rotation continue
1 ESP8266
1 Shield pour servomoteur Petit débrouillard
1 Batterie externe pour l'alimentation
1 Câble USB-A vers USB-B mini
3 Bouteilles de taille similaire
2 Support à bouteilles
1 ou plus Grand tube (selon la taille requise)
* Clous
* Vis
1 ou plus Carton, bois, ...
1 Scotch
1 Pistolet à colle

Fichiers à joindre

Code Arduino

  1  
  2 ///////////////
  3 // Petit Bot //
  4 ///////////////
  5 // MAJ 250121
  6 // Un programme pédagogique des petits débrouillards ?=+ pour gérer le robot "Petit Bot" 
  7 // Voir sur http://ancien.wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi
  8 // Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&t=6419#sthash.gd1tJhwU.dpuf
  9 // Sous licence CC-By-Sa
 10 // Par des gens bien
 11 
 12 /* Schéma
 13 Lolin (Wemos) D1 mini
 14                                      
 15                                 _________________
 16                                /     D1 mini     \
 17                               |[ ]RST        TX[ ]|
 18                               |[ ]A0  -GPIO  RX[ ]|
 19                               |[ ]D0-16    5-D1[X]|----\
 20                               |[ ]D5-14    4-D2[X]|--\  \
 21                               |[ ]D6-12    0-D3[ ]|  |   |
 22                               |[ ]D7-13    2-D4[ ]|  |   |
 23                               |[ ]D8-15     GND[X]|  |   |
 24                               |[ ]3V3        5V[ ]|  |   |
 25  _                            |       +---+       |  |   |
 26 | |                           |_______|USB|_______|  |  /                           _
 27 | |       _                                         /  /                  _        | |
 28 | |     _| |_________                         _____/  /         _________| |_      | |
 29 | |    |    ______   |_data D1______________/        |_data D2_|   ______    |     | |
 30 | |  __|   | SG90 |  |_______________GND_______________________|  | SG90 |   |___  | |
 31 | |_|      |Servo |  |_______________Vin_______________________|  |Servo |       |_| |
 32 | |_|      |Gauche|  |                                         |  |Droit |       |_| |
 33 | | |__    |______|  |                                         |  |______|    ___| | |
 34 | |    |__   ________|                                         |_________   __|    | |
 35 | |       |_|                                                            |_|       | |
 36 | |                                                                                | |
 37 |_|                                                                                |_|
 38                                                                      
 39     ___
 40   / ___ \
 41  |_|   | | 
 42       /_/
 43       _   ___   _
 44      |_| |___|_| |_
 45           ___|_   _|
 46          |___| |_|
 47   Les petits Débrouillards - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
 48   Antony Le Goïc-Auffret janvier 2025
 49  */
 50 
 51 // on appelle la bibliothèque qui gère le Wemos D1 mini
 52 #include <ESP8266WiFi.h> 
 53 
 54 // Gestion du Wifi
 55 #include <ESP8266WebServer.h>
 56 #include <DNSServer.h>
 57 #include <ESP8266mDNS.h>
 58 #include <WiFiClient.h> 
 59 
 60 //  Definition du WiFi 
 61 const char *nomDuReseau = "kill_me";     // Nom du réseau wifi du petit bot
 62 const char *motDePasse = "";    // Mot de passe du réseau wifi du petit bot
 63 // ATTENTION - le mot de passe doit faire soit 0 caractères soit 8 ou plus sinon
 64 // La configuration de votre réseau wifi ne se fera pas (ni mot de passe, ni nom de réseau !).
 65 //création du monServeur
 66 ESP8266WebServer monServeur(80);               // Création de l'objet monServeur
 67 
 68 //Gestion des servomoteurs
 69 #include <Servo.h>   //appel de la bibliothèque qui gère les servomoteurs
 70 
 71 // création des servomoteurs 
 72 Servo servo1;   // Nom du servo qui gère la première roue
 73 Servo servo2;    // Seconde roue
 74 
 75 //déclaration des Variables
 76 int val = -1; // Val nous sert à stocker la commande de l'utilisateur (stop, avance, ...).
 77 int curseurValue = 20;
 78 
 79 void setup(){
 80   delay(1000);
 81   Serial.begin(115200); // Ouvre une connexion série pour monitorer le fonctionnement du code quand on reste branché a l'ordinateur
 82   Serial.println();
 83   Serial.println();  
 84   configDuWifi();
 85   servo1.detach();  // Place les servos hors tension
 86   servo2.detach(); 
 87   pinMode(LED_BUILTIN, OUTPUT);    //met la led du Wemos en sortie
 88   digitalWrite(LED_BUILTIN, LOW);  //met la led du Wemos sur le niveau bas ce qui l'allume.
 89 
 90   servo1.attach(D1);
 91   servo2.attach(D2);
 92 }
 93 
 94 void loop(){
 95     val = -1;
 96     monServeur.handleClient();
 97 }
 98 
 99 ///////////////////////GESTION DES INSTRUCTIONS///////////////////////////
100 void GestionDesClics() {
101   monServeur.on("/verser", HTTP_GET, []() {
102   val = 1;
103   Serial.println("verser");
104   redactionPageWeb();
105   });
106   
107   monServeur.on("/", HTTP_GET, []() {
108   val = -1;
109   if (monServeur.hasArg("curseur")) {
110     curseurValue = monServeur.arg("curseur").toInt();
111     Serial.println(curseurValue);
112   }
113   redactionPageWeb();
114   });
115 
116 }
117 
118 ///////////////////////////LA PAGE WEB DE CONROLE DU PETIT BOT/////////////////////////////////////////
119 void redactionPageWeb(){
120   // Prépare la page web de réponse (le code HTML sera écrit dans la chaine de caractère "pageWeb").
121   String pageWeb = "<!DOCTYPE HTML>\r\n";
122   pageWeb += "<html>\r\n";
123   pageWeb += "<head>\r\n";
124   pageWeb += "<meta charset=\"utf-8\">\r\n";
125   pageWeb += "<title>Petit bot</title>\r\n";
126   pageWeb += "</head>\r\n";
127   pageWeb += "<body>\r\n";
128   pageWeb += "<center>";    //On ouvre la balise qui va centrer les boutons
129   pageWeb += "<h1 style=\"font-size:300%;\"\> La Tassive Mits Machine ";
130   pageWeb += "<style type=\"text/css\">  body { color: #212121; background-color: #FFFFFF } </style>";
131 
132   // On finalise l'écriture de la page Web et on donne les instructions aux servos
133   instruction(val, curseurValue); // pour cela on appelle la fonction "instruction"
134 
135   // On termine l'écriture de la page Web
136   pageWeb += "</h1>";
137   pageWeb += "<br>"; //aller à la ligne
138   pageWeb += "<br>"; //aller à la ligne
139 
140   //curseur
141   pageWeb += "<form action=\"/\" method=\"get\">\r\n"; // Formulaire pour envoyer la valeur
142   pageWeb += "rapport dilué/quantité totale en % : <input type=\"range\" name=\"curseur\" min=\"0\" max=\"100\" value=\"" + String(curseurValue) + "\">\r\n";
143   pageWeb += "<input type=\"submit\" value=\"Envoyer\">\r\n";
144   pageWeb += "</form>\r\n";
145 
146   pageWeb += "<br><br>";
147   pageWeb += "<a href=\"/verser\"\"><button style=\"font-size:200%; width: 18%; background-color:#0CCC16; border-radius: 12px\"\>Verser </button></a>\r\n";      // créer un bouton "Stop", qui envoie sur l'URL /stop
148   pageWeb += "</center>"; // tout est centré sur la page
149   pageWeb += "</body>\r\n";
150   pageWeb += "</html>\n"; //Fin de la page Web
151 
152   // On envoie la page web
153   monServeur.send(200, "text/html", pageWeb);
154   delay(1);
155 }
156 
157 ///////////////////INSTRUCTIONS/////////////////////////////////////////////////////////
158 void instruction(int valeur, int curseurValue){ //Cette fonction traite les instructions qui sont reçues
159   if (valeur == 1){
160     Serial.println(curseurValue);
161     Serial.println(2000*curseurValue / 100);
162     Serial.println(2000*(100-curseurValue) / 100);
163     Serial.println("pouring..."); ////////////////////////
164     servo1.write(0);
165     delay(1000);
166     servo1.write(90);
167     delay(2000*curseurValue / 100);
168     servo1.write(180);
169     delay(1000);
170     servo1.write(90);
171     delay(1000);
172 
173     servo2.write(0);
174     delay(1000);
175     servo2.write(90);
176     delay(2000*(100-curseurValue) / 100);
177     servo2.write(180);
178     delay(1000);
179     servo2.write(90);
180     delay(1000);
181     Serial.println("done pouring, enjoy ! \n"); 
182   }
183 }
184 ////////////////////////CONFIGURATION WIFI///////////////////////////////////////////////
185 void configDuWifi(){  // Fonction de configuratio du Wifi
186   WiFi.mode(WIFI_AP); // le wemos est en mode "Point d'Accès" (il déploie un réseau wifi)
187   WiFi.softAP(nomDuReseau, motDePasse, 2); // on démarre le "Point d'Accès".
188   MDNS.begin(nomDuReseau);                 // gérer les DNS ce qui rendra votre petit bot accessible
189   MDNS.addService("http", "tcp", 80);      // via http://nomDuReseau.local
190   IPAddress monIP = WiFi.softAPIP();       // on récupère l'adresse IP du petit Bot
191   Serial.print("Adresse IP de ce Point d'Accès : ");
192   Serial.println(monIP);                   // on l'écrit sur le moniteur série
193   GestionDesClics();
194   monServeur.begin();                          //Démarrage du monServeur
195   Serial.println("Serveur HTTP démarré");
196   return;                                  // on retourne à l'endroit ou la fonction a été appelée.
197 }

Étapes de fabrication

Cette section décrit les différentes étapes nécessaires pour assembler et faire fonctionner le dispositif. Chaque étape est illustrée par des images pour faciliter la compréhension.

Étape 1 : Préparation des matériaux

1. Rassemblez les éléments listés dans la section "Outil et matériel".

2. Vérifiez que tous les composants fonctionnent :

  - Testez rapidement les servomoteurs pour vérifier qu’ils tournent.  
  - Assurez-vous que l’ESP8266 s’allume et est détecté par votre ordinateur.  

3. Préparez un espace de travail propre et dégagé :

  - Éliminez tout ce qui pourrait gêner.  
  - Assurez-vous d’avoir suffisamment de lumière et de place pour manipuler les outils.

Étape 2 : Assemblage de la structure

Fixez les plaques de support et positionnez les bouteilles.

1. Assemblez les plaques en carton ou bois pour créer la base du dispositif.

2. Fixez les supports à bouteilles avec des clous ou des vis.

3. Placez les bouteilles sur leurs supports pour vérifier l’équilibre.

Étape 3 : Installation des servomoteurs

Testez les servomoteurs pour qu’ils actionnent les tubes.

1. Fixez les servomoteurs sur la structure à l’aide de vis ou d’un adhésif solide ou de ficelle.

2. Reliez les servomoteurs au shield "Petit débrouillard".

3. Vérifiez que les servomoteurs peuvent tourner librement sans frottement.

Étape 4 : Branchement de l'ESP8266 et alimentation

Câblage.

1. Connectez l’ESP8266 au shield avec les câbles appropriés.

  - Vérifiez que les connexions sont solides et qu’il n’y a pas de court-circuit.  

2. Branchez la batterie externe pour alimenter le système.

  - Assurez-vous que la batterie est chargée.  

3. Effectuez un test d’alimentation pour vérifier que tout fonctionne correctement.

Étape 5 : Calibration et tests

1. Calibrez les servomoteurs :

  - Testez leur vitesse de rotation et leur direction.  
  - Ajustez dans le code si nécessaire pour qu’ils fonctionnent de manière synchronisée.  

2. Ajoutez les tubes ou autres éléments mécaniques nécessaires.

  - Assurez-vous qu’ils sont bien fixés et qu’ils ne bloquent pas les servomoteurs.  

3. Testez le système complet pour valider son bon fonctionnement.

  - Simulez un cycle complet pour repérer les éventuels problèmes.  


Étape 6 : Sécurisation et finalisation (Optionnel)

1. Fixez tous les composants solidement pour éviter qu’ils ne se détachent.

  - Ajoutez de la colle ou du ruban adhésif si nécessaire.  

2. Nettoyez les câblages pour éviter tout problème.

  - Utilisez des colliers de serrage ou des guides pour organiser les fils.  

3. Ajoutez un boîtier ou une protection si possible.

  - Cela protégera les composants et donnera un aspect plus professionnel.

Troubleshooting

Cette section fournit des solutions aux problèmes courants que vous pourriez rencontrer lors de l’assemblage ou de l’utilisation du dispositif.

- Problème : Le servomoteur ne tourne pas.

 - Solution : Vérifiez les connexions entre le servomoteur, le shield et l’alimentation. Assurez-vous que l’ESP8266 est bien programmé.  

- Problème : Les bouteilles tombent de leurs supports.

 - Solution : Ajustez les supports pour mieux maintenir les bouteilles ou utilisez un adhésif léger pour les stabiliser.  

- Problème : Le dispositif n’est pas stable.

 - Solution : Ajoutez du poids à la base ou élargissez les supports pour améliorer l’équilibre.  

- Problème : Problème d'étanchéité.

 - Solution : Vérifier s'il n'y a pas de trou puis sinon même à grosse dose essayer avec scotch, colle ou autre jusqu'à que ça soit hermétique

- Astuce : Simplifiez le câblage.

 - Truc : Utilisez des connecteurs rapides ou des guides pour éviter que les fils ne s’emmêlent.

Sources et documentation complémentaire

Elément de présentation