Tartalomjegyzék:

Az ESP8266 használata webszerverként: 5 lépés
Az ESP8266 használata webszerverként: 5 lépés

Videó: Az ESP8266 használata webszerverként: 5 lépés

Videó: Az ESP8266 használata webszerverként: 5 lépés
Videó: How to connect Esp 8266 wifi module with Arduino Uno 2024, November
Anonim
Az ESP8266 használata webszerverként
Az ESP8266 használata webszerverként

Szia! Jelenleg a Windows 10, NodeMCU 1.0 rendszert használom, és itt található az általam használt szoftverek listája és a telepítési útmutatók, amelyeket követtem:

  • Arduino IDE
  • További táblák az esp8266 készülékhez
  • Spiff

Használt könyvtár:

Websocket

A NodeMCU -t kiszolgálóként használtam az oktatóanyagból készített HTML fájl kiszolgálására. Ennek a fájlnak a kiszolgálásához feltöltöttem a fájlt a nodemcu fájlrendszerbe Spiffs használatával. A HTML -fájl adatokat küld a nodemcu -nak websocket segítségével, amelyet a soros monitorra kell nyomtatni. A gyors kétirányú kommunikáció a szerver és az ügyfél websocketjein keresztül lehetővé tette, hogy ezt távirányítóként használják. A következő lépések során nem kell elmagyaráznom, hogyan működik a kódom

Kellékek

NodeMCU

1. lépés: Működjön

Működjön
Működjön
Működjön
Működjön
Működjön
Működjön

Íme a lépések a működéshez

  1. Töltse le a csatolt fájlt, és nyissa meg a mousebot.ino fájlt
  2. Lépjen a vázlat> vázlat mappa megjelenítéséhez, és hozzon létre egy új mappát adatokkal
  3. Mentse el a html fájlt ebből az oktatóanyagból az elnevezett mappába. Az enyémet "joystick" -nak neveztem el
  4. Győződjön meg arról, hogy a spiff már működik, menjen az eszközökhöz, és tekintse meg az "esp8266 vázlatadatok feltöltését"
  5. Töltse fel a html fájlt a nodemcu -ba az "esp8266 vázlatadatok feltöltése" gombra kattintva
  6. A fájl feltöltése után töltse fel a nodemcu -ba az egérbot.ino fájlt az arduino IDE -re és a ctrl U megnyomásával

2. lépés: A kód működése

Először is tartalmazza azokat a könyvtárakat, amelyeket ez a kód használni fog

//, hogy az ESP8266 csatlakozzon a WIFI -hez

#include #include #include // Lehetővé teszi, hogy az ESP8266 kiszolgálóként működjön #include // lehetővé teszi a kommunikációt a szerverrel és az ügyféllel (az Ön csatlakoztatott eszközével) #include #include // A feltöltött fájl megnyitásához a nodemcu -ban #include

Állítsa be az esp8266 -ot webszerverként a 80 -as porton. A portok olyan útvonalak, amelyeken az adatok áthaladnak. Kiszolgálói portként elküldi a HTML -fájlt az ügyfélnek (a hozzá kapcsolódó eszközök).

Hozzáad egy webes aljzat kapcsolatot a 81 -es porton keresztül, hogy figyelje az ügyfél üzeneteit

A websockets paramétere a num, WStype_t, hasznos terhelés és méret. A szám határozza meg az ügyfél számát, a hasznos terhelés az elküldött üzenet, a méret az üzenet hossza, a WStype_t pedig különböző eseményekhez, például

  • WStype_DISCONNECTED - az ügyfél leválasztásakor.
  • WStype_CONNECTED: - amikor egy ügyfél csatlakozik
  • WStype_TEXT - Adatokat kapott az ügyféltől

Az esemény típusától függően különböző műveleteket hajtanak végre, amelyeket itt kommentálnak

void webSocketEvent (uint8_t szám, WStype_t típus, uint8_t * hasznos terhelés, size_t hossz) {

switch (type) {case WStype_DISCONNECTED: Serial.printf ("[%u] Leválasztva! / n", szám); // adatokat nyomtat a soros monitor szünetébe; eset WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (szám); // megkapja a Serial.printf ("[%u] kliens IP -címét ip [2], ip [3], hasznos terhelés); webSocket.sendTXT (szám, "Csatlakoztatva"); // "conencted" -t küld a böngésző konzolra} break; case WStype_TEXT: Serial.printf ("[%u] Adatok: %s / n", szám, hasznos terhelés); // kinyomtatja az ügyfélszámot %u -ban, és a karakterláncként kapott adatokat %s / n szünetben;}}

3. lépés: Állítsa be a NODEMCU -t szerverként

beállítja az SSID -t és a jelszót, amelyekkel később csatlakozhat

const char *ssid = "Próbálja ki";

const char *password = "12345678";

a beállításnál megadjuk azt a sebességet, amellyel a nodemcu és a számítógép kommunikálni fog, ami 115200.

void setup (void) {

Sorozat.kezdet (115200); Serial.print ("\ n");

igaz értékre is lásd a wifi diagnosztikai kimenetet a serila terminálon

Serial.setDebugOutput (igaz);

indítsa el a fájlrendszert

SPIFFS.begin ();

Állítsa be korábban a nodemcu -t hozzáférési pontként az ssid és a jelszó defiend használatával, és kinyomtatja a nodemcu ip -jét, amellyel korábban csatlakozni fog. alapértelmezés szerint 192.168.4.1

Serial.print ("Hozzáférési pont konfigurálása …");

WiFi.mód (WIFI_AP); WiFi.softAP (ssid, jelszó); IPAddress myIP = WiFi.softAPIP (); Serial.print ("AP IP -cím:"); Serial.println (myIP);

Inicializálja a websocketet a nodemcu -n, amely a pur szerver

webSocket.begin ();

Meghívja a webSocketEvent függvényt, amikor websocket esemény történik.

webSocket.onEvent (webSocketEvent);

Hibakereséshez nyomtassa ki a "WebSocket szerver elindult" új sorra. Ez határozza meg a kód sorát, amelyet a nodemcu feldolgoz

Serial.println ("A WebSocket szerver elindult.");

amikor az ügyfél meglátogatja a 192.168.4.1 -et, meghívja a handleFileRead függvényt, és elküldi vele a paraméter szerver URI -t, amely ebben az esetben a nodemcu információnk. A handleFileRead függvény kiszolgálja a html fájlt a nodemcu fájlrendszerből

server.onNotFound ( () {

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

ha nem találja, akkor megjelenik a "FileNotFound"

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

});

Kezdődik a szerver és a nyomtatási HTTP szerver elindult.

szerver.begin (); Serial.println ("HTTP szerver elindult");

Az üres ciklusunkban lehetővé tesszük, hogy a szerver folyamatosan kezelje az ügyfél és webes aljzatai közötti kommunikációt az alábbiak szerint:

void loop (void) {

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

4. lépés: Töltse be a HTML -fájlt

a handleFileRead nevű függvényt fogjuk használni a nyitáshoz és a html fájlt a nodemcu fájlrendszerből. visszaad egy logikai értéket annak megállapítására, hogy betöltött -e vagy sem.

Amikor az ügyfél megnyitja a "192.168.4.1/" fájlt, akkor a fájl elérési útját "/Joystick.html" -re állítjuk, fájlunk nevét az adatmappában

bool handleFileRead (String elérési út) {

Serial.println ("handleFileRead:" + elérési út); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS. létezik (elérési út)) {Fájl fájl = SPIFFS.open (elérési út, "r"); size_t küldött = szerver.streamFile (fájl, "text/html"); file.close (); return true; } return false; }

Ellenőrizze, hogy létezik -e a "/Joystick.html" fájl elérési útja

if (SPIFFS. létezik (elérési út)) {

Ha létezik, nyissa meg az elérési utat az "r" által meghatározott céllal. Menjen ide több célból.

Fájlfájl = SPIFFS.open (elérési út, "r");

Elküldi a fájlt a szerverre, mint "text/html" tartalomtípussal

size_t küldött = szerver.streamFile (fájl, "text/html");

zárja be a fájlt

file.close ();

a handleFileRead függvény igaz értéket ad vissza

igaz igaz;}

ha a fájl elérési útja nem létezik, a handleFileRead függvény hamis értéket ad vissza

return true; }

5. lépés: Próbáld ki

Image
Image

Csatlakozzon a nodeMCU -hoz, és menjen a "192.168.4.1" oldalra, és próbálja ki!:)

Ajánlott: