13425| 0
|
micropython 实现wifi转发 |
esp8266和esp32都可以使用AP+STA的模式,之前一些朋友说能否用让这些芯片的AP和STA同时使用,完成类似于wifi中继的功能。经过测试,我完成了类似的功能。(中继工作在更底层,我无法实现,只是在功能层面上完成了数据转发) 我期待完成的功能 PC------------------->ESP8266(AP)----------->(STA)-------->路由器---------->手机 tcpClient (tcpServer(10000端口) tcpClient ) tcpServer(5000端口) 192.168.4.3 192.168.4.1 192.168.3.135 192.168.3.125 原料: 硬件: FireBeetle-ESP32或FireBeetle-ESP8266主板 x1 手机(我用的小米max2) x1 路由器 x1 软件: uPyCraft V0.22及以上版本 红色部分是程序需要完成的功能 1. 我的PC连接到ESP8266的tcpServer 10000端口,并向ESP8266发送数据hello 2. ESP8266发现10000端口有数据到来,便将其直接转发给手机的5000端口 3. 此程序完成的是单向,并且功能比较简单,逻辑有点low,只作为演示,后面我会用端口复用实现一个更简洁的程序。 测试代码如下(如有缩进问题,可从附件中下载代码文件)wifiForward.py [mw_shl_code=python,true]import network import socket import time SSID="DFROBOT_AP" PASSWORD="12345678" port=10000 wlan=None listenSocket=None port2=5000 ip2='192.168.3.125' def connectWifi(ssid,passwd): global wlan network.WLAN(network.AP_IF).active(True) wlan=network.WLAN(network.STA_IF) wlan.active(True) wlan.disconnect() wlan.connect(ssid,passwd) while(wlan.ifconfig()[0]=='0.0.0.0'): time.sleep(1) return True try: connectWifi(SSID,PASSWORD) ip=wlan.ifconfig()[0] s = socket.socket() s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.connect((ip2,port2)) listenSocket = socket.socket() listenSocket.bind((ip,port)) listenSocket.listen(1) listenSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) print ('tcp waiting...') while True: print("accepting.....") conn,addr = listenSocket.accept() print(addr,"connected") while True: data = conn.recv(1024) if(len(data) == 0): print("close socket") conn.close() break print(data) ret = s.send(data) except: if(listenSocket): listenSocket.close() wlan.disconnect() wlan.active(False) [/mw_shl_code] 开始干活 第一步:电脑连接到esp8266的AP,默认密码是micropythoN 第二步:将手机连到路由器DFROBOT_AP(就是你的路由器SSID) 第三步:打开手机网络调试助手(楼主用的有人 点击这里下载),创建tcpServer,端口5000 第四步:ESP8266运行楼主提供的程序wifiForward.py 第五步:ESP8266被路由器dhcp分配了IP(这里是192.168.3.135),并发起了向手机tcpServer端的连接 第六步:PC端运行网络调试助手,创建tcpClient,连接到server端(192.168.3.135:10000 注意这里不是192.168.4.1) 第七步:PC端发送数据hello,手机端收到了数据 |
693 Bytes, 下载次数: 1985
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed