Turinys:

Kaip naudoti ESP8266 kaip žiniatinklio serverį: 5 žingsniai
Kaip naudoti ESP8266 kaip žiniatinklio serverį: 5 žingsniai

Video: Kaip naudoti ESP8266 kaip žiniatinklio serverį: 5 žingsniai

Video: Kaip naudoti ESP8266 kaip žiniatinklio serverį: 5 žingsniai
Video: #8 Как управлять ПЛК ESP8266 из любой точки мира | УдаленныйXY | ОП320 ЧМИ 2024, Lapkritis
Anonim
Kaip naudoti ESP8266 kaip žiniatinklio serverį
Kaip naudoti ESP8266 kaip žiniatinklio serverį

Sveiki, šiuo metu naudoju „Windows 10“, „NodeMCU 1.0“ir čia yra mano naudojamos programinės įrangos sąrašas ir diegimo vadovai, kurių laikiausi:

  • „Arduino IDE“
  • Papildomos plokštės, skirtos esp8266
  • Spiffas

Naudota biblioteka:

Websocket

Naudojau „NodeMCU“kaip serverį, kad galėčiau pateikti HTML failą, kurį sukūriau iš šios pamokos. Norėdami pateikti šį failą, įkėliau failą į „nodemcu“failų sistemą naudodami „Spiffs“. HTML failas siunčia duomenis į „nodemcu“, naudodamas žiniatinklio lizdus, kurie bus atspausdinti serijiniame monitoriuje. Greitas dvikryptis ryšys per serverio ir kliento žiniatinklio lizdus leido tai naudoti kaip nuotolinio valdymo pultą. Atlikdami šiuos veiksmus, nepaaiškinsiu, kaip veikia mano kodas

Prekės

NodeMCU

1 žingsnis: priverskite tai veikti

Padaryk, kad veiktų
Padaryk, kad veiktų
Padaryk, kad veiktų
Padaryk, kad veiktų
Padaryk, kad veiktų
Padaryk, kad veiktų

Štai kaip tai veikia

  1. Atsisiųskite pridėtą failą ir atidarykite failą mousebot.ino
  2. Eikite į eskizą> rodyti eskizų aplanką ir sukurkite naują aplanką pavadinimu data
  3. Išsaugokite šios instrukcijos html failą aplanke pavadinimu. Aš pavadinau savo „vairasvirte“
  4. Įsitikinkite, kad jūsų spiff jau veikia, eikite į įrankius ir pamatę „esp8266 eskizo duomenų įkėlimą“
  5. Įkelkite html failą į „nodemcu“spustelėdami „esp8266 eskizo duomenų įkėlimas“
  6. Įkėlę failą, įkelkite į „nodemcu“failą mousebot.ino, eidami į „arduino IDE“ir paspausdami „Ctrl U“

2 veiksmas: kaip veikia kodas

Pirmiausia įtraukiame bibliotekas, kurias naudos šis kodas

// kad ESP8266 galėtų prisijungti prie WIFI

#include #include #include // Leidžia ESP8266 veikti kaip serveriui #include // įgalina ryšį su serveriu ir klientu (jūsų prijungtu įrenginiu) #include #include // Norėdami atidaryti pakeistą failą nodemcu #include

Nustatykite esp8266 kaip žiniatinklio serverį, atidarytą 80 prievade. Uostai yra keliai, kuriais duomenys bus perduoti. Kaip serverio prievadas, jis nusiųs HTML failą klientui (prie jo prijungtoms sistemoms).

Pridedamas žiniatinklio lizdo ryšys naudojant 81 prievadą, kad būtų galima klausytis pranešimų iš kliento

„Websockets“turi parametrą num, WStype_t, naudingąją apkrovą ir dydį. Numeris nustato kliento numerį, naudingoji apkrova yra jo siunčiamas pranešimas, dydis - pranešimo ilgis, o „WStype_t“- skirtingiems įvykiams, pvz.

  • WStype_DISCONNECTED - atjungus klientą.
  • WStype_CONNECTED: - kai klientas prisijungia
  • WStype_TEXT - Gauti duomenys iš kliento

Priklausomai nuo įvykio tipo, atliekami įvairūs veiksmai, kurie čia komentuojami

void webSocketEvent (uint8_t num, WStype_t tipas, uint8_t * naudingoji apkrova, size_t ilgis) {

switch (type) {case WStype_DISCONNECTED: Serial.printf ("[%u] Atsijungta! / n", num); // spausdina duomenis į serijinio monitoriaus pertrauką; atvejis WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // gauna kliento IP Serial.printf ("[%u] Prisijungta iš%d.%d.%d.%d url:%s / n", num, ip [0], ip [1], ip [2], ip [3], naudingoji apkrova); webSocket.sendTXT (num, „Prisijungta“); // siunčia "conencted" į naršyklės konsolę} break; atvejis WStype_TEXT: Serial.printf ("[%u] Duomenys: %s / n", num, naudingoji apkrova); // išspausdina kliento numerį %u, o duomenis, gautus kaip eilutes, %s / n pertrauka;}}

3 veiksmas: nustatykite NODEMCU kaip serverį

nustato SSID ir slaptažodį, kuriuos naudosite prisijungdami prie jo vėliau

const char *ssid = "Pabandyk";

const char *slaptažodis = "12345678";

sąrankoje mes nurodome greitį, kuriuo mūsų nodemcu ir kompiuteris bendraus, kuris yra 115200.

void setup (void) {

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

nustatykite taip pat į true, žiūrėkite „Wi -Fi“diagnostikos išvestį serilos terminale

Serial.setDebugOutput (tiesa);

įjunkite failų sistemą

SPIFFS.begin ();

Anksčiau nustatykite „nodemcu“kaip prieigos tašką su „ssid“ir slaptažodžio pažeidimais ir išspausdinkite „nodemcu“, su kuriuo prisijungsite anksčiau, IP. pagal nutylėjimą jis yra 192.168.4.1

Serial.print ("Prieigos taško konfigūravimas …");

„WiFi.mode“(WIFI_AP); WiFi.softAP (ssid, slaptažodis); IPAddress myIP = WiFi.softAPIP (); Serial.print („AP IP adresas:“); Serial.println (myIP);

Inicijuokite žiniatinklio lizdą „nodemcu“, kuris yra pur serveris

webSocket.begin ();

Iškviečia funkciją webSocketEvent, kai įvyksta žiniatinklio lizdo įvykis.

webSocket.onEvent (webSocketEvent);

Norėdami atlikti derinimą, ant naujos eilutės išspausdinkite „WebSocket server started“. Taip nustatoma kodo eilutė, kurią „nodemcu“apdoroja

Serial.println („Paleistas„ WebSocket “serveris“);

kai klientas apsilanko 192.168.4.1, jis iškvies funkciją „handleFileRead“ir atsiųs su juo parametrų serverio URI, kuris šiuo atveju yra mūsų „nodemcu“informacija. Funkcija handleFileRead pateiks html failą iš failų sistemos „nodemcu“

server.onNotFound ( () {

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

jei jo nepavyksta rasti, bus rodoma „FileNotFound“

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

});

Pradeda serverį ir prasideda spausdinimo HTTP serveris.

server.begin (); Serial.println („HTTP serveris paleistas“);

Mūsų tuštumos cikle mes leidžiame serveriui nuolat tvarkyti kliento ir jo žiniatinklio lizdų ryšius taip:

void loop (void) {

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

4 veiksmas: įkelkite HTML failą

mes naudosime funkciją, pavadintą handleFileRead, kad atidarytume html failą iš failų sistemos „nodemcu“. jis grąžins loginę vertę, kad nustatytų, ar ji įkelta, ar ne.

Kai klientas atidaro „192.168.4.1/“, mes nustatome failo kelią į „/Joystick.html, mūsų failo pavadinimą duomenų aplanke

bool handleFileRead (eilutės kelias) {

Serial.println ("handleFileRead:" + kelias); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.egzistuoja (kelias)) {Failo failas = SPIFFS.open (kelias, „r“); size_t send = server.streamFile (failas, "text/html"); file.close (); grįžti tiesa; } return false; }

Patikrinkite, ar yra failo kelias „/Joystick.html“

if (SPIFFS.exists (kelias)) {

Jei jis yra, atidarykite kelią, kad jį perskaitytumėte, nurodytą „r“. Eikite čia daugiau tikslų.

Failo failas = SPIFFS.open (kelias, "r");

Siunčia failą į serverį kaip turinio tipas „text/html“

size_t send = server.streamFile (failas, "text/html");

uždaryti failą

file.close ();

funkcija handleFileRead grąžina true

grįžti tiesa;}

jei failo kelias neegzistuoja, funkcija handleFileRead grąžina klaidingą

grįžti tiesa; }

5 žingsnis: Išbandykite

Image
Image

Prisijunkite prie „nodeMCU“ir eikite į „192.168.4.1“ir išbandykite!:)

Rekomenduojamas: