简介
一. WiFi的STA和AP模式指什么?
ESP8266有三种工作模式,分别为:AP,STA,AP混合STA
1. AP
AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就一个AP。

2. STA
STA是Station的简称,类似于无线终端,STA本身并不接受无线的接入,它可以连接到AP,简单来说就是和手机连接WIFI热点的工作状态相同,可以连接其它的热点。

3. AP混合STA
了解了前两个概念,AP混合STA模式就不难理解了,就是既可以连接到其它的WIFI热点,也可以让别的无线终端连接,这两个过程能同时进行。
二. 相关API
1.模式切换相关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模式, 默认开启休眠, 如果对实时性要求高,应关闭休眠
2. 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热点
参数:
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 – 最大可连接数, 1 - 4. 默认4
2. 配置AP 热点: WiFi.softAPConfig();
bool WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet)
功能: 配置AP 热点
参数:
local_ip – 本地IP 192.168.4.1
gateway – 网关IP 192.168.4.1
subnet – 子网掩码 255.255.255.0
3. 断开:wifi WiFi.disconnect();
bool WiFiSTAClass::disconnect(bool wifioff = false, bool eraseap = false)
功能: 断开AP热点
参数:
wifioff : 为true则还将关闭网络功能, 默认false
eraseap : 为true则清空AP热点配置信息, 默认false
返回:
返回wlan状态码
4. 一些获取AP热点信息的API
#include <Arduino.h>
#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("主机连接个数:");
Serial.println(WiFi.softAPgetStationNum());
Serial.print("主机网络ID:");
Serial.println(WiFi.softAPNetworkID());
Serial.print("主机状态:");
Serial.println(WiFi.status());
delay(1000);
}
5. 设置主机名称 WiFi.softAPsetHostname("ESP_oudafa");
bool WiFiAPClass::softAPsetHostname(const char *hostname)
Set the softAP interface Host name.
参数:
hostname – pointer to const string
返回:
true on success
</