|
|
| (35 révisions intermédiaires par 2 utilisateurs non affichées) |
| Ligne 1 : |
Ligne 1 : |
| | Titre de la fiche expérience : | | Titre de la fiche expérience : |
| | ==description (résumé)== | | ==description (résumé)== |
| − | éventuelle photo de l'équipe
| |
| | | | |
| − | [[Fichier:PaperToy2 schema.png|200px]]
| + | Premiers essais et compréhension du système de base |
| | | | |
| − | ==Introduction==
| + | [[Fichier:PaperToy2 schema.png|300px]] |
| | | | |
| − | éventuelle vidéo
| |
| − | ==outil et matériel==
| |
| | | | |
| − | ==fichiers à joindre==
| + | Premières créations avec des matériaux simples |
| − | code, ficher d'impression 3D, de découpe laser ou vinyle, ...
| |
| − | #include <ESP8266WiFi.h>
| |
| − | #include <ESP8266WebServer.h>
| |
| − | #include <Servo.h> // Inclusion de la bibliothèque Servo
| |
| | | | |
| | + | [[Fichier:Premier prototype Ptitbolide.png|300px]] |
| | | | |
| − | // Informations réseau (réseau Wi-Fi existant)
| |
| − | const char* mySSID = "Formation"; // SSID de votre réseau Wi-Fi
| |
| − | const char* mySecKey = "Apdgo29200!"; // Clé Wi-Fi de votre réseau
| |
| | | | |
| | + | Réalisation d'un prototype plus solide |
| | | | |
| − | // Déclaration du serveur Web
| + | [[Fichier:Prototype2 ptitbolide.png|300px]] |
| − | ESP8266WebServer myWeb(80);
| |
| | | | |
| | | | |
| − | // Pin pour contrôler les servos
| + | Ajout d'un boitier pour faire tenir les composants |
| − | const int servoPin1 = D4; // Pin pour le premier servo-moteur
| |
| − | const int servoPin2 = D1; // Pin pour le deuxième servo-moteur
| |
| | | | |
| | + | [[Fichier:Ptitbolide boite.jpg|300px]] |
| | | | |
| − | // Déclaration des objets Servo
| |
| − | Servo myServo1; // Objet Servo pour contrôler le premier servo
| |
| − | Servo myServo2; // Objet Servo pour contrôler le deuxième servo
| |
| | | | |
| | + | Finalisation de l'interface web pour controler le véhicule |
| | | | |
| − | // Variables pour stocker la position des servos
| + | [[Fichier:Ptitbolide Control panel.png|300px]] |
| − | int servoPosition1 = 90; // Position par défaut du premier servo
| |
| − | int servoPosition2 = 90; // Position par défaut du deuxième servo
| |
| | | | |
| | | | |
| − | // Fonction pour générer la page HTML
| + | Finalisation du design |
| − | String webPage01() {
| |
| − | String p = "<html lang=fr-FR><head>\n";
| |
| − | p += "<title>Commande des Servos</title>\n";
| |
| − | p += "<meta charset='UTF-8'>\n";
| |
| − | p += "<style>\n";
| |
| − | p += "body { background-color: #000088; color: white; font-size: 25px; }\n";
| |
| − | p += "input { width:25%; margin:10px; font-size:20px; border-radius: 5px; }\n";
| |
| − | p += "</style>\n";
| |
| − | p += "<script>\n";
| |
| − | p += "function updateServoPosition1(val) {\n";
| |
| − | p += " document.getElementById('servoValue1').innerText = val + '°';\n";
| |
| − | p += " window.location = window.location.pathname + '?servo1=' + val;\n";
| |
| − | p += "}\n";
| |
| − | p += "function updateServoPosition2(val) {\n";
| |
| − | p += " document.getElementById('servoValue2').innerText = val + '°';\n";
| |
| − | p += " window.location = window.location.pathname + '?servo2=' + val;\n";
| |
| − | p += "}\n";
| |
| − | p += "</script>\n";
| |
| | | | |
| | + | ==Introduction== |
| | | | |
| − | p += "<body><center>\n";
| + | En partant d'un papertoy, nous avons choisi de créer un projet de véhicule roulant commandé par une interface web : le Ptit bolide. |
| − | p += "<h3>Commandes Servo 1 (Pin D4)</h3>\n";
| |
| | | | |
| | + | ==outil et matériel== |
| | + | Code Arduino : |
| | | | |
| − | // Affichage de la position actuelle du premier servo
| + | [[Fichier:Ptitbolide_code.odt]] |
| − | p += "<p>Position actuelle du servo 1 : <span id='servoValue1'>" + String(servoPosition1) + "°</span></p>\n";
| |
| | | | |
| | | | |
| − | // Curseur pour ajuster l'angle du premier servo
| + | Matériel utilisé : |
| − | p += "<input type='range' min='0' max='180' value='" + String(servoPosition1) + "' onchange='updateServoPosition1(this.value)'>\n";
| |
| | | | |
| | + | - Papertoy kit |
| | | | |
| − | p += "<h3>Commandes Servo 2 (Pin D1)</h3>\n";
| + | - 3 Roues |
| | | | |
| | + | - 1 Servomoteur continu |
| | | | |
| − | // Affichage de la position actuelle du deuxième servo
| + | - planche de plastique/bois |
| − | p += "<p>Position actuelle du servo 2 : <span id='servoValue2'>" + String(servoPosition2) + "°</span></p>\n";
| |
| | | | |
| | + | - carton |
| | | | |
| − | // Curseur pour ajuster l'angle du deuxième servo
| + | ==Sources et documentation complémentaire== |
| − | p += "<input type='range' min='0' max='180' value='" + String(servoPosition2) + "' onchange='updateServoPosition2(this.value)'>\n";
| |
| − | | |
| − | | |
| − | p += "</center></body></html>";
| |
| − | return p;
| |
| − | }
| |
| | | | |
| | + | Plan/Schéma du projet : |
| | | | |
| − | // Fonction pour gérer les commandes et envoyer la page web
| + | [[Fichier:Ptitbolide_dessin.jpg|400px]] |
| − | void runPage01() {
| |
| − | // Commandes pour contrôler le premier servo-moteur
| |
| − | if (myWeb.hasArg("servo1")) {
| |
| − | servoPosition1 = myWeb.arg("servo1").toInt(); // Récupère l'angle du premier servo
| |
| − | myServo1.write(servoPosition1); // Déplace le premier servo à l'angle spécifié
| |
| − | }
| |
| − | | |
| − | | |
| − | // Commandes pour contrôler le deuxième servo-moteur
| |
| − | if (myWeb.hasArg("servo2")) {
| |
| − | servoPosition2 = myWeb.arg("servo2").toInt(); // Récupère l'angle du deuxième servo
| |
| − | myServo2.write(servoPosition2); // Déplace le deuxième servo à l'angle spécifié
| |
| − | }
| |
| − | | |
| − | | |
| − | // Envoi de la page web
| |
| − | myWeb.send(200, "text/html", webPage01());
| |
| − | }
| |
| − | | |
| − | | |
| − | // Fonction d'initialisation
| |
| − | void setup() {
| |
| − | // Initialisation de la liaison série
| |
| − | Serial.begin(115200);
| |
| − | delay(100);
| |
| − | Serial.println("----------------------");
| |
| − | Serial.println("Exemple de serveur WEB");
| |
| − | Serial.println("----------------------");
| |
| − | | |
| − | | |
| − | // Connexion au réseau Wi-Fi existant
| |
| − | Serial.print("Connexion au réseau Wi-Fi : ");
| |
| − | WiFi.begin(mySSID, mySecKey);
| |
| − | | |
| − | | |
| − | // Attendre que l'ESP8266 se connecte au réseau Wi-Fi
| |
| − | int attempts = 0;
| |
| − | while (WiFi.status() != WL_CONNECTED && attempts < 30) { // Attendre 30 secondes max
| |
| − | delay(500);
| |
| − | Serial.print(".");
| |
| − | attempts++;
| |
| − | }
| |
| − | | |
| − | | |
| − | if (WiFi.status() == WL_CONNECTED) {
| |
| − | Serial.println("\nConnexion Wi-Fi réussie!");
| |
| − | Serial.print("Adresse IP du serveur Web : ");
| |
| − | Serial.println(WiFi.localIP());
| |
| − | } else {
| |
| − | Serial.println("\nErreur de connexion Wi-Fi !");
| |
| − | }
| |
| − | | |
| − | | |
| − | // Initialisation des servos
| |
| − | myServo1.attach(servoPin1); // Attache le premier servo à la broche D4
| |
| − | myServo2.attach(servoPin2); // Attache le deuxième servo à la broche D1
| |
| − | | |
| − | | |
| − | // Définir la page d'accueil du serveur web
| |
| − | myWeb.on("/", runPage01);
| |
| − | myWeb.begin();
| |
| − | }
| |
| − | | |
| − | | |
| − | // Fonction appelée en boucle
| |
| − | void loop() {
| |
| − | // Traitement des requêtes web
| |
| − | myWeb.handleClient();
| |
| − | }
| |
| − | | |
| − | ==étapes de fabrication==
| |
| − | indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)
| |
| − | | |
| − | ===étape 1===
| |
| − | ===étape 2===
| |
| − | ===étape ...===
| |
| − | ===Troubleshouting===
| |
| − | Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?
| |
| − | | |
| − | ==Sources et documentation complémentaire==
| |
| | | | |
| | ==Elémlent de présentation== | | ==Elémlent de présentation== |
| − | je met ici le document de présentation de mon projet
| + | [[Fichier:Ptit bolide affiche.png|400px]] |
| | | | |
| | ==ne pas modifier sous cette ligne== | | ==ne pas modifier sous cette ligne== |