娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

玩轉(zhuǎn) ESP32 + Arduino (十) WIFI(AP模式) (STA模式) (smartConfig)

發(fā)布者:TranquilJourney最新更新時間:2025-04-07 來源: jianshu關(guān)鍵字:ESP32  Arduino  WIFI  AP模式  STA模式 手機看文章 掃描二維碼
隨時隨地手機看文章

一. WiFi的STA和AP模式指什么?

ESP8266有三種工作模式,分別為:AP,STA,AP混合STA

1. AP

AP,也就是無線接入點,是一個無線網(wǎng)絡的創(chuàng)建者,是網(wǎng)絡的中心節(jié)點。一般家庭或辦公室使用的無線路由器就一個AP。

2. STA

STA是Station的簡稱,類似于無線終端,STA本身并不接受無線的接入,它可以連接到AP,簡單來說就是和手機連接WIFI熱點的工作狀態(tài)相同,可以連接其它的熱點。

3. AP混合STA

了解了前兩個概念,AP混合STA模式就不難理解了,就是既可以連接到其它的WIFI熱點,也可以讓別的無線終端連接,這兩個過程能同時進行。


二. 切換模式相關(guān)API

1. 設置WIFI模式

WiFi.mode(WIFI_MODE_AP);

模式定義如下:


typedef enum {

    WIFI_MODE_NULL = 0,  /**< null mode */

    WIFI_MODE_STA,       /**< WiFi station mode */

    WIFI_MODE_AP,        /**< WiFi soft-AP mode */

    WIFI_MODE_APSTA,     /**< WiFi station + soft-AP mode */

    WIFI_MODE_MAX} wifi_mode_t;

2. 獲取WIFI工作模式

WiFi.getMode();

3. 使能/使能STA模式

WiFi.enableSTA(true);

4. 使能/使能AP模式

WiFi.enableAP(true);

5. 使能/使能Wifi休眠

WiFi.setSleep(true);

僅限STA模式, 默認開啟休眠, 如果對實時性要求高,應關(guān)閉休眠


三. AP熱點

1. WIFI AP熱點建立 WiFisoftAP()

bool WiFiAPClass::softAP(const char *ssid, const char *passphrase = (const char *)__null, int channel = 1, int ssid_hidden = 0, int max_connection = 4)功能:建立AP熱點

參數(shù):ssid – WIFI名稱SSID (max 63 char).passphrase – WIFI密碼(for WPA2 min 8 char, for open use NULL)channel – WiFi 信道, 1 - 13.(默認1)ssid_hidden – 是否隱藏WIFI名 (0 = broadcast SSID, 1 = hide SSID) 默認0,不隱藏

max_connection – 最大可連接數(shù), 1 - 4. 默認4

2. 配置AP 熱點 WiFi.softAPConfig();

bool WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet)功能: 配置AP 熱點參數(shù):local_ip – 本地IP 192.168.4.1

gateway – 網(wǎng)關(guān)IP 192.168.4.1

subnet – 子網(wǎng)掩碼 255.255.255.0

3. 斷開wifi WiFi.disconnect();

bool WiFiSTAClass::disconnect(bool wifioff = false, bool eraseap = false)功能: 斷開AP熱點


參數(shù):wifioff : 為true則還將關(guān)閉網(wǎng)絡功能, 默認false eraseap : 為true則清空AP熱點配置信息, 默認false 返回:返回wlan狀態(tài)碼

4. 一些獲取AP熱點信息的API

#include #include 'WiFi.h'void setup(){

  Serial.begin(115200);

  WiFi.softAP('ESP_AP', '12345678');}void loop(){

  Serial.print('主機名:');

  Serial.println(WiFi.softAPgetHostname());

  Serial.print('主機IP:');

  Serial.println(WiFi.softAPIP());

  Serial.print('主機IPV6:');

  Serial.println(WiFi.softAPIPv6());

  Serial.print('主機SSID:');

  Serial.println(WiFi.SSID());

  Serial.print('主機廣播IP:');

  Serial.println(WiFi.softAPBroadcastIP());

  Serial.print('主機mac地址:');

  Serial.println(WiFi.softAPmacAddress());

  Serial.print('主機連接個數(shù):');

  Serial.println(WiFi.softAPgetStationNum());

  Serial.print('主機網(wǎng)絡ID:');

  Serial.println(WiFi.softAPNetworkID());

  Serial.print('主機狀態(tài):');

  Serial.println(WiFi.status());

  delay(1000);}

5. 設置主機名稱 WiFi.softAPsetHostname('ESP_xiongba');

bool WiFiAPClass::softAPsetHostname(const char *hostname)Set the softAP interface Host name.參數(shù):hostname – pointer to const string


返回:true on success

四. STA模式

1. 開始wifi連接 WiFi.begin()

wl_status_t WiFiSTAClass::begin(const char *ssid, const char *passphrase = (const char *)__null, int32_t channel = 0, const uint8_t *bssid = (const uint8_t *)__null, bool connect = true)還有 2 個重載


啟動Wifi連接如果設置了密碼短語,將自動選擇最安全的支持模式


參數(shù):ssid – WIFI名, const char* Pointer to the SSID string.passphrase – 密碼, const char * Optional. Passphrase. Valid characters in a passphrase must be between ASCII 32-126 (decimal).channel – (AP的通道, 可選參數(shù))Optional. Channel of AP

bssid – BSSID是指站點的MAC地址(可選參數(shù)) uint8_t[6] Optional. BSSID / MAC of AP

connect – (是否連接此WIFI, 可選參數(shù))Optional. call connect

  WiFi.begin('anny', '20141208');

  while (!WiFi.isConnected())

  {

    delay(500);

    Serial.print('.');

  }

  Serial.println('WIFI連接成功!');

2. wifi配置

bool WiFiSTAClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0, IPAddress dns2 = (uint32_t)0)Change IP configuration settings disabling the dhcp client


參數(shù):local_ip – 當?shù)豂P, Static ip configuration

gateway – 網(wǎng)關(guān), Static gateway configuration

subnet – 子網(wǎng)掩碼, Static Subnet mask

dns1 – DNS服務器1, Static DNS server 1dns2 – DNS服務器2, Static DNS server 2

3. 關(guān)閉wifi連接

用法和AP的disconnect一樣


bool WiFiSTAClass::disconnect(bool wifioff = false, bool eraseap = false)Disconnect from the network


參數(shù):wifioff


返回:one value of wl_status_t enum

4. 其他一些獲取WIFI信息的API

#include #include 'WiFi.h'void setup(){

  Serial.begin(115200);

  // WiFi.softAP('ESP_AP', '12345678');

  // WiFi.softAPsetHostname('ESP_xiongba');

  WiFi.begin('anny', '20141208');

  WiFi.setAutoReconnect(true);}void loop(){

  Serial.print('是否連接:');

  Serial.println(WiFi.isConnected());

  Serial.print('本地IP:');

  Serial.println(WiFi.localIP());

  Serial.print('本地IPv6:');

  Serial.println(WiFi.localIPv6());

  Serial.print('mac地址:');

  Serial.println(WiFi.macAddress());

  Serial.print('網(wǎng)絡ID:');

  Serial.println(WiFi.networkID());

  Serial.print('休息:');

  Serial.println(WiFi.getSleep());

  Serial.print('獲取狀態(tài)嗎:');

  Serial.println(WiFi.getStatusBits());

  Serial.print('getTxPower:');

  Serial.println(WiFi.getTxPower());

  Serial.print('是否自動連接:');

  Serial.println(WiFi.getAutoConnect());

  Serial.print('是否自動重連:');

  Serial.println(WiFi.getAutoReconnect());

  Serial.print('獲取模式:');

  Serial.println(WiFi.getMode());

  Serial.print('獲取主機名:');

  Serial.println(WiFi.getHostname());

  Serial.print('獲取網(wǎng)關(guān)IP:');

  Serial.println(WiFi.gatewayIP());

  Serial.print('dnsIP:');

  Serial.println(WiFi.dnsIP());

  Serial.print('狀態(tài):');

  Serial.println(WiFi.status());

  delay(1000);}



連接瞬間的狀態(tài)變化


關(guān)于狀態(tài)碼, 請看下面解釋:




5. 設置自動連接

bool WiFiSTAClass::setAutoReCoennect(bool autoConnect)Setting the ESP32 station to connect to the AP (which is recorded)automatically or not when powered on. Enable auto-connect by default.參數(shù):autoConnect – bool


返回:if saved

6. 設置自動重連

設置WIFI斷開后是否自動嘗試重連


bool WiFiSTAClass::setAutoReconnect(bool autoReconnect)

五. 掃描WIFI

1. 掃描WIFI,返回掃描數(shù)量

這個功能默認在阻塞模式下運行,程序會掃描WIFI,期間什么事情都做不了, 可以通過參數(shù)設置改為異步模式.


int16_t WiFiScanClass::scanNetworks(bool async = false, bool show_hidden = false, bool passive = false, uint32_t max_ms_per_chan = 300U)Start scan WiFi networks available


參數(shù):async – run in async mode

show_hidden – show hidden networks


返回:Number of discovered networks

只返回了掃描到的WIFI的數(shù)量, 那結(jié)果怎么得到? 原來他已經(jīng)將掃描到的WIFI存入了WIFI單例對應的數(shù)組中.

比如 SSID,都存入了 WiFi.SSID中,可以通過索引值遍歷獲取. 其他屬性亦然.


2. 掃描連接WIFI(同步方式)

#include #include 'WiFi.h'String ssid;String password;void setup(){

  Serial.begin(115200);

  WiFi.mode(WIFI_MODE_STA);

  WiFi.disconnect(); //斷開可能的連接

  delay(100);

  Serial.println('開始掃描WIFI:');

  int n = WiFi.scanNetworks();

  if (n)

  {

    Serial.print('掃描到');

    Serial.print(n);

    Serial.println('個WIFI');

    for (size_t i = 0; i < n; i++)

    {

      Serial.print('WiFi的名稱(SSID):');

      Serial.println(WiFi.SSID(i));

      Serial.print('WiFi的信號強度(RSSI):');

      Serial.println(WiFi.RSSI(i));

      Serial.print('WiFi加密與否:');

      Serial.println(WiFi.encryptionType(i) == WIFI_AUTH_OPEN ? '未加密' : '加密');


      if (WiFi.SSID(i) == 'anny')

      {

        ssid = WiFi.SSID(i);

        password = '20141208';

      }

    }

  }

  else

  {

    Serial.println('沒掃描到WIFI');

  }

  WiFi.begin(ssid.c_str(), password.c_str());

  while (!WiFi.isConnected())

  {

    Serial.print('.');

  }

  Serial.println('連接成功');}void loop(){}



3. 異步模式時,獲取掃描完成信息  WiFi.scanComplete();

int16_t WiFiScanClass::scanComplete()called to get the scan state in Async mode


返回:scan result or status -1 if scan not fin -2 if scan not triggered

如果沒用掃描完成, 則返回-1 , 如果根本沒在掃描,返回-2

如果完成了掃描,返回掃描結(jié)果


4. 清除現(xiàn)有的掃描結(jié)果

WiFi.scanDelete();

5. 掃描連接WIFI(異步)

采用異步掃描方式, 每隔0.5秒詢問一下WiFi.scanComplete();判斷是否掃描完畢.

如果掃描完畢,置標志位,停定時器.

觸發(fā)連接程序, 連接完成后


#include #include 'WiFi.h'#include 'Ticker.h'String ssid = '';String password = '';Ticker t1;void aysncScanHandler(){

  if (!WiFi.isConnected())

  {

    int wifiScanStatus = WiFi.scanComplete();

    switch (wifiScanStatus)

    {

    case -1:

      Serial.println('掃描中...');

      break;

    case -2:

      Serial.println('未進行掃描...');

      break;

    default:

      Serial.println('掃描完成');

      for (size_t i = 0; i < wifiScanStatus; i++)

      {

        Serial.print('WiFi的名稱(SSID):');

        Serial.println(WiFi.SSID(i));

        Serial.print('WiFi的信號強度(RSSI):');

        Serial.println(WiFi.RSSI(i));

        Serial.print('WiFi加密與否:');

        Serial.println(WiFi.encryptionType(i) == WIFI_AUTH_OPEN ? '未加密' : '加密');


        if (WiFi.SSID(i) == 'anny')

        {

          ssid = WiFi.SSID(i);

          password = '20141208';

        };

      }

      WiFi.scanDelete();

      t1.detach();

      break;

    }

  }}void connectAnny(){

  WiFi.begin();

  while (!WiFi.isConnected())

  {

    Serial.print('.');

  }

  Serial.println('連接成功');}void setup(){

  Serial.begin(115200);

  WiFi.mode(WIFI_MODE_STA);

  WiFi.disconnect(); //斷開可能的連接

  delay(100);

  Serial.println('開始掃描WIFI:');

  WiFi.scanNetworks(true);

  t1.attach(0.5, aysncScanHandler);}void loop(){

  if (!WiFi.isConnected())

  {

    if (ssid == 'anny')

    {

      Serial.println(ssid);

      connectAnny();

    }

  }}

六. 智能配網(wǎng)

1. 什么是智能配網(wǎng)

智能配網(wǎng)這種快速連接方式,相對于 AP 模式連接簡化操作,更加貼近于市場

1、手機連上 WiFi,打開智能硬件指定 APP 軟件,進入配置界面,輸入手機所在 WiFi 密碼,請求配網(wǎng) TOKEN
2、智能硬件開啟混雜模式監(jiān)聽所有網(wǎng)絡數(shù)據(jù)包
3、手機通過廣播、組播循環(huán)發(fā)送 ssid/password/token
4、硬件設備通過 UDP 包(長度)獲取配置信息捕捉到 ssid/password/token,報文后解碼,得到正確的 SSID 和密碼,然后主動連接指定 SSID 的路由完成連接。

[1] [2]
關(guān)鍵字:ESP32  Arduino  WIFI  AP模式  STA模式 引用地址:玩轉(zhuǎn) ESP32 + Arduino (十) WIFI(AP模式) (STA模式) (smartConfig)

上一篇:玩轉(zhuǎn) ESP32 + Arduino (十一) EEPROM NTP對時 藍牙透傳
下一篇:玩轉(zhuǎn) ESP32 + Arduino (八) U8G2驅(qū)動OLED

推薦閱讀最新更新時間:2025-04-11 09:03

玩轉(zhuǎn) ESP32 + Arduino (二十一) SPIFFS文件系統(tǒng) (已棄用)
SPIFFS已被拋棄, ????, 原因參考: https://www.bilibili.com/video/BV1kR4y1o7H7 現(xiàn)在我們使用LittleFS代替它, 請參考后續(xù)文章 一. 文件系統(tǒng) SPIFFS ESP32 自帶SPIFFS.h庫用來管理文件系統(tǒng) 注意: 此文件系統(tǒng)是沒用文件層次的 比如你建立一個 /doc/test.txt 那這個txt的名字就是 doc/test, 而不是在doc目錄下有個 test.txt #include SPIFFS.h 二. SPIFFS相關(guān)函數(shù) 1. SPIFFS.begin(); //開啟SPIFFS 參數(shù):- formatOnFail : 打開失敗就格式化 (
[單片機]
stm32系列簡介與stm32 esp32性能比較
STM32應該是比較熟悉的一個系列的單片機,而ESP32相對陌生一些。但是從名字看,兩者應該都是32位單片機。那么兩者之間到底有什么關(guān)聯(lián),或者性能哪個好一些,哪個差一些呢? STM32系列 意法半導體 (STMicroelectronics) 集團于1987年6月成立,是由意大利的SGS 微電子公司和法國Thomson 半導體公司合并而成。1998年5月,SGS-THOMSON Microelectronics 將公司名稱改為意法半導體有限公司,意法半導體是世界最大的半導體公司之一。 STM32系列專為要求高性能、低成本、低功耗的嵌入式應用設計的ARM Cortex?-M0,M0+,M3, M4和M7內(nèi)核(ST‘s produ
[單片機]
stm32系列簡介與stm32 <font color='red'>esp32</font>性能比較
基于Arduino制作一款自動家庭清潔機器人
自動地板清潔劑并不是什么新鮮事,但它們都有一個共同的問題。它們對于它們所做的事情來說都太昂貴了。今天,我們將制作一款自動家庭清潔,其成本僅為市場上的一小部分。這個機器人可以它前面的障礙物和物體,并可以繼續(xù)移動,避開障礙物,直到整個房間被清理干凈。它附有一個小刷子來清潔地板。 所需組件: UNO R3。 超聲波。 Arduino Motor Driver Shield。 輪驅(qū)動機器人底盤。 計算機對Arduino進行。 電池。 為Arduino供電的移動 鞋刷。 蘇格蘭布里特磨砂墊。 注意:除了使用電池,您還可以像我們一樣使用長 4 股線。
[機器人]
So easy!Zephyr操作系統(tǒng)+Arduino開發(fā)板變成一款心率監(jiān)測器
“大健康”概念提出以后,作為醫(yī)院外補充醫(yī)療的可穿戴設備掀起一股發(fā)展熱潮,心率監(jiān)測儀作為一款常見的監(jiān)測設備很受歡迎。它不僅價格便宜,而且體積小攜帶方便,隨時隨地都能測試,并給用戶提供實時監(jiān)測結(jié)果,讓用戶及時了解健康狀況并采取合適的治療方式。那么對于開發(fā)者來說,如何快速開發(fā)一款心率監(jiān)測儀?今天,我們就手把手教你采用Zephy操作系統(tǒng)在 Arduino 101 開發(fā)板上搭建一款心率監(jiān)測儀。 先來了解一下心率檢測儀的組成部分,一般包括硬件部分和軟件部分。硬件部門主要完成的功能包括數(shù)據(jù)采集、數(shù)據(jù)傳輸和數(shù)據(jù)顯示,軟件部分主要進行數(shù)據(jù)轉(zhuǎn)換和分析。我們采用的Arduino 101開發(fā)板上有一個英特爾居里模塊,英特爾Quark SE處理器有兩個核:
[嵌入式]
適用WiFi5的Qorvo QPF4219集成前端模塊貿(mào)澤開售
專注于引入新品并提供海量庫存的電子元器件分銷商貿(mào)澤電子 (Mouser Electronics) 即日起開售Qorvo? QPF4219前端模塊 (FEM)。這款2.4 GHz FEM面向采用Wi-Fi? 5 (802.11ac) 的物聯(lián)網(wǎng) (IoT) 系統(tǒng)而設計,外型小巧,并且集成了匹配功能,能夠盡可能縮小無線路由器、家用網(wǎng)關(guān)和接入點等應用內(nèi)的布局面積。 貿(mào)澤電子分銷的Qorvo QPF4219 FEM在單一器件內(nèi)集成了2.4 GHz功率放大器 (PA)、穩(wěn)壓器、單刀雙擲 (SPDT) 開關(guān)、帶旁路模式的低噪聲放大器 (LNA) 以及電源電壓探測器。該器件旨在高效優(yōu)化采用5V電源電壓的PA,在降低耗電量的同時盡可能維持
[網(wǎng)絡通信]
適用<font color='red'>WiFi</font>5的Qorvo QPF4219集成前端模塊貿(mào)澤開售
WIFI6會引領(lǐng)無線通信新一輪浪潮嗎
2018年11月28日,移動應用、基礎設施與航空航天、國防應用中 RF 解決方案的領(lǐng)先供應商 Qorvo?, Inc.(納斯達克代碼:QRVO)在在北京召開發(fā)布會。 5G時代即將到來,WIFI也進入了第六代WIFI時代。在去年Qorvo進行過一次類似的演講,一年多的時間過去了,Qorvo在網(wǎng)絡和連接方式上都發(fā)生了哪些變化呢?Wi-Fi之父、現(xiàn)任Qorvo無線連接業(yè)務部總經(jīng)理Cees Links在本次發(fā)布會上為我們做出了詳細的解答 Qorvo無線連接業(yè)務部總經(jīng)理Cees Links 一、迎接5G和WIFI 6的到來 Cees Links分享了一個小趣事:在第一代WIFI出來的時候,Cees Links的一個老板曾
[網(wǎng)絡通信]
<font color='red'>WIFI</font>6會引領(lǐng)無線通信新一輪浪潮嗎
不敵千元機!華為P20 Lite被曝不支持5G WiFi頻段
集微網(wǎng)消息(文/羅明)要說5G WiFi頻段(以下簡稱5G WiFi)相較于2.4G WiFi(以下簡稱2.4G WiFi)頻段的優(yōu)勢,毫無疑問是它用的人少,網(wǎng)速快。因此對于消費者來說,手機是否支持5GWiFi很重要,手機廠商們也盡力讓自家手機支持5G WiFi。 圖片來源:極路由官網(wǎng) 然而卻有手機廠商例外,它便是華為。根據(jù)推特大神Roland Quandt的爆料,華為P20 Lite版本目前已經(jīng)通過了美國FCC的認證,確認搭載安卓8.0系統(tǒng),配備2900毫安時電池,18W的快充,二選一與或卡托,要么插兩張SIM卡,要么插一SIM卡,插一張SD卡。 有趣的是華為P20 Lite就不支持5G WiFi,要知道在國內(nèi)已經(jīng)有不少
[手機便攜]
WiFi之父Cees Links 談Qorvo物聯(lián)網(wǎng)方案:小而美,且不妥協(xié)性能
作為全球領(lǐng)先的射頻解決方案供應商Qorvo 過去幾年不斷擴大業(yè)務版圖,就在2016年4月,Qorvo 還通過收購智能家居和物聯(lián)網(wǎng)無線電通信半導體公司 GreenPeak Technologies 正式邁入低功耗市場。 值得注意的是,通過此次收購Qorvo?不僅完善了從大功率到低功耗射頻器件領(lǐng)域的全覆蓋,而且還促成了被譽為“Wi-Fi之父”的Cees Links 加入。日前,Cees Links 以Qorvo 無線連接業(yè)務總經(jīng)理的身份來到北京,并暢談了Qorvo 在物聯(lián)網(wǎng)領(lǐng)域的布局。 “Wi-Fi之父” Cees Links??加入Qorvo? 首先我們先了解一下Cees Links 的經(jīng)歷,作為Qorvo 在物聯(lián)網(wǎng)領(lǐng)域無線連
[手機便攜]
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 车险| 安阳市| 建昌县| 盖州市| 潮安县| 通江县| 东兰县| 辽宁省| 观塘区| 陆川县| 通许县| 虎林市| 聊城市| 沽源县| 梧州市| 新绛县| 忻城县| 祁连县| 庐江县| 汽车| 武义县| 棋牌| 丽水市| 德庆县| 本溪| 太湖县| 建水县| 棋牌| 锡林浩特市| 搜索| 金坛市| 龙州县| 佛山市| 西昌市| 吴旗县| 灵武市| 太保市| 梨树县| 灯塔市| 天镇县| 且末县|