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

De Les Fabriques du Ponant
Aller à : navigation, rechercher
m (AymericM a déplacé la page ENIB 2025 : Papertoy2 vers ENIB 2025 : P'tit bolide)
(Mettre du code Arduino)
Ligne 12 : Ligne 12 :
 
==fichiers à joindre==
 
==fichiers à joindre==
 
code, ficher d'impression 3D, de découpe laser ou vinyle, ...
 
code, ficher d'impression 3D, de découpe laser ou vinyle, ...
===Mettre du code Arduino===
+
#include <ESP8266WiFi.h>
<syntaxhighlight lang="Arduino" line>  
+
#include <ESP8266WebServer.h>
#define PIN 9
+
#include <Servo.h> // Inclusion de la bibliothèque Servo
#include <Arduino_GFX_Library.h>
 
  
 +
 +
// 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() {
 
void setup() {
  // put your setup code here, to run once:
+
    // 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() {
 
void loop() {
  // put your main code here, to run repeatedly:
+
    // Traitement des requêtes web
 
+
    myWeb.handleClient();
 
}
 
}
 
</syntaxhighlight>
 
  
 
==étapes de fabrication==
 
==étapes de fabrication==

Version du 20 janvier 2025 à 14:41

Titre de la fiche expérience :

description (résumé)

éventuelle photo de l'équipe

PaperToy2 schema.png

Introduction

éventuelle vidéo

outil et matériel

fichiers à joindre

code, ficher d'impression 3D, de découpe laser ou vinyle, ...

  1. include <ESP8266WiFi.h>
  2. include <ESP8266WebServer.h>
  3. 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 += "

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 += "
"; 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();

}

é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

ne pas modifier sous cette ligne