Пример простого вебсервера на контроллере Esp8266 или Esp32 с хранением отдаваемых файлов во встроенной памяти с помощью LittleFS.
Для загрузки файлов в LittleFS контроллера нужно поместить их в папку data в проекте, в среде Arduino IDE (тестировалось на версии 2.3.2) нажать комбинацию [Ctrl] + [Shift] + [P] — вверху откроется командная строка. В этой командной строке набрать или найти «Upload Little FS to Pico/ESP8266» и запустить.
Тестировалось на плате Wemos D1 mini (на фото к посту)
Код скетча web_littlefs.ino
#include <Arduino.h>
#ifdef ESP32
#include <WiFi.h>
#include <AsyncTCP.h>
#elif defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#endif
#include <ESPAsyncWebServer.h>
#include <LittleFS.h>
/*
Замените SSID и пароль для вашего Wi-Fi
*/
const char *ssid = "ВАШ_WIFI_SSID";
const char *password = "ПАРОЛЬ_К_WIFI";
// Webserver
AsyncWebServer server(80);
String PARAM_MESSAGE = "status";
const int LED_PIN = LED_BUILTIN;
void notFound(AsyncWebServerRequest *request)
{
request->send(404, "text/plain", "Not found");
}
void toggleLED(String status)
{
if (status == "ON")
digitalWrite(LED_PIN, LOW);
else
digitalWrite(LED_PIN, HIGH);
}
void setup()
{
Serial.begin(115200);
Serial.println("Starting the LittleFS Webserver..");
// Begin LittleFS
if (!LittleFS.begin())
{
Serial.println("An Error has occurred while mounting LittleFS");
return;
}
// Connect to WIFI
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
{
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// LED PIN
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
// Route for root index.html
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(LittleFS, "/index.html", "text/html");
});
// Route for root index.css
server.on("/index.css", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(LittleFS, "/index.css", "text/css");
});
// Route for root entireframework.min.css
server.on("/entireframework.min.css", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(LittleFS, "/entireframework.min.css", "text/css");
});
// Route for root index.js
server.on("/index.js", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(LittleFS, "/index.js", "text/javascript");
});
// Respond to toggle event
server.on("/toggle", HTTP_GET, [](AsyncWebServerRequest *request) {
String status;
if (request->hasParam(PARAM_MESSAGE)) {
status = request->getParam(PARAM_MESSAGE)->value();
if(status == "ON"){
toggleLED("ON");
} else {
toggleLED("OFF");
}
} else {
status = "No message sent";
}
request->send(200, "text/plain", "Turning Built In LED : " + status);
});
server.onNotFound(notFound);
server.begin();
}
void loop() {
}
Архив с файлами проекта: