В прошлом эксперименте мы создали простейший веб- сервер. В нем была всего одна страница — главная. При обращении к ней мы видели в браузере приветствие. Можно расширять функционал сервера, добавив дополнительные страницы и другие функции. Но на микроконтроллере никогда не получится сделать полноценный веб-сервер, на котором можно было бы запустить какой-то сайт, ведь объем памяти и вычислительная мощность микроконтроллера очень ограничены.
На микроконтроллерах создают веб серверы для других целей. Их создают в качестве интерфейса для настройки или управления устройством. Например, твой Wi-Fi роутер имеет веб- интерфейс для настройки. А можно сделать электрический чайник с веб-интерфейсом. Представь, что ты заходишь на «сайт» своего чайника и смотришь какая температура воды в нем сейчас. Видишь, что вода холодная и нажимаешь прямо на этом сайте кнопку, которая включает чайник. Это и есть интернет вещей, когда вещи подключаются к сети. В скором будущем такие чайники, и другие самые разные устройства, будут иметь выход в сеть.
Сейчас мы сделаем веб- интерфейс для управления светодиодом. Мы доработаем веб-сервер из прошлого эксперимента. Добавим ему пару страниц. При заходе на страницу on
светодиод будет включаться, а если зайти на страницу off
— выключаться.
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #define WIFI_NAME "WiFi_Name" #define WIFI_PASSWORD "WiFi_Password" #define PIN_LED 13 ESP8266WebServer server(80); void showMessage() { server.send(200, "text/html", "HELLO WORLD!"); } void ledOn() { server.send(200, "text/html", "ON"); } void ledOff() { server.send(200, "text/html", "OFF"); } void setup() { WiFi.mode(WIFI_STA); WiFi.begin(WIFI_NAME, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { } server.on("/", showMessage); server.on("/on", ledOn); server.on("/off", ledOff); server.begin(); } void loop() { server.handleClient(); }
Первым делом в коде программы нужно заменить WiFi_Name
на имя нужной сети, а WiFi_Password
на пароль от нее.
По сравнению с кодом прошлого эксперимента мы добавили 2 страницы
server.on("/on", ledOn); server.on("/off", ledOff);
При обращении клиента к странице on
вызывается функция ledOn()
void ledOn() { server.send(200, "text/html", "ON"); }
В этой функции включается светодиод и в браузер отправляется слово ON.
При обращении клиента к странице off
вызывается функция do_off
void ledOff() { server.send(200, "text/html", "OFF"); }
В этой функции светодиод выключается и в браузер отправляется слово OFF.