INHOUDSOPGAWE:

Hoe om ESP8266 as webbediener te gebruik: 5 stappe
Hoe om ESP8266 as webbediener te gebruik: 5 stappe

Video: Hoe om ESP8266 as webbediener te gebruik: 5 stappe

Video: Hoe om ESP8266 as webbediener te gebruik: 5 stappe
Video: How to use DHT11 DHT22 with NodeMCU ESP8266 to read temperature over WiFi - IoT 2024, Desember
Anonim
Hoe om ESP8266 as webbediener te gebruik
Hoe om ESP8266 as webbediener te gebruik

Hallo, ek gebruik tans Windows 10, NodeMCU 1.0 en hier is die lys van sagteware wat ek gebruik het en installasiegidse wat ek gevolg het:

  • Arduino IDE
  • Bykomende borde vir esp8266
  • Spiff

Biblioteek gebruik:

Websocket

Ek het NodeMCU as 'n bediener gebruik om 'n HTML -lêer te bedien wat ek uit die tutoriaal gemaak het. Om hierdie lêer te bedien, het ek die lêer met Spiffs na die nodemcu -lêerstelsel opgelaai. Die HTML -lêer stuur data na die nodemcu met behulp van websockets om hiervoor op die seriële monitor gedruk te word. Die vinnige tweerigtingkommunikasie via websockets van die bediener en kliënt het dit moontlik gemaak om dit as afstandsbediening te gebruik. In die volgende stappe sal ek u verduidelik hoe my kode werk

Voorrade

NodeMCU

Stap 1: Laat dit werk

Maak Dit Werk
Maak Dit Werk
Maak Dit Werk
Maak Dit Werk
Laat dit werk
Laat dit werk

Hier is die stappe oor hoe dit werk

  1. Laai die aangehegte lêer af en maak die lêer mousebot.ino oop
  2. Gaan na skets> wys sketsmap en maak 'n nuwe gids met die naam data
  3. Stoor die html -lêer uit hierdie tutoriaal in die gids met die naam. Ek het myne as 'joystick' genoem
  4. Maak seker dat u spiff reeds funksioneel is deur na die gereedskap te gaan en die 'esp8266 sketsdata oplaai' te sien
  5. Laai die html -lêer op na nodemcu deur op "esp8266 sketch data upload" te klik
  6. Na die oplaai van die lêer, laai die mousebot.ino -lêer na die nodemcu op deur na die arduino IDE te gaan en op ctrl U te druk

Stap 2: Hoe die kode werk

Eerstens bevat ons die biblioteke wat hierdie kode sal gebruik

// om die ESP8266 in staat te stel om aan te sluit by die WIFI

#include #include #include // Stel die ESP8266 in staat om as 'n bediener op te tree #include // maak kommunikasie met die bediener en die kliënt moontlik (u gekoppelde toestel)

Stel die esp8266 in as 'n webbediener wat op poort 80 oopgemaak is. Poorte is paaie waardeur die data sal gaan. As 'n bedienerspoort, stuur dit die HTML -lêer na die kliënt (die toestelle wat daaraan gekoppel is).

Voeg 'n websocket -verbinding by met poort 81 om na boodskappe van die kliënt te luister

Die websockets het die parameter num, WStype_t, loonvrag en grootte. Die nommer bepaal die kliënt se nommer, die vrag is die boodskap wat dit stuur, die grootte is die lengte van die boodskap en WStype_t is vir verskillende gebeurtenisse, soos

  • WStype_DISCONNECTED - by ontkoppeling van 'n kliënt.
  • WStype_CONNECTED: - wanneer 'n kliënt aansluit
  • WStype_TEXT - Ontvang data van die kliënt

Afhangende van die tipe gebeurtenis word verskillende aksies uitgevoer en word hier kommentaar gelewer

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

skakelaar (tipe) {saak WStype_DISCONNECTED: Serial.printf ("[%u] Ontkoppel! / n", num); // druk data af na die reeksmonitorbreuk; saak WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // kry die IP van die kliënt Serial.printf ("[%u] Verbind van%d.%d.%d.%d url:%s / n", num, ip [0], ip [1], ip [2], ip [3], loonvrag); webSocket.sendTXT (num, "verbind"); // stuur "conencted" na die blaaierkonsole} break; saak WStype_TEXT: Serial.printf ("[%u] Data: %s / n", num, laai); // druk die kliëntnommer in %u af en die data ontvang as stringe in %s / n breek;}}

Stap 3: Stel die NODEMCU as bediener in

stel die ssid en wagwoord in wat u later sal gebruik om aan te sluit

const char *ssid = "Probeer";

const char *wagwoord = "12345678";

Op die opstel spesifiseer ons die tempo waarmee ons nodemcu en rekenaar sal kommunikeer, wat 115200 is.

ongeldige opstelling (ongeldig) {

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

ook ingestel op waar, sien die wifi -diagnostiese uitset op die serila -terminale

Serial.setDebugOutput (waar);

die lêerstelsel initaliseer

SPIFFS.begin ();

Stel die nodemcu op as 'n toegangspunt met ssid en wagwoord defiend vroeër en druk die ip van die nodemcu af waarmee u vroeër sal skakel. standaard is dit 192.168.4.1

Serial.print ("Toegangspunt instel …");

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

Initialiseer die websocket op die nodemcu, wat die bediener is

webSocket.begin ();

Noem die funksie webSocketEvent wanneer 'n websocket -gebeurtenis plaasvind.

webSocket.onEvent (webSocketEvent);

Druk vir ontfouting 'WebSocket -bediener begin' op 'n nuwe reël. Dit is om die kodelyn te bepaal wat die nodemcu verwerk

Serial.println ("WebSocket -bediener begin.");

as 'n kliënt 192.168.4.1 besoek, bel die funksie handleFileRead en stuur die parameter bediener URI saam, wat in hierdie geval ons nodemcu -inligting is. Die funksie handleFileRead sal die html -lêer van die nodemcu -lêerstelsel bedien

server.onNotFound ( () {

as (! handleFileRead (server.uri ()))

as dit nie gevind kan word nie, sal dit 'FileNotFound' wys

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

});

Begin die bediener en druk die HTTP -bediener begin.

bediener.begin (); Serial.println ("HTTP -bediener begin");

Op ons leemte -lus stel ons die bediener in staat om die kliënt en sy webwerwe -kommunikasie voortdurend soos volg te hanteer:

leegte -lus (leegte) {

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

Stap 4: Laai HTML -lêer

ons sal 'n funksie met die naam handleFileRead gebruik om die html -lêer van die nodemcu -lêerstelsel oop te maak. dit sal 'n boolean waarde gee om te bepaal of dit gelaai is of nie.

As "192.168.4.1/" deur die kliënt oopgemaak is, stel ons die lêerpad op "/Joystick.html, die naam van ons lêer in die datamap

bool handleFileRead (String pad) {

Serial.println ("handleFileRead:" + pad); if (path.endsWith ("/")) pad += "Joystick.html"; as (SPIFFS.exists (pad)) {File file = SPIFFS.open (pad, "r"); size_t gestuur = server.streamFile (lêer, "text/html"); file.close (); terugkeer waar; } vals terugkeer; }

Kontroleer of die lêerpad "/Joystick.html" bestaan

as (SPIFFS.exists (pad)) {

As dit bestaan, maak die pad oop met die doel om dit te lees wat deur die "r" gespesifiseer word. Gaan hier vir meer doeleindes.

Lêer lêer = SPIFFS.open (pad, "r");

Stuur die lêer na die bediener soos met die inhoudstipe "teks/html"

size_t gestuur = server.streamFile (lêer, "text/html");

maak die lêer toe

file.close ();

die funksie handleFileRead gee waar terug

terugkeer waar;}

as die lêerpad nie bestaan nie, gee die funksie handleFileRead onwaar terug

terugkeer waar; }

Stap 5: Probeer dit

Image
Image

Koppel aan die nodeMCU en gaan na "192.168.4.1" en probeer dit!:)

Aanbeveel: