1、wifi的使用
ESP32-S3带有Wifi功能,WiFi是物联网中最常用的一种通信方式,了解无线连接可以为我们了解物联网和物联网产品开发打下坚实的基础;主要应用在远程控制,数据传输和图像传输等方向。
本次实验使用到的构造对象和使用方法如下表
构造函数 说明
wlan=network.WLAN(interface_id) 创建WLAN网络接口对象
interface_id:参数为网络接口模式
network.STA_IF:客户端模式,连接热点
network.AP_IF:热点模式,允许其他WiFi客户端连接
使用方法 说明
wlan.active([is_active]) 是否激活网络,True为激活网络
wlan.isconnected() 在STA模式下,如果连接到WiFi接入点并且有有效的
wlan.connect(ssid=None, key=None) 连接路由器WIFI网络
ssid: 路由器WIFI名称
key: WIFI密码
对于network类和使用方法见官网对应章节
构造函数 说明
sk=usocket.socket() 网络socket,返回对象
sk.connect(address) 以地址连接到远程套接字
address:如 ('192.168.1.3',8080)
sk.send(bytes) 向套接字发送数据。该套接字必须连接到远程套接字。返回发送的字节数
bytes:需要发送的数据
rxdata=sk.recv(bufsize) 从套接字接收数据。返回值是一个bytes对象,表示接收到的数据。一次接收的最大数据量由bufsize指定。
bufsize:一次最大接收的数据量
对于network类和使用方法见官网对应章节
2、实验目的
学习WIFI无线连接、无线数据传输、网络数据收发
3、实验内容
通过小车WIFI连接路由器网络后,再去和网络调试助手建立通信,并将接收到的网络调试助手发送的数据显示在小车屏幕上。
准备工作:
打开资料包的文件夹里面软件“智能小车mpy例程\开发工具\NetAssist.exe”,双击打开软件,选择好协议类型为TCP Server,本机地址默认为本机地址,端口号我们改为8080。
配置好服务端软件后,我们修改代码wlan.connect(‘yqdxc’, ‘123456789’)里面的’yqdxc’修改为自己的路由器WIFI名称,'123456789’修改为WIFI对应的密码。修改serverInfor=(‘192.168.1.3’,8080) 参数为NetAssist软件对应的参数如上图
4、参考代码
参考代码文件可以在资料包文件夹“智能小车mpy例程\基础实验\09-WIFI连接通信”文件夹下的main.py 下面为完整代码内容:
'''
WIFI连接无线路由器实验
实验器材:LCD显示屏
NetAssist 软件开启TCP IP服务器 端口8080
'''
from machine import Pin,Timer #导入Pin引脚和Time定时器模块
from lcd import LCD20 #导入2.0寸LCD模块
import time
import network #导入网络控制模块
import usocket #导入socket模块
##################################################################
#颜色值定义,(R,G,B) 0~255代表颜色值
red = (255,0,0) #红色
green = (0,255,0) #绿色
blue = (0,0,255) #蓝色
white = (255,255,255) #白色
back = (0,0,0) #黑色
##################################################################
#构建显示屏对象,并返回对象句柄ld
ld=LCD20(dir=1) #创建LCD对象 dir 显示方向为竖屏,1、3竖屏,2、4横盘
ld.fill(back) #整屏填充指定颜色
ld.dText("WIFI连接实验",20,10,color=white,size=3)
wlan = network.WLAN(network.STA_IF) #构建网络STA模式
wlan.active(True) #激活网络接口
time_out = time.time() #获取当前时间,用于判断超时
##################################################################
if not wlan.isconnected():
ld.dText("连接网络 yqdxc",20,60,color=white,size=2) #显示屏显示信息
wlan.connect('yqdxc', '123456789') #开启连接wifi名称:yqdxc,密码:123456789
while not wlan.isconnected(): #等待连接wifi
time.sleep_ms(500)
lastTime = time.time()-time_out
if lastTime > 30: #30S超时退出等待
ld.dText("连接网络超时",20,60,color=white,size=2) #显示屏显示信息
break
##################################################################
if wlan.isconnected(): #WIFI 网络连接成功后
ld.dText("连接网络成功! ",20,60,color=white,size=2) #显示屏显示信息
ipstr = str(wlan.ifconfig()[0]) + "." + wlan.ifconfig()[1] + "." + wlan.ifconfig()[2]
ld.dText("IP:" +wlan.ifconfig()[0],20,100,color=white,size=2) #显示屏显示信息
print('network info:', wlan.ifconfig())
sk = usocket.socket() #创建socket 用于连接电脑开启的服务器
serverInfor=('192.168.1.3',8080) #服务器地址和端口
sk.connect(serverInfor) #启动连接 NetAssist软件开启的服务器 IP + 端口
sk.send('Hello 123') #连接成功后向服务器发送数据
##################################################################
ld.dText("接收到数据:", 0 ,140,color=white,size=2) #显示屏显示信息
while True: #循环接收网络数据
rxText = sk.recv(128) #接收网络数据 一次最大接收128个字节
if rxText != '': #接收到服务器发送数据
ld.dText(" ", 0 ,180,color=white,size=2) #显示屏清屏作用20个空格字符
ld.dText("{:s}".format(rxText), 0 ,180,color=green,size=2) #显示屏显示信息
print("{:s}".format(rxText))
sk.send("hello car") #把接收到的数据发送回去
time.sleep_ms(100) #延时100ms
5、实验结果
运行代码后,我们在NetAssist软件界面可以看到数据接收框看到有小车连接信息,输入发送字符串后,点击发送,可以看到小车的接收到的数据显示在屏幕上,同时看到软件接收到小车发送的“hello car”数据
相关代码及固件:
https://download.csdn.net/download/lu330274924/88549191
智能小车购买链接
技术支持抖音:易驱达Easy Drive Coming
淘宝官方商城:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-18887194911.15.135014bdaKI6mV&id=715385110550