其他分享
首页 > 其他分享> > 1.17. WiFi测试

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. 命令行测试

wps58

1.17.3. 保存成文件

wps63 wps64

将如下代码保存到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())

 

重新启动单片机,运行结果:

wps65

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())

 

保存,重启单片机,运行效果如下:

wps66

1.17.5. AP模式

AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就一个AP,如下图:

wps67

演示效果:

wps68

打开手机wifi可连接到esp无线网络,如下:

wps69

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服务,如下:

wps70 手机端显示如下:

wps71

标签:1.17,wlan,network,WiFi,AP,测试,print,socket
来源: https://www.cnblogs.com/horal/p/16514124.html