#include <LittleFS.h>
#include <WiFi.h>
#include <WebServer.h>
#include <ArduinoJson.h>
#include <TMC2208Stepper.h>
#include <AccelStepper.h>
// Configuration WiFi
const char* ssid = "SliderWifi";
const char* password = "123456789";
// Configuration du moteur pas à pas
#define STEP_PIN 26 // Pin STEP
#define DIR_PIN 27 // Pin DIR
#define EN_PIN 25 // Pin ENABLE
#define SERIAL_PORT Serial2
#define DRIVER_ADDRESS 0b00 // TMC2208 Driver address according to MS1 and MS2
TMC2208Stepper driver(&SERIAL_PORT, DRIVER_ADDRESS);
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
// Configuration du serveur web
WebServer server(80);
// *************************************************************************************************
void handleRoot() {
File file = LittleFS.open("/index.html", "r");
if (!file) {
server.send(500, "text/plain", "Erreur de lecture du fichier index.html");
return;
}
server.streamFile(file, "text/html");
file.close();
}
// **************************************************************************************************
void handleControl() {
if (server.method() != HTTP_POST) {
server.send(405, "text/plain", "Méthode non autorisée");
return;
}
String json = server.arg("plain");
DynamicJsonDocument doc(1024);
deserializeJson(doc, json);
int steps = doc["steps"];
String direction = doc["direction"];
int speed = doc["speed"];
digitalWrite(EN_PIN, LOW);
stepper.setMaxSpeed(speed);
stepper.setAcceleration(speed / 2); // Ajustez l'accélération selon vos besoins
Serial.print("Direction: ");
Serial.println(direction);
Serial.print("Speed: ");
Serial.println(speed);
if (direction == "forward") {
stepper.move(steps);
Serial.println("Moving forward");
} else {
stepper.move(-steps);
Serial.println("Moving backward");
}
while (stepper.distanceToGo() != 0) {
stepper.run();
}
digitalWrite(EN_PIN, HIGH);
server.send(200, "text/plain", "Mouvement terminé");
}
//***********************************************************************************************************
void setup() {
Serial.begin(115200);
SERIAL_PORT.begin(9600);
pinMode(EN_PIN, OUTPUT);
digitalWrite(EN_PIN, HIGH);
driver.toff(4); //Active le moteur en configurant le temps off.
driver.rms_current(600); //Configure le courant RMS.
driver.microsteps(16); //Configure le nombre de micro-pas.
stepper.setEnablePin(EN_PIN);
stepper.setPinsInverted(false, true, true); // Inverser la direction
// Configuration en mode Point d'Accès (AP)
const char* ap_ssid = "Slider_Control";
const char* ap_password = "Hypnos061082";
WiFi.softAP(ap_ssid, ap_password);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
if (!LittleFS.begin()) {
Serial.println("Erreur de montage LittleFS");
return;
}
server.on("/", handleRoot);
server.on("/control", HTTP_POST, handleControl);
server.begin();
Serial.println("Serveur web démarré");
}
void loop() {
server.handleClient();
}