Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Përshëndetje, aktualisht po përdor Windows 10, NodeMCU 1.0 dhe këtu është lista e Softuerëve që kam përdorur dhe udhëzuesit e instalimit që kam ndjekur:
- Arduino IDE
- Pllaka shtesë për esp8266
- Spiff
Biblioteka e përdorur:
Uebfaqe
Kam përdorur NodeMCU si një server për të shërbyer një skedar HTML që kam bërë nga mësuesi. Për t'i shërbyer këtij skedari, e ngarkova skedarin në sistemin e skedarëve nodemcu duke përdorur Spiffs. Skedari HTML dërgon të dhëna në nodemcu duke përdorur rrjeta në internet për t'u shtypur në monitorin serik për këtë. Komunikimi i shpejtë dypalësh përmes rrjetave të uebit të serverit dhe klientit mundësoi që kjo të përdoret si telekomandë. Në hapat e mëposhtëm, nuk do të shpjegoj se si funksionon kodi im
Furnizimet
NodeMCU
Hapi 1: Bëjeni që të funksionojë
Këtu janë hapat se si funksionon
- Shkarkoni skedarin e bashkangjitur dhe hapni skedarin mousebot.ino
- Shkoni te skica> shfaqni skedarin e skicës dhe krijoni një dosje të re të quajtur të dhëna
- Ruani skedarin html nga ky tutorial në dosjen me emrin. Unë e quaj timen si "Joystick"
- Sigurohuni që gryka juaj është tashmë funksionale duke shkuar te mjetet dhe duke parë "ngarkimin e të dhënave të skicës esp8266"
- Ngarko skedarin html në nodemcu duke klikuar "ngarkimi i të dhënave të skicës esp8266"
- Pas ngarkimit të skedarit, ngarkoni në nodemcu skedarin mousebot.ino duke hyrë në arduino IDE dhe duke shtypur ctrl U
Hapi 2: Si funksionon Kodi
Së pari, ne përfshijmë bibliotekat që ky kod do të përdorë
// për të mundësuar që ESP8266 të lidhet me WIFI
#include #include #include // Mundëson që ESP8266 të veprojë si një server #include // mundëson komunikimin me serverin dhe klientin (pajisja juaj e lidhur) #include #include // Për të hapur skedarin e ngritur në nodemcu #include
Vendosni esp8266 si një server në internet i hapur në portën 80. Portet janë rrugë nëpër të cilat do të kalojnë të dhënat. Si një port server, do t'i dërgojë skedarin HTML klientit (deivimet e lidhura me të).
Shton një lidhje websocket duke përdorur portën 81 për të dëgjuar mesazhet nga klienti
Rrjetat e uebit kanë parametrin num, WStype_t, ngarkesën dhe madhësinë. Numri përcakton numrin numërues të klientit, ngarkesa është mesazhi që ai dërgon, madhësia është gjatësia e mesazhit dhe WStype_t është për ngjarje të ndryshme si p.sh.
- WStype_DISCONNECTED - në shkyçjen e një klienti.
- WStype_CONNECTED: - kur një klient lidhet
- WStype_TEXT - Marrë të dhëna nga klienti
Në varësi të llojit të ngjarjes, veprime të ndryshme bëhen dhe komentohen këtu
i pavlefshëm webSocketEvent (uint8_t num, lloji WStype_t, uint8_t * ngarkesa, madhësia_t gjatësia) {
switch (type) {case WStype_DISCONNECTED: Serial.printf ("
Hapi 3: Vendosni NODEMCU si Server
vendos ssid dhe fjalëkalimin që do të përdorni për t'u lidhur me të më vonë
const char *ssid = "Provo";
const char *fjalëkalim = "12345678";
në ngritjen, ne specifikojmë shkallën me të cilën do të komunikojë nodemcu dhe kompjuteri ynë, e cila është 115200.
konfigurimi i pavlefshëm (i pavlefshëm) {
Serial.filloj (115200); Serial.print ("\ n");
e vendosur në true gjithashtu shihni daljen diagnostikuese wifi në terminalin serila
Serial.setDebugOutput (e vërtetë);
initalizoni sistemin e skedarëve
SPIFFS.filloj ();
Konfiguroni nodemcu si një pikë aksesi me ssid dhe defiend të fjalëkalimit më herët dhe printon ip e nodemcu me të cilën do të lidheni më herët. si parazgjedhje është 192.168.4.1
Serial.print ("Konfigurimi i pikës së hyrjes …");
Modaliteti WiFi (WIFI_AP); WiFi.softAP (ssid, fjalëkalim); IPAdresa myIP = WiFi.softAPIP (); Serial.print ("Adresa IP e AP:"); Serial.println (myIP);
Iniconi rrjetën në internet në nodemcu, i cili është server pur
webSocket.begin ();
Thërret funksionin webSocketEvent kur ndodh një ngjarje websocket.
webSocket.onEvent (webSocketEvent);
Për korrigjimin, printoni "WebSocket server filloi" në një linjë të re. Kjo është për të përcaktuar linjën e kodit që nodemcu po përpunon
Serial.println ("Serveri WebSocket filloi.");
kur një klient viziton 192.168.4.1, ai do të thërrasë funksionin handleFileRead dhe do të dërgojë me të parametrin URI të serverit i cili në këtë rast është informacioni ynë nodemcu. Funksioni handleFileRead do t'i shërbejë skedarit html nga sistemi i skedarëve nodemcu
server.onNotFound ( () {
nëse (! handleFileRead (server.uri ()))
nëse nuk mund të gjendet do të shfaqë "FileNotFound"
server.send (404, "text/plain", "FileNotFound");
});
Fillon serveri dhe serveri i printimit HTTP filloi.
server.filloj (); Serial.println ("Serveri HTTP filloi");
Në lakun tonë të pavlefshëm, ne i mundësojmë serverit të trajtojë me kontinuitet klientin dhe komunikimet e tij në ueb, si më poshtë:
lak void (i pavlefshëm) {
server.handleClient (); webSocket.loop ();}
Hapi 4: Ngarko skedarin HTML
ne do të përdorim një funksion të quajtur handleFileRead për të hapur dhe skedarin html nga sistemi i skedarëve nodemcu. do të kthejë një vlerë boolean për të përcaktuar nëse është ngarkuar apo jo.
Kur "192.168.4.1/" është hapur nga klienti, ne vendosim rrugën e skedarit në "/Joystick.html, emri i skedarit tonë në dosjen e të dhënave
bool handleFileRead (String path) {
Serial.println ("handleFileRead:" + shteg); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.exists (path)) {File file = SPIFFS.open (path, "r"); size_t dërguar = server.streamFile (skedar, "tekst/html"); file.close (); kthehet e vërtetë; } kthimi false; }
Kontrolloni nëse ekziston rruga e skedarit "/Joystick.html"
nëse (SPIFFS.existon (shtegu)) {
Nëse ekziston, hapni shtegun me qëllim që ta lexoni atë të specifikuar me "r". Shkoni këtu për më shumë qëllime.
Skedari i skedarit = SPIFFS.open (rruga, "r");
Dërgon skedarin në server si me një lloj përmbajtje të "tekstit/html"
size_t dërguar = server.streamFile (skedar, "tekst/html");
mbyll dosjen
file.close ();
funksioni handleFileRead kthen true
kthehu e vërtetë;}
nëse shtegu i skedarit nuk ekziston, funksioni handleFileRead kthen false
kthehet e vërtetë; }
Hapi 5: Provojeni
Lidhuni me nodeMCU dhe shkoni te "192.168.4.1" dhe provojeni!:)