Cuprins:

Cum se folosește ESP8266 ca server web: 5 pași
Cum se folosește ESP8266 ca server web: 5 pași

Video: Cum se folosește ESP8266 ca server web: 5 pași

Video: Cum se folosește ESP8266 ca server web: 5 pași
Video: Introducere în NodeMCU ESP8266 placă de dezvoltare WiFi cu exemplu de client HTTP 2024, Noiembrie
Anonim
Cum se folosește ESP8266 ca server web
Cum se folosește ESP8266 ca server web

Bună, folosesc în prezent Windows 10, NodeMCU 1.0 și iată lista software-ului pe care l-am folosit și ghidurile de instalare pe care le-am urmat:

  • IDE Arduino
  • Plăci suplimentare pentru esp8266
  • Spiff

Biblioteca utilizată:

Websocket

Am folosit NodeMCU ca server pentru a servi un fișier HTML realizat din acest tutorial. Pentru a servi acest fișier, am încărcat fișierul în sistemul de fișiere nodemcu folosind Spiffs. Fișierul HTML trimite date către nodemcu folosind websockets-uri pentru a fi tipărite pe monitorul serial. Comunicarea rapidă bidirecțională prin websockets a serverului și a clientului a permis ca acesta să fie utilizat ca telecomandă. La următorii pași, nu voi explica cum funcționează codul meu

Provizii

NodeMCU

Pasul 1: Faceți-o să funcționeze

Fă-o să mearga
Fă-o să mearga
Fă-o să mearga
Fă-o să mearga
Fă-o să mearga
Fă-o să mearga

Iată pașii despre modul în care funcționează

  1. Descărcați fișierul atașat și deschideți fișierul mousebot.ino
  2. Mergeți la schiță> afișați dosarul schiță și creați un dosar nou denumit date
  3. Salvați fișierul html din acest tutorial în folderul numit. L-am numit pe al meu drept „Joystick”
  4. Asigurați-vă că spiff-ul dvs. este deja funcțional accesând instrumentele și văzând „încărcarea datelor schiței esp8266”
  5. Încărcați fișierul html în nodemcu făcând clic pe "încărcare date schiță esp8266"
  6. După încărcarea fișierului, încărcați în nodemcu fișierul mousebot.ino prin oing la ID-ul arduino și apăsând ctrl U

Pasul 2: Cum funcționează codul

Mai întâi, includem bibliotecile pe care le va folosi acest cod

// pentru a permite ESP8266 să se conecteze la WIFI

#include #include #include // Activează ESP8266 să acționeze ca un server #include // permite comunicarea cu serverul și clientul (dispozitivul tău conectat) #include #include // Pentru a deschide fișierul uplaoded pe nodemcu #include

Setați esp8266 ca server web deschis pe portul 80. Porturile sunt căi prin care vor trece datele. Ca un port server, va trimite fișierul HTML către client (deivces conectat la acesta).

Adaugă o conexiune de socket web folosind portul 81 pentru a asculta mesajele de la client

Websocket-urile au parametrul num, WStype_t, sarcină utilă și dimensiune. Numărul determină numărul clientului, sarcina utilă este mesajul pe care îl trimite, dimensiunea este lungimea mesajului și WStype_t este pentru evenimente diferite, cum ar fi

  • WStype_DISCONNECTED - la deconectarea unui client.
  • WStype_CONNECTED: - când un client se conectează
  • WStype_TEXT - Date primite de la client

În funcție de tipul evenimentului, se efectuează diferite acțiuni și sunt comentate aici

