ESP8266-Soft AP模式 —— 誰想連上我


AP是Access Point簡稱,也就是訪問接入點,是網絡的中心節點。一般家庭的無線路由器就是一個AP,眾多站點(STA)加入到它所組成的無線網絡,網絡中的所有的通信都通過AP來轉發完成。

 軟AP也叫做Soft-AP,硬件部分是一塊標准的無線網卡比如ESP8266,但其通過驅動程序使其提供與AP一樣的信號轉換、路由等功能

與傳統AP相比,它的成本很低,功能上也能湊合。在基本功能上,Soft AP與AP並沒有太大的差別,不過因為用軟件來實現AP功能,SoftAP的接入能力和覆蓋范圍遠不如AP

 注意點:一般能同時連接到Soft-AP 的station的個數上線到8個,但是一般默認是4個

 

ESP8266WiFiAP庫

ESP8266WiFiAP庫,大家使用的時候不需要     #include <ESP8266WiFiAP.h>
只需要引入    #include <ESP8266WiFi.h>
 
對於AP類庫的描述,可以拆分為三個部分:
1. 第一部分方法,建立AP網絡(Access Point,wifi熱點)
2. 第二部分方法,管理第一部分方法建立的連接
3. 第三部分方法,獲取AP的信息,包括MAC地址、IP地址等

 

 
 
建立AP網絡:
說明:
ssid                     SSID賬號 (max 63 char,最大63個字符)
passphrase        密碼(對於WPA2加密類型最少8個字符,對於開放網絡設置為NULL)----賬號密碼盡量都是英文字符
channel             WiFi 通道數字, 1 - 13.默認是1 
ssid_hidden      WiFI是否需要隱藏 (0 = broadcast SSID, 1 = hide SSID),通過它設置別人是否能看到你的WiFi網絡
max_connection   最大的同時連接數 1 - 4.當超過這個數,再多的station想連接也只能等待
bool              返回設置soft-AP的結果
 
語法:
bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0, int  max_connection = 4);
WiFi.softAP(ssid);    開放網絡---不需要密碼,只需要知道AP名字就可以了
WiFi.softAP(ssid, password);      校驗式網絡-----(需要輸入賬號密碼),通道為1,wifi不隱藏,最大連接數=4
WiFi.softAP(ssid, password,2,1);       校驗式網絡(需要輸入賬號密碼),通道為2,wifi隱藏,最大連接數=4 
 
softAPConfig —— 配置AP網絡信息:
說明:
local_ip              ip地址
gateway            網關IP地址
subnet              子網掩碼
soft-AP             建立的網絡,默認的IP地址是192.168.4.1
 
語法:
bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet);   
 
 
管理網絡:
 
 
語法:uint8_t WiFi.softAPgetStationNum() ;     獲取連接到AP上的station數目
 
bool softAPdisconnect(bool wifioff = false);      關閉AP模式
 
 
 
 
 
獲取信息:
IPAddress addr;
 addr=WiFi.softAPIP();     獲取AP的ip地址(默認192.168.4.1)   
 
 
獲取AP的mac地址:
uint8_t macAddr[6]; 
WiFi.softAPmacAddress(macAddr);    獲取AP的mac地址---保存在macAddr中---方式一
Serial.printf("MAC address = %02x:%02x:%02x:%02x:%02x:%02x\n", macAddr[0], macAddr[1], macAddr[2],macAddr[3], macAddr[4], macAddr[5]);   輸出地址
//樣本  MAC address = 5e:cf:7f:8b:10:13
 
Serial.printf("MAC address = %s\n", WiFi.softAPmacAddress().c_str());      輸出地址
 
WiFi.softAPmacAddress().c_str()       獲取AP的mac地址並轉化成指針
 
 
 
 
獲取AP的SSID :----賬號
String softAPSSID() ;      獲取AP的SSID 

 

 

獲取AP的PSK:---密碼
String softAPPSK() ; 

 

實例

 #include <ESP8266WiFi.h>
#define AP_SSID "AP_明哥" //這里改成你的AP名字--AP賬號
#define AP_PSW "lm654321" //這里改成你的AP密碼 8位以上
IPAddress local_IP(192,168,4,44);   //實例化IP地址
IPAddress gateway(192,168,4,9);     //實例化網關IP地址
IPAddress subnet(255,255,255,0);    //實例化子網掩碼

void setup() {
  Serial.begin(115200);
  delay(2000);
  Serial.print("配置AP網絡信息。。。。。。");
  WiFi.mode(WIFI_AP); //設置WIFI模式為AP模式
  delay(2000);
  Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "網絡信息成功" : "網絡信息失敗");  //配置AP網絡信息---並且串口提示輸出
  Serial.print("設置AP......");
  bool result = WiFi.softAP(AP_SSID, AP_PSW);  //設置賬號和密碼,通道為1,wifi不隱藏,最大連接數=4
//返回值:是否成功
if(result){ Serial.println("賬號密碼設置成功"); Serial.println(String("Soft-AP IP 地址是: ") + String(WiFi.softAPIP().toString())); //WiFi.softAPIP() 獲取AP的IP地址--就是IPAddress local_IP(192,168,4,44) Serial.println(String("MAC 地址是: ") + WiFi.softAPmacAddress().c_str()); //WiFi.softAPmacAddress().c_str() 獲取AP的mac地址並轉化成指針 }else{ Serial.println("賬號密碼設置失敗"); } Serial.println("設置完成"); } void loop() { //不斷打印當前的station個數 int i=WiFi.softAPgetStationNum(); Serial.println(String("SAT連接數: ") +String(i)); delay(5000); }

 

 

 

 

 

天子驕龍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM