В прошлом эксперименте мы сделали полноценный термометр с доступом по IP адресу. Он подключается к существующей сети Wi-Fi, и пользователь тоже подключается к той же сети для соединения с термометром. В такой схеме подключения задействованы три устройства: сам ночник, Wi-Fi роутер и устройство клиента (смартфон или компьютер).
Но наша плата может работать сама в режиме точки доступа. В таком случае можно установить соединение между платой и клиентским устройством (смартфоном или ноутбуком) напрямую. Для этого нужно настроить микроконтроллер на работу в режиме точки доступа.
Схему прошлого эксперимента оставляем без изменений, но немного изменим код.
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <OneWire.h> #include <DallasTemperature.h> #define AP_NAME "WIFI_TEMP" #define AP_PASSWORD "12345678" #define BUS_PIN 12 //the device is on GPIO12 OneWire oneWire(BUS_PIN); DallasTemperature sensors(&oneWire); ESP8266WebServer server(80); void showMessage() { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); server.send(200, "text/html", String(tempC)); } void setup() { WiFi.mode(WIFI_AP); WiFi.softAP(AP_NAME, AP_PASSWORD); IPAddress IP = WiFi.softAPIP(); server.on("/", showMessage); 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
. Именно этот адрес и нужно теперь вводить в адресную строку браузера. Адрес из прошлого эксперимента уже не подойдет, ведь теперь у нас совсем другая сеть.