ENIB 2025 : P'tit bolide : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(description (résumé))
(fichiers à joindre)
Ligne 14 : Ligne 14 :
 
==outil et matériel==
 
==outil et matériel==
  
==fichiers à joindre==
+
[[Fichier:Ptitbolide_code.odt]]
"""
 
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 = "<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";
 
 
 
 
 
    p += "<body><center>\n";
 
    p += "<h3>Commandes Servo 1 (Pin D4)</h3>\n";
 
 
 
 
 
    // Affichage de la position actuelle du premier servo
 
    p += "<p>Position actuelle du servo 1 : <span id='servoValue1'>" + String(servoPosition1) + "°</span></p>\n";
 
 
 
 
 
    // Curseur pour ajuster l'angle du premier servo
 
    p += "<input type='range' min='0' max='180' value='" + String(servoPosition1) + "' onchange='updateServoPosition1(this.value)'>\n";
 
 
 
 
 
    p += "<h3>Commandes Servo 2 (Pin D1)</h3>\n";
 
 
 
 
 
    // Affichage de la position actuelle du deuxième servo
 
    p += "<p>Position actuelle du servo 2 : <span id='servoValue2'>" + String(servoPosition2) + "°</span></p>\n";
 
 
 
 
 
    // Curseur pour ajuster l'angle du deuxième servo
 
    p += "<input type='range' min='0' max='180' value='" + String(servoPosition2) + "' onchange='updateServoPosition2(this.value)'>\n";
 
 
 
 
 
    p += "</center></body></html>";
 
    return 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();
 
}
 
"""
 
 
 
=#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 = "<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";
 
 
 
 
 
    p += "<body><center>\n";
 
    p += "<h3>Commandes Servo 1 (Pin D4)</h3>\n";
 
 
 
 
 
    // Affichage de la position actuelle du premier servo
 
    p += "<p>Position actuelle du servo 1 : <span id='servoValue1'>" + String(servoPosition1) + "°</span></p>\n";
 
 
 
 
 
    // Curseur pour ajuster l'angle du premier servo
 
    p += "<input type='range' min='0' max='180' value='" + String(servoPosition1) + "' onchange='updateServoPosition1(this.value)'>\n";
 
 
 
 
 
    p += "<h3>Commandes Servo 2 (Pin D1)</h3>\n";
 
 
 
 
 
    // Affichage de la position actuelle du deuxième servo
 
    p += "<p>Position actuelle du servo 2 : <span id='servoValue2'>" + String(servoPosition2) + "°</span></p>\n";
 
 
 
 
 
    // Curseur pour ajuster l'angle du deuxième servo
 
    p += "<input type='range' min='0' max='180' value='" + String(servoPosition2) + "' onchange='updateServoPosition2(this.value)'>\n";
 
 
 
 
 
    p += "</center></body></html>";
 
    return 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();
 
}
 
  
 
==Sources et documentation complémentaire==
 
==Sources et documentation complémentaire==

Version du 21 janvier 2025 à 10:26

Titre de la fiche expérience :

description (résumé)

PaperToy2 schema.png

Premier prototype Ptitbolide.png

Prototype2 ptitbolide.png

Introduction

éventuelle vidéo

outil et matériel

Fichier:Ptitbolide code.odt

Sources et documentation complémentaire

Elémlent de présentation

je met ici le document de présentation de mon projet

ne pas modifier sous cette ligne