Indholdsfortegnelse:

Sådan bruges ESP8266 som webserver: 5 trin
Sådan bruges ESP8266 som webserver: 5 trin

Video: Sådan bruges ESP8266 som webserver: 5 trin

Video: Sådan bruges ESP8266 som webserver: 5 trin
Video: Как сделать 4-канальное реле Wi-Fi ESP8266 ESP01 | ESP01 Домашняя автоматизация | УдаленныйXY 2024, November
Anonim
Sådan bruges ESP8266 som webserver
Sådan bruges ESP8266 som webserver

Hej, jeg bruger i øjeblikket Windows 10, NodeMCU 1.0, og her er listen over software, jeg brugte, og installationsvejledninger, jeg fulgte:

  • Arduino IDE
  • Ekstra tavler til esp8266
  • Spiff

Brugt bibliotek:

Websocket

Jeg brugte NodeMCU som en server til at servere en HTML -fil, jeg lavede fra denne vejledning. For at servere denne fil uploadede jeg filen til nodemcu -filsystemet ved hjælp af Spiffs. HTML -filen sender data til nodemcu ved hjælp af websockets, der skal udskrives på den serielle skærm til dette. Den hurtige tovejskommunikation via websockets på serveren og klienten muliggjorde, at denne kunne bruges som fjernbetjening. På de følgende trin forklarer jeg dårligt, hvordan min kode fungerer

Forbrugsvarer

NodeMCU

Trin 1: Få det til at fungere

Få det til at virke
Få det til at virke
Få det til at virke
Få det til at virke
Få det til at virke
Få det til at virke

Her er trinene til, hvordan det fungerer

  1. Download den vedhæftede fil, og åbn filen mousebot.ino
  2. Gå til skitse> vis skitsemappe og lav en ny mappe med navnet data
  3. Gem html -filen fra denne vejledning i den navngivne mappe. Jeg kaldte mit som "joystick"
  4. Sørg for, at din spiff allerede er funktionel ved at gå til værktøjer og se "esp8266 sketch data upload"
  5. Upload html -filen til nodemcu ved at klikke på "esp8266 sketch data upload"
  6. Efter filoverførsel skal du uploade filen mousebot.ino til nodemcu ved at åbne arduino IDE og trykke på ctrl U

Trin 2: Sådan fungerer koden

Først inkluderer vi de biblioteker, denne kode vil bruge

// for at gøre det muligt for ESP8266 at oprette forbindelse til WIFI

#include #include #include // Aktiverer ESP8266 som server

Indstil esp8266 som en webserver, der er åbnet på port 80. Porte er veje, dataene vil passere igennem. Som en serverport sender den HTML -filen til klienten (enhederne forbundet til den).

Tilføjer en websocket -forbindelse ved hjælp af port 81 til at lytte efter meddelelser fra klienten

Websockets har parameteren num, WStype_t, nyttelast og størrelse. Nummeret bestemmer klientnummeret, nyttelast er den besked, den sender, størrelsen er meddelelsens længde, og WStype_t er for forskellige hændelser som f.eks.

  • WStype_DISCONNECTED - ved afbrydelse af en klient.
  • WStype_CONNECTED: - når en klient opretter forbindelse
  • WStype_TEXT - Modtaget data fra klienten

Afhængigt af hændelsestypen udføres forskellige handlinger og kommenteres her

void webSocketEvent (uint8_t num, WStype_t type, uint8_t * nyttelast, size_t længde) {

switch (type) {case WStype_DISCONNECTED: Serial.printf ("[%u] Afbrudt! / n", num); // udskriver data til seriel skærmbrud; case WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // får IP -adressen til klienten Serial.printf ("[%u] Forbundet fra%d.%d.%d.%d url:%s / n", num, ip [0], ip [1], ip [2], ip [3], nyttelast); webSocket.sendTXT (num, "Tilsluttet"); // sender "conencted" til browserkonsollen} pause; case WStype_TEXT: Serial.printf ("[%u] Data: %s / n", num, nyttelast); // udskriver klientnummeret i %u og de modtagne data som strenge i %s / n pause;}}

Trin 3: Indstil NODEMCU som server

indstiller ssid og adgangskode, du vil bruge til at oprette forbindelse til det senere

const char *ssid = "Prøv";

const char *password = "12345678";

på opsætningen specificerer vi den hastighed, hvormed vores nodemcu og pc vil kommunikere, hvilket er 115200.

void setup (void) {

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

indstillet til sand også se wifi -diagnostikoutput på serila -terminalen

Serial.setDebugOutput (true);

initalisere filsystemet

SPIFFS.begin ();

Konfigurer nodemcu som et adgangspunkt med ssid og password defiend tidligere og udskriver ip'en på nodemcu, som du vil oprette forbindelse til tidligere. som standard er det 192.168.4.1

Serial.print ("Konfiguration af adgangspunkt …");

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

Initialiser websocket på nodemcu, som er pur server

webSocket.begin ();

Opkalder funktionen webSocketEvent, når der opstår en websocket -hændelse.

webSocket.onEvent (webSocketEvent);

For fejlfinding skal du udskrive "WebSocket -server startet" på en ny linje. Dette er for at bestemme den kodelinje, nodemcu behandler

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

når en klient besøger 192.168.4.1, vil den kalde funktionen handleFileRead og sende parameterserver -URI med den, som i dette tilfælde er vores nodemcu -information. Funktionen handleFileRead betjener html -filen fra nodemcu -filsystemet

server.onNotFound ( () {

hvis (! handleFileRead (server.uri ()))

hvis den ikke kan findes, viser den "FileNotFound"

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

});

Starter serveren og udskriver HTTP -serveren startet.

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

På vores tomrumssløjfe gør vi serveren i stand til løbende at håndtere klientens og dens websockets kommunikation som følger:

void loop (void) {

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

Trin 4: Indlæs HTML -fil

vi vil bruge en funktion ved navn handleFileRead til at åbne og html -filen fra nodemcu -filsystemet. den returnerer en boolean af værdi for at afgøre, om den er indlæst eller ej.

Når "192.168.4.1/" er åbnet af klienten, sætter vi filstien til "/Joystick.html, navnet på vores fil i datamappen

bool handleFileRead (strengsti) {

Serial.println ("handleFileRead:" + sti); hvis (path.endsWith ("/")) sti += "Joystick.html"; hvis (SPIFFS.exists (sti)) {Filfil = SPIFFS.open (sti, "r"); size_t sendt = server.streamFile (fil, "tekst/html"); file.close (); vende tilbage sandt; } returner falsk; }

Kontroller, om filstien "/Joystick.html" findes

hvis (SPIFFS.exists (sti)) {

Hvis den findes, skal du åbne stien med det formål at læse den, som er angivet af "r". Gå her til flere formål.

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

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

size_t sendt = server.streamFile (fil, "tekst/html");

luk filen

file.close ();

funktionen handleFileRead returnerer true

return true;}

hvis filstien ikke findes, returnerer funktionen handleFileRead falsk

vende tilbage sandt; }

Trin 5: Prøv det

Image
Image

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

Anbefalede: