Пример простого вебсервера на контроллере 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() {
}

Архив с файлами проекта:

От ltvjybn14

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.