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

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Mettre du code Arduino)
(description (résumé))
 
(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==

Version actuelle datée du 21 janvier 2025 à 16:01

Titre de la fiche expérience :

description (résumé)

Premiers essais et compréhension du système de base

PaperToy2 schema.png


Premières créations avec des matériaux simples

Premier prototype Ptitbolide.png


Réalisation d'un prototype plus solide

Prototype2 ptitbolide.png


Ajout d'un boitier pour faire tenir les composants

Ptitbolide boite.jpg


Finalisation de l'interface web pour controler le véhicule

Ptitbolide Control panel.png


Finalisation du design

Introduction

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.

outil et matériel

Code Arduino :

Fichier:Ptitbolide code.odt


Matériel utilisé :

- Papertoy kit

- 3 Roues

- 1 Servomoteur continu

- planche de plastique/bois

- carton

Sources et documentation complémentaire

Plan/Schéma du projet :

Ptitbolide dessin.jpg

Elémlent de présentation

Ptit bolide affiche.png

ne pas modifier sous cette ligne