Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Bok, trenutno koristim Windows 10, NodeMCU 1.0 i evo popisa softvera koji sam koristio i vodiča za instalaciju koje sam slijedio:
- Arduino IDE
- Dodatne ploče za esp8266
- Spiff
Korištena biblioteka:
Websocket
Koristio sam NodeMCU kao poslužitelj za posluživanje HTML datoteke koju sam napravio s ovog vodiča. Da bih poslužio ovu datoteku, prenio sam je u datotečni sustav nodemcu koristeći Spiffs. HTML datoteka šalje podatke nodemcuu pomoću web -utičnica za ispis na serijskom monitoru. Brza dvosmjerna komunikacija putem web -utičnica poslužitelja i klijenta omogućila je da se to koristi kao daljinsko upravljanje. U sljedećim koracima ne bih objašnjavao kako moj kôd radi
Pribor
NodeMCU
Korak 1: Neka to funkcionira
Evo koraka kako to funkcionira
- Preuzmite priloženu datoteku i otvorite datoteku mousebot.ino
- Idite na skicu> prikaži mapu skice i napravite novu mapu s imenom data
- Spremite html datoteku iz ovog vodiča u mapu s imenom. Svoju sam nazvao "Joystick"
- Uvjerite se da je vaš ispis već funkcionalan, idite na alate i pogledajte "esp8266 prijenos podataka o skici"
- Prenesite html datoteku na nodemcu klikom na "esp8266 prijenos podataka o skici"
- Nakon prijenosa datoteke prenesite datoteku mousebot.ino na nodemcu tako što ćete otići na arduino IDE i pritisnuti ctrl U
Korak 2: Kako kod funkcionira
Prvo, uključujemo knjižnice koje će ovaj kôd koristiti
// za omogućavanje povezivanja ESP8266 na WIFI
#include #include #include // Omogućuje ESP8266 da djeluje kao poslužitelj #include // omogućuje komunikaciju s poslužiteljem i klijentom (vašim povezanim uređajem) #include #include // Za otvaranje datoteke s opcijama na nodemcu #include
Postavite esp8266 kao web poslužitelj otvoren na priključku 80. Portovi su putevi kroz koje će podaci prolaziti. Kao poslužiteljski port, poslat će HTML datoteku klijentu (uređaji povezani s njim).
Dodaje websocket vezu pomoću priključka 81 za preslušavanje poruka od klijenta
Websockets ima parametar num, WStype_t, korisni teret i veličinu. Broj određuje broj klijenta, korisni teret je poruka koju šalje, veličina je duljina poruke, a WStype_t za različite događaje, kao što je
- WStype_DISCONNECTED - o prekidu veze s klijentom.
- WStype_CONNECTED: - kada se klijent poveže
- WStype_TEXT - Primljeni podaci od klijenta
Ovisno o vrsti događaja, poduzimaju se različite radnje koje se ovdje komentiraju
void webSocketEvent (uint8_t num, tip WStype_t, uint8_t * korisni teret, size_t duljina) {
switch (type) {case WStype_DISCONNECTED: Serial.printf ("[%u] Prekinuto! / n", broj); // ispisuje podatke u prekid serijskog monitora; slučaj WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (broj); // dobiva IP klijenta Serial.printf ("[%u] Povezan s%d.%d.%d.%d url:%s / n", num, ip [0], ip [1], ip [2], ip [3], korisni teret); webSocket.sendTXT (broj, "Povezano"); // šalje "conencted" na konzolu preglednika} break; slučaj WStype_TEXT: Serial.printf ("[%u] Podaci: %s / n", broj, korisni teret); // ispisuje broj klijenta u %u i podatke primljene kao nizove u %s / n break;}}
Korak 3: Postavite NODEMCU kao poslužitelj
postavlja ssid i lozinku koje ćete koristiti za kasnije povezivanje s njim
const char *ssid = "Pokušaj";
const char *lozinka = "12345678";
pri postavljanju navodimo brzinu kojom će naši nodemcu i računalo komunicirati, a to je 115200.
void setup (void) {
Serial.begin (115200); Serial.print ("\ n");
postavljeno na true također pogledajte dijagnostički izlaz wifi na serila terminalu
Serial.setDebugOutput (true);
poništiti datotečni sustav
SPIFFS.begin ();
Postavite nodemcu kao pristupnu točku sa ssid -om i lozinkom definiranom ranije i ispisuje ip nodemcu -a s kojim ćete se ranije povezati. prema zadanim postavkama to je 192.168.4.1
Serial.print ("Konfiguriranje pristupne točke …");
WiFi.mode (WIFI_AP); WiFi.softAP (ssid, lozinka); IP adresa myIP = WiFi.softAPIP (); Serial.print ("AP IP adresa:"); Serial.println (myIP);
Inicijalizirajte websocket na nodemcu, koji je pur poslužitelj
webSocket.begin ();
Poziva funkciju webSocketEvent kada se dogodi događaj websocket -a.
webSocket.onEvent (webSocketEvent);
Za otklanjanje pogrešaka ispišite "WebSocket server pokrenut" na novom retku. Ovo služi za određivanje linije koda koju nodemcu obrađuje
Serial.println ("WebSocket poslužitelj pokrenut.");
kada klijent posjeti 192.168.4.1, pozvat će funkciju handleFileRead i poslati s njim URI poslužitelja parametara koji je u ovom slučaju naša informacija nodemcu. Funkcija handleFileRead posluživat će html datoteku iz datotečnog sustava nodemcu
server.onNotFound ( () {
if (! handleFileRead (server.uri ()))
ako se ne može pronaći, prikazat će se "FileNotFound"
server.send (404, "text/plain", "FileNotFound");
});
Pokreće poslužitelj i pokrenut je HTTP poslužitelj ispisa.
server.begin (); Serial.println ("HTTP poslužitelj pokrenut");
U našoj petlji void, poslužitelju omogućujemo da kontinuirano upravlja klijentom i njegovim web -utičnicama na sljedeći način:
void loop (void) {
server.handleClient (); webSocket.loop ();}
Korak 4: Učitajte HTML datoteku
koristit ćemo funkciju imena handleFileRead za otvaranje i html datoteku iz datotečnog sustava nodemcu. vratit će boolean vrijednosti kako bi utvrdio je li učitan ili nije.
Kad klijent otvori "192.168.4.1/", put datoteke postavimo na "/Joystick.html, naziv naše datoteke u podatkovnoj mapi"
bool handleFileRead (String path) {
Serial.println ("handleFileRead:" + put); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.exists (path)) {File file = SPIFFS.open (path, "r"); size_t sent = server.streamFile (datoteka, "tekst/html"); file.close (); return true; } return false; }
Provjerite postoji li datoteka "/Joystick.html"
if (SPIFFS.exists (path)) {
Ako postoji, otvorite stazu sa svrhom čitanja koja je navedena s "r". Idite ovdje u više svrha.
Datoteka datoteke = SPIFFS.open (put, "r");
Šalje datoteku na poslužitelj kao s vrstom sadržaja "text/html"
size_t sent = server.streamFile (datoteka, "tekst/html");
zatvorite datoteku
file.close ();
funkcija handleFileRead vraća vrijednost true
vrati true;}
ako put do datoteke ne postoji, funkcija handleFileRead vraća false
return true; }
Korak 5: Isprobajte
Povežite se s nodeMCU i idite na "192.168.4.1" i isprobajte!:)