// библиотека для работы с HTTP-протоколом
#include
// вводим имя и пароль точки доступа
const char* ssid = "WIFINAME";
const char* password = "WIFIPASSWORD";
void setup() {
// иницилизируем монитор порта
Serial.begin(115200);
// запас времени на открытие монитора порта — 5 секунд
delay(5000);
// подключаемся к Wi-Fi сети
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to Wi-Fi..");
}
Serial.println("Connected to the Wi-Fi network");
}
void loop() {
// выполняем проверку подключения к беспроводной сети
if ((WiFi.status() == WL_CONNECTED)) {
// создаем объект для работы с HTTP
HTTPClient http;
// подключаемся к тестовому серверу с помощью HTTP
http.begin("http://httpbin.org/");
// делаем GET запрос
int httpCode = http.GET();
// проверяем успешность запроса
if (httpCode > 0) {
// выводим ответ сервера
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
}
else {
Serial.println("Error on HTTP request");
}
// освобождаем ресурсы микроконтроллера
http.end();
}
delay(10000);
}
После подключения к Wi-Fi микроконтроллер напишет в COM порт ответ от сервера.
{{ :products:esp32-wroom-wifi-devkit-v1:clientmonitor.png?nolink |}}
==== Пример Analog WebServer ====
ESP32 имеет 15 аналоговых пинов. Выведем через веб-интерфейс значения с 36, 39 и 34 пина.
// подключяем библиотеку для работы с Wi-Fi server
#include
// вводим имя и пароль точки доступа
const char* ssid = "WIFINAME";
const char* password = "WIFIPASSWORD";
// инициализируем сервер на 80 порте
WiFiServer server(80);
// заводим буфер и счетчик для буфера
char lineBuf[80];
int charCount = 0;
void setup() {
// инициализируем монитор порта
Serial.begin(115200);
// запас времени на открытие монитора порта — 5 секунд
delay(5000);
// инициализируем аналоговые пины
pinMode(36, INPUT);
pinMode(39, INPUT);
pinMode(34, INPUT);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
// подключаем микроконтроллер к Wi-Fi сети
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Wi-Fi connected");
Serial.println("IP-address: ");
Serial.println(WiFi.localIP());
// запускаем сервер
server.begin();
}
void loop() {
// анализируем канал связи на наличие входящих клиентов
WiFiClient client = server.available();
if (client) {
Serial.println("New client");
memset(lineBuf, 0, sizeof(lineBuf));
charCount = 0;
// HTTP-запрос заканчивается пустой строкой
boolean currentLineIsBlank = true;
while (client.connected()) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
// формируем веб-страницу
String webPage = "";
webPage += "";
webPage += " ";
webPage += " ";
webPage += " ";
webPage += " ESP32 - Web Server
";
webPage += " ";
webPage += " AnalogPin 36 = ";
webPage += analogRead(36);
webPage += "
";
webPage += " AnalogPin 39 = ";
webPage += analogRead(39);
webPage += "
";
webPage += " AnalogPin 34 = ";
webPage += analogRead(34);
webPage += "
";
webPage += "
";
webPage += "";
client.println(webPage);
break;
}
// даем веб-браузеру время для получения данных
delay(1);
// закрываем соединение
client.stop();
Serial.println("client disconnected");
}
}
Когда микроконтроллер подключится к Wi-Fi сети, в монитор порта будет выведен IP-адрес веб-страницы с данными. Получить к ней доступ можно из локальной сети, перейдя по указанному IP-адресу.
{{ :products:esp32-wroom-wifi-devkit-v1:monitor.png?nolink |}}
Скопируйте IP-адрес из монитора порта и вставьте в адресную строку браузера. Если вы подключены к той же локальной сети, что и ESP32, то вы увидите веб-интерфейс.
{{ :products:esp32-wroom-wifi-devkit-v1:analog_browser_2_.png?nolink |}}
==== Пример blink WebServer ====
Создадим WEB-сервер на порту 80. С помощью веб-интерфейса будем мигать светодиодами на 16 и 17 пинах.
// подключяем библиотеку для работы с Wi-Fi server
#include
// указываем пины, к которым подключены светодиоды
#define LED_GREEN 16
#define LED_RED 17
// вводим имя и пароль точки доступа
const char* ssid = "WIFINAME";
const char* password = "WIFIPASSWORD";
// инициализируем сервер на 80 порте
WiFiServer server(80);
// создаем буфер и счетчик для буфера
char lineBuf[80];
int charCount = 0;
void setup() {
// запас времени на открытие монитора порта — 5 секунд
delay(5000);
// инициализируем контакты для светодиодов
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_RED, OUTPUT);
// инициализируем монитор порта
Serial.begin(115200);
// подключаемся к Wi-Fi сети
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Wi-Fi connected");
Serial.println("IP-address: ");
// пишем IP-адрес в монитор порта
Serial.println(WiFi.localIP());
server.begin();
}
void loop() {
// анализируем канал связи на наличие входящих клиентов
WiFiClient client = server.available();
if (client) {
Serial.println("New client");
memset(lineBuf, 0, sizeof(lineBuf));
charCount = 0;
// HTTP-запрос заканчивается пустой строкой
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// считываем HTTP-запрос
lineBuf[charCount] = c;
if (charCount < sizeof(lineBuf) - 1) {
charCount++;
}
// на символ конца строки отправляем ответ
if (c == '\n' && currentLineIsBlank) {
// отправляем стандартный заголовок HTTP-ответа
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
// тип контента: text/html
client.println("Connection: close");
// после отправки ответа связь будет отключена
client.println();
// формируем веб-страницу
String webPage = "";
webPage +="";
webPage +=" ";
webPage +=" ";
webPage +=" ";
webPage +=" ESP32 - Web Server
";
webPage +=" LED #1";
webPage +=" ";
webPage +=" ";
webPage +=" ";
webPage +=" ";
webPage +=" ";
webPage +=" ";
webPage +="
";
webPage +=" LED #2";
webPage +=" ";
webPage +=" ";
webPage +=" ";
webPage +=" ";
webPage +=" ";
webPage +=" ";
webPage +="
";
webPage +="";
client.println(webPage);
break;
}
if (c == '\n') {
// анализируем буфер на наличие запросов
// если есть запрос, меняем состояние светодиода
currentLineIsBlank = true;
if (strstr(lineBuf, "GET /on1") > 0) {
Serial.println("LED 1 ON");
digitalWrite(LED_GREEN, HIGH);
} else if (strstr(lineBuf, "GET /off1") > 0) {
Serial.println("LED 1 OFF");
digitalWrite(LED_GREEN, LOW);
} else if (strstr(lineBuf, "GET /on2") > 0) {
Serial.println("LED 2 ON");
digitalWrite(LED_RED, HIGH);
} else if (strstr(lineBuf, "GET /off2") > 0) {
Serial.println("LED 2 OFF");
digitalWrite(LED_RED, LOW);
}
// начинаем новую строку
currentLineIsBlank = true;
memset(lineBuf, 0, sizeof(lineBuf));
charCount = 0;
} else if (c != '\r') {
// в строке попался новый символ
currentLineIsBlank = false;
}
}
}
// даем веб-браузеру время, чтобы получить данные
delay(1);
// закрываем соединение
client.stop();
Serial.println("client disconnected");
}
}
При переходе по IP-адресу из монитора порта, выводится веб-страница с кнопками.
{{ :products:esp32-wroom-wifi-devkit-v1:led_browser.png?nolink |}}
===== Программирование на JavaScript =====
{{ :products:esp32-wroom-wifi-devkit-v1:esp32-wroom-wifi-devkit-v1_js.png?nolink |}}
- Для старта с платформой Wi-Fi Slot на языке JavaScript [[:js:ide|скачайте и установите]] интегрированную среду разработки — Espruino Web IDE.
- [[:js:espruino:esp8266|Установите прошивку интерпретатор JavaScript на ESP32]].