Мазмуну:

ESP8266ны веб -сервер катары кантип колдонуу керек: 5 кадам
ESP8266ны веб -сервер катары кантип колдонуу керек: 5 кадам

Video: ESP8266ны веб -сервер катары кантип колдонуу керек: 5 кадам

Video: ESP8266ны веб -сервер катары кантип колдонуу керек: 5 кадам
Video: ESP8266 Project: How to control 2 AC bulb or load using 2 Relay with NodeMCU and D1 Mini over WiFi 2024, Ноябрь
Anonim
ESP8266ды веб -сервер катары кантип колдонуу керек
ESP8266ды веб -сервер катары кантип колдонуу керек

Саламатсызбы, мен учурда Windows 10, NodeMCU 1.0 колдонуп жатам жана бул жерде мен колдонгон Программалык камсыздоонун жана орнотуу боюнча көрсөтмөлөрдүн тизмеси:

  • Arduino IDE
  • Esp8266 үчүн кошумча такталар
  • Spiff

Колдонулган китепкана:

Websocket

Мен NodeMCUду thistutorialден жасалган HTML файлын тейлөө үчүн сервер катары колдондум. Бул файлды тейлөө үчүн, мен Spiffs аркылуу файлды nodemcu файл системасына жүктөдүм. HTML файлы nodemcu'го дайындарды сериялык монитордо басып чыгаруу үчүн веб -сокеттерди колдонуп жөнөтөт. Бул сервердин жана кардардын вебсокеттери аркылуу эки тараптуу тез байланыш алыстан башкаруу катары колдонууга мүмкүндүк берет. Кийинки кадамдарда, менин кодум кантип иштээрин түшүндүрүп берем

Жабдуулар

NodeMCU

1 -кадам: Аны иштетиңиз

Муну иштетүү
Муну иштетүү
Муну иштетүү
Муну иштетүү
Муну иштетүү
Муну иштетүү

Бул жерде анын кантип иштээри боюнча кадамдар келтирилген

  1. Тиркелген файлды жүктөп алып, mousebot.ino файлын ачыңыз
  2. Эскиз> эскиз папкасын көрсөтүү бөлүмүнө өтүп, маалымат деп аталган жаңы папка жасаңыз
  3. Html файлын ушул үйрөткүчтөн аталган папкага сактаңыз. Мен өзүмдү "Джойстик" деп атадым
  4. Куралдарга барып, "esp8266 эскиз маалыматын жүктөөнү" көрүп, спифтиңиз иштей турганын текшериңиз.
  5. Html файлын nodemcu'го "esp8266 эскиз маалыматын жүктөөнү" чыкылдатуу менен жүктөңүз.
  6. Файл жүктөлгөндөн кийин, mousebot.ino файлын nodemcu'го arduino IDEге өтүү жана ctrl U басуу менен жүктөңүз.

2 -кадам: Кодекс кантип иштейт

Биринчиден, биз бул код колдоно турган китепканаларды киргизебиз

// ESP8266 WIFIге туташуусун иштетүү үчүн

#кошуу #кошуу #кошуу // ESP8266нын сервер катары иштөөсүн камсыз кылат #кошуу // сервер жана кардар менен байланышты иштетет (сиздин туташкан түзмөк) #кошуу #кошуу // nodemcu боюнча жүктөлгөн файлды ачуу үчүн #кошуу

Esp8266ны 80 -портунда ачылган веб -сервер катары коюңуз. Порт - бул маалымат өтүүчү жолдор. Сервер порту катары, HTML файлын кардарга жөнөтөт (ага туташкан deivces).

Клиенттен келген билдирүүлөрдү угуу үчүн 81 -порт аркылуу веб -сокет туташуусун кошот

Веб -сокеттерде num, WStype_t, пайдалуу жүк жана өлчөм бар. Номер кардардын номерин аныктайт, жүктөө - бул жөнөтүүчү билдирүү, өлчөмү - билдирүүнүн узундугу жана WStype_t сыяктуу ар кандай окуялар үчүн

  • WStype_DISCONNECTED - кардарды ажыратуу боюнча.
  • WStype_CONNECTED: - кардар туташканда
  • WStype_TEXT - Кардардан алынган маалыматтар

Окуянын түрүнө жараша бул жерде ар кандай аракеттер жасалат жана комментарий берилет

