Talaan ng mga Nilalaman:

Paano Gumamit ng ESP8266 Bilang Webserver: 5 Hakbang
Paano Gumamit ng ESP8266 Bilang Webserver: 5 Hakbang

Video: Paano Gumamit ng ESP8266 Bilang Webserver: 5 Hakbang

Video: Paano Gumamit ng ESP8266 Bilang Webserver: 5 Hakbang
Video: Домашняя автоматизация: лампа переменного тока с использованием реле с NodeMCU D1 Mini через WiFi 2024, Nobyembre
Anonim
Paano Gumamit ng ESP8266 Bilang Webserver
Paano Gumamit ng ESP8266 Bilang Webserver

Kumusta, kasalukuyang gumagamit ako ng windows 10, NodeMCU 1.0 at narito ang listahan ng ginamit kong Software at mga gabay sa pag-install na sinundan ko:

  • Arduino IDE
  • Mga karagdagang board para sa esp8266
  • Spiff

Ginamit ang library:

Websocket

Ginamit ko ang NodeMCU bilang isang server upang maghatid ng isang HTML File na ginawa ko mula sa thistutorial. Upang maihatid ang file na ito, na-upload ko ang file sa nodemcu file system gamit ang Spiff. Nagpapadala ang file ng HTML ng data sa nodemcu gamit ang websockets upang mai-print sa serial monitor para dito. Ang mabilis na komunikasyon sa dalawang bidirectional sa pamamagitan ng websockets ng server at pinagana ng client na magamit bilang remote control. Sa mga sumusunod na hakbang, ipinapaliwanag kung paano gumagana ang aking code

Mga gamit

NodeMCU

Hakbang 1: Gawin Ito

Paganahin mo
Paganahin mo
Paganahin mo
Paganahin mo
Paganahin mo
Paganahin mo

Narito ang mga hakbang sa kung paano ito gumagana

  1. I-download ang nakalakip na file at buksan ang mousebot.ino file
  2. Pumunta sa sketch> ipakita ang sketch folder at gumawa ng isang bagong folder na pinangalanang data
  3. I-save ang html file mula sa tutorial na ito sa folder na pinangalanan. Pinangalanan ko ang akin bilang "Joystick"
  4. Tiyaking gumagana na ang iyong spiff sa pamamagitan ng pagpunta sa mga tool at nakikita ang "esp8266 sketch data upload"
  5. I-upload ang html file sa nodemcu sa pamamagitan ng pag-click sa "esp8266 sketch data upload"
  6. Pagkatapos mag-upload ng file, i-upload sa nodemcu ang mousebot.ino file sa pamamagitan ng oing sa arduino IDE at pagpindot sa ctrl U

Hakbang 2: Paano Gumagana ang Code

Una, isinasama namin ang mga aklatan na gagamitin ng code na ito

// upang paganahin ang ESP8266 upang kumonekta sa WIFI

#include #include #include // Pinapagana ang ESP8266 na kumilos bilang isang server #include // nagbibigay-daan sa komunikasyon sa server at sa kliyente (ang iyong conected device)

Itakda ang esp8266 bilang isang webserver na binuksan sa port 80. Ang mga port ay mga pathway na daanan ng data. Bilang isang port ng server, ipapadala nito ang HTML file sa client (ang deivces na konektado dito).

Nagdaragdag ng isang koneksyon sa websocket gamit ang port 81 upang makinig para sa mga mensahe mula sa client

Ang websockets ay may parameter na num, WStype_t, payload at laki. Tinutukoy ng num ang client numeber, ang payload ay ang mensahe na ipinadala nito, ang laki ay ang haba ng mensahe at ang WStype_t ay para sa magkakaibang mga kaganapan tulad ng

  • WStype_DISCONNected - sa pagdidiskonekta ng isang kliyente.
  • WStype_CONNected: - kapag kumonekta ang isang client
  • WStype_TEXT - Nakatanggap ng data mula sa client

Nakasalalay sa uri ng kaganapan iba't ibang mga pagkilos ay tapos na at nagkomento dito

walang bisa ang webSocketEvent (uint8_t num, uri ng WStype_t, uint8_t * payload, haba ng laki_t) {

switch (type) {case WStype_DISCONNected: Serial.printf ("[% u] Nakakonekta! / n", num); // naglilimbag ng data sa serial monitor break; kaso WStype_CONNected: {IPAddress ip = webSocket.remoteIP (num); // gets the IP of the client Serial.printf ("[% u] Connected from% d.% d.% d.% d url:% s / n", num, ip [0], ip [1], ip [2], ip [3], payload); webSocket.sendTXT (num, "Nakakonekta"); // nagpapadala ng "conencted" sa browser console} break; case WStype_TEXT: Serial.printf ("[% u] Data:% s / n", num, payload); // print ang client number sa% u at ang data na natanggap bilang mga string sa% s / n break;}}

Hakbang 3: Itakda ang NODEMCU Bilang Server

itinakda ang ssid at password na gagamitin mo upang kumonekta dito sa ibang pagkakataon

const char * ssid = "Subukan";

const char * password = "12345678";

sa set up, tinukoy namin ang rate kung saan ito ang aming nodemcu at pc ay makipag-usap, na kung saan ay 115200.

void setup (void) {

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

itakda sa totoo ring tingnan ang output ng diagnostic ng wifi sa serila terminal

Serial.setDebugOutput (totoo);

initaliaze ang filesystem

SPIFFS.begin ();

I-set up ang nodemcu bilang isang accesspoint na may ssid at password defiend nang mas maaga at i-print ang ip ng nodemcu na makakonekta ka nang mas maaga. sa pamamagitan ng default ito ay 192.168.4.1

Serial.print ("Pag-configure ng access point …");

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

Ipasimula ang websocket sa nodemcu, whcih ay pur server

webSocket.begin ();

Tawag sa pagpapaandar na webSocketEvent kapag nangyari ang isang kaganapan sa websocket.

webSocket.onEvent (webSocketEvent);

Para sa pag-debug, i-print ang "Nagsimula ang server ng WebSocket" sa isang bagong linya. Ito ay upang matukoy ang linya ng code na pinoproseso ng nodemcu

Serial.println ("Nagsimula ang server ng WebSocket.");

kapag ang isang kliyente ay bumisita sa 192.168.4.1, tatawag ito sa function handleFileRead at ipadala kasama nito ang parameter server URI na sa kasong ito ay ang aming impormasyon na nodemcu. Ihahatid ng pagpapaandar ng functionFileRead ang html file mula sa nodemcu file system

server.onNotFound ( () {

kung (! handleFileRead (server.uri ()))

kung hindi ito matagpuan makikita nito ang "FileNotFound"

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

});

Sinimulan ang server at i-print ang HTTP server na nagsimula.

server.begin (); Serial.println ("nagsimula ang HTTP server");

Sa aming void loop, pinapagana namin ang server na contiuosly pangasiwaan ang client at ang mga websockets na komunikasyon nito tulad ng sumusunod:

walang bisa loop (walang bisa) {

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

Hakbang 4: I-load ang HTML File

gagamitin namin ang isang pagpapaandar na pinangalanang handleFileRead upang buksan at ang html file mula sa nodemcu file system. ibabalik nito ang isang boolean na halaga upang matukoy kung na-load o hindi.

Kapag ang "192.168.4.1/" ay bukas ng kliyente itinakda namin ang file path sa "/Joystick.html, ang pangalan ng aming file sa folder ng data

bool handleFileRead (String path) {

Serial.println ("handleFileRead:" + path); kung (path.endsWith ("/")) path + = "Joystick.html"; kung (SPIFFS.exists (path)) {File file = SPIFFS.open (path, "r"); size_t sent = server.streamFile (file, "text / html"); file.close (); bumalik totoo; } bumalik na hindi totoo; }

Suriin kung ang file path na "/Joystick.html" ay mayroon

kung (SPIFFS.exists (path)) {

Kung mayroon ito, buksan ang landas na may isang layunin ng pagbabasa nito na tinukoy ng "r". Pumunta dito para sa higit pang mga layunin.

File file = SPIFFS.open (path, "r");

Ipinapadala ang file sa server tulad ng isang uri ng nilalaman ng "teksto / html"

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

isara ang file

file.close ();

ang function handleFileRead ay nagbabalik totoo

bumalik totoo;}

kung ang path ng file ay hindi umiiral, ang function handleFileRead ay nagbabalik ng mali

bumalik totoo; }

Hakbang 5: Subukan Ito

Image
Image

Kumonekta sa nodeMCU at pumunta sa "192.168.4.1" at subukan ito!:)

Inirerekumendang: