Innholdsfortegnelse:

Slik bruker du ESP8266 som webserver: 5 trinn
Slik bruker du ESP8266 som webserver: 5 trinn

Video: Slik bruker du ESP8266 som webserver: 5 trinn

Video: Slik bruker du ESP8266 som webserver: 5 trinn
Video: How to get 5V from 18650 Lithium Battery Powering Arduino ESP32 ESP8266 or charge your phone 2024, Desember
Anonim
Hvordan bruke ESP8266 som webserver
Hvordan bruke ESP8266 som webserver

Hei, jeg bruker for tiden Windows 10, NodeMCU 1.0, og her er listen over programvare jeg brukte og installasjonsguider jeg fulgte:

  • Arduino IDE
  • Ekstra brett for esp8266
  • Spiff

Bibliotek brukt:

Websocket

Jeg brukte NodeMCU som en server for å servere en HTML -fil jeg laget fra denne veiledningen. For å servere denne filen lastet jeg opp filen til nodemcu -filsystemet ved hjelp av Spiffs. HTML -filen sender data til nodemcu ved hjelp av websockets som skal skrives ut på den serielle skjermen for dette. Den raske toveiskommunikasjonen via websockets på serveren og klienten gjorde at denne kunne brukes som fjernkontroll. I de følgende trinnene forklarer jeg ikke hvordan koden min fungerer

Rekvisita

NodeMCU

Trinn 1: Få det til å fungere

Få det til å fungere
Få det til å fungere
Få det til å fungere
Få det til å fungere
Få det til å fungere
Få det til å fungere

Her er trinnene for hvordan det fungerer

  1. Last ned den vedlagte filen og åpne filen mousebot.ino
  2. Gå til skisse> vis skissemappe og lag en ny mappe som heter data
  3. Lagre html -filen fra denne opplæringen i mappen som heter. Jeg kalte min som "joystick"
  4. Sørg for at spiffen din allerede er funksjonell ved å gå til verktøy og se opplasting av "esp8266 sketch data"
  5. Last opp html -filen til nodemcu ved å klikke "esp8266 sketch data upload"
  6. Etter opplasting av fil laster du opp filen mousebot.ino til nodemcu ved å gå til arduino IDE og trykke ctrl U

Trinn 2: Hvordan koden fungerer

Først inkluderer vi bibliotekene denne koden vil bruke

// for å gjøre det mulig for ESP8266 å koble til WIFI

#include #include #include // Gjør ESP8266 i stand til å fungere som en server #include // muliggjør kommunikasjon med serveren og klienten (den tilkoblede enheten) #include #include // For å åpne den opplastede filen på nodemcu #include

Sett esp8266 som en webserver som er åpnet på port 80. Portene er veier dataene vil passere gjennom. Som en serverport sender den HTML -filen til klienten (enhetene som er koblet til den).

Legger til en websocket -tilkobling med port 81 for å lytte etter meldinger fra klienten

Nettstikkene har parameteren num, WStype_t, nyttelast og størrelse. Nummeret bestemmer klientnummeret, nyttelast er meldingen den sender, størrelsen er lengden på meldingen og WStype_t er for forskjellige hendelser som f.eks.

  • WStype_DISCONNECTED - ved frakobling av en klient.
  • WStype_CONNECTED: - når en klient kobler seg til
  • WStype_TEXT - Mottatt data fra klienten

Avhengig av hendelsestypen utføres forskjellige handlinger og kommenteres her

void webSocketEvent (uint8_t num, WStype_t type, uint8_t * nyttelast, size_t length) {

switch (type) {case WStype_DISCONNECTED: Serial.printf ("[%u] Frakoblet! / n", num); // skriver ut data til seriell skjermbrudd; case WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // får IP -adressen til klienten Serial.printf ("[%u] Tilkoblet fra%d.%d.%d.%d url:%s / n", num, ip [0], ip [1], ip [2], ip [3], nyttelast); webSocket.sendTXT (num, "Tilkoblet"); // sender "conencted" til nettleserkonsollen} pause; case WStype_TEXT: Serial.printf ("[%u] Data: %s / n", num, nyttelast); // skriver ut klientnummeret i %u og dataene som mottas som strenger i %s / n pause;}}

Trinn 3: Sett NODEMCU som server

angir ssid og passord du vil bruke til å koble til det senere

const char *ssid = "Prøv";

const char *passord = "12345678";

på oppsettet, spesifiserer vi hastigheten som vår nodemcu og pc vil kommunisere med, som er 115200.

ugyldig oppsett (void) {

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

satt til true også se wifi -diagnostikkutgangen på serila -terminalen

Serial.setDebugOutput (true);

initalisere filsystemet

SPIFFS.begin ();

Sett opp nodemcu som et tilgangspunkt med ssid og password defiend tidligere og skriver ut ip -en til nodemcu som du vil koble deg til tidligere. som standard er det 192.168.4.1

Serial.print ("Konfigurere tilgangspunkt …");

WiFi.mode (WIFI_AP); WiFi.softAP (ssid, passord); IPAddress myIP = WiFi.softAPIP (); Serial.print ("AP IP -adresse:"); Serial.println (myIP);

Initialiser websocket på nodemcu, som er pur server

webSocket.begin ();

Kaller funksjonen webSocketEvent når en websocket -hendelse oppstår.

webSocket.onEvent (webSocketEvent);

For feilsøking, skriv ut "WebSocket -server startet" på en ny linje. Dette er for å bestemme kodelinjen nodemcu behandler

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

når en klient besøker 192.168.4.1, vil den kalle funksjonen handleFileRead og sende med seg parameter -serveren URI som i dette tilfellet er vår nodemcu -informasjon. Funksjonen handleFileRead vil betjene html -filen fra nodemcu -filsystemet

server.onNotFound ( () {

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

Hvis den ikke blir funnet, vil den vise "FileNotFound"

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

});

Starter serveren og skriver ut HTTP -serveren startet.

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

På vår tomgangssløyfe gjør vi det mulig for serveren å kontinuerlig håndtere klienten og dens nettkontaktkommunikasjon som følger:

void loop (void) {

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

Trinn 4: Last inn HTML -fil

vi vil bruke en funksjon som heter handleFileRead for å åpne og html -filen fra nodemcu -filsystemet. den vil returnere en boolean av verdi for å avgjøre om den er lastet inn eller ikke.

Når "192.168.4.1/" er åpnet av klienten, setter vi filbanen til "/Joystick.html, navnet på filen vår i datamappen

bool handleFileRead (strengbane) {

Serial.println ("handleFileRead:" + bane); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.exists (path)) {File file = SPIFFS.open (path, "r"); size_t sent = server.streamFile (fil, "text/html"); file.close (); returner sant; } returner false; }

Sjekk om filbanen "/Joystick.html" finnes

hvis (SPIFFS.exists (bane)) {

Hvis den eksisterer, åpner du banen med det formål å lese den som er spesifisert av "r". Gå hit for flere formål.

Filfil = SPIFFS.open (bane, "r");

Sender filen til serveren som med en innholdstype "tekst/html"

size_t sent = server.streamFile (fil, "text/html");

lukk filen

file.close ();

funksjonen handleFileRead returnerer true

return true;}

hvis filbanen ikke finnes, returnerer funksjonen handleFileRead usann

returner sant; }

Trinn 5: Prøv det

Image
Image

Koble til nodeMCU og gå til "192.168.4.1" og prøv det!:)

Anbefalt: