Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Salam, hazırda Windows 10, NodeMCU 1.0 istifadə edirəm və burada istifadə etdiyim proqramların və izlədiyim quraşdırma bələdçilərinin siyahısı:
- Arduino IDE
- Esp8266 üçün əlavə lövhələr
- Spiff
İstifadə olunan kitabxana:
Veb yuvası
NodeMCU -nu thistutorialdan hazırladığım bir HTML Faylına xidmət etmək üçün server olaraq istifadə etdim. Bu fayla xidmət etmək üçün Spiffs istifadə edərək faylı nodemcu fayl sisteminə yüklədim. HTML faylı, nodemcu -ya məlumatları seriyalı monitorda çap etmək üçün webocketlərdən istifadə edərək göndərir. Server və müştəri webocketləri vasitəsi ilə sürətli iki yönlü ünsiyyət bunun uzaqdan idarəetmə olaraq istifadə edilməsini təmin etdi. Növbəti addımlarda kodumun necə işlədiyini izah etməyəcəyəm
Təchizat
NodeMCU
Addım 1: Çalışın
İşdə necə işlədiyinə dair addımlar
- Əlavə edilmiş faylı yükləyin və mousebot.ino faylını açın
- Eskiz> eskiz qovluğunu göstər -ə gedin və data adlı yeni bir qovluq yaradın
- Html faylını bu təlimatdan adlanan qovluqda saxlayın. Mənə "Joystick" adını verdim
- Alətlərə gedərək "esp8266 eskiz məlumat yükləməsini" görərək spifinizin artıq işlək olduğundan əmin olun.
- "Esp8266 sketch data upload" düyməsinə basaraq html faylını nodemcu -ya yükləyin.
- Fayl yükləndikdən sonra, arduino IDE -ə keçərək ctrl U düyməsini basaraq mousebot.ino faylını nodemcu -ya yükləyin.
Addım 2: Kod necə işləyir
Əvvəlcə bu kodun istifadə edəcəyi kitabxanaları daxil edirik
// ESP8266 -nın WIFI -ə qoşulmasını təmin etmək üçün
#include #include #include // ESP8266 -nın server kimi fəaliyyət göstərməsini təmin edir #daxil edin // server və müştəri ilə əlaqə qurmağa imkan verir (əlaqəli cihazınız)
Esp8266 -nı 80 -ci portda açılan bir veb server olaraq təyin edin. Limanlar, məlumatların keçəcəyi yollardır. Bir server portu olaraq, HTML faylını müştəriyə göndərəcək (ona bağlı olan deivces).
Müştəridən gələn mesajları dinləmək üçün 81 portu istifadə edərək veb -yuva bağlantısı əlavə edir
Veb yuvalarında num, WStype_t, faydalı yük və ölçü parametrləri var. Num müştəri nömrəsini təyin edir, yükü göndərdiyi mesajdır, ölçüsü mesajın uzunluğudur və WStype_t kimi fərqli hadisələr üçündür.
- WStype_DISCONNECTED - müştəri ilə əlaqə kəsildikdə.
- WStype_CONNECTED: - müştəri qoşulduqda
- WStype_TEXT - Müştəridən alınan məlumatlar
Tədbirin növündən asılı olaraq burada müxtəlif hərəkətlər edilir və şərh olunur
etibarsız webSocketEvent (uint8_t num, WStype_t növü, uint8_t * faydalı yük, size_t uzunluğu) {
keçid (tip) {halda WStype_DISCONNECTED: Serial.printf ("[%u] Bağlantı kəsildi! / n", sayı); // məlumatları serial monitorun fasiləsinə yazdırır; halda WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // müştərinin IP ünvanını alır Serial.printf ("[%u]%d.%d.%d.%d url:%s / n", sayı, ip [0], ip [1], ip [2], ip [3], faydalı yük); webSocket.sendTXT (sayı, "Bağlandı"); // brauzer konsoluna "conencted" göndərir} break; halda WStype_TEXT: Serial.printf ("[%u] Məlumat: %s / n", sayı, yük); // müştəri nömrəsini %u -da yazır və %s -də sətirlər kimi alınan məlumatlar / n fasilə;}}
Addım 3: NODEMCU -nu Server olaraq təyin edin
daha sonra qoşulmaq üçün istifadə edəcəyiniz ssid və şifrəni təyin edir
const char *ssid = "Çalış";
const char *parol = "12345678";
qurulduqda, nodemcu və pc -nin ünsiyyət qurma sürətini təyin edirik, yəni 115200.
boş quraşdırma (boş) {
Serial.begin (115200); Serial.print ("\ n");
Doğru olaraq ayarlayın, serila terminalındakı wifi diaqnostik çıxışına baxın
Serial.setDebugOutput (doğru);
fayl sistemini işə salın
SPIFFS.begin ();
Nodemcu -nu daha əvvəl ssid və parolla bir giriş nöqtəsi olaraq qurun və əvvəllər əlaqə quracağınız nodemcu -nun ipini yazdırın. Varsayılan olaraq 192.168.4.1 -dir
Serial.print ("Giriş nöqtəsi konfiqurasiya olunur …");
WiFi rejimi (WIFI_AP); WiFi.softAP (ssid, parol); IPAddress myIP = WiFi.softAPIP (); Serial.print ("AP IP ünvanı:"); Serial.println (myIP);
İnternet serverini nodemcu -da işə salın
webSocket.begin ();
Bir webocket hadisəsi baş verdikdə webSocketEvent funksiyasını çağırır.
webSocket.onEvent (webSocketEvent);
Ayıklama üçün yeni bir sətirdə "WebSocket server başladı" yazın. Bu, nodemcu -nun işlədiyi kod xəttini təyin etmək üçündür
Serial.println ("WebSocket serveri işə salındı.");
müştəri 192.168.4.1 saytına daxil olduqda, handleFileRead funksiyasını çağıracaq və bu halda bizim nodemcu məlumatımız olan URI parametr serverini göndərəcək. HandleFileRead funksiyası nodemcu fayl sistemindən html faylına xidmət edəcək
server.onNotFound ( () {
əgər (! handleFileRead (server.uri ()))
tapılmazsa "FileNotFound" göstərəcək
server.send (404, "mətn/düz", "FileNotFound");
});
Server başlayır və HTTP serveri çap etməyə başladı.
server.begin (); Serial.println ("HTTP serveri işə salındı");
Boşluq döngəmizdə, serverin müştəri və veb -şəbəkə ünsiyyətlərini aşağıdakı kimi davam etdirməsini təmin edirik:
boşluq döngəsi (boş) {
server.handleClient (); webSocket.loop ();}
Addım 4: HTML faylını yükləyin
nodemcu fayl sistemindən html faylını açmaq üçün handleFileRead adlı bir funksiyadan istifadə edəcəyik. yüklənib yüklənmədiyini müəyyən etmək üçün bir boolean dəyər qaytaracaq.
"192.168.4.1/" müştəri tərəfindən açıldıqda fayl yolunu "/Joystick.html" olaraq təyin edirik, məlumat qovluğundakı faylımızın adı
bool handleFileRead (String yolu) {
Serial.println ("handleFileRead:" + yol); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.exists (yol)) {{Fayl faylı = SPIFFS.open (yol, "r"); size_t sent = server.streamFile (fayl, "text/html"); file.close (); doğru qayıtmaq; } false qaytar; }
"/Joystick.html" fayl yolunun olub olmadığını yoxlayın
if (SPIFFS.exists (yol)) {
Varsa, "r" hərfi ilə təyin olunan yolu oxumaq məqsədi ilə açın. Daha çox məqsəd üçün bura gedin.
Fayl faylı = SPIFFS.open (yol, "r");
"Mətn/html" məzmunlu bir şəkildə olduğu kimi faylı serverə göndərir
size_t sent = server.streamFile (fayl, "text/html");
faylı bağlayın
file.close ();
handleFileRead funksiyası doğru qaytarır
doğru qayıt;}
fayl yolu yoxdursa, handleFileRead funksiyası saxta qaytarır
doğru qayıtmaq; }
Addım 5: cəhd edin
NodeMCU -ya qoşulun və "192.168.4.1" -ə gedin və sınayın!:)