标签:1.17 wlan network WiFi AP 测试 print socket
1.17.1. 基础介绍
ESP32单片机内置了2.4GHz双模Wi-Fi。
WiFi可作为AP、STA、AP+STA三种模式:
a. 作为AP时,可以被4个STA连接。AP 是 (Wireless) AccessPoint 的缩写,即 (无线) 访问接入点。简单来讲就像是无线路由器一样,设备打开后进入 AP 模式,在手机的网络列表里面,可以搜索到类似 TPLINK_XXX 的名字(SSID)
b. STA是每一个连接到无线网络中的终端(如笔记本电脑、手机、PAD及其它可以联网的用户设备)都可称为一个站点,STA本身并不接受无线的接入,它可以连接到AP。
1.17.2. 命令行测试
1.17.3. 保存成文件
将如下代码保存到esp32单片机板中,文件名”main.py”:
1 import network 2 from time import sleep 3 4 wlan = network.WLAN(network.STA_IF) 5 wlan.active(True) 6 7 #print(wlan.scan()) 8 9 wlan.disconnect() 10 wlan.connect('xxxxxx', 'xxxxxx') 11 12 while(wlan.ifconfig()[0]=="0.0.0.0"): 13 sleep(1) 14 print(wlan.config('mac')) 15 print(wlan.ifconfig())
重新启动单片机,运行结果:
1.17.4. 开机连接wifi
Micropython上电,在完成硬件初始化后,会首先运行根目录下的”boot.py”文件,然后尝试运行同级目录下的”main.py”文件,所以要开机连接wifi,可以把以上代码保存到boot.py文件中,如下:
1 import network 2 from time import sleep 3 4 wlan = network.WLAN(network.STA_IF) 5 wlan.active(True) 6 7 #print(wlan.scan()) 8 9 wlan.disconnect() 10 11 wlan.connect('xxxxxx', 'xxxxxx') 12 13 while(wlan.ifconfig()[0]=="0.0.0.0"): 14 sleep(1) 15 print(wlan.config('mac')) 16 print(wlan.ifconfig())
保存,重启单片机,运行效果如下:
1.17.5. AP模式
AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就一个AP,如下图:
演示效果:
打开手机wifi可连接到esp无线网络,如下:
1.17.6. 简易webserver
在AP模式下,esp32很容易配置为webserver端,简易的web服务代码如下:
import network import usocket as socket # 引用socket模块 # 响应头 responseHeaders = b''' HTTP/1.1 200 OK Content-Type: text/html Connection: close ''' # 响应头网页正文内容 content = b''' Hello World! ''' ap = network.WLAN(network.AP_IF) ap.config(essid='lalala', authmode=4, password='12345678') ap.active(True) # 开启无线热点 def main(): s = socket.socket() s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # (重要)设置端口释放后立即就可以被再次使用 s.bind(socket.getaddrinfo("0.0.0.0", 80)[0][-1]) # 绑定地址 s.listen(5) # 开启监听(最大连接数5) print('接入热点后可从浏览器访问下面地址:') print(ap.ifconfig()[0]) print('') while True: # mian()函数中进行死循环,在这里保持监听浏览器请求与对应处理 client_sock, client_addr = s.accept() # 接收来自客户端的请求与客户端地址 print('Client address:', client_addr) while True: h = client_sock.readline() # 按行读取来自客户端的请求内容 print(h.decode('utf8'), end='') if h == b'' or h == b'\r\n': # 当读取到空行的时候表示接收到一个完整的请求头 break client_sock.write(responseHeaders) # 向客户端发送响应头 client_sock.write(content) # 向客户端发送网页内容 client_sock.close() main() # 运行main()函数
重启单片机,将手机wifi连接到单片机AP上,通过打印的IP即可访问esp32 web服务,如下:
标签:1.17,wlan,network,WiFi,AP,测试,print,socket 来源: https://www.cnblogs.com/horal/p/16514124.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。