Obsah:

Jak používat ESP8266 jako webový server: 5 kroků
Jak používat ESP8266 jako webový server: 5 kroků

Video: Jak používat ESP8266 jako webový server: 5 kroků

Video: Jak používat ESP8266 jako webový server: 5 kroků
Video: Úvod do desky NodeMCU ESP8266 WiFi Development s příkladem klienta HTTP 2024, Červenec
Anonim
Jak používat ESP8266 jako webový server
Jak používat ESP8266 jako webový server

Ahoj, aktuálně používám Windows 10, NodeMCU 1.0 a zde je seznam softwaru, který jsem použil, a instalační příručky, které jsem sledoval:

  • Arduino IDE
  • Další desky pro esp8266
  • Spiff

Použitá knihovna:

Websocket

Použil jsem NodeMCU jako server k obsluze souboru HTML, který jsem vytvořil z tohoto výukového programu. Aby tento soubor sloužil, nahrál jsem soubor do systému souborů nodemcu pomocí Spiffs. Soubor HTML odesílá data do nodemcu pomocí webových socketů, které mají být vytištěny na sériovém monitoru. Rychlá obousměrná komunikace prostřednictvím webových soketů serveru a klienta umožnila toto použít jako dálkové ovládání. V následujících krocích vysvětlíme, jak můj kód funguje

Zásoby

NodeMCU

Krok 1: Zajistěte, aby to fungovalo

Zprovoznit
Zprovoznit
Zprovoznit
Zprovoznit
Zprovoznit
Zprovoznit

Zde jsou kroky, jak to funguje

  1. Stáhněte si přiložený soubor a otevřete soubor mousebot.ino
  2. Přejděte na skicu> zobrazit složku skici a vytvořte novou složku s názvem data
  3. Uložte soubor html z tohoto kurzu do složky s názvem. Svůj jsem pojmenoval „Joystick“
  4. Zajistěte, aby váš nástroj byl již funkční, přejděte na nástroje a podívejte se na „nahrání dat skici esp8266“
  5. Nahrajte soubor html do nodemcu kliknutím na „Odeslat data skici esp8266“
  6. Po nahrání souboru nahrajte do souboru nodemcu soubor mousebot.ino tak, že přejdete do arduino IDE a stisknete ctrl U

Krok 2: Jak kód funguje

Nejprve zahrneme knihovny, které tento kód použije

// pro povolení připojení ESP8266 k WIFI

#include #include #include // Umožňuje ESP8266 fungovat jako server #include // umožňuje komunikaci se serverem a klientem (vaším připojeným zařízením) #include #include // Chcete -li otevřít aktualizovaný soubor na nodemcu #include

Nastavte esp8266 jako webový server otevřený na portu 80. Porty jsou cesty, kterými budou data procházet. Jako port serveru odešle soubor HTML klientovi (zařízení, která jsou k němu připojena).

Přidá připojení websocket pomocí portu 81 pro naslouchání zpráv od klienta

Websockety mají parametr num, WStype_t, užitečné zatížení a velikost. Číslo určuje číslo klienta, užitečné zatížení je zpráva, kterou odesílá, velikost je délka zprávy a WStype_t je pro různé události, jako je

  • WStype_DISCONNECTED - při odpojení klienta.
  • WStype_CONNECTED: - když se klient připojí
  • WStype_TEXT - přijatá data od klienta

V závislosti na typu události se provádějí různé akce, které jsou zde komentovány

neplatné webSocketEvent (uint8_t num, WStype_t typ, uint8_t * užitečné zatížení, size_t délka) {

switch (type) {case WStype_DISCONNECTED: Serial.printf ("[%u] Disconnected! / n", num); // vytiskne data na konec sériového monitoru; případ WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // získá IP klienta Serial.printf ("[%u] Připojeno z%d.%d.%d.%d URL:%s / n", num, ip [0], ip [1], ip [2], ip [3], užitečné zatížení); webSocket.sendTXT (num, "Connected"); // odešle "conencted" do konzoly prohlížeče} break; případ WStype_TEXT: Serial.printf ("[%u] Data: %s / n", počet, užitečné zatížení); // vytiskne číslo klienta v %u a data přijatá jako řetězce v %s / n break;}}

Krok 3: Nastavte NODEMCU jako server

nastaví ssid a heslo, které se k němu budete později připojovat

const char *ssid = "Zkuste";

const char *heslo = "12345678";

při nastavení specifikujeme rychlost, jakou budou naše nodemcu a pc komunikovat, což je 115200.

neplatné nastavení (neplatné) {

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

nastaveno na hodnotu true, podívejte se také na diagnostický výstup wifi na terminálu serila

Serial.setDebugOutput (true);

inicializujte souborový systém

SPIFFS.begin ();

Nastavte nodemcu jako přístupový bod s ssid a heslem defiend dříve a vytiskne IP nodemcu, se kterým se dříve spojíte. standardně je to 192.168.4.1

Serial.print ("Konfigurace přístupového bodu …");

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

Inicializujte websocket na nodemcu, což je pur server

webSocket.begin ();

Volá funkci webSocketEvent, když dojde k události websocket.

webSocket.onEvent (webSocketEvent);

Pro ladění vytiskněte „WebSocket server spuštěn“na nový řádek. Toto má určit řádek kódu, který nodemcu zpracovává

Serial.println ("Server WebSocket spuštěn.");

když klient navštíví 192.168.4.1, zavolá funkci handleFileRead a odešle s ní identifikátor URI serveru parametrů, což jsou v tomto případě naše informace o nodemcu. Funkce handleFileRead bude obsluhovat soubor html ze systému souborů nodemcu

server.onNotFound ( () {

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

pokud jej nelze najít, zobrazí se „FileNotFound“

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

});

Spustí server a spustí se tisk HTTP serveru.

server.begin (); Serial.println ("HTTP server spuštěn");

Na naší prázdné smyčce umožňujeme serveru nepřetržitě zpracovávat komunikaci s klienty a jeho webovými sokety následujícím způsobem:

void loop (void) {

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

Krok 4: Načtěte soubor HTML

k otevření použijeme funkci s názvem handleFileRead a soubor html ze systému souborů nodemcu. vrátí logickou hodnotu, aby určil, zda je načten nebo ne.

Když klient otevře „192.168.4.1/“, nastavíme cestu k souboru na „/Joystick.html, název našeho souboru v datové složce

bool handleFileRead (cesta k řetězci) {

Serial.println ("handleFileRead:" + cesta); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.exists (cesta)) {Soubor souboru = SPIFFS.open (cesta, "r"); size_t sent = server.streamFile (soubor, "text/html"); file.close (); return true; } return false; }

Zkontrolujte, zda existuje cesta k souboru „/Joystick.html“

if (SPIFFS.exists (cesta)) {

Pokud existuje, otevřete cestu za účelem jejího načtení, která je určena písmenem „r“. Přejděte sem pro další účely.

Soubor souboru = SPIFFS.open (cesta, "r");

Odešle soubor na server jako u typu obsahu „text/html“

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

zavřete soubor

file.close ();

funkce handleFileRead vrací true

vrátit true;}

pokud cesta k souboru neexistuje, funkce handleFileRead vrací false

return true; }

Krok 5: Zkuste to

Image
Image

Připojte se k nodeMCU a přejděte na „192.168.4.1“a zkuste to!:)

Doporučuje: