5.4.20 Projet 12.1 Test WiFi
La manière la plus simple d’accéder à Internet est d’utiliser une connexion WiFi. La carte de contrôle principale ESP32 est fournie avec un module WiFi, ce qui rend notre maison intelligente facilement accessible à Internet.

1. Description
Nous connectons la maison intelligente à un réseau local (LAN), c’est-à-dire au WiFi de votre domicile ou au point d’accès (hotspot) de votre téléphone. Après la connexion réussie, une adresse sera attribuée, qui pourra être utilisée pour la communication. Nous afficherons l’adresse attribuée dans le moniteur série.
2. Test Code
⚠️ \ ATTENTION:\ Après avoir ouvert le fichier de code, vous devez modifier le nom et le mot de passe WiFi auxquels la carte de développement ESP32 doit se connecter. Remplacez ChinaNet-2.4G-0DF0 et ChinaNet@233 par votre propre nom et mot de passe WiFi respectivement. Vous devez faire cela avant de téléverser le code ; sinon, la carte ESP32 ne pourra pas se connecter au réseau.
const char* ssid = "ChinaNet-2.4G-0DF0"; // Enter your own WiFi name
const char* password = "ChinaNet@233"; // Enter your own WiFi passwords
⚠️ REMARQUE : Veuillez vous assurer que le nom WiFi et les mots de passe dans le code sont les mêmes que ceux du réseau auxquels votre ordinateur, téléphone mobile/tablette, la carte de développement ESP32 et le routeur sont connectés. Ils doivent être sur le même réseau local (WiFi).
⚠️ REMARQUE : Le WiFi doit être sur une fréquence 2.4Ghz ; sinon, l’ESP32 ne peut pas se connecter au WiFi.
#include <Arduino.h>
#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiClient.h>
// Network Configuration
const char* ssid = "ChinaNet-2.4G-0DF0";
const char* password = "ChinaNet@233";
WiFiServer server(80);
// Global Variables
String requestPath = "/"; // Stores the HTTP request path
void setup() {
Serial.begin(115200);
// Connect to WiFi
Serial.println("\nConnecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Network information
Serial.println("\nWiFi connected");
printNetworkInfo();
// Start server and mDNS
server.begin();
if (!MDNS.begin("esp32")) {
Serial.println("Error setting up MDNS responder!");
}
MDNS.addService("http", "tcp", 80);
Serial.println("HTTP server started");
}
void loop() {
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait for client data
while (client.connected() && !client.available()) {
delay(1);
}
// Read HTTP request
String request = client.readStringUntil('\r');
parseHttpRequest(request);
// Handle request
String response;
if (requestPath == "/") {
response = buildHomepageResponse();
Serial.println("Serving homepage");
} else {
response = buildNotFoundResponse();
Serial.println("Unknown request: " + requestPath);
}
// Send HTTP response
client.println(response);
client.stop();
// Small delay between requests
delay(100);
}
// Helper Functions
void printNetworkInfo() {
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void parseHttpRequest(String req) {
int addr_start = req.indexOf(' ');
int addr_end = req.indexOf(' ', addr_start + 1);
if (addr_start == -1 || addr_end == -1) {
Serial.print("Invalid request: ");
Serial.println(req);
requestPath = "/404";
return;
}
requestPath = req.substring(addr_start + 1, addr_end);
Serial.println("Requested path: " + requestPath);
}
String buildHomepageResponse() {
IPAddress ip = WiFi.localIP();
String ipStr = String(ip[0]) + '.' + ip[1] + '.' + ip[2] + '.' + ip[3];
String html = "HTTP/1.1 200 OK\r\n";
html += "Content-Type: text/html\r\n";
html += "Connection: close\r\n";
html += "\r\n";
html += "<!DOCTYPE HTML>\n";
html += "<html><head><title>ESP32 Web Server</title></head>\n";
html += "<body><h1>Hello from ESP32</h1>\n";
html += "<p>IP Address: " + ipStr + "</p>\n";
html += "</body></html>\n";
return html;
}
String buildNotFoundResponse() {
String html = "HTTP/1.1 404 Not Found\r\n";
html += "Content-Type: text/html\r\n";
html += "Connection: close\r\n";
html += "\r\n";
html += "<!DOCTYPE HTML>\n";
html += "<html><head><title>404 Not Found</title></head>\n";
html += "<body><h1>404</h1><p>Page not found</p></body></html>\n";
return html;
}
3. Résultat du test
⚠️ Remarque : le téléphone portable ou la tablette doit être connecté(e) à la carte de développement ESP32 via le même WiFi. Sinon, il/elle ne pourra pas accéder à la page de contrôle. De plus, lorsque la carte de développement ESP32 utilise la fonction WiFi, elle consomme beaucoup d’énergie. Une alimentation DC externe est requise pour répondre à sa demande en énergie pour le fonctionnement. Si l’alimentation est insuffisante, la carte ESP32 redémarrera en continu, ce qui empêchera le code de s’exécuter normalement.
Si le WiFi est connecté avec succès, le moniteur série affichera l’adresse IP attribuée.

Ouvrez un navigateur pour accéder à l’adresse IP, puis nous lirons le contenu de la chaîne S envoyé par client.println(s); dans le code.
