Mündəricat:

ESP8266 -ı veb -server olaraq necə istifadə etmək olar: 5 addım
ESP8266 -ı veb -server olaraq necə istifadə etmək olar: 5 addım

Video: ESP8266 -ı veb -server olaraq necə istifadə etmək olar: 5 addım

Video: ESP8266 -ı veb -server olaraq necə istifadə etmək olar: 5 addım
Video: Управляем адресными светодиодами на ESP32, прошивка WLED, применение в Home Assistant 2024, Iyul
Anonim
ESP8266 -ı veb server olaraq necə istifadə etmək olar
ESP8266 -ı veb server olaraq necə istifadə etmək olar

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

Çalışdırın
Çalışdırın
Çalışdırın
Çalışdırın
Çalışdırın
Çalışdırın

İşdə necə işlədiyinə dair addımlar

  1. Əlavə edilmiş faylı yükləyin və mousebot.ino faylını açın
  2. Eskiz> eskiz qovluğunu göstər -ə gedin və data adlı yeni bir qovluq yaradın
  3. Html faylını bu təlimatdan adlanan qovluqda saxlayın. Mənə "Joystick" adını verdim
  4. 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.
  5. "Esp8266 sketch data upload" düyməsinə basaraq html faylını nodemcu -ya yükləyin.
  6. 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

Image
Image

NodeMCU -ya qoşulun və "192.168.4.1" -ə gedin və sınayın!:)

Tövsiyə: