Difference between revisions of "Wi-Fi-ESP32-E-Paper"
(→Code Wi-Fi & ESP32 & E-Paper) |
|||
| Line 4: | Line 4: | ||
<pre> | <pre> | ||
| + | #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(); | ||
| + | } | ||
</pre> | </pre> | ||
Revision as of 23:47, 18 December 2025
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();
}