ENIB 2025 : P'tit bolide
Titre de la fiche expérience :
Sommaire
description (résumé)
éventuelle photo de l'équipe
Introduction
éventuelle vidéo
outil et matériel
fichiers à joindre
""" 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
// 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
// Déclaration du serveur Web
ESP8266WebServer myWeb(80);
// Pin pour contrôler les servos
const int servoPin1 = D4; // Pin pour le premier servo-moteur
const int servoPin2 = D1; // Pin pour le deuxième servo-moteur
// 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
// Variables pour stocker la position des servos
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
String webPage01() {
String p = "\n"; p += "Commande des Servos \n"; p += "\n"; p += "\n"; p += "\n"; p += "\n"; p += " "; return p;Commandes Servo 1 (Pin D4)
\n"; // Affichage de la position actuelle du premier servo p += "Position actuelle du servo 1 : " + String(servoPosition1) + "°
\n"; // Curseur pour ajuster l'angle du premier servo p += "\n"; p += "Commandes Servo 2 (Pin D1)
\n"; // Affichage de la position actuelle du deuxième servo p += "Position actuelle du servo 2 : " + String(servoPosition2) + "°
\n"; // Curseur pour ajuster l'angle du deuxième servo p += "\n"; p += "
}
// Fonction pour gérer les commandes et envoyer la page web
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
je met ici le document de présentation de mon projet