ESP32 MicroPython wifi的使用⑨

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

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
2022 / 01/ 30: 新版esptool 刷micropython固件指令不是 esptool.py cmd... 而是 esptool cmd... 即可;另外rshell 在 >= python 3.10 的时候出错解决方法可以查看:  已于2022年发布的: 第二章:修复rshell在python3.10出错 免费内容: https://edu.csdn.net/course/detail/29666 micropython语法和python3一样,编写起来非常方便。如果你快速入门单片机玩物联网而且像轻松实现各种功能,那绝力推荐使用micropython。方便易懂易学。 同时如果你懂C语音,也可以用C写好函数并编译进micropython固件里然后进入micropython调用(非必须)。 能通过WIFI联网(2.1章),也能通过sim卡使用2G/3G/4G/5G联网(4.5章)。 为实现语音控制,本教程会教大家使用tensorflow利用神经网络训练自己的语音模型并应用。为实现通过网页控制,本教程会教大家linux(debian10 nginx->uwsgi->python3->postgresql)网站前后台入门。为记录单片机传输过来的数据, 本教程会教大家入门数据库。  本教程会通过通俗易懂的比喻来讲解各种原理与思路,并手把手编写程序来实现各项功能。 本教程micropython版本是 2019年6月发布的1.11; 更多内容请看视频列表。  学习这门课程之前你需要至少掌握: 1: python3基础(变量, 循环, 函数, 常用库, 常用方法)。 本视频使用到的零件与淘宝上大致价格:     1: 超声波传感器(3)     2: MAX9814麦克风放大模块(8)     3: DHT22(15)     4: LED(0.1)     5: 8路5V低电平触发继电器(12)     6: HX1838红外接收模块(2)     7:红外发射管(0.1),HX1838红外接收板(1)     other: 电表, 排线, 面包板(2)*2,ESP32(28)  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值