void webSocketEvent (uint8_t num, tip WStype_t, uint8_t * sarcină utilă, size_t lungime) {

switch (type) {case WStype_DISCONNECTED: Serial.printf ("[% u] Deconectat! / n", num); // tipărește date pe pauza monitorului serial; case WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // primește IP-ul clientului Serial.printf ("[% u] Conectat de la% d.% d.% d.% d url:% s / n", num, ip [0], ip [1], ip [2], ip [3], sarcină utilă); webSocket.sendTXT (num, "Conectat"); // trimite „conencted” la consola browserului} break; case WStype_TEXT: Serial.printf ("[% u] Date:% s / n", num, sarcină utilă); // tipărește numărul clientului în% u și datele primite ca șiruri în% s / n pauză;}}

Pasul 3: Setați NODEMCU ca server

setează ssid și parola pe care le veți folosi pentru a vă conecta mai târziu la acesta

const char * ssid = "Încearcă";

const char * password = "12345678";

la configurare, specificăm rata la care vor comunica nodemcu și computerul nostru, care este 115200.

configurare nulă (nulă) {

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

setați la adevărat și vedeți ieșirea de diagnostic wifi pe terminalul serila

Serial.setDebugOutput (adevărat);

inițializați sistemul de fișiere

SPIFFS.begin ();

Configurați nodemcu ca punct de acces cu ssid și password defiend mai devreme și tipăriți ip nodemcu cu care vă veți conecta mai devreme. implicit este 192.168.4.1

Serial.print ("Configurarea punctului de acces …");

WiFi.mode (WIFI_AP); WiFi.softAP (ssid, parolă); IPAddress myIP = WiFi.softAPIP (); Serial.print ("Adresa IP AP:"); Serial.println (myIP);

Inițializați websocket-ul pe nodemcu, care este pur server

webSocket.begin ();

Apelează funcția webSocketEvent atunci când are loc un eveniment websocket.

webSocket.onEvent (webSocketEvent);

Pentru depanare, tipăriți „WebSocket server pornit” pe o nouă linie. Aceasta este pentru a determina linia de cod pe care nodemcu o procesează

Serial.println ("Server WebSocket pornit.");

când un client vizitează 192.168.4.1, acesta va apela funcția handleFileRead și va trimite cu acesta parametrul URI al serverului care în acest caz este informația noastră nodemcu. Funcția handleFileRead va servi fișierul html din sistemul de fișiere nodemcu

server.onNotFound ( () {

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

dacă nu poate fi găsit, va apărea „FileNotFound”

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

});

Începe serverul și se imprimă serverul HTTP de imprimare.

server.begin (); Serial.println ("Server HTTP pornit");

În bucla noastră nulă, permitem serverului să gestioneze în mod continuu comunicarea clientului și a portalurilor sale web, după cum urmează:

bucla void (nul) {

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

Pasul 4: Încărcați fișierul HTML

vom folosi o funcție numită handleFileRead pentru a deschide și fișierul html din sistemul de fișiere nodemcu. va returna un boolean de valoare pentru a determina dacă este încărcat sau nu.

Când „192.168.4.1/” este deschis de client, setăm calea fișierului la „/Joystick.html, numele fișierului nostru din folderul de date

bool handleFileRead (String path) {

Serial.println ("handleFileRead:" + cale); if (path.endsWith ("/")) path + = "Joystick.html"; if (SPIFFS.exists (cale)) {Fișier fișier = SPIFFS.open (cale, "r"); size_t trimis = server.streamFile (fișier, "text / html"); file.close (); întoarcere adevărată; } returnează fals; }

Verificați dacă calea fișierului „/Joystick.html” există

if (SPIFFS.exists (cale)) {

Dacă există, deschideți calea cu scopul de a o citi, care este specificată de „r”. Mergeți aici pentru mai multe scopuri.

Fișier fișier = SPIFFS.open (cale, "r");

Trimite fișierul către server ca la un tip de conținut „text / html”

size_t trimis = server.streamFile (fișier, "text / html");

închideți fișierul

file.close ();

funcția handleFileRead returnează true

returnează adevărat;}

dacă calea fișierului nu există, funcția handleFileRead returnează false

întoarce-te adevărat; }

Pasul 5: Încercați

Image
Image

Conectați-vă la nodeMCU și accesați „192.168.4.1” și încercați-l!:)

Recomandat: