Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
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
Zde jsou kroky, jak to funguje
- Stáhněte si přiložený soubor a otevřete soubor mousebot.ino
- Přejděte na skicu> zobrazit složku skici a vytvořte novou složku s názvem data
- Uložte soubor html z tohoto kurzu do složky s názvem. Svůj jsem pojmenoval „Joystick“
- 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“
- Nahrajte soubor html do nodemcu kliknutím na „Odeslat data skici esp8266“
- 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
Připojte se k nodeMCU a přejděte na „192.168.4.1“a zkuste to!:)