КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Piranha ESP32 как точка доступа WiFi

Общие сведения:

В этом проекте мы настроим Piranha ESP32 на работу в качестве точки доступа WiFi и будем управлять встроенным светодиодом через веб-сайт, размещённый на веб-сервере внутри ESP32. При подключении к серверу (через браузер с телефона или ПК), который запущен на Piranha ESP32, в браузере будет отображена страница с ссылками для управления встроенным в плату светодиодом.

Помимо библиотек WiFi и WiFiClient нам понадобиться библиотека WiFiAP для создания точки доступа.

Для управления встроенным в плату светодиодом необходимо подключиться с телефона, планшета или любого другого устройства с технологией WiFi и браузером к точке доступа esp32asAP с паролем password12345, затем в адресной строке браузера ввести адрес точки доступа (по умолчанию 192.168.4.1).

Видео:

редактируется ...

Нам понадобится:

Подключение:

Скетч проекта:

// Подключаем библиотеки
#include 
#include 
#include 

// Определяем название и пароль точки доступа
const char *ssid = "esp32asAP";
const char *password = "password12345";

// Создаём объект Веб-сервера
WiFiServer server(80);

void setup() {

    // Устанавливаем режим работы вывода светодиода
    pinMode(LED_BUILTIN, OUTPUT);

    Serial.begin(115200);
    Serial.println();
    Serial.println("Инициируем точку доступа WiFi");

    // Инициируем точку доступа WiFi
    WiFi.softAP(ssid, password);
    IPAddress myIP = WiFi.softAPIP();

    // Выводим IP-адрес Веб-сервера
    Serial.print("IP-адрес точки доступа: ");
    Serial.println(myIP);

    // Инициируем сервер
    server.begin();

    Serial.println("Сервер запущен.");
}

// Функция ответа клиенту
inline bool respToClient(WiFiClient& client, String& currentLine)
{
    // Читаем байт и выводим его в последовательный порт
    char c = client.read();
    Serial.write(c);

    // Если байт - символ новой строки
    if (c == '\n') {

        // Если текущая строка пуста, значит был получен
        // символ новой строки два раза подряд
        // Это означает конец клиентского HTTP-запроса.
        if (currentLine.length() == 0) {

            // Посылаем HTTP заголовок
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            // Посылаем текст страницы
            client.print("");

            client.print(
                    "

Нажмите " "сюда " "для включения светодиода.

" ); client.print( "

Нажмите " "сюда " "для выключения светодиода.

" ); client.print(""); // посылаем пустую строку client.println(); // необходимые данные клиенту переданы - // выходим из функции с флагом true return true; } // иначе (строка не пуста) else { // стираем текущую строку currentLine = ""; } } // иначе (байт не символ новой строки), // если байт - не символ возврата каретки else if (c != '\r') { // добавляем его в текущую строку currentLine += c; } // Проверяем какой запрос сделал клиент. // Если GET /H if (currentLine.endsWith("GET /H")) { // Включаем светодиод digitalWrite(LED_BUILTIN, HIGH); } // Если GET /L if (currentLine.endsWith("GET /L")) { // Выключаем светодиод digitalWrite(LED_BUILTIN, LOW); } return false; } // Функция обработки клиента inline void handleClient(WiFiClient& client) { // выводим сообщение в последовательный порт Serial.println("Новый клиент."); //Создаём строковый объект для хранения входных данных String currentLine = ""; // Входим в цикл пока клиент подсоединён while (client.connected()) { // Если есть данные для чтения if (client.available()) { // Вызываем функцию ответа клиенту bool resp = respToClient(client, currentLine); // Если функция передала все данные клиенту if (resp == true) // прерываем цикл break; } } // Закрываем соединение client.stop(); Serial.println("Клиент отключён."); } void loop() { // Создаём объект клиента и проверяем, есть ли подключённые клиенты WiFiClient client = server.available(); // Если клиенты есть if (client) { // Вызываем функцию обработки клиента handleClient(client); } }

Ссылки




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями