Un Parrot Sumo HS ? Non !!! Part 2

Donc, j’ai monté mon ESP32 dans le Parrot Sumo et mis le driver moteur suivant >> https://www.robot-maker.com/shop/drivers-d-actionneurs/56-driver-moteurs-cc-l9110-56.html

Ensuite j’ai demandé un peu d’aide à chat GPT pour faire une version 1 de mon code.
Mon idée c’est d’avoir un serveur Web embarqué dans mon ESP32 afin d’envoyer via cette interface web des commandes à mon robot Parrot Sumo.
Voila ce que j’ai fait comme code (enfin avec l’aide de l’IA), et voila le rendu pour le moment. C’est moche, MAIS cela fonctionne ! 🙂

#include <WiFi.h>
#include <WebServer.h>
#include <analogWrite.h> 

const char* ssid = "monwifi";
const char* password = "monpasswifi";

WebServer server(80);

const int AIA = 16; // Moteur1
const int AIB = 17;
const int BIA = 18; // Moteur2          
const int BIB = 19;

byte speed_fwd_rev = 255;
byte speed_left_right = 200;

void setup() {
  Serial.begin(115200);
  pinMode(AIA, OUTPUT);
  pinMode(AIB, OUTPUT);
  pinMode(BIA, OUTPUT);
  pinMode(BIB, OUTPUT);
  
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
  
  server.on("/", handleRoot);
  server.on("/forward", handleForward);
  server.on("/reverse", handleReverse);
  server.on("/left", handleLeft);
  server.on("/right", handleRight);
  
  server.begin();
  Serial.println("Web server started");
}

void loop() {
  server.handleClient();
}

void handleRoot() {
  String html = "<!DOCTYPE html><html><body>";
  html += "<h1>Welcome to the robot control page!</h1>";
  html += "<h2>Click the buttons below to control the robot</h2>";
  html += "<button onclick=\"location.href='/forward'\">Forward</button><br><br>";
  html += "<button onclick=\"location.href='/reverse'\">Reverse</button><br><br>";
  html += "<button onclick=\"location.href='/left'\">Left</button>";
  html += "<button onclick=\"location.href='/right'\">Right</button>";
  html += "</body></html>";
  server.send(200, "text/html", html);
}

void handleForward() {
  analogWrite(AIA, 0);
  analogWrite(AIB, speed_fwd_rev);
  analogWrite(BIA, 0);
  analogWrite(BIB, speed_fwd_rev);
  server.send(200, "text/plain", "Moving forward");
}

void handleReverse() {
  analogWrite(AIA, speed_fwd_rev);
  analogWrite(AIB, 0);
  analogWrite(BIA, speed_fwd_rev);
  analogWrite(BIB, 0);
  server.send(200, "text/plain", "Moving backward");
}

void handleLeft() {
  analogWrite(AIA, 0);
  analogWrite(AIB, speed_left_right);
  analogWrite(BIA, speed_left_right);
  analogWrite(BIB, 0);
  server.send(200, "text/plain", "Turning left");
}

void handleRight() {
  analogWrite(AIA, speed_left_right);
  analogWrite(AIB, 0);
  analogWrite(BIA, 0);
  analogWrite(BIB, speed_left_right);
  server.send(200, "text/plain", "Turning right");
}

void handleSpeedFwd() {
  String arg = server.arg(0); 
  if (arg == "0") {
    speed_fwd_rev = 0;
  } else if (arg == "1") {
    speed_fwd_rev = 100;
  } else if (arg == "2") {
    speed_fwd_rev = 150;
  } else if (arg == "3") {
    speed_fwd_rev = 200;
  } else if (arg == "4") {
    speed_fwd_rev = 255;
  }
  analogWrite(AIA, 0);
  analogWrite(AIB, speed_fwd_rev);
  analogWrite(BIA, 0);
  analogWrite(BIB, speed_fwd_rev);
  server.send(200, "text/plain", "Speed updated");
}