ESP8266:Примеры/Как собрать веб-сервер на базе ESP8266

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1837 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Как собрать веб-сервер на базе ESP8266[1]

В этой статье рассказывается, как создать автономный веб-сервер на базе WiFi-модуля ESP8266. Этот веб-сервер позволит удаленно (при помощи устройства, подключенного к той же сети, что и ESP8266) управлять двумя светодиодами. Если вы не знаете, что такое ESP8266, то ознакомительную статью можно почитать по этой ссылке.

Загрузка прошивки NodeMCU на ESP8266

NodeMCU – это прошивка, позволяющая программировать модуль ESP8266 при помощи LUA-скрипта, и это очень похоже на программирование платы Arduino. Благодаря LUA-скрипту, установленному на ESP8266, можно устанавливать WiFi-соединение, управлять GPIO-контактами, превратить ESP8266 в веб-сервер и т.д.

Подключение к 3,3-вольтовому программатору FTDI

Распиновка ESP8266 выглядит следующим образом:

Esp8266 pinout h-569x236 3.png

Чтобы подключить ESP8266 к программатору FTDI, нужны следующие контакты:

  • Контакт RX на ESP8266 – к контакту TX на программаторе
  • Контакт TX – к контакту RX
  • Контакт CH_PD – к контакту 3.3V
  • Контакт GPIO 0 – к контакту GND
  • Контакт VCC – к контакту 3.3V
  • Контакт GND – к контакту GND
ESP-ftdi 4.png

Загрузка флэшера NodeMCU на Windows

Подключив ESP8266 к программатору FTDI, загрузите флэшер NodeMCU (это файл формата «*.exe»):

Всю необходимую информацию о флэшере NodeMCU можно найти в его GitHub-репозитории.

Загрузка прошивки на ESP8266

Откройте флэшер, который только что загрузили. Должно открыться примерно вот такое окно:

Nodemcu flaser.png

Обратите внимание на вкладку «Advanced» – здесь находятся дополнительные настройки; если нужно, поменяйте здесь что-нибудь. Затем вернитесь на вкладку «Operation» и нажмите на кнопку «Flash». В ту же секунду должен начаться процесс загрузки прошивки. Если все загрузится правильно, в левом нижнем углу флэшера появится круглая зеленая иконка с галочкой внутри.

Схема для проекта

Для этого проекта вам понадобятся, кроме модуля ESP8266, источник питания (например, батарея) и два светодиода.

ESP-web-server bb ESP8266 Web Server Tutorial 1.png

Как загрузить код на ESP8266

Для загрузки LUA-скриптов на ESP8266 рекомендую использовать программу ESPlorer IDE, написанную пользователем 4refr0nt. Чтобы скачать и установить ее, проделайте следующее:

  1. Кликните здесь, чтобы скачать ZIP-архив с ESPlorer IDE
  2. Распакуйте скачанный архив
  3. Перейдите в папку «dist» (она находится по маршруту «ESPlorer-master\ESPlorer\dist»)
  4. Запустите файл «ESPlorer.jar». Это программа на JAVA, поэтому на вашем компьютере должна быть установлена JAVA
  5. Откройте ESPlorer IDE

В результате должно открыться вот такое окно:

Esplorer-start ESP8266 Web Server Tutorial 2.png

Теперь настала очередь для загрузка LUA-скрипта. Для этого проделайте следующее:

  1. Подключите программатор FTDI к компьютеру
  2. Выберите порт, к которому подключен программатор
  3. Нажмите кнопку «Open/Close»
  4. Выберите вкладку «NodeMCU+MicroPython»
  5. Создайте новый файл под названием «init.lua»
  6. Нажмите кнопку «Save to ESP»

Все элементы программы, необходимые для этих действий, выделены на картинке ниже красным цветом:

Esplorer tab ESP8266 Web Server Tutorial 3.png

Код

Теперь при помощи ESPlorer IDE загрузите на ESP8266 скрипт, показанный ниже. Файл должен быть назван «init.lua». Этот файл также можно загрузить отсюда.

  1. wifi.setmode(wifi.STATION)
  2. wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")
  3. print(wifi.sta.getip())
  4. led1 = 3
  5. led2 = 4
  6. gpio.mode(led1, gpio.OUTPUT)
  7. gpio.mode(led2, gpio.OUTPUT)
  8. srv=net.createServer(net.TCP)
  9. srv:listen(80,function(conn)
  10.     conn:on("receive", function(client,request)
  11.         local buf = "";
  12.         local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
  13.         if(method == nil)then
  14.             _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
  15.         end
  16.         local _GET = {}
  17.         if (vars ~= nil)then
  18.             for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
  19.                 _GET[k] = v
  20.             end
  21.         end
  22.         buf = buf.."<h1> ESP8266 Web Server</h1>";
  23.         buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF1\"><button>OFF</button></a></p>";
  24.         buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF2\"><button>OFF</button></a></p>";
  25.         local _on,_off = "",""
  26.         if(_GET.pin == "ON1")then
  27.               gpio.write(led1, gpio.HIGH);
  28.         elseif(_GET.pin == "OFF1")then
  29.               gpio.write(led1, gpio.LOW);
  30.         elseif(_GET.pin == "ON2")then
  31.               gpio.write(led2, gpio.HIGH);
  32.         elseif(_GET.pin == "OFF2")then
  33.               gpio.write(led2, gpio.LOW);
  34.         end
  35.         client:send(buf);
  36.         client:close();
  37.         collectgarbage();
  38.     end)
  39. end)

Примечание: Не забудьте поменять данные во 2-ой строчке. Впишите туда данные для своей WiFi-сети (название сети и пароль к ней).

Доступ к веб-серверу

Перезапустившись, ESP8266 напечатает в мониторе порта ESPlorer IDE собственный IP-адрес. В моем случае это «192.168.1.82». Впишите этот IP-адрес в адресную строку браузера и нажмите  ↵ Enter . В результате, если все настроено правильно, вы должны получить доступ к веб-серверу, позволяющему управлять двумя светодиодами.

Web-server-esp8266 ESP8266 Web Server Tutorial 4.png

Вот так проект выглядит в действии:

[Видео – https://www.youtube.com/watch?v=ONKM5lSthNY]

См.также

Внешние ссылки

  1. randomnerdtutorials.com - ESP8266 Web Server Tutorial