ESP8266:Прошивки/Arduino/Библиотеки/Библиотека ESP8266WiFi/Класс точки доступа/Настройка ESP8266 в режим программной точки доступа: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{ESP8266 панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} {{Черновик}} =Настройка ESP8266 в…»)
 
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


{{Черновик}}
 


=Настройка ESP8266 в режим программной точки доступа<ref>[http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-examples.html arduino-esp8266.readthedocs.io - Soft Access Point]</ref>=
=Настройка ESP8266 в режим программной точки доступа<ref>[http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-examples.html arduino-esp8266.readthedocs.io - Soft Access Point]</ref>=
Строка 13: Строка 13:
Для того, чтобы настроить [[ESP8266]] в режим программной точки доступа, нужно всего несколько строчек кода.
Для того, чтобы настроить [[ESP8266]] в режим программной точки доступа, нужно всего несколько строчек кода.


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
#include <ESP8266WiFi.h>
#include <ESP8266WiFi.h>


Строка 49: Строка 49:
В строчке...
В строчке...


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
boolean result = WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP")
boolean result = WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP")
</syntaxhighlight>
</syntaxhighlight>
Строка 55: Строка 55:
...поменяйте '''pass-to-soft-AP''' на какой-нибудь осмысленный пароль, а затем загрузите скетч на ESP8266. Теперь откройте монитор порта. Там должно быть примерно следующее:
...поменяйте '''pass-to-soft-AP''' на какой-нибудь осмысленный пароль, а затем загрузите скетч на ESP8266. Теперь откройте монитор порта. Там должно быть примерно следующее:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Setting soft-AP ... Ready
Setting soft-AP ... Ready
Stations connected = 0
Stations connected = 0
Строка 64: Строка 64:
В мобильном телефон или [[ПК]] откройте список точек доступа, найдите '''ESPsoftAP_01''' и подключитесь к ней. Когда новая станция подключится, это должно отразиться в мониторе порта:
В мобильном телефон или [[ПК]] откройте список точек доступа, найдите '''ESPsoftAP_01''' и подключитесь к ней. Когда новая станция подключится, это должно отразиться в мониторе порта:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Stations connected = 1
Stations connected = 1
Stations connected = 1
Stations connected = 1
Строка 76: Строка 76:
Скетч маленький, так что разбор будет несложным. В первой строчке мы подключаем [[ESP8266:Прошивки/Arduino/Библиотеки/Библиотека ESP8266WiFi|библиотеку ESP8266WiFi]]:
Скетч маленький, так что разбор будет несложным. В первой строчке мы подключаем [[ESP8266:Прошивки/Arduino/Библиотеки/Библиотека ESP8266WiFi|библиотеку ESP8266WiFi]]:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
#include <ESP8266WiFi.h>
#include <ESP8266WiFi.h>
</syntaxhighlight>
</syntaxhighlight>
Строка 82: Строка 82:
Настройка точки доступа '''ESPsoftAP_01''' выполняется здесь:
Настройка точки доступа '''ESPsoftAP_01''' выполняется здесь:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
cpp  boolean result = WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP");
cpp  boolean result = WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP");
</syntaxhighlight>
</syntaxhighlight>
Строка 92: Строка 92:
Можно ли сделать этот скетч еще проще? Конечно! Это можно реализовать через альтернативную версию оператора if-else, как показано ниже:
Можно ли сделать этот скетч еще проще? Конечно! Это можно реализовать через альтернативную версию оператора if-else, как показано ниже:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP") ? "Ready" : "Failed!"
WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP") ? "Ready" : "Failed!"
</syntaxhighlight>
</syntaxhighlight>
Строка 98: Строка 98:
Эта строчка вернет '''«Ready»''' (т.е. '''«Готово»''') или '''«Failed!»''' (т.е. '''«Настроить точку доступа не удалось»''') в зависимости от результата функции WiFi.softAP(). Это позволяет существенно сократить размер скетча, не урезая его функциональность.
Эта строчка вернет '''«Ready»''' (т.е. '''«Готово»''') или '''«Failed!»''' (т.е. '''«Настроить точку доступа не удалось»''') в зависимости от результата функции WiFi.softAP(). Это позволяет существенно сократить размер скетча, не урезая его функциональность.


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
#include <ESP8266WiFi.h>
#include <ESP8266WiFi.h>



Текущая версия от 12:52, 18 июня 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



Настройка ESP8266 в режим программной точки доступа[1]

Пример ниже показывает, как настроить ESP8266 в режим программной точки доступа (т.е. в режим, при котором к ESP8266 смогут подключаться станции). WiFi-сеть, заданная программной точкой доступа, будет идентифицироваться через SSID, заданный при настройке ESP8266. Кроме того, сеть можно защитить паролем. Если пароль не задать, сеть будет считаться открытой (т.е. к ней сможет подключиться кто угодно).

Скетч

Для того, чтобы настроить ESP8266 в режим программной точки доступа, нужно всего несколько строчек кода.

#include <ESP8266WiFi.h>

void setup()
{
  Serial.begin(115200);
  Serial.println();

  Serial.print("Setting soft-AP ... ");
           //  "Настройка программной точки доступа ... "
  boolean result = WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP");
  if(result == true)
  {
    Serial.println("Ready");
               //  "Готово"
  }
  else
  {
    Serial.println("Failed!");
               //  "Настроить точку доступа не удалось"
  }
}

void loop()
{
  Serial.printf("Stations connected = %d\n", 
WiFi.softAPgetStationNum());
            //  "Количество подключенных станций = "
  delay(3000);
}

Как использовать этот скетч?

В строчке...

boolean result = WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP")

...поменяйте pass-to-soft-AP на какой-нибудь осмысленный пароль, а затем загрузите скетч на ESP8266. Теперь откройте монитор порта. Там должно быть примерно следующее:

Setting soft-AP ... Ready
Stations connected = 0
Stations connected = 0
...

В мобильном телефон или ПК откройте список точек доступа, найдите ESPsoftAP_01 и подключитесь к ней. Когда новая станция подключится, это должно отразиться в мониторе порта:

Stations connected = 1
Stations connected = 1
...

Если у вас есть еще одна WiFi-станция, подключите и ее тоже. Затем загляните в монитор порта, который теперь должен сообщать, что к точке доступа подключены две станции.

Как это работает?

Скетч маленький, так что разбор будет несложным. В первой строчке мы подключаем библиотеку ESP8266WiFi:

#include <ESP8266WiFi.h>

Настройка точки доступа ESPsoftAP_01 выполняется здесь:

cpp  boolean result = WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP");

Если эта операция проходит успешно, функция возвращает true, а если нет, то false. Для того, чтобы напечатать в мониторе порта результат операции («Ready» или «Failed!»), в скетче используется оператор if-else.

Можно ли упростить скетч?

Можно ли сделать этот скетч еще проще? Конечно! Это можно реализовать через альтернативную версию оператора if-else, как показано ниже:

WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP") ? "Ready" : "Failed!"

Эта строчка вернет «Ready» (т.е. «Готово») или «Failed!» (т.е. «Настроить точку доступа не удалось») в зависимости от результата функции WiFi.softAP(). Это позволяет существенно сократить размер скетча, не урезая его функциональность.

#include <ESP8266WiFi.h>

void setup()
{
  Serial.begin(115200);
  Serial.println();

  Serial.print("Setting soft-AP ... ");
           //  "Настройка программной точки доступа ... "
  Serial.println(WiFi.softAP("ESPsoftAP_01", "pass-to-soft-AP") ? "Ready" : "Failed!");
}

void loop()
{
  Serial.printf("Stations connected = %d\n", 
WiFi.softAPgetStationNum());
              //  "Количество подключенных станций = "
  delay(3000);
}

На мой взгляд, получилось очень симпатично. Если вы в первый раз видите оператор ? :, рекомендую начать пользоваться им прямо сейчас. Он позволяет сделать код более компактным и элегантным.

Итого

Благодаря библиотеке ESP8266WiFi настроить чип ESP8266 в режим программной точки доступа очень просто.

Разобравшись со скетчем в этой статье, можете попробовать скетч посложнее. Он демонстрирует, как получить доступ к точке доступа на базе ESP8266 из браузера.

О функциях для управления точкой доступа на базе ESP8266 читайте в этой статье.

См.также

Внешние ссылки