请选择 进入手机版 | 继续访问电脑版

WiFi---AP+STA共存模式(ESP8266)

[复制链接]
密战 发表于 2021-1-1 10:31:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
AP+STA共存模式



先容

AP+STA的工作原理就是:当模块作为AP时,它同时又可以作为一个STA模式存在,比方:WiFi模块作为AP,可以让客户的手机大概盘算机接入,同时该模块又可以作为一个STA接入到路由器大概上位服务器举行数据上传。
需要注意的是,模块在AP和模块做STA时的MAC地址是差别的,所以在模块内部看到模块做AP时的MAC地址与在路由器内里去看到的模块作为STA时的MAC地址差别。
程序步调


  • 设置当地IP,网关,子网掩码,下位远程IP
  • 设置AP端IP,网关,子网掩码,上位远程IP
  • 设置当地端口和远程端口
  • 设置毗连到远程AP的名字和暗码
  • 设置创建AP的名字和暗码
  • 设置收发缓冲区
  • 初始化波特率
  • 断开毗连(防止已毗连)
    WiFi.disconnect()
  • 设置模式(设置为AP+STA模式)
    WiFi.mode(WiFi_AP_STA);
  • 设置AP网络参数
    WiFi.softAPConfig()
  • 设置AP账号暗码
    WiFi.softAP()
  • 毗连指定路由
    WiFi.begin()
  • 设置当地网络参数
    WiFi.config()
  • 等候路由毗连
    Serial.println(“please wait”)
    WiFi.status()!=WL_CONNECTED
  • 创建UDP Server ,监听指定端口
    udp.begin(localPort)
  • 显示IP地址
    WiFi.localIP()
    WiFi.softAPIP()
  • 读取数据
    udp.read(buff,255)
    udp.beginPacket(serverip,remoteport)
    udp.write(buff,255)
    udp.endPacket()
  • 清楚缓冲器数据
    memset(buff,0,255);
程序

  1. #include#includeWiFiUDP udp;IPAddress sip(192,168,1,29);//当地IPIPAddress sip1(192,168,1,1);//当地网关IPAddress sip2(255,255,255,0);//当地子网掩码IPAddress xip(192,168,2,2);//下位远程APIPAddress lxip(192,168,2,1);//AP端IPIPAddress lxip1(192,168,2,1);//AP端网关IPAddress lxip2(255,255,255,0);//AP端子网掩码IPAddress serverip(192,168,1,4);//上位机远程IPunsigned int localPort=9999;//当地端口unsigned int remoteport=9999;//远程端口const char* ssid="WIFI";//毗连到远程AP的名字const char* password="123456789";//毗连到远程AP的暗码const char* ssid1="WIFI1";//创建AP名字const char* password="987654321";//创建AP的暗码char buff[255];//收发缓冲区void setup(){Serial.begin(115200);delay(5000);WiFi.disconnect();WiFi.mode(WIFI_AP_STA);WiFi.softAPConfig(lxip,lxip1.lxip2);//设置AP网络参数WiFi.softAP(ssid1,password1,1);//设置AP账号暗码WiFi.begin(ssid,password);//毗连到指定路由WiFi.config(sip,sip1,sip2);//设置当地网络参数Serial.println("please wait");while(WiFi.status()!=WL_CONNECTED){  delay(500);  Serial.print(".");}Serial.println();udp.begin(WiFi.localPort);//创建UDP Server ,监听指定端口Serial.print("ip:");Serial.print(WiFi.localIP());Serial.print("apip:");Serial.print(WiFi.softAPIP());  }void loop(){  if(udp.parsePacket())  {    udp.read(buff,255);//读取数据    udp.beginPacket(serverip,remoteport);    udp.write(buff,255);    udp.endPacket();    Serial.print(buff);    udp.beginPacket(xip,remoteport);    udp.write(buff,255);    udp.endPacket();    memset(buff,0,255);//清除缓冲器数据      }}
复制代码
后续

如果想相识更多物联网、智能家居项目知识,可以关注我的项目实战专栏。
欢迎关注公众号。

编写不易,感谢支持。

来源:https://blog.csdn.net/qq_44629109/article/details/111989323
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )