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

ENIB 2025 :Tassive Mits

De Les Fabriques du Ponant
Révision datée du 23 janvier 2025 à 16:27 par Tassive Mits (discussion | contributions) (Code Arduino)
Aller à : navigation, rechercher

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 // TMM //
  4 ///////////////
  5 
  6 // on appelle la bibliothèque qui gère le Wemos D1 mini
  7 #include <ESP8266WiFi.h> 
  8 
  9 // Gestion du Wifi
 10 #include <ESP8266WebServer.h>
 11 #include <DNSServer.h>
 12 #include <ESP8266mDNS.h>
 13 #include <WiFiClient.h> 
 14 
 15 //  Definition du WiFi 
 16 const char *nomDuReseau = "kill_me";     // Nom du réseau wifi du petit bot
 17 const char *motDePasse = "";    // Mot de passe du réseau wifi du petit bot
 18 // ATTENTION - le mot de passe doit faire soit 0 caractères soit 8 ou plus sinon
 19 // La configuration de votre réseau wifi ne se fera pas (ni mot de passe, ni nom de réseau !).
 20 //création du monServeur
 21 ESP8266WebServer monServeur(80);               // Création de l'objet monServeur
 22 
 23 //Gestion des servomoteurs
 24 #include <Servo.h>   //appel de la bibliothèque qui gère les servomoteurs
 25 
 26 // création des servomoteurs 
 27 Servo servo1;   // Nom du servo qui gère la première roue
 28 Servo servo2;    // Seconde roue
 29 
 30 //déclaration des Variables
 31 int val = -1; // Val nous sert à stocker la commande de l'utilisateur (stop, avance, ...).
 32 int curseurValue = 20;
 33 
 34 void setup(){
 35   delay(1000);
 36   Serial.begin(115200); // Ouvre une connexion série pour monitorer le fonctionnement du code quand on reste branché a l'ordinateur
 37   Serial.println();
 38   Serial.println();  
 39   configDuWifi();
 40   servo1.detach();  // Place les servos hors tension
 41   servo2.detach(); 
 42   pinMode(LED_BUILTIN, OUTPUT);    //met la led du Wemos en sortie
 43   digitalWrite(LED_BUILTIN, LOW);  //met la led du Wemos sur le niveau bas ce qui l'allume.
 44 
 45   servo1.attach(D1);
 46   servo2.attach(D2);
 47 }
 48 
 49 void loop(){
 50     val = -1;
 51     monServeur.handleClient();
 52 }
 53 
 54 ///////////////////////GESTION DES INSTRUCTIONS///////////////////////////
 55 void GestionDesClics() {
 56   monServeur.on("/verser", HTTP_GET, []() {
 57   val = 1;
 58   Serial.println("verser");
 59   redactionPageWeb();
 60   });
 61   
 62   monServeur.on("/", HTTP_GET, []() {
 63   val = -1;
 64   if (monServeur.hasArg("curseur")) {
 65     curseurValue = monServeur.arg("curseur").toInt();
 66     Serial.println(curseurValue);
 67   }
 68   redactionPageWeb();
 69   });
 70 
 71 }
 72 
 73 ///////////////////////////LA PAGE WEB DE CONROLE DU PETIT BOT/////////////////////////////////////////
 74 void redactionPageWeb(){
 75   // Prépare la page web de réponse (le code HTML sera écrit dans la chaine de caractère "pageWeb").
 76   String pageWeb = "<!DOCTYPE HTML>\r\n";
 77   pageWeb += "<html>\r\n";
 78   pageWeb += "<head>\r\n";
 79   pageWeb += "<meta charset=\"utf-8\">\r\n";
 80   pageWeb += "<title>Petit bot</title>\r\n";
 81   pageWeb += "</head>\r\n";
 82   pageWeb += "<body>\r\n";
 83   pageWeb += "<center>";    //On ouvre la balise qui va centrer les boutons
 84   pageWeb += "<h1 style=\"font-size:300%;\"\> La Tassive Mits Machine ";
 85   pageWeb += "<style type=\"text/css\">  body { color: #212121; background-color: #FFFFFF } </style>";
 86 
 87   // On finalise l'écriture de la page Web et on donne les instructions aux servos
 88   instruction(val, curseurValue); // pour cela on appelle la fonction "instruction"
 89 
 90   // On termine l'écriture de la page Web
 91   pageWeb += "</h1>";
 92   pageWeb += "<br>"; //aller à la ligne
 93   pageWeb += "<br>"; //aller à la ligne
 94 
 95   //curseur
 96   pageWeb += "<form action=\"/\" method=\"get\">\r\n"; // Formulaire pour envoyer la valeur
 97   pageWeb += "rapport dilué/quantité totale en % : <input type=\"range\" name=\"curseur\" min=\"0\" max=\"100\" value=\"" + String(curseurValue) + "\">\r\n";
 98   pageWeb += "<input type=\"submit\" value=\"Envoyer\">\r\n";
 99   pageWeb += "</form>\r\n";
100 
101   pageWeb += "<br><br>";
102   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
103   pageWeb += "</center>"; // tout est centré sur la page
104   pageWeb += "</body>\r\n";
105   pageWeb += "</html>\n"; //Fin de la page Web
106 
107   // On envoie la page web
108   monServeur.send(200, "text/html", pageWeb);
109   delay(1);
110 }
111 
112 ///////////////////INSTRUCTIONS/////////////////////////////////////////////////////////
113 void instruction(int valeur, int curseurValue){ //Cette fonction traite les instructions qui sont reçues
114   if (valeur == 1){
115     Serial.println(curseurValue);
116     Serial.println(2000*curseurValue / 100);
117     Serial.println(2000*(100-curseurValue) / 100);
118     Serial.println("pouring..."); ////////////////////////
119     servo1.write(0);
120     delay(1000);
121     servo1.write(90);
122     delay(2000*curseurValue / 100);
123     servo1.write(180);
124     delay(1000);
125     servo1.write(90);
126     delay(1000);
127 
128     servo2.write(0);
129     delay(1000);
130     servo2.write(90);
131     delay(2000*(100-curseurValue) / 100);
132     servo2.write(180);
133     delay(1000);
134     servo2.write(90);
135     delay(1000);
136     Serial.println("done pouring, enjoy ! \n"); 
137   }
138 }
139 ////////////////////////CONFIGURATION WIFI///////////////////////////////////////////////
140 void configDuWifi(){  // Fonction de configuratio du Wifi
141   WiFi.mode(WIFI_AP); // le wemos est en mode "Point d'Accès" (il déploie un réseau wifi)
142   WiFi.softAP(nomDuReseau, motDePasse, 2); // on démarre le "Point d'Accès".
143   MDNS.begin(nomDuReseau);                 // gérer les DNS ce qui rendra votre petit bot accessible
144   MDNS.addService("http", "tcp", 80);      // via http://nomDuReseau.local
145   IPAddress monIP = WiFi.softAPIP();       // on récupère l'adresse IP du petit Bot
146   Serial.print("Adresse IP de ce Point d'Accès : ");
147   Serial.println(monIP);                   // on l'écrit sur le moniteur série
148   GestionDesClics();
149   monServeur.begin();                          //Démarrage du monServeur
150   Serial.println("Serveur HTTP démarré");
151   return;                                  // on retourne à l'endroit ou la fonction a été appelée.
152 }

É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