esp8266开启AP+STA共存模式

AP+STA的工作原理:当模块作为AP时,它同时又可以作为一个STA模式存在。例如:WiFi模块作为AP,可以让客户的手机或者计算机接入,同时该模块又可以作为一个STA接入到路由器或者上位服务器进行数据上传。
以下参考代码,需要注意的是,

  1. AP_password尽量设置为8位,我之前没有设置成8位,AP模式一直开启不成功,也不知道是什么bug。
  2. 手动设置静态IP时,需要根据自己的网络环境进行修改,不然也会配置不成功。

比如要设置要连接网络的静态IP,可以先用自己的电脑连接到此WiFi网络,在电脑控制面板里查看连接WiFi的网络属性,可以看到网关地址,子网掩码等信息,照此修改即可。

#include <Arduino.h>
#include <ESP8266WiFi.h>

#define AP_ssid   "xxxxxxxxxx"    //esp8266创建的wifi名字
#define AP_password  "xxxxxxxx"   //esp8266创建的wifi密码

#define STA_ssid   "xxxxxxxxxxx"     //要连接的wifi名字
#define STA_password  "xxxxxxxxxxx"  //要连接的wifi密码

//设置esp8266创建wifi的静态IP
IPAddress local_IP(192,168,4,111);  //手动设置的开启的网络的ip地址
IPAddress gateway(192,168,4,1);    //手动设置的网关IP地址
IPAddress subnet(255,255,255,0);   //手动设置的子网掩码

//设置要连接wifi的网络参数
IPAddress sip(192,168,0,169);      //手动设置静态IP 连接网络ip
IPAddress sip1(192,168,0,1);       //本地网关
IPAddress sip2(255,255,255,0);     //本地子网掩码

void setup() {
  Serial.begin(115200);
  Serial.println();
  
  WiFi.disconnect();
  delay(500);
  WiFi.mode(WIFI_AP_STA);
  
  //连接wifi
  WiFi.config(sip,sip1,sip2);	//设置本地网络参数
  Serial.printf("连接wifi中... ");
  WiFi.begin(STA_ssid, STA_password);
  while(WiFi.status()!=WL_CONNECTED){
    delay(500);
    Serial.print(".");
    }
  Serial.println('\n');                     
  Serial.print("Connected to ");        
  Serial.println(WiFi.SSID());              //连接的WiFI名称
  Serial.print("IP address:\t");     
  Serial.println(WiFi.localIP());           //NodeMCU的IP地址


  WiFi.softAPConfig(local_IP, gateway, subnet);  //设置自创建网络参数
  WiFi.softAP(AP_ssid, AP_password, 3, 1);          //启动校验式网络(需要输入账号密码的网络),通道为3,wifi隐藏
  if (WiFi.softAP(AP_ssid, password)) {
    Serial.print("创建wifi的名字: ");    
    Serial.println(AP_ssid);          
    Serial.print("创建wifi的密码: ");        
    Serial.println(AP_password);        
    Serial.println("创建wifi的IP: ");     
    Serial.println(local_IP);  		
  } else {
    //若没有开启成功
    Serial.println("开启失败");
  }
}

void loop() {

}
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于在Arduino IDE环境中使用ESP8266同时作为APSTA的设置,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了适当的ESP8266核心库,以便支持ESP8266开发板。 2. 打开Arduino IDE,选择正确的开发板和端口。在 "工具" 菜单中,选择 "开发板" 并选择 "Generic ESP8266 Module"。然后选择正确的串口端口。 3. 在代码中,您需要包含ESP8266WiFi库和ESP8266WebServer库。在顶部添加以下代码行: ```cpp #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> ``` 4. 配置WiFi设置。在setup()函数中,添加以下代码行: ```cpp const char* ssid = "Your_AP_SSID"; const char* password = "Your_AP_Password"; const char* sta_ssid = "Your_STA_SSID"; const char* sta_password = "Your_STA_Password"; void setup() { // Connect to AP WiFi.mode(WIFI_AP_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } // Connect to STA WiFi.begin(sta_ssid, sta_password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } // Print IP address Serial.println(""); Serial.print("AP IP address: "); Serial.println(WiFi.softAPIP()); Serial.print("STA IP address: "); Serial.println(WiFi.localIP()); // Your additional setup code... } ``` 在上述代码中,您需要将 "Your_AP_SSID" 和 "Your_AP_Password" 替换为您要创建的AP的SSID和密码。将 "Your_STA_SSID" 和 "Your_STA_Password" 替换为您要连接的STA的SSID和密码。 5. 在loop()函数中,您可以添加其他代码以处理APSTA模式下的操作。 ```cpp void loop() { // Your code here... } ``` 6. 现在,您可以编译和上传代码到ESP8266开发板。确保选择正确的开发板和端口,然后点击 "上传" 按钮。 7. 打开串口监视器,设置波特率为115200。您将看到ESP8266连接到APSTA,并打印出分配的IP地址。 通过以上步骤,您应该能够在Arduino IDE环境中成功配置ESP8266同时作为APSTA。请注意,使用APSTA模式可能会对设备的性能产生一定影响,因为它需要同时处理两个网络连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值