Inhoudsopgave:

Hoe ESP8266 als webserver te gebruiken: 5 stappen
Hoe ESP8266 als webserver te gebruiken: 5 stappen

Video: Hoe ESP8266 als webserver te gebruiken: 5 stappen

Video: Hoe ESP8266 als webserver te gebruiken: 5 stappen
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Juli-
Anonim
Hoe ESP8266 als webserver te gebruiken
Hoe ESP8266 als webserver te gebruiken

Hallo, ik gebruik momenteel Windows 10, NodeMCU 1.0 en hier is de lijst met software die ik heb gebruikt en installatiehandleidingen die ik heb gevolgd:

  • Arduino IDE
  • Extra borden voor esp8266
  • Spiff

Gebruikte bibliotheek:

Websocket

Ik heb NodeMCU als server gebruikt om een HTML-bestand te dienen dat ik van deze tutorial heb gemaakt. Om dit bestand te dienen, heb ik het bestand geüpload naar het nodemcu-bestandssysteem met behulp van Spiffs. Het HTML-bestand stuurt gegevens naar de nodemcu met behulp van websockets om hiervoor op de seriële monitor te worden afgedrukt. Door de snelle bidirectionele communicatie via websockets van de server en de client kon dit worden gebruikt als afstandsbediening. Bij de volgende stappen zal ik uitleggen hoe mijn code werkt

Benodigdheden

KnooppuntMCU

Stap 1: Laat het werken

Zorg dat het werkt
Zorg dat het werkt
Zorg dat het werkt
Zorg dat het werkt
Zorg dat het werkt
Zorg dat het werkt

Hier zijn de stappen om te zien hoe het werkt

  1. Download het bijgevoegde bestand en open het bestand mousebot.ino
  2. Ga naar schets> toon schetsmap en maak een nieuwe map met de naam data
  3. Sla het html-bestand van deze tutorial op in de map met de naam. Ik noemde de mijne als "Joystick"
  4. Zorg ervoor dat je spiff al functioneel is door naar tools te gaan en de "esp8266 sketch data upload" te zien
  5. Upload het html-bestand naar nodemcu door te klikken op "esp8266 sketch data upload"
  6. Upload na het uploaden van het bestand het bestand mousebot.ino naar de nodemcu door naar de arduino IDE te gaan en op ctrl U te drukken

Stap 2: Hoe de code werkt

Eerst nemen we de bibliotheken op die deze code zal gebruiken

// om de ESP8266 in staat te stellen verbinding te maken met wifi

#include #include #include //Schakel de ESP8266 in om als server te fungeren #include //maakt communicatie met de server en de client (uw aangesloten apparaat) mogelijk #include #include //Om het geüploade bestand op de nodemcu te openen #include

Stel de esp8266 in als een webserver die is geopend op poort 80. Poorten zijn paden waar de gegevens doorheen gaan. Als serverpoort stuurt het het HTML-bestand naar de client (de apparaten die ermee verbonden zijn).

Voegt een websocket-verbinding toe via poort 81 om te luisteren naar berichten van de client

De websockets hebben de parameter num, WStype_t, payload en size. Het nummer bepaalt het klantnummer, de payload is het bericht dat wordt verzonden, de grootte is de lengte van het bericht en WStype_t is voor verschillende evenementen zoals

  • WStype_DISCONNECTED - bij het loskoppelen van een client.
  • WStype_CONNECTED: - wanneer een client verbinding maakt
  • WStype_TEXT - Gegevens ontvangen van de klant

Afhankelijk van het type evenement worden verschillende acties uitgevoerd en worden hier becommentarieerd

void webSocketEvent (uint8_t num, WStype_t type, uint8_t * payload, size_t lengte) {

switch (type) { case WStype_DISCONNECTED: Serial.printf("[%u] Verbinding verbroken!\n", num); // drukt gegevens af naar de seriële monitoronderbreking; case WStype_CONNECTED: { IPAddress ip = webSocket.remoteIP (num); //krijgt het IP-adres van de client Serial.printf("[%u] Verbonden vanaf %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], lading); webSocket.sendTXT(num, "Verbonden"); // stuurt "verbonden" naar de browserconsole } break; case WStype_TEXT: Serial.printf("[%u] Data: %s\n", num, payload); // drukt het klantnummer af in %u en de data ontvangen als strings in %s\n break;}}

Stap 3: Stel de NODEMCU in als server

stelt de ssid en het wachtwoord in waarmee je er later verbinding mee wilt maken

const char *ssid = "Probeer";

const char *wachtwoord = "12345678";

bij de installatie specificeren we de snelheid waarmee onze nodemcu en pc zullen communiceren, namelijk 115200.

ongeldige setup (ongeldig){

Serieel.begin(115200); Serieel.print("\n");

ingesteld op true zie ook de wifi-diagnose-uitgang op de serila-terminal

Serial.setDebugOutput (waar);

initialiseer het bestandssysteem

SPIFFS.begin();

Stel de nodemcu in als een toegangspunt met ssid en wachtwoord defiend eerder en print het ip van de nodemcu waarmee je eerder verbinding zult maken. standaard is dit 192.168.4.1

Serial.print("Toegangspunt configureren…");

WiFi.modus (WIFI_AP); WiFi.softAP (ssid, wachtwoord); IPA-adres mijnIP = WiFi.softAPIP(); Serial.print("AP IP-adres: "); Serieel.println(mijnIP);

Initialiseer de websocket op de nodemcu, wat pur server is

webSocket.begin();

Roept de functie webSocketEvent aan wanneer een websocket-gebeurtenis plaatsvindt.

webSocket.onEvent (webSocketEvent);

Voor foutopsporing drukt u "WebSocket-server gestart" op een nieuwe regel af. Dit is om de regel code te bepalen die de nodemcu verwerkt

Serial.println("WebSocket-server gestart.");

wanneer een klant 192.168.4.1 bezoekt, roept het de functie handleFileRead aan en stuurt het de parameterserver-URI mee, wat in dit geval onze nodemcu-informatie is. De functie handleFileRead dient het html-bestand van het nodemcu-bestandssysteem

server.onNotFound((){

if(!handleFileRead(server.uri()))

als het niet kan worden gevonden, wordt "FileNotFound" weergegeven

server.send(404, "text/plain", "FileNotFound");

});

Begint de server en print HTTP-server gestart.

server.begin(); Serial.println("HTTP-server gestart");

Op onze void-lus stellen we de server in staat om de communicatie met de client en zijn websockets continu als volgt af te handelen:

lege lus(leegte){

server.handleClient(); webSocket.loop();}

Stap 4: HTML-bestand laden

we zullen een functie met de naam handleFileRead gebruiken om te openen en het html-bestand van het nodemcu-bestandssysteem. het zal een boolean van waarde retourneren om te bepalen of het is geladen of niet.

Wanneer "192.168.4.1/" is geopend door de client, stellen we het bestandspad in op "/Joystick.html, de naam van ons bestand in de gegevensmap

bool handleFileRead(String path){

Serial.println ("handleFileRead: " + pad); if(path.endsWith("/")) pad += "Joystick.html"; if(SPIFFS.exists(pad)){ Bestandsbestand = SPIFFS.open(pad, "r"); size_t verzonden = server.streamFile(bestand, "tekst/html"); bestand.close(); retourneer waar; } onwaar retourneren; }

Controleer of het bestandspad"/Joystick.html" bestaat

if(SPIFFS.exists(pad)){

Als het bestaat, open dan het pad met als doel het te lezen dat wordt aangegeven door de "r". Ga hierheen voor meer doeleinden.

Bestandsbestand = SPIFFS.open(pad, "r");

Stuurt het bestand naar de server als met een inhoudstype "text/html"

size_t verzonden = server.streamFile(bestand, "tekst/html");

sluit het bestand

bestand.close();

de functie handleFileRead retourneert true

retourneer waar;}

als het bestandspad niet bestaat, retourneert de functie handleFileRead false

retourneer waar; }

Stap 5: Probeer het

Image
Image

Maak verbinding met de nodeMCU en ga naar "192.168.4.1" en probeer het!:)

Aanbevolen: