Wifi sta что это
ESP8266 Урок 14. Wi-Fi. Режим STA (Станция)
Ну вот, наконец-то, дошли мы до той темы, к которой стремились и ради чего начинался цикл уроков по контроллерам ESP8266 – это приём и передача данных при помощи возможностей ESP8266 по беспроводной сети Wi-Fi.
Я думаю, что все знают, что это за тип сети и для чего она применяется.
Напомню лишь, что Wi-Fi – это протокол передачи данных, осуществляемой без применения проводов, физического уровня.
Как именно передаются данные по сети и как они подготавливаются, как заворачиваются в протоколы различного уровня, мы также очень хорошо знаем. Кто не помнит, напомню – смотрите уроки 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52 по программированию контроллеров AVR, а также аналогичные уроки по контроллерам STM32. В данных уроках мы очень подробно рассмотрели многие протоколы всех уровней модели OSI. Те же самые протоколы будут использоваться и здесь, причём нам особо не придётся их программировать вручную, но знать, как они устроены, для чего нужны, мы обязаны, чтобы избежать ошибок при передаче данных, а также, если они и возникнут, то оперативно их устранить. И рассмотренных нами протоколов нам не потребуется протокол физического уровня Ethernet, его заменит протокол Wi-Fi.
Мы пока подробно не будем изучать протокол Wi-Fi, так как с ним работает наш контроллер аппаратно, но режимы работы мы должны знать. И знакомится с их разновидностями мы будем постепенно.
А пока мы должны знать, что наш контроллер ESP8266 поддерживает три основных режима работы – станция (Station mode или кратко STA), программная точка доступа (SoftAP), а также смешанный – Station + SoftAP.
Самым простым из этих режимов является первый – режим станции.
Режим станции (STA) – это такой режим, в котором контроллер не создает собственную сеть, а подключается к любой существующей сети Wi-Fi, например, к существующей локальной сети или к другому устройству, работающему в режиме точки доступа (AP).
На данном уроке мы настроим режим станции и попробуем подключиться к существующей точке доступа, например к роутеру, который раздаёт Wi-Fi по дому. Роутер от просто точки доступа отличается тем, что трафик, идущий от станций, подключенных к нему, он транслирует во внешнюю сеть и наоборот.
Пока воспользуемся возможностями SDK, то есть не будем лезть глубоко в дебри аппаратной части. Всему своё время.
Схема у нас будет простейшая – отладочная плата, подключенная к USB компьютера
Весь процесс соединения с точкой доступа и вхождение в различные стадии соединения мы будем отслеживать с помощью терминальной программы с помощью UART.
Проект наш выполнен из проекта прошлого урока с именем OS_TIMER и назван WIFI_STA.
Русские Блоги
Что делает режим STA и AP WiFi в?
Что делает режим STA и AP WiFi в?
1): AP, то есть беспроводная точка доступа является создателем беспроводной сети, которая является центральным узлом сети. Беспроводные маршрутизаторы, используемые в общих домах или офисах являются AP.
2): СТА-сайт, каждый из терминалов, подключенных к беспроводной сети (например, портативных компьютеров, карманных компьютеров и другого оборудования пользователя) можно назвать сайт.
AP (Access Point): Беспроводная точка доступа, это понятие особенно широко, здесь, используйте большие белые слова, вы можете использовать CC3200 в качестве беспроводного маршрутизатора, этот маршрутизатор не может вставить сетевой кабель, не имеет доступа к Интернету, может ждать только для других устройств Link и интеллектуально доступа одного устройства. Как и в режиме точка-точка.
STA(Stati«ON): Любое устройство доступа к беспроводной точке доступа может упоминаться как сайт. Большие белые слова также оборудование, которое обычно маршрутизаторы доступа.
SSID (Service Set Identifier): SSID, каждая беспроводная точка доступа должна иметь маркировку для идентификации пользователя, SSID это имя для пользователей, чтобы определить, что есть имя Wi-Fi мы часто говорим.
BSSID: Каждое сетевое устройство имеет свой физический адрес, используемый для идентификации Эта вещь называется MAC-адрес Эта вещь будет иметь значение по умолчанию в целом, и оно может быть изменено, и есть также его фиксированный именования формата Это также устройство. идентификация. Идентификатор. Это BSSID для устройства. Для оборудования СТО, МАС-адрес, который получает точку доступа AP это BSSID.
Например, компания имеет большую площадь, установки несколько беспроводных точек доступа (AP или беспроводные маршрутизаторы), и сотрудников компании, только нужно знать об SSID для беспроводных сетей доступа в любом месте в пределах компании. BSSID фактически MAC-адрес каждой беспроводной точки доступа. Когда работник перемещается в компании, SSID является постоянным. Но BSSID постоянно меняется при переключении на различные беспроводные точки доступа.
Для того, чтобы использовать шутил претензии, BSSID является число конкретных цепи (001) или адрес. SSID это имя или фото цепи, ESSID является головной офис или Вывеска или бренд сети. Общий SSID и ESSID одинаковы.
RSSI: Это проще, что для проверки силы сигнала сайта AP через STA.
ESP32: Wi-Fi
Для работы с Wi-Fi понадобится встроенная библиотека WiFi.h (исходники). В большинстве примеров вам надо знать имя сети и пароль от него. После окончания работы желательно вызывать метод WiFi.disconnect(true);.
Базовый минимальный пример
Сначала рассмотрим базовый пример для общего понимания. Все пояснения в комментариях.
Теперь можно писать более сложные примеры.
Получить IP-адреса
В пассивном режиме без входа в сеть вы получите IP-адрес, равный 0.0.0.0. Если нужно получить реальный адрес, то скетч нужно переписать. Добавим возможность входа в сеть, используя учётные данные.
Теперь вы получите реальный IP-адрес. Узнав адрес через WiFi.localIP(), вы можете в командной строке ввести команду ping ESP_ADDRESS (подставьте ваш адрес), чтобы убедиться, что устройство находится в сети. Пригодится для отладки примеров.
Метод WiFi.getHostname() возвращает имя платы espressif. По идее по этому имени тоже можно обращаться через команду ping espressif, но у меня этот вариант не заработал.
Также привёл другие вызовы функций, которые встречаются в библиотеке.
Другой вариант получения IP-адреса через лямбда-функции.
Ещё один пример получения IP-адреса разными способами. На этот раз обойдёмся без лямбда-функции. Как и в предыдущем примере мы отслеживаем событие SYSTEM_EVENT_STA_GOT_IP и при его наступлении вычисляем адрес.
Узнать настройки Wi-Fi модуля
Для скетча нам не понадобится вводить пароль от Wi-Fi, достаточно просто включить сам Wi-Fi на плате и узнать его Mac-адрес, запустить диагностику, узнать локальный адрес.
WiFiScan
Встроенный пример Examples/WiFi/WiFiScan служит для сканирования WiFi-сети. Выводит число найденных точек и их названия.
В скетче используются следующие функции:
Сканируем WiFi-сеть. Расширенный вариант
Чтобы просканировать текущую WiFi-сеть, нам понадобятся учётная запись для входа в неё (идентификатор и пароль). После успешного входа запускаем сканирование через функцию WiFi.scanNetworks(), которая вернёт информацию о всех точках доступа с сопутствующими свойствами.
Для удобства часть кода поместим в отдельные функции: scanNetworks() и connectToNetwork() (её можно использовать при использовании контроллера в качестве веб-клиента.
В мониторе порта выводится следующая информация (часть данных я убрал в целях безопасности).
Точка доступа
Плата ESP32 может работать как точка доступа. Для первого знакомства получим базовую информацию о точке доступа через доступные функции. Мы можем установить собственные значения для SSID и пароля (пароль можно даже не указывать, чтобы сеть была открытой).
После загрузки скетча мы получим IP-адрес платы. В настройках компьютера или смартфона должна появиться созданная точка доступа. Кстати, когда пробовал вариант с паролем, то точка доступа не создалась почему-то.
Отслеживаем момент подключения и отключения устройства к точке доступа
За соответствующие события отвечают SYSTEM_EVENT_AP_STACONNECTED и SYSTEM_EVENT_AP_STADISCONNECTED.
После загрузки скетчка в настройках телефона найдите созданную точку доступа и присоединитесь к ней. Момент подключения будет обнаружен и в мониторе порта появится сообщение о соединении.
Mac-адрес для точки доступа
В первом примере с получением настроек модуля мы вычисляли Mac-адрес через функцию WiFi.macAddress. Существует также функция WiFi.softAPmacAddress(), когда плата работает в режиме точки доступа.
Включаем поддержку IPv6
Мы можем включить поддержку IPv6 и получить адрес в этом формате. Включение поддержки IPv6 происходит при помощи функции softAPenableIpV6(). Вызовем функцию при событии SYSTEM_EVENT_AP_START, когда активируется точка доступа.
После включения поддержки в событии SYSTEM_EVENT_AP_STA_GOT_IP6 (получение адреса) узнаём IPv6-адрес.
Сколько устройств подключено к точке доступа
Узнать число устройств, которые в данный момент подключены к точке доступа, можно через функцию softAPgetStationNum(). После запуска скетча подключите телефон и другие устройства к точке доступа, чтобы увидеть изменения.
Русские Блоги
Подробное объяснение режима работы AP и STA беспроводного модуля Wifi
Подробное объяснение режима работы AP и STA беспроводного модуля Wifi
Модуль Wi-Fi включает в себя два режима работы AP и STA. Благодаря поддержке этих двух режимов продукт беспроводной передачи изображения может реализовать функцию отправки одного и получения большего количества. Давайте начнем с основных концепций AP и STA.
1. Основные понятия AP и STA
AP: точка беспроводного доступа является создателем беспроводной сети и центральным узлом сети. Беспроводной маршрутизатор, используемый в обычных домах или офисах, является точкой доступа.
STA: каждый терминал, подключенный к беспроводной сети (например, ноутбуки, КПК и другое пользовательское оборудование, подключенное к сети), можно назвать сайтом.
2. Описание режимов работы AP и STA
1. Работа в режиме AP
Работая в режиме AP, мобильные телефоны, PAD, компьютеры и другие устройства могут быть напрямую подключены к модулю, который может легко управлять пользовательским оборудованием (Рисунок 2-1).
Рисунок 2-1 Работа в режиме AP
2. Работа в режиме STA
Это основной сетевой метод, состоящий из AP и множества STA, как показано на следующем рисунке. Характеристика состоит в том, что AP находится в центральном положении, и взаимная связь между STA завершается посредством пересылки AP. В этом режиме модуль WIFI работает в режиме STA (CLIENT). При правильных настройках данные COM и данные сети WIFI конвертируются друг в друга. (Рисунок 2-2)
esp8266 – Быстрый старт в Arduino IDE. Поднимаем сервер с HTML
Когда я попытался поработать с данной платой, первым делом мне захотелось сделать небольшой сервер, который отображает html файл. Я отправился на официальный сайт и нашёл много информации, захотелось разобрать более детально вопрос подключения к wi-fi, режимы работы клиента и точки доступа.
Можно работать в разных средах разработки, но самое простое – добавить плату в Arduino IDE. Сделать это очень просто. Сначала идём в настройки
Потом нужно добавить следующую ссылку на дополнительный репозиторий:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
После добавления этой ссылки, можно будет скачать набор плат esp8266 – перейдём в “менеджер плат”
Достаточно, ввести в поиск “esp”, как вы увидите нужную библиотеки, которую нужно скачать (esp8266 by ESP8266 Community)
Код я компилировал со следующими параметрами. 80Мгц после 16Мгц AtMega, звучит весомо.
Я почистил код от включения светодиода и оставил только составляющую для подключения к сети wi-fi в режиме клиента. Обычно это необходимый минимум для IoT устройства.
Единственное – мне не понравилось получение адреса по DHCP. Очень быстро обнаружилась команда
Где эти все параметры можно задать, например после объявления переменных
Теперь запускаем терминал и проверяем
Проверяем пинг – всё отлично.
Немного про режимы работы esp8266 – можно работать только как клиент, что мне и нужно
Можно только как точка доступа (AP) или комбинированный режим
Оба режима включать конечно есть смысл. Приведу пример из мира домашних камер видеонаблюдения – сначала устройство работает в режиме AP и вы можете к нему легко подключиться. Потом заходите на главную страницу, находите свою wi-fi сеть, подключаетесь – всё! Устройство в вашей сети, и режим точки доступа больше не нужен, до следующего сброса. Для старта esp8266 в режиме точки доступа (AP), можно использовать команду
Теперь, если поменять строчку
То мы сможем найти с любого устройства нашу сеть
Если удалить password, то сеть, которую создаёт модуль будет открытая, без пароля.
Для устройства “из коробки”, это тоже хороший вариант, а например задание пароля сделать при первом подключении. Как видим, сеть стала открытой
Но какой смысл от сервера, если он просто пингуется, и ничего не показывает. Давайте попробуем сделать простую веб-страницу. Если после старта сервера добавить следующую строку, которая позволяет загружать корневую страницу при обращении к серверу
А потом создать функцию handleRoot, там можно описать ответы сервера
200 код – это код успешного ответа на запрос пользователя. В данном случае мы отправляем обычный текст hello World. Также помимо этого мы можем выполнить другие действия в данной функции, если требуется. Проверяем:
Давайте заставим наш сервер отображать, что нибудь интересное – например html файл. Создадим рядом с файлом проекта файл index.h со следующим содержимым. Этот пример я взял на этом сайте
Теперь подключим этот файл в наш основной проект (не забывайте, что оба файла должны лежать в одной папке)
Теперь нам нужно немного изменить функцию handleRoot, чтобы отобразить изменения на главной странице. Легко заметить, что мы поменяли формат отображения текста с “text/plain” на “text/html”,а вместо текста подкинули переменную строкового типа “s”, которая ссылается на область памяти программы PROGMEM. PROGMEM разрешает нам помещать код в flash-память, а не в оперативную, тем самым экономим ресурсы микроконтроллера.
Этот пример конечно заработал
Но мне было интересно проверить работу css. Закинул несколько стилей в теги и сделал 3 кнопки. Весь код получился вот такой
Отлично – esp8266 легко отдаёт web-страницы с css, так что можно делать красивые админки, для управления чем-либо
В следующих статьях назначим на эти кнопки полезные действия, попробуем парсить данные, например температуру и время и может поработаем с базой данных. Исходники этой статьи