Wi-Fi-ESP32-E-Paper

From
Revision as of 23:53, 18 December 2025 by Ows wiki (talk | contribs) (Code Wi-Fi & ESP32 & E-Paper)
Jump to: navigation, search

Code Wi-Fi & ESP32 & E-Paper

Wi-Fi-ESP32-E-Paper

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

Preferences prefs;
WebServer server(80);

String ssid, pass;

const char* configPage = R"rawliteral(
<!DOCTYPE html>
<html>
  <body>
    <h2>Configuration WiFi</h2>
    <form action="/save" method="POST">
      SSID: <input type="text" name="ssid"><br>
      Password: <input type="text" name="pass"><br>
      <input type="submit" value="Save">
    </form>
  </body>
</html>
)rawliteral";

void handleRoot() {
  server.send(200, "text/html", configPage);
}

void handleSave() {
  if (server.hasArg("ssid") && server.hasArg("pass")) {
    ssid = server.arg("ssid");
    pass = server.arg("pass");
    prefs.begin("wifi", false);
    prefs.putString("ssid", ssid);
    prefs.putString("pass", pass);
    prefs.end();
    server.send(200, "text/html", "Paramètres sauvegardés. Redémarrage...");
    delay(2000);
    ESP.restart();
  }
}

bool connectToWiFi() {
  prefs.begin("wifi", true);
  ssid = prefs.getString("ssid", "");
  pass = prefs.getString("pass", "");
  prefs.end();

  if (ssid == "") return false;

  WiFi.begin(ssid.c_str(), pass.c_str());
  Serial.print("Connexion à "); Serial.println(ssid);

  unsigned long start = millis();
  while (WiFi.status() != WL_CONNECTED && millis() - start < 10000) {
    delay(500);
    Serial.print(".");
  }
  return WiFi.status() == WL_CONNECTED;
}

void startAP() {
  WiFi.softAP("XIAO_Config", "12345678");
  Serial.println("AP démarré. IP: " + WiFi.softAPIP().toString());
  server.on("/", handleRoot);
  server.on("/save", HTTP_POST, handleSave);
  server.begin();
}

void setup() {
  Serial.begin(115200);

  if (!connectToWiFi()) {
    Serial.println("Échec connexion. Passage en mode AP.");
    startAP();
  } else {
    Serial.println("Connecté au WiFi. IP: " + WiFi.localIP().toString());
    // Ici vous pouvez lancer un serveur web normal ou autre logique
  }
}

void loop() {
  server.handleClient();
}
## ⚙️ Fonctionnement
- **Premier démarrage** : pas de SSID enregistré → le module crée un AP `XIAO_Config`.  
- **Page web** : accessible via l’IP du point d’accès (souvent `192.168.4.1`).  
- **Sauvegarde** : SSID et mot de passe sont stockés dans `Preferences`.  
- **Redémarrage** : le module tente de se connecter au Wi Fi enregistré.  
- **Fallback** : si la connexion échoue, retour en mode AP pour reconfigurer.