Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
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
Mana bu qanday ishlashi haqida qadamlar
- Qo'shilgan faylni yuklab oling va mousebot.ino faylini oching
- Eskiz> sketch papkasini ko'rsatish -ga o'ting va ma'lumotlar nomli yangi papkani yarating
- Ushbu qo'llanmadan html faylini nomlangan papkada saqlang. Men o'zimni "Joystick" deb nomladim
- "Esp8266 eskiz ma'lumotlarini yuklash" ni ko'rish uchun asboblarga o'ting va sizning spiffingiz allaqachon ishlayotganligiga ishonch hosil qiling.
- HTML faylini nodemcu -ga "esp8266 eskiz ma'lumotlarini yuklash" tugmasini bosib yuklang.
- 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
NodeMCU -ga ulaning va "192.168.4.1" ga o'ting va harakat qilib ko'ring!:)