zoukankan      html  css  js  c++  java
  • 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 ", 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 ", 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); }

    天子骄龙

  • 相关阅读:
    disruptor笔记之一:快速入门
    React-高阶函数_函数柯里化
    解决跨域、同源策略-React中代理的配置
    React中key的作用
    React三种路由参数传递方式
    React生命周期(好玩的讲解方式)
    React数据共享插件-PubSub
    React中路由基本&高级使用
    React中嵌套路由
    React中网络请求(axios和fetch)
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11196822.html
Copyright © 2011-2022 走看看