Mundarija:

ESP8266 -ni veb -server sifatida qanday ishlatish kerak: 5 qadam
ESP8266 -ni veb -server sifatida qanday ishlatish kerak: 5 qadam

Video: ESP8266 -ni veb -server sifatida qanday ishlatish kerak: 5 qadam

Video: ESP8266 -ni veb -server sifatida qanday ishlatish kerak: 5 qadam
Video: «Ilmiy loyihalarni grant asosida moliyalashtirish» mavzusidagi press-konferentsiya oʼtkazildi 2024, Noyabr
Anonim
ESP8266 -ni veb -server sifatida qanday ishlatish kerak
ESP8266 -ni veb -server sifatida qanday ishlatish kerak

Salom, men hozirda Windows 10, NodeMCU 1.0 dan foydalanmoqdaman va bu erda men ishlatgan dasturiy ta'minot va o'rnatish qo'llanmalarining ro'yxati:

  • Arduino IDE
  • Esp8266 uchun qo'shimcha taxtalar
  • Spiff

Foydalanilgan kutubxona:

Veb -rozetka

Men NodeMCU -ni server sifatida HTML -faylga xizmat qilish uchun ishlatardim. Bu faylga xizmat ko'rsatish uchun, faylni Spiffs yordamida nodemcu fayl tizimiga yukladim. HTML -fayl nodemcu -ga ma'lumotlarni ketma -ket monitorda chop etish uchun veb -rozetkalar yordamida yuboradi, server va mijozning veb -rozetkalari orqali tezkor ikki tomonlama aloqa uni masofadan boshqarish pulti sifatida ishlatishga imkon berdi. Keyingi qadamlarda, mening kodim qanday ishlashini tushuntirmayman

Ta'minotlar

NodeMCU

1 -qadam: uni ishga soling

Ishlang
Ishlang
Ishlang
Ishlang
Ishlang
Ishlang

Mana bu qanday ishlashi haqida qadamlar

  1. Qo'shilgan faylni yuklab oling va mousebot.ino faylini oching
  2. Eskiz> sketch papkasini ko'rsatish -ga o'ting va ma'lumotlar nomli yangi papkani yarating
  3. Ushbu qo'llanmadan html faylini nomlangan papkada saqlang. Men o'zimni "Joystick" deb nomladim
  4. "Esp8266 eskiz ma'lumotlarini yuklash" ni ko'rish uchun asboblarga o'ting va sizning spiffingiz allaqachon ishlayotganligiga ishonch hosil qiling.
  5. HTML faylini nodemcu -ga "esp8266 eskiz ma'lumotlarini yuklash" tugmasini bosib yuklang.
  6. Fayl yuklangandan so'ng, arduino IDE -ga o'ting va ctrl U tugmachasini bosib mousebot.ino faylini nodemcu -ga yuklang.

2 -qadam: Kod qanday ishlaydi

Birinchidan, biz ushbu kod ishlatadigan kutubxonalarni o'z ichiga olamiz

// ESP8266 -ni WIFI -ga ulanishini yoqish uchun

#include #include #include // ESP8266 -ni server vazifasini bajaradi #include // server va mijoz bilan aloqa o'rnatadi (sizning ulangan qurilmangiz) #include #include // nodemcu -da yuklangan faylni ochish uchun #include

Esp8266 -ni 80 -portda ochilgan veb -server sifatida o'rnating. Portlar - bu ma'lumotlar o'tadigan yo'llar. Server porti sifatida u HTML faylini mijozga yuboradi (unga ulangan ulanishlar).

Mijozdan kelgan xabarlarni tinglash uchun 81 -port yordamida tarmoqqa ulanish qo'shiladi

Veb -soketlarda num, WStype_t, yuk hajmi va hajmi parametrlari mavjud. Raqam mijozning raqamini aniqlaydi, yuk - bu yuboriladigan xabar, hajmi - xabarning uzunligi va WStype_t - turli hodisalar uchun.

  • WStype_DISCONNECTED - mijozni uzishda.
  • WStype_CONNECTED: - mijoz ulanganda
  • WStype_TEXT - Mijozdan olingan ma'lumotlar

Voqealar turiga qarab, bu erda har xil harakatlar bajariladi va sharhlanadi

yaroqsiz webSocketEvent (uint8_t num, WStype_t turi, uint8_t * yuk hajmi, size_t uzunligi) {

switch (type) {case WStype_DISCONNECTED: Serial.printf ("[%u] uzilgan! / n", son); // ma'lumotlarni ketma -ket monitor uzilishida chop etadi; WStype_CONNECTED holati: {IPAddress ip = webSocket.remoteIP (raqam); // mijozning IP -manzilini oladi Serial.printf ("[%u]%d.%d.%d.%d url:%s / n", raqam, ip [0], ip [1], ip [2], ip [3], yuk); webSocket.sendTXT (raqam, "Ulangan"); // "conencted" ni brauzer konsoliga yuboradi} break; WStype_TEXT holati: Serial.printf ("[%u] Ma'lumotlar: %s / n", son, yuk); // mijoz raqamini %u da chop etadi va %s qatorida olingan ma'lumotlar / n tanaffus;}}

3 -qadam: NODEMCU -ni server sifatida o'rnating

keyinroq ulanish uchun foydalanadigan ssid va parolni o'rnatadi

const char *ssid = "Sinab ko'ring";

const char *parol = "12345678";

O'rnatishda biz nodemcu va kompyuterning aloqa tezligini aniqlaymiz - bu 115200.

bekor o'rnatish (bekor) {

Serial.begin (115200); Serial.print ("\ n");

"rost" ga sozlang, serila terminalidagi wifi diagnostika chiqishini ko'ring

Serial.setDebugOutput (rost);

fayl tizimini ishga tushiring

SPIFFS.begin ();

Nodemcu -ni kirish nuqtasi sifatida ssid va parolni oldindan belgilab qo'ying va siz ilgari ulanadigan nodemcu -ning ipini chop eting. sukut bo'yicha bu 192.168.4.1

Serial.print ("Kirish nuqtasi sozlanmoqda …");

WiFi rejimi (WIFI_AP); WiFi.softAP (ssid, parol); IPAddress myIP = WiFi.softAPIP (); Serial.print ("AP IP -manzili:"); Serial.println (myIP);

Veb -soketni nodemcu -da ishga tushiring, bu faqat server

webSocket.begin ();

Veb -sayt hodisasi yuz berganda webSocketEvent funktsiyasini chaqiradi.

webSocket.onEvent (webSocketEvent);

Nosozliklarni tuzatish uchun "WebSocket server ishga tushdi" ni yangi qatorga chop eting. Bu nodemcu ishlayotgan kod qatorini aniqlash uchun

Serial.println ("WebSocket serveri ishga tushdi.");

mijoz 192.168.4.1 ga kirganda, u handleFileRead funktsiyasini chaqiradi va u bilan URI parametr serverini yuboradi, bu holda bu bizning nodemcu ma'lumotimizdir. HandleFileRead funktsiyasi nodemcu fayl tizimidagi html faylga xizmat qiladi

server.onNotFound ( () {

agar (! handleFileRead (server.uri ()))

Agar topilmasa, "FileNotFound" ko'rsatiladi

server.send (404, "matn/oddiy", "FileNotFound");

});

Serverni ishga tushiradi va HTTP serverini ishga tushiradi.

server.begin (); Serial.println ("HTTP -server ishga tushdi");

Bo'sh vaqtimizda biz serverga mijoz va uning veb -portlari haqidagi xabarlarni doimiy ravishda boshqarishga imkon beramiz:

bo'sh halqa (bo'sh) {

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

4 -qadam: HTML faylini yuklang

nodemcu fayl tizimidan html faylini ochish uchun handleFileRead nomli funktsiyadan foydalanamiz. u yuklangan yoki yuklanmaganligini aniqlash uchun qiymat booleanini qaytaradi.

"192.168.4.1/" mijoz tomonidan ochilganda, biz fayl yo'lini ma'lumotlar jildidagi "/Joystick.html" ga o'rnatamiz.

bool handleFileRead (String yo'l) {

Serial.println ("handleFileRead:" + yo'l); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.exists (path)) {{Fayl fayli = SPIFFS.open (yo'l, "r"); size_t sent = server.streamFile (fayl, "matn/html"); file.close (); haqiqatga qaytish; } false qaytarish; }

"/Joystick.html" fayl yo'li mavjudligini tekshiring

if (SPIFFS.exists (yo'l)) {

Agar u mavjud bo'lsa, uni o'qish uchun "r" bilan belgilangan yo'lni oching. Ko'proq maqsadlar uchun bu erga boring.

Fayl fayli = SPIFFS.open (yo'l, "r");

Faylni "text/html" tarkibidagi kabi serverga yuboradi.

size_t sent = server.streamFile (fayl, "matn/html");

faylni yoping

file.close ();

handleFileRead funktsiyasi rostni qaytaradi

haqiqatni qaytarish;}

agar fayl yo'li bo'lmasa, handleFileRead funktsiyasi false qaytaradi

haqiqatga qaytish; }

5 -qadam: harakat qilib ko'ring

Image
Image

NodeMCU -ga ulaning va "192.168.4.1" ga o'ting va harakat qilib ko'ring!:)

Tavsiya: