===== Эксперимент 58. Управление светодиодом по WiFi =====
В прошлом эксперименте мы создали простейший веб- сервер. В нем была всего одна страница — главная. При обращении к ней мы видели в браузере приветствие. Можно расширять функционал сервера, добавив дополнительные страницы и другие функции. Но на микроконтроллере никогда не получится сделать полноценный веб-сервер, на котором можно было бы запустить какой-то сайт, ведь объем памяти и вычислительная мощность микроконтроллера очень ограничены.
На микроконтроллерах создают веб серверы для других целей. Их создают в качестве интерфейса для настройки или управления устройством. Например, твой Wi-Fi роутер имеет веб- интерфейс для настройки. А можно сделать электрический чайник с веб-интерфейсом. Представь, что ты заходишь на "сайт" своего чайника и смотришь какая температура воды в нем сейчас. Видишь, что вода холодная и нажимаешь прямо на этом сайте кнопку, которая включает чайник. Это и есть интернет вещей, когда вещи подключаются к сети. В скором будущем такие чайники, и другие самые разные устройства, будут иметь выход в сеть.
Сейчас мы сделаем веб- интерфейс для управления светодиодом. Мы доработаем веб-сервер из прошлого эксперимента. Добавим ему пару страниц. При заходе на страницу ''on'' светодиод будет включаться, а если зайти на страницу ''off'' — выключаться.
==== Схема эксперимента ====
Подключим светодиод к 13 пину
{{ :products:esp-iot:exp31_mon.png?direct&600 |}}
//Рисунок 1. Монтажная схема эксперимента//
==== Программный код эксперимента ====
#include
#include
#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() {
digitalWrite(PIN_LED, HIGH);
server.send(200, "text/html", "ON");
}
void ledOff() {
digitalWrite(PIN_LED, LOW);
server.send(200, "text/html", "OFF");
}
void setup() {
Serial.begin(9600);
Serial.println();
pinMode(PIN_LED, OUTPUT);
digitalWrite(PIN_LED, LOW);
Serial.print("Connecting to WiFi");
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
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() {
digitalWrite(PIN_LED, HIGH);
server.send(200, "text/html", "ON");
}
В этой функции включается светодиод и в браузер отправляется слово ON.
При обращении клиента к странице ''off'' вызывается функция ''do_off''
void ledOff() {
digitalWrite(PIN_LED, LOW);
server.send(200, "text/html", "OFF");
}
В этой функции светодиод выключается и в браузер отправляется слово OFF.
{{ :products:esp-iot:on.jpg?direct&400 |}}
{{ :products:esp-iot:off.jpg?direct&400 |}}