жараксыз webSocketEvent (uint8_t num, WStype_t түрү, uint8_t * пайдалуу жүк, size_t узундугу) {

которуу (түрү) {case WStype_DISCONNECTED: Serial.printf ("[%u] Ажыратылды! / n", сан); // сериялык монитордун тыныгуусуна маалыматтарды басып чыгарат; учурда WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // Serial.printf кардарынын IP дарегин алат ("[%u]%d.%d.%d.%d url:%s / n", num, ip [0], ip [1], ip [2], ip [3], пайдалуу жүк); webSocket.sendTXT (сан, "Туташты"); // браузердин консолуна "conencted" жөнөтөт} break; case WStype_TEXT: Serial.printf ("[%u] Маалымат: %s / n", саны, пайдалуу жүк); // кардардын номерин %u менен басып чыгарат жана %s ичинде каттар катары алынган маалыматтар / n тыныгуу;}}

3 -кадам: NODEMCUны Server катары коюңуз

ssid менен паролду кийинчерээк туташуу үчүн колдонот

const char *ssid = "аракет кыл";

const char *password = "12345678";

орнотууда биз nodemcu менен pcтин байланыш ылдамдыгын аныктайбыз, бул 115200.

жараксыз орнотуу (жараксыз) {

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

"true" деп коюңуз, serila терминалындагы wifi диагностикалык чыгарылышын көрүңүз

Serial.setDebugOutput (чыныгы);

файл системасын баштоо

SPIFFS.begin ();

Nodemcu'ду ssid жана сырсөздү мурунтан эле кирүү чекити катары орнотуңуз жана мурда туташтыра турган nodemcu'дун ipин басып чыгарыңыз. демейки боюнча бул 192.168.4.1

Serial.print ("Кирүү түйүнүн конфигурациялоо…");

WiFi.mode (WIFI_AP); WiFi.softAP (ssid, сырсөз); IPAddress myIP = WiFi.softAPIP (); Serial.print ("AP IP дареги:"); Serial.println (myIP);

Веб -сокетти nodemcu'до баштаңыз, бул таза сервер

webSocket.begin ();

WebSocketEvent функциясын вебсокет окуясы болгондо чакырат.

webSocket.onEvent (webSocketEvent);

Мүчүлүштүктөрдү оңдоо үчүн "WebSocket сервери башталды" деп жаңы сапка басып чыгарыңыз. Бул nodemcu иштеп жаткан коддун линиясын аныктоо үчүн

Serial.println ("WebSocket сервери башталды.");

кардар 192.168.4.1ге киргенде, ал handleFileRead функциясын чакырат жана аны менен URI параметр серверин жөнөтөт, бул учурда биздин nodemcu маалыматыбыз. HandleFileRead функциясы nodemcu файл системасынан html файлын тейлейт

server.onNotFound ( () {

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

табылбаса, ал "FileNotFound" көрсөтөт

server.send (404, "текст/жөнөкөй", "FileNotFound");

});

Серверди баштайт жана HTTP серверин басып чыгаруу башталат.

server.begin (); Serial.println ("HTTP сервер башталды");

Биздин боштук циклибизде, биз серверге кардарды жана анын вебсокеттеринин коммуникациясын үзгүлтүксүз башкарууга мүмкүнчүлүк беребиз:

боштук цикл (жараксыз) {

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

4 -кадам: HTML файлын жүктөө

nodemcu файл системасынан html файлын ачуу үчүн handleFileRead аттуу функцияны колдонобуз. ал жүктөлгөн же жүктөлбөгөнүн аныктоо үчүн логикалык маанини кайтарат.

Качан "192.168.4.1/" кардар тарабынан ачык болгондо, биз файлдын жолун "/Joystick.html, маалымат папкасындагы файлдын атына коебуз.

bool handleFileRead (String path) {

Serial.println ("handleFileRead:" + жол); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.exists (path)) {{File file = SPIFFS.open (path, "r"); size_t sent = server.streamFile (файл, "текст/html"); file.close (); чындыкка кайтуу; } false false; }

"/Joystick.html" файл жолунун бар экендигин текшериңиз

if (SPIFFS.exists (path)) {

Эгер бар болсо, "r" тарабынан көрсөтүлгөн аны окуу максатында жолду ачыңыз. Бул жерге көбүрөөк максаттар үчүн барыңыз.

Файл файлы = SPIFFS.open (жол, "r");

Файлды "text/html" мазмуну түрүндө серверге жөнөтөт.

size_t sent = server.streamFile (файл, "текст/html");

файлды жабыңыз

file.close ();

handleFileRead функциясы чындыкты кайтарат

чындыкка кайтуу;}

эгерде файлдын жолу жок болсо, handleFileRead функциясы жалганды кайтарат

чындыкка кайтуу; }

5 -кадам: аракет кылып көрүңүз

Image
Image

NodeMCUга туташыңыз жана "192.168.4.1" ге кирип, аракет кылып көрүңүз!:)

Сунушталууда: