ESP8266:Примеры/Веб-сервер с помощью ESP8266 и IDE Arduino

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

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

Контакты:

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


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


Веб-сервер с помощью ESP8266 и IDE Arduino[1]

Если вы плохо знакомы с модулем ESP8266, сначала почитайте эту статью, а эта статья рассказывает о том, как создать автономный веб-сервер на базе ESP8266, умеющий переключать два светодиода.

Для начала посмотрите это видео:

[Видео]

Схема для загрузки кода на ESP8266

Программатор FTDI и ESP8266 подключаются друг к другу очень просто. Вам лишь нужно настроить между ними последовательную коммуникацию, чтобы загрузить код.

Flashing-Firmware-FTDI-Programmer ESP8266 Web Server with Arduino IDE 1.png

Загрузка кода на ESP8266

Сначала убедитесь, что в IDE Arduino установлен аддон для ESP8266. Если не установлен, то о том, как это сделать, можно почитать тут.

Кликните в IDE Arduino на Инструменты > Плата > Generic ESP8266 Module (Tools > Board > Generic ESP8266 Module).

Arduino-IDE-select-esp8266 ESP8266 Web Server with Arduino IDE 2.png

Скопируйте скетч ниже в IDE Arduino. Впишите собственные SSID и пароль к SSID. Отредактировав скетч, загрузите его на ESP8266. Если с загрузкой скетча возникла какая-то проблема, поищите ее решение в этой статье.

  1. /*********
  2.   Автор – Руи Сантос (Rui Santos)
  3.   Более подробно о проекте на: http://randomnerdtutorials.com  
  4. *********/
  5.  
  6. #include <ESP8266WiFi.h>
  7. #include <WiFiClient.h>
  8. #include <ESP8266WebServer.h>
  9. #include <ESP8266mDNS.h>
  10.  
  11. MDNSResponder mdns;
  12.  
  13. // впишите сюда данные, соответствующие вашей сети:
  14. const char* ssid = "YOUR_SSID";
  15. const char* password = "YOUR_PASSWORD";
  16.  
  17. ESP8266WebServer server(80);
  18.  
  19. String webPage = "";
  20.  
  21. int gpio0_pin = 0;
  22. int gpio2_pin = 2;
  23.  
  24. void setup(void){
  25.   webPage += "<h1>ESP8266 Web Server</h1><p>Socket #1 <a href=\"socket1On\"><button>ON</button></a>&nbsp;<a href=\"socket1Off\"><button>OFF</button></a></p>";
  26.   webPage += "<p>Socket #2 <a href=\"socket2On\"><button>ON</button></a>&nbsp;<a href=\"socket2Off\"><button>OFF</button></a></p>";
  27.  
  28.   // подготавливаем GPIO-контакты:
  29.   pinMode(gpio0_pin, OUTPUT);
  30.   digitalWrite(gpio0_pin, LOW);
  31.   pinMode(gpio2_pin, OUTPUT);
  32.   digitalWrite(gpio2_pin, LOW);
  33.  
  34.   delay(1000);
  35.   Serial.begin(115200);
  36.   WiFi.begin(ssid, password);
  37.   Serial.println("");
  38.  
  39.   // ждем соединения:
  40.   while (WiFi.status() != WL_CONNECTED) {
  41.     delay(500);
  42.     Serial.print(".");
  43.   }
  44.   Serial.println("");
  45.   Serial.print("Connected to ");  //  "Подключились к "
  46.   Serial.println(ssid);
  47.   Serial.print("IP address: ");  //  "IP-адрес: "
  48.   Serial.println(WiFi.localIP());
  49.  
  50.   if (mdns.begin("esp8266", WiFi.localIP())) {
  51.     Serial.println("MDNS responder started");
  52.                //  "Запущен MDNSresponder"
  53.   }
  54.  
  55.   server.on("/", [](){
  56.     server.send(200, "text/html", webPage);
  57.   });
  58.   server.on("/socket1On", [](){
  59.     server.send(200, "text/html", webPage);
  60.     digitalWrite(gpio0_pin, HIGH);
  61.     delay(1000);
  62.   });
  63.   server.on("/socket1Off", [](){
  64.     server.send(200, "text/html", webPage);
  65.     digitalWrite(gpio0_pin, LOW);
  66.     delay(1000);
  67.   });
  68.   server.on("/socket2On", [](){
  69.     server.send(200, "text/html", webPage);
  70.     digitalWrite(gpio2_pin, HIGH);
  71.     delay(1000);
  72.   });
  73.   server.on("/socket2Off", [](){
  74.     server.send(200, "text/html", webPage);
  75.     digitalWrite(gpio2_pin, LOW);
  76.     delay(1000);
  77.   });
  78.   server.begin();
  79.   Serial.println("HTTP server started");
  80. }
  81.  
  82. void loop(void){
  83.   server.handleClient();
  84. }

IP-адрес ESP8266

Откройте монитор порта IDE Arduino на скорости 115200 бод. Подключите GPIO-контакт 0 на ESP8266 к VCC, чтобы сбросить модуль.

Спустя несколько секунд в мониторе порта должен появиться IP-адрес ESP8266. В моем случае это «192.168.1.70».

Esp-ip-address ESP8266 Web Server with Arduino IDE 3.png

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

Теперь построим цепь с веб-сервером, управляющим двумя светодиодами.

ESP-web-server bb ESP8266 Web Server with Arduino IDE 4.png

Демонстрация

Чтобы проверить, работает ли проект, откройте браузер на любом устройстве, подключенном к тому же роутеру, что и ESP8266. Впишите туда IP-адрес ESP8266 и нажмите  ↵ Enter .

ESP8266 Web Server with Arduino IDE web 5.png

Теперь, нажимая на кнопки ON и OFF, вы можете дистанционно включать/выключать светодиоды, подключенные к ESP8266.

См.также

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

  1. randomnerdtutorials.com - ESP8266 Web Server with Arduino IDE