В прошлом эксперименте мы сделали полноценный цветной ночник. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для управления. В такой схеме подключения задействованы три устройства: сам ночник, Wi-Fi роутер и устройство клиента (смартфон или компьютер).
Но наша плата может работать сама в режиме точки доступа. В таком случае можно установить соединение между платой и клиентским устройством (смартфоном или ноутбуком) напрямую. Для этого нужно настроить микроконтроллер на работу в режиме точки доступа.
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #define AP_NAME "RGB_light" #define AP_PASSWORD "12345678" #define PIN_LED_R 13 #define PIN_LED_G 14 #define PIN_LED_B 15 ESP8266WebServer server(80); void indexPage() { String html_color = "#4AD686"; if (server.hasArg("color")) html_color = server.arg("color"); int duty_r = strtol(html_color.substring(1,3).c_str(), NULL, 16); int duty_g = strtol(html_color.substring(3,5).c_str(), NULL, 16); int duty_b = strtol(html_color.substring(5).c_str(), NULL, 16); String page = "<!DOCTYPE html>"; page += "<html>"; page += "<head>"; page += "</head>"; page += "<body>"; page += "<h3>Select color:</h3>"; page += R"(<form action="/">)"; page += R"(<input type="color" style="height:50px;width:50%;" value="<=VALUE=>" name="color">)"; page += R"(<input type="submit" value="Send">)"; page += "</form>"; page += "</body>"; page += "</html>"; page.replace("<=VALUE=>", html_color); server.send(200, "text/html", page); } void setup() { analogWriteRange(256); WiFi.mode(WIFI_AP); WiFi.softAP(AP_NAME, AP_PASSWORD); IPAddress IP = WiFi.softAPIP(); server.on("/", indexPage); server.begin(); } void loop() { server.handleClient(); }
Переключаем WiFi в режим точки доступа:
WiFi.mode(WIFI_AP);
Настраиваем свойства точки доступа, а именно устанавливаем имя сети и пароль:
WiFi.softAP(AP_NAME, AP_PASSWORD);
Получаем IP адрес и печатаем его в последовательный порт:
IPAddress IP = WiFi.softAPIP();
Других принципиальных отличий программы от программы из предыдущего эксперимента нет.
После запуска программы видим нашу сеть среди списка доступных на смартфоне или на ноутбуке
Необходимо подключиться к нашей точке доступа. Сообщение об отсутствии интернета — нормально. Ведь откуда ему взяться в нашей сети? Ведь сейчас микроконтроллер не подключен к сети, в которой есть интернет. Сейчас он сам точка доступа. Однако отсутствие интернета никак не помешает подключиться к нашему веб-серверу и управлять светодиодом как раньше, ведь интернет для этого не нужен. Обмен данными происходит внутри локальной сети, образованной микроконтроллером и клиентским устройством.
После установки соединения в терминал будет выведен IP адрес, который принадлежит микроконтроллеру. В нашем случае это 192.168.4.1
. Именно этот адрес и нужно теперь вводить в адресную строку браузера. Адрес из прошлого эксперимента уже не подойдет, ведь теперь у нас совсем другая сеть.