07.ESP8266AP库的使用方法

先给大家看一下整个wifi库的函数构造,图片比较大,大家可以下载后在查看

AP是Access Point简称,也就是访问接入点,是网络的中心节点。一般家庭的无线路由器就是一个AP,众多站点(STA)加入到它所组成的无线网络,网络中的所有的通信都通过AP来转发完成。

软AP也叫做Soft-AP,硬件部分是一块标准的无线网卡比如ESP8266,但其通过驱动程序使其提供与AP一样的信号转换、路由等功能。

与传统AP相比,它的成本很低,功能上也能凑合。在基本功能上,Soft AP与AP并没有太大的差别,不过因为用软件来实现AP功能,SoftAP的接入能力和覆盖范围远不如AP。

注意点:一般能同时连接到Soft-AP 的station的个数上线到8个,但是一般默认是4个。

先引入库文件:

//你可以这样引入
#include <ESP8266WiFiAP.h>
//但是这样要实现后面的功能就很麻烦了,所以我们通常这样做:
#include <ESP8266WiFi.h>

AP库可以分成三个部分

  1. 第一部分方法,建立AP网络(Access Point,wifi热点);
  2. 第二部分方法,管理第一部分方法建立的连接;
  3. 第三部分方法,获取AP的信息,包括MAC地址、IP地址等;

具体函数

1.启动wifi网络

/**
 * 建立一个AP热点
 * @param ssid              SSID账号 (max 63 char,最大63个字符).
 * @param passphrase        密码(对于WPA2加密类型最少8个字符,对于开放网络设置为NULL)
 * @param channel           WiFi 通道数字, 1 - 13.默认是1
 * @param ssid_hidden       WiFI是否需要隐藏 (0 = broadcast SSID, 1 = hide SSID),通过它设置别人是否能看到你的WiFi网络
 * @param max_connection    最大的同时连接数  1 - 4.当超过这个数,再多的station想连接也只能等待
 * @param bool 返回设置soft-AP的结果
 */
bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0, int max_connection = 4);

应用例子

//开放网络(所谓开放网络也就是,不需要密码,只需要知道AP名字就可以了)
WiFi.softAP(ssid);
//校验式网络(需要输入账号密码),通道为1,wifi不隐藏,最大连接数=4
WiFi.softAP(ssid, password);
//校验式网络(需要输入账号密码),通道为2,wifi隐藏,最大连接数=4
WiFi.softAP(ssid, password,2,1);

配置AP网络信息

应用例子

/**
 * 配置AP信息
 * @param local_ip      AP ip地址
 * @param gateway       网关IP地址
 * @param subnet        子网掩码
 * @note soft-AP 建立的网络,默认的IP地址是192.168.4.1.
 */
bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet);

获得当前连接数

/**
 * 获取连接到当前softAP的station或者client的数目
 * @return Stations 数目
 */
uint8_t softAPgetStationNum();
//实例代码 这只是部分代码 不能直接使用
Serial.printf("Stations connected to soft-AP = %d\n", WiFi.softAPgetStationNum());

管理网络

/**
 * 配置AP信息
 * @param local_ip      AP ip地址
 * @param gateway       网关IP地址
 * @param subnet        子网掩码
 * @note soft-AP 建立的网络,默认的IP地址是192.168.4.1.
 */
bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet);

关闭AP模式

/**
 * 关闭AP
 * @param wifioff disable mode? true会调用 WiFi.enableAP(false);
 * @return one value of wl_status_t enum
 */
bool softAPdisconnect(bool wifioff = false);

获取AP的IP地址

IPAddress softAPIP();

获取mac地址

/**
 * 获取softAP MAC 地址.
 * @param mac   pointer to uint8_t array with length WL_MAC_ADDR_LENGTH
 * @return      pointer to uint8_t*
 */
uint8_t* softAPmacAddress(uint8_t* mac);

/**
 * 获取softAP MAC 地址.
 * @return String mac
 */
String softAPmacAddress(void);

//实例代码1 这只是部分代码 不能直接使用
uint8_t macAddr[6];
WiFi.softAPmacAddress(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

//实例代码2 这只是部分代码 不能直接使用
Serial.printf("MAC address = %s\n", WiFi.softAPmacAddress().c_str());

获取SSID

String softAPSSID() const;

获取AP的PSK

String softAPPSK() const;

实例源码

/**
 * Demo:
 *    AP模式下,演示AP 函数方法的使用
 * @author 单片机菜鸟
 * @date 2019/09/02
 */
#include 
 
#define AP_SSID "AP_Test_博哥" //这里改成你的AP名字
#define AP_PSW  "12345678" //这里改成你的AP密码 8位以上
//以下三个定义为调试定义
#define DebugBegin(baud_rate)    Serial.begin(baud_rate)
#define DebugPrintln(message)    Serial.println(message)
#define DebugPrint(message)    Serial.print(message)
 
IPAddress local_IP(192,168,4,22);
IPAddress gateway(192,168,4,9);
IPAddress subnet(255,255,255,0);
 
void setup(){
  //设置串口波特率,以便打印信息
  DebugBegin(115200);
  //延时2s 为了演示效果
  delay(2000);
  DebugPrint("Setting soft-AP configuration ... ");
  //配置AP信息
  WiFi.mode(WIFI_AP);
  DebugPrintln(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!");
  //启动AP模式,并设置账号和密码
  DebugPrint("Setting soft-AP ... ");
  boolean result = WiFi.softAP(AP_SSID, AP_PSW);
  if(result){
    DebugPrintln("Ready");
    //输出 soft-ap ip地址
    DebugPrintln(String("Soft-AP IP address = ") + WiFi.softAPIP().toString());
    //输出 soft-ap mac地址
    DebugPrintln(String("MAC address = ") + WiFi.softAPmacAddress().c_str());
  }else{
    DebugPrintln("Failed!");
  }
  DebugPrintln("Setup End");
}
 
void loop() {
  //不断打印当前的station个数
  DebugPrintln(String("Stations connected =") + WiFi.softAPgetStationNum());
  delay(3000);
}

笔记参考博哥博客,如果对您有帮助不要忘了给我几个硬币犒劳一下哦!

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

Title - Artist
0:00