Dans ce tutoriel, vous apprendrez à créer un serveur Web avec l’ESP32 qui sert des fichiers HTML et CSS stockés dans le système de fichiers LittleFS. Au lieu d’incorporer le HTML et le CSS directement dans l’esquisse Arduino, nous les stockons en tant que fichiers séparés, ce qui rend le code plus propre et plus facile à gérer.

Le serveur Web que nous allons construire montre comment contrôler les sorties ESP32 et comment afficher les lectures du capteur. Par exemple, nous contrôlerons une LED et afficher les lectures du capteur à partir d’un capteur BME280.
Vous pouvez utiliser les concepts appris dans ce tutoriel pour contrôler toute sortie de sortie ou d’affichage des capteurs à partir d’autres capteurs.
Table des matières
Dans ce tutoriel, nous couvrirons les sujets suivants:
Présentation de Littlefs
LittleFS est un système de fichiers léger créé pour les microcontrôleurs. Il vous permet d’accéder à la mémoire flash comme vous le faites dans un système de fichiers standard sur votre ordinateur, mais il est plus simple et plus limité. Vous pouvez lire, écrire, fermer et supprimer des fichiers. L’utilisation de Littlefs avec les planches ESP32 est utile pour:
- Créer des fichiers de configuration avec des paramètres;
- Enregistrer les données en permanence, même après un redémarrage ou une perte de puissance;
- Créer des fichiers pour stocker de petites quantités de données au lieu d’utiliser une carte microSD;
- Enregistrer les fichiers HTML, CSS et JavaScript pour créer une interface de serveur Web (comme nous le ferons dans ce tutoriel);
- Stockez des images, des chiffres et des icônes pour vos pages Web ou vos modules d’affichage;
- Lectures de capteur de journal ou données d’application localement;
- Et bien plus encore, selon les besoins de votre projet.
Il est particulièrement utile dans les projets où vous devez gérer les données directement sur l’ESP32 sans compter sur des dispositifs de stockage externes.
Présentation des serveurs Web ESP32
En termes simples, un serveur Web est un «ordinateur» qui fournit des pages Web aux utilisateurs. Il stocke les fichiers d’un site Web, y compris les documents HTML et les actifs connexes comme les images, les feuilles de style CSS, les polices et autres ressources.
Lorsqu’un utilisateur fait une demande, généralement en entrant une URL ou en cliquant sur un lien – le serveur Web répond en envoyant les fichiers demandés au navigateur Web de l’utilisateur à l’aide du HTTP (Hypertext Transfer Protocol). HTTP est le fondement de la communication de données sur le Web, définissant comment les messages sont formatés et transmis entre les clients (comme votre navigateur) et les serveurs.

Dans cet exemple, l’ESP32 agit comme un serveur Web. Il stocke les fichiers HTML et CSS nécessaires pour créer la page Web sur le système de fichiers LittleFS. Lorsque vous accédez à l’adresse IP ESP32 dans votre navigateur, une demande HTTP est envoyée à l’ESP32. L’ESP32 répond ensuite avec les fichiers HTML et CSS, que le navigateur utilise pour rendre la page. Ces fichiers peuvent également inclure du contenu dynamique, tels que les lectures de capteurs et l’état actuel des sorties, qui sont mis à jour chaque fois qu’une nouvelle demande est faite.

Si vous êtes nouveau dans les serveurs Web ESP32, nous vous recommandons de lire le guide suivant:
Aperçu du projet
Avant d’aller directement au projet, il est important de décrire ce que fera notre serveur Web, afin qu’il soit plus facile à comprendre. L’image suivante montre l’interface que nous créerons avec les fichiers du système de fichiers ESP32.

- Le serveur Web contrôle une LED connectée à l’ESP32 GPIO 2. Il s’agit de la LED embarquée ESP32. Vous pouvez contrôler n’importe quel autre GPIO;
- La page du serveur Web affiche deux boutons: activés et désactivés, pour activer et désactiver GPIO 2;
- La page du serveur Web affiche également l’état GPIO actuel;
- Vous utiliserez également un capteur BME280 pour afficher les lectures du capteur (température, humidité et pression).
La figure suivante montre un diagramme simplifié pour montrer comment tout fonctionne.

Condition préalable
Avant de poursuivre ce projet, assurez-vous de vérifier toutes les conditions suivantes.
1. Installez la carte ESP32 dans Arduino IDE 2
Nous programmerons l’ESP8266 à l’aide d’Arduino IDE, vous devez donc installer les cartes ESP32. Suivez le prochain tutoriel si vous ne l’avez pas déjà fait:
2. Installez le plugin de téléchargeur de système de fichiers ESP32
Pour télécharger des fichiers sur le système de fichiers ESP32 LITTLEFS, vous devez installer le plugin de téléchargement de système de fichiers. Installez-le dans votre Arduino IDE 2:
3. Installation de bibliothèques
Bibliothèques de serveurs Web asynchrones
Nous allons créer le serveur Web à l’aide des bibliothèques suivantes:
Vous pouvez installer ces bibliothèques dans le gestionnaire de bibliothèque Arduino. Ouvrez le gestionnaire de bibliothèque en cliquant sur l’icône de la bibliothèque dans la barre latérale gauche.
Recherchez EspasyncWebserver et installez le EspasyncWerver par ESP32Async.

Ensuite, installez la bibliothèque AsyncTCP. Recherchez ASYNCTCP et installez l’ASYNCTCP par ESP32Async.

Installation de bibliothèques BME280
Dans ce tutoriel, nous afficherons les lectures d’un capteur BME280 (guide avec l’ESP32). Vous devez installer les bibliothèques suivantes:
Vous pouvez installer ces bibliothèques via le Arduino IDE Libraries Manager. Allez dans Sketch> Inclure les bibliothèques> Gérer les bibliothèques. Ensuite, recherchez les noms des bibliothèques pour les installer.
Pièces requises
Pour poursuivre ce projet, vous avez besoin des parties suivantes:
Vous pouvez utiliser les liens précédents ou aller directement à makeradvisor.com/tools pour trouver toutes les pièces de vos projets au meilleur prix!

Câblage du circuit
Connectez tous les composants en suivant ce diagramme:

Lecture recommandée: ESP32 PINOOUT RÉFÉRENCE: Quelles broches GPIO devriez-vous utiliser?
| BME280 | ESP32 |
| Vin | 3V3 |
| GND | GND |
| SCL | GPIO 22 |
| SDA | GPIO 21 |
Organiser vos fichiers
Pour créer le serveur Web, vous avez besoin de trois fichiers différents. Le croquis Arduino, le fichier HTML et le fichier CSS. Les fichiers HTML et CSS doivent être enregistrés dans un dossier appelé Data dans le dossier Arduino Sketch, comme indiqué ci-dessous.

Vous pouvez télécharger tous les fichiers du projet:
Ensuite, vous devez télécharger l’image du système de fichiers avant de télécharger le code.
Création du fichier HTML
Créez un fichier index.html avec le contenu suivant:
ESP32 LittleFS Web Server
💡 GPIO state %STATE%
ON
OFF
🌡️ Temperature
%TEMPERATURE%
°C
💧 Humidity
%HUMIDITY%
%
↕️ Pressure
%PRESSURE%
hPa
Afficher le code brut
Chef du fichier html
Dans la section du fichier HTML, nous devons ajouter les métadonnées. La ligne suivante spécifie le codage du document. UTF-8 est le plus populaire et prend en charge tous les personnages de toutes les langues, y compris les emojis.
L’élément définit le titre de la page Web qui apparaît dans l’onglet du navigateur.
ESP32 LittleFS Web Server
Nous utilisons la ligne suivante pour rendre la page Web réactive sur tous les appareils.
Nous n’utiliserons pas un favicon pour notre page Web. Ainsi, pour éviter les demandes de Favicon, nous pouvons faire comme suit:
Parce que nous utilisons CSS et HTML dans différents fichiers, nous devons référencer le fichier CSS dans le texte HTML.
Le Tag indique au fichier HTML que vous utilisez une feuille de style externe pour formater l’apparence de la page. L’attribut REL spécifie la nature du fichier externe, dans ce cas qu’il s’agit d’une feuille de style – le fichier CSS – qui sera utilisé pour modifier l’apparence de la page.
L’attribut type est défini sur «Text / CSS» pour indiquer que vous utilisez un fichier CSS pour les styles. L’attribut HREF indique l’emplacement du fichier; Étant donné que les fichiers CSS et HTML seront dans le même dossier, il vous suffit de référencer le nom de fichier: style.css.
Corps du fichier html
Dans la ligne suivante, nous écrivons le premier titre de notre page Web. Dans ce cas, nous avons «ESP32 Littlefs Web Server». Vous pouvez changer la rubrique en n’importe quel texte:
Then, add a paragraph with the text “GPIO state ” followed by the GPIO state. Because the GPIO state changes accordingly to the state of the GPIO, we can add a placeholder that will then be replaced with whatever value we set on the Arduino sketch.
To add a placeholder use % signs. To create a placeholder for the state, you can use %STATE%, for example.
💡 GPIO state %STATE%
Vous attribuez une valeur à l’espace réservé de l’État dans l’esquisse Arduino – nous verrons comment cela fonctionne plus tard.
Ensuite, créez un bout et un boutons ONF. Lorsque vous cliquez sur le bouton ON, nous redirigeons la page Web vers l’URL de root suivie de / sur URL. Lorsque vous cliquez sur le bouton OFF, vous êtes redirigé vers l’URL / OFF.
ON
OFF
Enfin, créez trois paragraphes pour afficher la température, l’humidité et la pression.
ON
OFF
🌡️ Temperature
%TEMPERATURE%
°C
💧 Humidity
%HUMIDITY%
%
↕️ Pressure
%PRESSURE%
hPa
Nous utilisons le% de température%,% d’humidité% et% de pression% en espaces réservés. Ceux-ci seront ensuite remplacés par les lectures réelles du capteur dans l’esquisse Arduino.
Mises à jour automatiques
Nous ajoutons également un peu de JavaScript à notre fichier HTML qui est responsable de la mise à jour des lectures toutes les dix secondes sans avoir à actualiser la page Web. Il devrait aller entre les balises.
Fondamentalement, nous récupérons les données du capteur du serveur (ESP32) et mettons à jour le contenu des éléments HTML correspondants sur la page.
Nous créons une fonction appelée UpdaSeSensorValue qui prend deux paramètres: ID (l’ID de l’élément HTML sur la page), et le point de terminaison (URL à partir de laquelle récupérer les données du capteur – par exemple, pour obtenir des valeurs de température, nous faisons une demande sur l’URL / température).
const updateSensorValue = (id, endpoint) => {
fetch(endpoint)
.then(response => {
if (!response.ok) {
throw new Error(`Failed to fetch ${endpoint}`);
}
return response.text();
})
.then(data => {
document.getElementById(id).textContent = data;
})
.catch(error => {
console.error(error);
document.getElementById(id).textContent="Error";
});
};
La fonction de commande fetch (endpoint) envoie une demande au serveur (l’ESP32).
fetch(endpoint)
Si le serveur répond avec succès, la fonction récupère les données de réponse (au format texte) et met à jour le contenu texte de l’élément HTML avec l’ID donné.
}
return response.text();
})
.then(data => {
document.getElementById(id).textContent = data;
})
Si quelque chose ne va pas (comme le serveur est en baisse ou que la demande échoue), il affiche une erreur dans l’élément HTML et enregistre l’erreur à la console.
.catch(error => {
console.error(error);
document.getElementById(id).textContent="Error";
});
Mise à jour des lectures de capteurs
La fonction setInterval () est utilisée pour appeler la fonction UpdaSeSenSorValue () toutes les 10 secondes. Il récupère les données de température, d’humidité et de pression et place les lectures sur les droits HTML.
// Update all sensors every 10 seconds
setInterval(() => {
updateSensorValue('temperature', '/temperature');
updateSensorValue('humidity', '/humidity');
updateSensorValue('pressure', '/pressure');
}, 10000);
Création du fichier CSS
Créez le fichier style.css avec le contenu suivant:
/***
Rui Santos & Sara Santos - Raspberryme.com
Complete project details at https://Raspberryme.com/esp32-web-server-littlefs/
***/
html {
font-family: Arial;
display: inline-block;
margin: 0 auto;
text-align: center;
background-color: #f4f4f4;
color: #333;
}
h1 {
color: #0F3376;
padding: 2vh 1rem;
font-size: 2rem;
margin-bottom: 1rem;
}
p {
font-size: 1.5rem;
margin: 1rem auto;
max-width: 600px;
}
.button {
display: inline-block;
background-color: #00A676;
border: none;
border-radius: 6px;
color: white;
padding: 14px 32px;
text-decoration: none;
font-size: 1.2rem;
margin: 6px 10px;
cursor: pointer;
transition: background-color 0.3s ease, transform 0.1s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
width: 160px;
}
.button:hover {
background-color: #0077a8;
transform: translateY(-1px);
}
.button2 {
background-color: #f44336;
}
.button2:hover {
background-color: #d9362c;
}
.units {
font-size: 1.2rem;
color: #555;
margin-left: 4px;
}
.sensor-labels {
font-size: 1.5rem;
font-weight: bold;
vertical-align: middle;
padding-bottom: 15px;
}
Afficher le code brut
Il s’agit juste d’un fichier CSS de base pour définir la taille de la police, le style et la couleur des boutons et aligner la page. Nous n’expliquerons pas comment fonctionne CSS. Un bon endroit pour en savoir plus sur CSS est le site Web de W3Schools.
Serveur Web ESP32 avec des fichiers de Littlefs (arduino sketch)

Copiez le code suivant dans l’ide Arduino ou téléchargez tous les fichiers du projet ici. Ensuite, vous devez taper vos informations d’identification réseau (SSID et mot de passe) pour connecter l’ESP32 à votre réseau local.
/*
Rui Santos & Sara Santos - Raspberryme.com
Complete project details at https://Raspberryme.com/esp32-web-server-littlefs/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*/
// Import required libraries
#include
#include
#include
#include
#include
#include
#include
#include
Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI
// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
// Set LED GPIO
const int ledPin = 2;
// Stores LED state
String ledState;
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
String getTemperature() {
float temperature = bme.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
//float t = dht.readTemperature(true);
Serial.println(temperature);
return String(temperature);
}
String getHumidity() {
float humidity = bme.readHumidity();
Serial.println(humidity);
return String(humidity);
}
String getPressure() {
float pressure = bme.readPressure()/ 100.0F;
Serial.println(pressure);
return String(pressure);
}
// Replaces placeholder with LED state value
String processor(const String& var){
Serial.println(var);
if(var == "STATE"){
if(digitalRead(ledPin)){
ledState = "ON";
}
else{
ledState = "OFF";
}
Serial.println(ledState);
return ledState;
}
else if (var == "TEMPERATURE"){
return getTemperature();
}
else if (var == "HUMIDITY"){
return getHumidity();
}
else if (var == "PRESSURE"){
return getPressure();
}
return String();
}
void setup(){
// Serial port for debugging purposes
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
// Initialize the sensor
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
// Initialize LittleFS
if(!LittleFS.begin()){
Serial.println("An Error has occurred while mounting LittleFS");
return;
}
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(LittleFS, "/index.html", String(), false, processor);
});
// Route to load style.css file
server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(LittleFS, "/style.css", "text/css");
});
// Route to set GPIO to HIGH
server.on("/on", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(ledPin, HIGH);
request->send(LittleFS, "/index.html", String(), false, processor);
});
// Route to set GPIO to LOW
server.on("/off", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(ledPin, LOW);
request->send(LittleFS, "/index.html", String(), false, processor);
});
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", getTemperature().c_str());
});
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", getHumidity().c_str());
});
server.on("/pressure", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", getPressure().c_str());
});
// Start server
server.begin();
}
void loop(){
}
Afficher le code brut
Comment fonctionne le code
Continuez à lire pour savoir comment fonctionne le code ou passez à la section suivante.
Tout d’abord, incluez les bibliothèques nécessaires:
#include
#include
#include
#include
#include
#include
#include
#include
Vous devez taper vos informations d’identification réseau dans les variables suivantes:
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
Créez une instance qui fait référence au capteur BME280 appelé BME:
Adafruit_BME280 bme; // I2C
Ensuite, créez une variable qui fait référence à GPIO 2 appelé LEDPIN, et une variable de chaîne pour maintenir l’état LED: LEDState.
const int ledPin = 2;
String ledState;
Créez un objet AsynWebServer appelé Server qui écoute sur le port 80.
AsyncWebServer server(80);
Obtenez des lectures de capteurs
Nous créons trois fonctions pour retourner les lectures du capteur sous forme de chaînes: les fonctions getTemperature (), GetHumidity () et getPressure ().
Voici à quoi ressemble la fonction getTemperature () (les autres fonctions sont similaires).
String getTemperature() {
float temperature = bme.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
//float temperature = 1.8 * bme.readTemperature() + 32;
Serial.println(temperature);
return String(temperature);
}
Si vous souhaitez afficher la température en degrés Fahrenheit, il vous suffit de décommenter la ligne correspondante dans la fonction getTemperature ():
float temperature = 1.8 * bme.readTemperature() + 32;
Pour en savoir plus sur l’interfaçage du capteur BME280 avec l’ESP32, vous pouvez lire le tutoriel suivant:
processeur()
La fonction processeur () attribue une valeur aux espaces réservés que nous avons créés sur le fichier HTML. Il accepte comme argument l’espace réservé et doit renvoyer une chaîne qui remplacera l’espace réservé. La fonction processeur () doit avoir la structure suivante:
String processor(const String& var){
Serial.println(var);
if(var == "STATE"){
if(digitalRead(ledPin)){
ledState = "ON";
}
else{
ledState = "OFF";
}
Serial.print(ledState);
return ledState;
}
else if (var == "TEMPERATURE"){
return getTemperature();
}
else if (var == "HUMIDITY"){
return getHumidity();
}
else if (var == "PRESSURE"){
return getPressure();
}
}
Cette fonction vérifie d’abord si l’espace réservé est l’état que nous avons créé sur le fichier HTML.
if(var == "STATE"){
Si c’est le cas, alors, selon l’état LED, nous définissons la variable LEDState sur ou désactivé.
if(digitalRead(ledPin)){
ledState = "ON";
}
else{
ledState = "OFF";
}
Enfin, nous renvoyons la variable LEDState. Cela remplace l’espace réservé d’état par la valeur de chaîne LEDState.
return ledState;
S’il trouve le% d’espace réservé en% de température, nous retournons la température en appelant la fonction getTemperature () créée précédemment.
else if (var == "TEMPERATURE"){
return getTemperature();
}
La même chose se produit pour le% d’humidité% et% PRESSION PERSONNEURS en appelant les fonctions correspondantes:
else if (var == "TEMPERATURE"){
return getTemperature();
}
else if (var == "HUMIDITY"){
return getHumidity();
}
else if (var == "PRESSURE"){
return getPressure();
}
installation()
Dans la configuration (), commencez par initialiser le moniteur série et définir le GPIO en tant que sortie.
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
Initialisez le capteur BME280:
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
Initialiser Littlefs:
// Initialize LittleFS
if(!LittleFS.begin()){
Serial.println("An Error has occurred while mounting LittleFS");
return;
}
Connexion Wi-Fi
Connectez-vous au Wi-Fi et imprimez l’adresse IP ESP32:
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());
Serveur Web asynchrone
La bibliothèque EspasyncWebServer nous permet de configurer les itinéraires où le serveur écoutera les demandes HTTP entrantes et exécutera les fonctions lorsqu’une demande est reçue sur cette route. Pour cela, utilisez la méthode ON sur l’objet serveur comme suit:
// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(LittleFS, "/index.html", String(), false, processor);
});
Lorsque le serveur reçoit une demande sur la root / URL, il enverra le fichier index.html au client. Le premier argument est l’endroit où il devrait rechercher les fichiers – dans ce cas, les fichiers sont enregistrés dans LittleFS.
Le deuxième argument est le chemin de fichier dans le Littlefs à servir lorsque la root / est demandée.
String () est le type MIME. Le passage d’une chaîne vide signifie qu’il détectera automatiquement le type de contenu.
Le faux argument désactive la mise en cache, et enfin, le dernier argument de la fonction Send () est le processeur. Il s’agit d’une fonction de rappel vous permet d’insérer dynamiquement des valeurs dans le HTML à l’aide des espaces réservés de modèle. Nous l’utilisons pour que nous puissions remplacer l’espace réservé par la valeur que nous voulons – dans ce cas, l’état LED, et également envoyer des valeurs mises à jour lorsque nous actualisons la page Web.
Étant donné que nous avons référencé le fichier CSS dans le fichier HTML, le client fera une demande pour le fichier CSS. Lorsque cela se produit, le fichier CSS est envoyé au client:
server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(LittleFS, "/style.css","text/css");
});
Vous devez également définir ce qui se passe sur les itinéraires / ON et / OFF. Lorsqu’une demande est effectuée sur ces itinéraires, la LED est activée ou désactivée, et l’ESP32 sert le fichier HTML.
server.on("https://www.raspberryme.com/on", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(ledPin, HIGH);
request->send(LittleFS, "/index.html", String(),false, processor);
});
server.on("/off", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(ledPin, LOW);
request->send(LittleFS, "/index.html", String(),false, processor);
});
Dans le fichier HTML, nous avons écrit un code JavaScript qui demande respectivement la température, l’humidité et la pression sur les routes / température, / humidité, / pression toutes les 10 secondes. Nous devons donc également gérer ce qui se passe lorsque nous recevons une demande sur ces itinéraires.
Nous devons simplement envoyer les lectures de capteurs mis à jour. Les lectures de capteurs mises à jour sont renvoyées par les fonctions GetTemperature (), GetHumidity () et GetPressure () que nous avons créées précédemment.
Les lectures sont en texte brut et doivent être envoyées sous forme de char, nous utilisons donc la méthode c_str ().
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", getTemperature().c_str());
});
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", getHumidity().c_str());
});
server.on("/pressure", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", getPressure().c_str());
});
En fin de compte, nous utilisons la méthode begin () sur l’objet serveur, afin que le serveur commence à écouter les clients entrants.
server.begin();
Parce qu’il s’agit d’un serveur Web asynchrone, vous pouvez définir toutes les demandes de la configuration (). Ensuite, vous pouvez ajouter un autre code à la boucle () pendant que le serveur écoute des clients entrants.
Téléchargez le code et les fichiers (Image du système de fichiers)
Maintenant, vous devez télécharger les fichiers et le code sur votre carte. Suivez les instructions suivantes
1) Enregistrez votre croquis Arduino.
2) Allez dans Sketch> Afficher le dossier Sketch. Le dossier où votre croquis est enregistré doit s’ouvrir.

3) À l’intérieur de ce dossier, créez un dossier appelé données.

4) Enregistrez les fichiers HTML et CSS dans ce dossier de données.

5) Assurez-vous d’avoir la bonne carte (outils> carton) et le port com sélectionné (outils> port).
6) Selon la carte ESP32 sélectionnée, vous devrez peut-être sélectionner la taille du flash souhaitée (certaines planches n’ont pas cette option, ne vous inquiétez pas). Dans l’Arduino IDE, dans les outils> Taille du flash, sélectionnez la taille du flash souhaitée (par exemple, 4 Mo Spiffs).
7) Ensuite, téléchargez les fichiers sur la carte ESP32. Presse [Ctrl] + [Shift] + [P] sous Windows ou [⌘] + [Shift] + [P] sur macOS pour ouvrir la palette de commande. Recherchez le téléchargement Littlefs vers la commande PICO / ESP8266 / ESP32 et cliquez dessus.

IMPORTANT: Assurez-vous que le moniteur en série est fermé. Sinon, le téléchargement échouera.
Après quelques secondes, vous devriez recevoir le message «Téléchargement terminé». Les fichiers ont été téléchargés avec succès sur le système de fichiers ESP32.

8) Maintenant, téléchargez le code sur ESP32 en cliquant sur le bouton Télécharger.

Démonstration
Après avoir téléchargé le code, ouvrez le moniteur série à un taux en bauds de 115200.

Appuyez sur le bouton «RST» à bord ESP32. Il devrait imprimer l’adresse IP ESP32.

Ouvrez un navigateur Web sur votre réseau local et saisissez l’adresse IP ESP32. Vous devriez avoir accès à la page Web. Vous pouvez contrôler la LED embarquée en cliquant sur les boutons ON et OFF, et vous pouvez vérifier les dernières lectures de capteurs. Les lectures sont mises à jour toutes les 10 secondes.

Vous pouvez accéder au serveur Web sur votre ordinateur ou votre smartphone tant qu’ils sont sur le même réseau que l’ESP32.

Félicitations! Vous avez réussi à construire un serveur Web avec des fichiers enregistrés sur le système de fichiers LittleFS.
Dépannage – cette page ne peut être trouvée
Si vous obtenez cette erreur, cela signifie probablement que vous n’avez pas téléchargé les fichiers sur le système de fichiers ESP32 Littlefs ou qu’ils sont au mauvais emplacement.
Revenez à cette section et assurez-vous de suivre toutes les étapes.
Emballage
Dans ce tutoriel, vous avez appris à créer un serveur Web ESP32 qui sert le HTML et le CSS à partir du système de fichiers LittleFS. Enregistrer ces fichiers sur le système de fichiers est plus pratique que les intégrer dans l’esquisse Arduino.
Ce que vous avez appris ici peut être appliqué à d’autres serveurs Web qui utilisent la bibliothèque EspasyncTCP. N’oubliez pas que vous devez créer un dossier appelé Data dans votre dossier Sketch. Ensuite, à l’intérieur de ce dossier, vous devez enregistrer les fichiers que vous souhaitez télécharger sur le système de fichiers. Ensuite, n’oubliez pas de télécharger l’image du système de fichiers à l’aide du plugin Littlefs Uploader.
Si vous êtes nouveau dans les serveurs ESP32 et Web, nous recommandons les livres électroniques suivants:
Voici d’autres tutoriels que vous aimerez peut-être:
Cette vidéo vous emmène dans l’histoire de Raspberry Pi :

