1.17. WiFi测试
作者:互联网
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