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);
程序
- #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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |