Taula de continguts:

Com utilitzar ESP8266 com a servidor web: 5 passos
Com utilitzar ESP8266 com a servidor web: 5 passos

Vídeo: Com utilitzar ESP8266 com a servidor web: 5 passos

Vídeo: Com utilitzar ESP8266 com a servidor web: 5 passos
Vídeo: Como Programar o ESP8266 para ser um WEB SERVER - Video #3 - ESP8266 Primeiros Passos 2024, Desembre
Anonim
Com utilitzar ESP8266 com a servidor web
Com utilitzar ESP8266 com a servidor web

Hola, actualment estic fent servir Windows 10, NodeMCU 1.0 i aquí teniu la llista de programari que he utilitzat i les guies d'instal·lació que he seguit:

  • IDE Arduino
  • Taulers addicionals per a esp8266
  • Spiff

Biblioteca utilitzada:

Connexió web

He utilitzat NodeMCU com a servidor per publicar un fitxer HTML que he fet a partir d’aquest document. Per publicar aquest fitxer, el vaig penjar al sistema de fitxers nodemcu mitjançant Spiffs. El fitxer HTML envia dades al nodemcu mitjançant websockets que s’imprimiran al monitor sèrie per a això. La ràpida comunicació bidireccional a través de websockets del servidor i del client ha permès utilitzar-lo com a control remot. En els passos següents, no explicaré com funciona el meu codi

Subministraments

NodeMCU

Pas 1: feu que funcioni

Feu que funcioni
Feu que funcioni
Feu que funcioni
Feu que funcioni
Feu que funcioni
Feu que funcioni

A continuació es detallen els passos sobre com funciona

  1. Descarregueu el fitxer adjunt i obriu el fitxer mousebot.ino
  2. Aneu a croquis> mostra la carpeta de croquis i creeu una carpeta nova anomenada dades
  3. Deseu el fitxer html d’aquest tutorial a la carpeta anomenada. He anomenat el meu "Joystick"
  4. Assegureu-vos que el vostre spiff ja sigui funcional anant a les eines i veient la "càrrega de dades d'esbossos esp8266"
  5. Pengeu el fitxer html a nodemcu fent clic a "càrrega de dades d'esbossos esp8266"
  6. Després de la càrrega del fitxer, carregueu al nodemcu el fitxer mousebot.ino mitjançant l'ingrés a l'IDE arduino i prement Ctrl U

Pas 2: Com funciona el codi

En primer lloc, incloem les biblioteques que utilitzarà aquest codi

// per habilitar l’ESP8266 per connectar-se a la WIFI

#include #include #include // Activa l'ESP8266 com a servidor #include // habilita la comunicació amb el servidor i el client (el vostre dispositiu connectat) #include #include // Per obrir el fitxer ubicat al nodemcu #include

Establiu l'esp8266 com a servidor web obert al port 80. Els ports són vies per les quals passaran les dades. Com a port de servidor, enviarà el fitxer HTML al client (els elements connectats a aquest).

Afegeix una connexió de socket web mitjançant el port 81 per escoltar els missatges del client

Els websockets tenen el paràmetre num, WStype_t, càrrega útil i mida. El número determina el número de client, la càrrega útil és el missatge que envia, la mida és la longitud del missatge i WStype_t és per a esdeveniments diferents, com ara

  • WStype_DISCONNECTED: en desconnectar un client.
  • WStype_CONNECTED: quan es connecta un client
  • WStype_TEXT: dades rebudes del client

Depenent del tipus d'esdeveniment es realitzen diferents accions que es comenten aquí

void webSocketEvent (uint8_t num, tipus WStype_t, uint8_t * càrrega útil, mida_t longitud) {

commutador (tipus) {case WStype_DISCONNECTED: Serial.printf ("[% u] Desconnectat! / n", num); // imprimeix dades al salt del monitor sèrie; case WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // obté la IP del client Serial.printf ("[% u] Connectat des de% d.% d.% d.% d url:% s / n", num, ip [0], ip [1], ip [2], ip [3], càrrega útil); webSocket.sendTXT (num, "Connectat"); // envia "connectat" a la consola del navegador} break; case WStype_TEXT: Serial.printf ("[% u] Dades:% s / n", num, càrrega útil); // imprimeix el número de client en% u i les dades rebudes com a cadenes en% s / n break;}}

Pas 3: configureu NODEMCU com a servidor

defineix el ssid i la contrasenya que utilitzarà per connectar-s’hi més endavant

const char * ssid = "Prova";

const char * password = "12345678";

a la configuració, especifiquem la velocitat amb què es comunicaran els nostres nodemcu i pc, que és 115200.

configuració nul·la (nul·la) {

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

establert a true també veureu la sortida de diagnòstic wifi al terminal Serila

Serial.setDebugOutput (true);

inicialitzar el sistema de fitxers

SPIFFS.begin ();

Configureu el nodemcu com a punt d'accés amb ssid i password defiend abans i imprimiu la IP del nodemcu amb la qual us connectareu anteriorment. per defecte és 192.168.4.1

Serial.print ("Configuració del punt d'accés …");

WiFi.mode (WIFI_AP); WiFi.softAP (ssid, contrasenya); IPAddress myIP = WiFi.softAPIP (); Serial.print ("Adreça IP AP:"); Serial.println (myIP);

Inicialitzeu el websocket al nodemcu, que és el servidor pur

webSocket.begin ();

Crida a la funció webSocketEvent quan es produeix un esdeveniment de websocket.

webSocket.onEvent (webSocketEvent);

Per a la depuració, imprimiu "S'ha iniciat el servidor WebSocket" en una nova línia. Es tracta de determinar la línia de codi que el nodemcu està processant

Serial.println ("S'ha iniciat el servidor WebSocket.");

quan un client visita 192.168.4.1, cridarà a la funció handleFileRead i enviarà amb ell el paràmetre URI del servidor que en aquest cas és la nostra informació nodemcu. La funció handleFileRead servirà el fitxer html del sistema de fitxers nodemcu

server.onNotFound ( () {

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

si no es troba es mostrarà "FileNotFound"

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

});

Comença el servidor i s'inicia el servidor HTTP d'impressió.

server.begin (); Serial.println ( S'ha iniciat el servidor

Al nostre bucle buit, permetem al servidor gestionar de manera contínua les comunicacions del client i de les seves websockets de la manera següent:

bucle buit (buit) {

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

Pas 4: carregueu el fitxer HTML

utilitzarem una funció anomenada handleFileRead per obrir i el fitxer html del sistema de fitxers nodemcu. retornarà un valor booleà per determinar si està carregat o no.

Quan el client obre "192.168.4.1/", establim la ruta del fitxer a "/Joystick.html, el nom del nostre fitxer a la carpeta de dades

bool handleFileRead (camí de la cadena) {

Serial.println ("handleFileRead:" + ruta); if (path.endsWith ("/")) path + = "Joystick.html"; if (SPIFFS.exists (path)) {Fitxer de fitxer = SPIFFS.open (path, "r"); size_t sent = server.streamFile (fitxer, "text / html"); file.close (); tornar cert; } tornar fals; }

Comproveu si el camí del fitxer "/Joystick.html" existeix

if (SPIFFS.exists (ruta)) {

Si existeix, obriu el camí amb el propòsit de llegir-lo que especifica la "r". Aneu aquí per obtenir més informació.

Fitxer fitxer = SPIFFS.open (ruta, "r");

Envia el fitxer al servidor com amb un tipus de contingut "text / html"

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

tanqueu el fitxer

file.close ();

la funció handleFileRead torna cert

tornar cert;}

si el camí d'accés del fitxer no existeix, la funció handleFileRead retorna false

tornar cert; }

Pas 5: proveu-ho

Image
Image

Connecteu-vos al nodeMCU i aneu a "192.168.4.1" i proveu-ho.:)

Recomanat: