İçindekiler:

ESP8266 Web Sunucusu Olarak Nasıl Kullanılır: 5 Adım
ESP8266 Web Sunucusu Olarak Nasıl Kullanılır: 5 Adım

Video: ESP8266 Web Sunucusu Olarak Nasıl Kullanılır: 5 Adım

Video: ESP8266 Web Sunucusu Olarak Nasıl Kullanılır: 5 Adım
Video: ESP8266 NodeMCU Nedir, Nasıl Kullanılır? Örnek Web Server Projesi ve Arduino ile Kıyaslama 2024, Kasım
Anonim
ESP8266 Web Sunucusu Olarak Nasıl Kullanılır
ESP8266 Web Sunucusu Olarak Nasıl Kullanılır

Merhaba, şu anda Windows 10, NodeMCU 1.0 kullanıyorum ve kullandığım Yazılımların listesi ve takip ettiğim kurulum kılavuzları:

  • Arduino IDE'si
  • esp8266 için ek kartlar
  • sivrisinek

Kullanılan kitaplık:

Web yuvası

Bu öğreticiden yaptığım bir HTML Dosyasını sunmak için NodeMCU'yu sunucu olarak kullandım. Bu dosyayı sunmak için dosyayı Spiffs kullanarak nodemcu dosya sistemine yükledim. Bunun için HTML dosyası, seri monitörde yazdırılacak websocket'leri kullanarak verileri nodemcu'ya gönderir. Sunucu ve istemcinin websocket'leri üzerinden hızlı çift yönlü iletişim, bunun uzaktan kumanda olarak kullanılmasını sağlamıştır. Aşağıdaki adımlarda, kodumun nasıl çalıştığını açıklayacağım

Gereçler

DüğümMCU

Adım 1: Çalışın

Çalışmasını sağla
Çalışmasını sağla
Çalışmasını sağla
Çalışmasını sağla
Çalışmasını sağla
Çalışmasını sağla

İşte nasıl çalıştığına dair adımlar

  1. Ekli dosyayı indirin ve mousebot.ino dosyasını açın
  2. Eskiz> çizim klasörünü göster'e gidin ve data adında yeni bir klasör oluşturun
  3. Bu eğitimdeki html dosyasını adlı klasöre kaydedin. Benimkine "Joystick" adını verdim.
  4. Araçlara giderek ve "esp8266 çizim verisi yüklemesini" görerek spiff'inizin zaten işlevsel olduğundan emin olun.
  5. "esp8266 çizim verisi yükleme" seçeneğine tıklayarak html dosyasını nodemcu'ya yükleyin
  6. Dosyayı yükledikten sonra mousebot.ino dosyasını arduino IDE'ye tıklayıp ctrl U tuşuna basarak nodemcu'ya yükleyin.

2. Adım: Kod Nasıl Çalışır?

İlk olarak, bu kodun kullanacağı kütüphaneleri ekliyoruz.

//ESP8266'nın WIFI'a bağlanmasını sağlamak için

#include #include #include //ESP8266'nın bir sunucu olarak çalışmasını sağlar #include //sunucu ve istemci (bağlı aygıtınız) ile iletişimi sağlar #include #include //Yüklenen dosyayı düğümde açmak için #include

esp8266'yı 80 numaralı bağlantı noktasında açılan bir web sunucusu olarak ayarlayın. Bağlantı noktaları, verilerin geçeceği yollardır. Sunucu portu olarak, HTML dosyasını istemciye (ona bağlı cihazlar) gönderir.

İstemciden gelen mesajları dinlemek için 81 numaralı bağlantı noktasını kullanarak bir websocket bağlantısı ekler

Web yuvaları, num, WStype_t, yük ve boyut parametresine sahiptir. Sayı, istemci numarasını belirler, yük, gönderdiği mesajdır, boyut, mesajın uzunluğudur ve WStype_t, aşağıdaki gibi farklı olaylar içindir.

  • WStype_DISCONNECTED - bir istemcinin bağlantısı kesildiğinde.
  • WStype_CONNECTED: - bir istemci bağlandığında
  • WStype_TEXT - İstemciden alınan veriler

Etkinlik türüne bağlı olarak farklı eylemler yapılır ve burada yorumlanır

void webSocketEvent(uint8_t num, WStype_t türü, uint8_t * yük, size_t uzunluğu) {

switch (type) { case WStype_DISCONNECTED: Serial.printf("[%u] Bağlantı Kesildi!\n", num); // verileri seri monitör kesintisine yazdırır; durum WStype_CONNECTED: { IPAdresi ip = webSocket.remoteIP(num); //istemcinin IP'sini alır Serial.printf("[%u] %d.%d.%d.%d url'den bağlandı: %s\n", num, ip[0], ip[1], ip[2], ip[3], yük); webSocket.sendTXT(num, "Bağlandı"); // "bağlı"yı tarayıcı konsoluna gönderir } break; case WStype_TEXT: Serial.printf("[%u] Veri: %s\n", num, payload); // istemci numarasını %u olarak yazdırır ve alınan verileri %s\n sonunda dizeler olarak yazdırır;}}

Adım 3: NODEMCU'yu Sunucu Olarak Ayarlayın

daha sonra bağlanmak için kullanacağınız ssid ve şifreyi ayarlar

const char *ssid = "Dene";

const karakter *şifre = "12345678";

Kurulumda nodemcu ve pc'mizin haberleşeceği hızı 115200 olarak belirtiyoruz.

geçersiz kurulum(void){

Seri.başla(115200); Seri.print("\n");

true olarak ayarlayın, serila terminalindeki wifi tanı çıkışını da görün

Serial.setDebugOutput(true);

dosya sistemini başlat

SPIFFS.begin();

Nodemcu'yu daha önce ssid ve password defiend ile bir erişim noktası olarak ayarlayın ve daha önce bağlanacağınız nodemcu'nun ip'sini yazdırır. varsayılan olarak 192.168.4.1'dir

Serial.print("Erişim noktası yapılandırılıyor…");

WiFi.mode(WIFI_AP); WiFi.softAP(ssid, şifre); IPAdresi myIP = WiFi.softAPIP(); Serial.print("AP IP adresi: "); Seri.println(myIP);

Pur server olan nodemcu'da websocket'i başlat

webSocket.begin();

Bir websocket olayı meydana geldiğinde webSocketEvent işlevini çağırır.

webSocket.onEvent(webSocketEvent);

Hata ayıklama için "WebSocket sunucusu başlatıldı" ifadesini yeni bir satıra yazdırın. Bu, nodemcu'nun işlediği kod satırını belirlemek içindir.

Serial.println("WebSocket sunucusu başlatıldı.");

bir istemci 192.168.4.1'i ziyaret ettiğinde, handleFileRead işlevini çağıracak ve onunla birlikte bu durumda bizim nodemcu bilgimiz olan parametre sunucusu URI'sini gönderecektir. HandleFileRead işlevi, nodemcu dosya sisteminden html dosyasını sunacaktır.

server.onNotFound((){

if(!handleFileRead(server.uri()))

bulunamazsa "FileNotFound" gösterecektir.

server.send(404, "metin/düz", "FileNotFound");

});

Sunucuyu başlatır ve HTTP sunucusu yazdırılır.

server.begin(); Serial.println("HTTP sunucusu başlatıldı");

Void döngümüzde, sunucunun istemci ve websockets iletişimlerini aşağıdaki gibi sürekli olarak işlemesini sağlıyoruz:

geçersiz döngü(void){

server.handleClient(); webSocket.loop();}

4. Adım: HTML Dosyasını Yükleyin

Açmak için handleFileRead adlı bir işlev ve nodemcu dosya sisteminden html dosyasını kullanacağız. yüklenip yüklenmediğini belirlemek için bir boole değeri döndürür.

İstemci tarafından "192.168.4.1/" açıldığında dosya yolunu "/Joystick.html olarak ayarlıyoruz, data klasöründeki dosyamızın adı

bool handleFileRead(Dize yolu){

Serial.println("handleFileRead: " + yol); if(path.endsWith("/")) path += "Joystick.html"; if(SPIFFS.exists(path)){ Dosya dosyası = SPIFFS.open(path, "r"); size_t gönderilen = server.streamFile(dosya, "metin/html"); dosya.kapat(); true döndür; } false döndür; }

"/Joystick.html" dosya yolunun mevcut olup olmadığını kontrol edin

if(SPIFFS.exists(yol)){

Varsa, "r" ile belirtilen yolu okumak amacıyla açın. Daha fazla amaç için buraya gidin.

Dosya dosyası = SPIFFS.open(yol, "r");

Dosyayı "text/html" içerik türünde olduğu gibi sunucuya gönderir

size_t gönderilen = server.streamFile(dosya, "metin/html");

dosyayı kapat

dosya.kapat();

handleFileRead işlevi true değerini döndürür

doğru döndür;}

dosya yolu yoksa, handleFileRead işlevi false döndürür

true döndür; }

Adım 5: Deneyin

Image
Image

nodeMCU'ya bağlanın ve "192.168.4.1"e gidin ve deneyin!:)

Önerilen: