Оглавление:

Как использовать ESP8266 в качестве веб-сервера: 5 шагов
Как использовать ESP8266 в качестве веб-сервера: 5 шагов

Видео: Как использовать ESP8266 в качестве веб-сервера: 5 шагов

Видео: Как использовать ESP8266 в качестве веб-сервера: 5 шагов
Видео: ПОДКЛЮЧАЕМ WEB СТРАНИЦЫ FSWEBSERVER 2024, Июль
Anonim
Как использовать ESP8266 в качестве веб-сервера
Как использовать ESP8266 в качестве веб-сервера

Привет, в настоящее время я использую Windows 10, NodeMCU 1.0, и вот список программного обеспечения, которое я использовал, и руководства по установке, которым я следовал:

  • IDE Arduino
  • Дополнительные платы для esp8266
  • Spiff

Используемая библиотека:

Websocket

Я использовал NodeMCU в качестве сервера для обслуживания HTML-файла, который я сделал из этого руководства. Чтобы обслужить этот файл, я загрузил его в файловую систему nodemcu с помощью Spiffs. HTML-файл отправляет данные на nodemcu с помощью веб-сокетов, которые будут распечатаны на последовательном мониторе для этого. Быстрая двунаправленная связь через веб-сокеты сервера и клиента позволяет использовать это в качестве удаленного управления. На следующих этапах я буду объяснять, как работает мой код.

Запасы

NodeMCU

Шаг 1. Заставьте его работать

Сделай так, чтоб это работало
Сделай так, чтоб это работало
Сделай так, чтоб это работало
Сделай так, чтоб это работало
Сделай так, чтоб это работало
Сделай так, чтоб это работало

Вот как это работает

  1. Скачайте прикрепленный файл и откройте файл mousebot.ino
  2. Перейдите в эскиз> показать папку эскиза и создайте новую папку с именем data.
  3. Сохраните html-файл из этого руководства в папке с именем. Я назвал свой "Джойстик"
  4. Убедитесь, что ваш spiff уже работает, перейдя к инструментам и увидев «загрузка данных эскиза esp8266».
  5. Загрузите html-файл в nodemcu, нажав "esp8266 sketch data upload"
  6. После загрузки файла загрузите в nodemcu файл mousebot.ino, войдя в среду разработки arduino и нажав ctrl U

Шаг 2: как работает код

Сначала мы включаем библиотеки, которые будет использовать этот код.

// чтобы позволить ESP8266 подключиться к WIFI

#include #include #include // Позволяет ESP8266 действовать как сервер #include // разрешает связь с сервером и клиентом (подключенным устройством) #include #include // Чтобы открыть загруженный файл на nodemcu #include

Установите esp8266 в качестве веб-сервера, открытого на порту 80. Порты - это пути, по которым будут проходить данные. В качестве порта сервера он будет отправлять HTML-файл клиенту (подключенным к нему устройствам).

Добавляет подключение к веб-сокету с использованием порта 81 для прослушивания сообщений от клиента.

У веб-сокетов есть параметр номер, WStype_t, полезная нагрузка и размер. Число определяет номер клиента, полезная нагрузка - это сообщение, которое он отправляет, размер - это длина сообщения, а WStype_t - для разных событий, таких как

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

В зависимости от типа события выполняются разные действия, которые здесь комментируются.

void webSocketEvent (uint8_t num, WStype_t type, uint8_t * payload, size_t length) {

переключатель (тип) {case WStype_DISCONNECTED: Serial.printf ("[% u] Disconnected! / n", num); // выводит данные на серийный монитор break; case WStype_CONNECTED: {IP-адрес ip = webSocket.remoteIP (число); // получает IP-адрес клиента Serial.printf ("[% 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 break;}}

Шаг 3: Установите NODEMCU в качестве сервера

устанавливает ssid и пароль, которые вы будете использовать для подключения к нему позже

const char * ssid = "Попробуйте";

const char * пароль = "12345678";

при настройке мы указываем скорость, с которой наши nodemcu и pc будут взаимодействовать, которая составляет 115200.

void setup (void) {

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

установите значение true, чтобы увидеть диагностический вывод Wi-Fi на терминале serila

Serial.setDebugOutput (истина);

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

SPIFFS.begin ();

Настройте nodemcu в качестве точки доступа с ранее заданными ssid и паролем и распечатайте IP-адрес nodemcu, с которым вы будете подключаться ранее. по умолчанию 192.168.4.1

Serial.print («Настройка точки доступа…»);

WiFi.mode (WIFI_AP); WiFi.softAP (ssid, пароль); IP-адрес myIP = WiFi.softAPIP (); Serial.print ("IP-адрес точки доступа:"); Serial.println (myIP);

Инициализируйте веб-сокет на 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 ( () {

если (! handleFileRead (server.uri ()))

если его не найти, будет показано "FileNotFound"

server.send (404, «текст / простой», «FileNotFound»);

});

Запускает сервер и запускается HTTP-сервер печати.

server.begin (); Serial.println («HTTP-сервер запущен»);

В нашем цикле void мы разрешаем серверу непрерывно обрабатывать клиентские соединения и его веб-сокеты следующим образом:

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 + = "Joystick.html"; if (SPIFFS.exists (путь)) {Файл файл = SPIFFS.open (путь, "r"); size_t отправлено = server.streamFile (файл, «текст / HTML»); file.close (); вернуть истину; } return false; }

Проверьте, существует ли путь к файлу "/Joystick.html"

if (SPIFFS.exists (путь)) {

Если он существует, откройте путь с целью чтения, который указан буквой «r». Зайдите сюда, чтобы узнать больше.

Файл file = SPIFFS.open (путь, "r");

Отправляет файл на сервер с типом содержимого «текст / html».

size_t отправлено = server.streamFile (файл, «текст / HTML»);

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

file.close ();

функция handleFileRead возвращает true

return true;}

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

вернуть истину; }

Шаг 5: Попробуйте

Image
Image

Подключитесь к nodeMCU, перейдите в «192.168.4.1» и попробуйте!:)

Рекомендуемые: