Съдържание:

Как да използвате ESP8266 като уеб сървър: 5 стъпки
Как да използвате ESP8266 като уеб сървър: 5 стъпки

Видео: Как да използвате ESP8266 като уеб сървър: 5 стъпки

Видео: Как да използвате ESP8266 като уеб сървър: 5 стъпки
Видео: Home Assistant - connect address tape WS2812B via ESP8266 with WLED firmware 2024, Декември
Anonim
Как да използвате ESP8266 като уеб сървър
Как да използвате ESP8266 като уеб сървър

Здравейте, в момента използвам windows 10, NodeMCU 1.0 и ето списъка със софтуера, който използвах, и ръководствата за инсталиране, които следвах:

  • Arduino IDE
  • Допълнителни платки за esp8266
  • Spiff

Използвана библиотека:

Websocket

Използвах NodeMCU като сървър за обслужване на HTML файл, който направих от този урок. За да обслужвам този файл, качих файла във файловата система nodemcu, използвайки Spiffs. HTML файлът изпраща данни към nodemcu с помощта на websockets, които да бъдат отпечатани на серийния монитор за това. Бързата двупосочна комуникация чрез websockets на сървъра и клиента позволи това да се използва като дистанционно управление. На следващите стъпки няма да обяснявам как работи моят код

Консумативи

NodeMCU

Стъпка 1: Направете го работещ

Накарайте го да работи
Накарайте го да работи
Накарайте го да работи
Накарайте го да работи
Накарайте го да работи
Накарайте го да работи

Ето стъпките за това как работи

  1. Изтеглете прикачения файл и отворете файла mousebot.ino
  2. Отидете на sketch> show sketch folder и направете нова папка с име data
  3. Запазете html файла от този урок в папката с име. Нарекох моя като „Джойстик“
  4. Уверете се, че вашата работа вече е функционална, като отидете на инструменти и видите „качване на данни за скица esp8266“
  5. Качете html файла в nodemcu, като кликнете върху „esp8266 качване на данни за скици“
  6. След качване на файл качете в nodemcu файла mousebot.ino, като натиснете към arduino IDE и натиснете ctrl U

Стъпка 2: Как работи кодът

Първо, включваме библиотеките, които този код ще използва

// за да се даде възможност на ESP8266 да се свърже с WIFI

#include #include #include // Позволява на ESP8266 да действа като сървър #include // позволява комуникация със сървъра и клиента (вашето свързано устройство) #include #include // За отваряне на нагорешния файл на nodemcu #include

Задайте esp8266 като уеб сървър, отворен на порт 80. Портовете са пътища, през които ще преминат данните. Като порт на сървър, той ще изпрати HTML файла на клиента (свързаните с него устройства).

Добавя връзка към websocket, използвайки порт 81, за да слуша съобщения от клиента

Уебсокетите имат параметър num, WStype_t, полезен товар и размер. Числото определя номера на клиента, полезният товар е съобщението, което изпраща, размерът е дължината на съобщението и WStype_t е за различни събития като

  • WStype_DISCONNECTED - при изключване на клиент.
  • WStype_CONNECTED: - когато се свързва клиент
  • WStype_TEXT - Получени данни от клиента

В зависимост от типа на събитието се извършват различни действия и се коментират тук

void webSocketEvent (uint8_t num, тип WStype_t, uint8_t * полезен товар, size_t дължина) {

ключ (тип) {случай WStype_DISCONNECTED: Serial.printf ("[%u] Прекъснат! / n", номер); // отпечатва данни към прекъсване на серийния монитор; случай WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // получава IP на клиента Serial.printf ("[%u] Свързан от%d.%d.%d.%d url:%s / n", num, ip [0], ip [1], ip [2], ip [3], полезен товар); webSocket.sendTXT (num, "Connected"); // изпраща „conencted“до конзолата на браузъра} break; регистър WStype_TEXT: Serial.printf ("[%u] Данни: %s / n", брой, полезен товар); // отпечатва номера на клиента в %u и получените данни като низове в %s / n break;}}

Стъпка 3: Задайте NODEMCU като сървър

задава ssid и парола, които ще използвате, за да се свържете с него по -късно

const char *ssid = "Опитайте";

const char *password = "12345678";

при настройката ние посочваме скоростта, с която нашите nodemcu и компютър ще комуникират, което е 115200.

void setup (void) {

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

зададено на true също вижте диагностичния изход за wifi на терминала serila

Serial.setDebugOutput (вярно);

инициализирайте файловата система

SPIFFS.begin ();

Настройте nodemcu като точка за достъп с ssid и парола defiend по -рано и отпечатва ip на nodemcu, с който ще се свържете по -рано. по подразбиране е 192.168.4.1

Serial.print ("Конфигуриране на точка за достъп …");

WiFi.mode (WIFI_AP); WiFi.softAP (ssid, парола); IP Адрес myIP = WiFi.softAPIP (); Serial.print ("IP IP адрес на AP:"); Serial.println (myIP);

Инициализирайте websocket на nodemcu, който е чист сървър

webSocket.begin ();

Извиква функцията webSocketEvent, когато възникне събитие в websocket.

webSocket.onEvent (webSocketEvent);

За отстраняване на грешки отпечатайте "WebSocket сървърът е стартиран" на нов ред. Това е за да се определи реда на код, който nodemcu обработва

Serial.println ("Сървърът на WebSocket стартира.");

когато клиент посети 192.168.4.1, той ще извика функцията handleFileRead и ще изпрати с него URI на сървъра на параметри, който в този случай е нашата информация за nodemcu. Функцията handleFileRead ще обслужва html файла от файловата система nodemcu

server.onNotFound ( () {

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

ако не може да бъде намерен, ще се покаже "FileNotFound"

server.send (404, "текст/обикновен", "FileNotFound");

});

Стартира сървъра и стартира HTTP сървър за печат.

server.begin (); Serial.println ("HTTP сървърът е стартиран");

В нашия цикъл на void, ние даваме възможност на сървъра да управлява непрекъснато клиента и неговите комуникации в websockets, както следва:

void loop (void) {

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

Стъпка 4: Заредете HTML файл

ще използваме функция с име handleFileRead за отваряне и html файла от файловата система nodemcu. той ще върне логическа стойност, за да определи дали е зареден или не.

Когато "192.168.4.1/" е отворен от клиента, ние задаваме пътя на файла на "/Joystick.html, името на нашия файл в папката с данни

bool handleFileRead (String path) {

Serial.println ("handleFileRead:" + път); if (path.endsWith ("/")) path += "Джойстик.html"; if (SPIFFS.exists (path)) {File file = SPIFFS.open (path, "r"); size_t sent = server.streamFile (файл, "текст/html"); file.close (); връщане true; } return false; }

Проверете дали пътят на файла "/Joystick.html" съществува

if (SPIFFS.exists (пътека)) {

Ако съществува, отворете пътя с цел да го прочетете, който е посочен с "r". Отидете тук за повече цели.

Файлов файл = SPIFFS.open (път, "r");

Изпраща файла на сървъра като с тип съдържание „текст/html“

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

затворете файла

file.close ();

функцията handleFileRead връща true

върнете true;}

ако пътят на файла не съществува, функцията handleFileRead връща false

връщане true; }

Стъпка 5: Опитайте

Image
Image

Свържете се с nodeMCU и отидете на "192.168.4.1" и опитайте!:)

Препоръчано: