1. 导入所需库
import network
import time
import socket
import machine
2. 定义连接WiFi的函数
def do_connect():
#链接wifi网络
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('connecting to network...')
wlan.connect('HUAWEI-NZX_2.4G', '987654321')
while not wlan.isconnected():
pass
print('network config:', wlan.ifconfig())
这个函数用于连接指定的WiFi网络。首先创建一个WLAN
对象,然后激活它。接着检查是否已经连接到网络,如果没有则尝试连接。最后打印出网络配置信息。
3. 创建UDP套接字
def start_udp():
# 1. 创建udp套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2. 绑定本地信息
udp_socket.bind(("0.0.0.0", 7788)) #"0.0.0.0"接受所有的ip
return udp_socket
这个函数用于创建一个UDP套接字,并将其绑定到本地IP地址和端口号7788上。返回创建好的UDP套接字对象。
4. 主函数
def main():
#连接wifi
do_connect()
#创建udp对象
udp_socket=start_udp()
#创建GPIO对象
pin2=machine.Pin(2,machine.Pin.OUT)
#接收udp数据
while True:
recv_data,sender_info=udp_socket.recvfrom(1024)
print("{}发送的数据:{}".format(sender_info,recv_data))
recv_data_str=recv_data.decode("utf-8") #解码
print("解码后的数据:{}".format(recv_data_str))
#根据解码后的udp数据控制led
if recv_data_str =='on':
pin2.value(1)
elif recv_data_str=='off':
pin2.value(0)
这个函数是程序的主入口。首先调用do_connect()
函数连接WiFi网络,然后调用start_udp()
函数创建UDP套接字。接着创建一个GPIO对象pin2
,用于控制LED的亮灭。在无限循环中,接收UDP数据,并根据接收到的数据控制LED的亮灭。
5. 运行程序
在代码末尾添加以下语句来运行程序:
if __name__ == "__main__":
main()
这样,当程序作为主模块运行时,会执行main()
函数。
完整代码
1.让esp32链接wifi,让其拥有ip地址
2.创建UDP socket
3.接收UDB数据
4.根据接收到的数据控制亮灭
import network
import time
import socket
import machine
def do_connect():
#链接wifi网络
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('connecting to network...')
wlan.connect('HUAWEI-NZX_2.4G', '987654321')
while not wlan.isconnected():
pass
print('network config:', wlan.ifconfig())
def start_udp():
# 1. 创建udp套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2. 绑定本地信息
udp_socket.bind(("0.0.0.0", 7788)) #"0.0.0.0"接受所有的ip
return udp_socket
def main():
#连接wifi
do_connect()
#创建udp对象
udp_socket=start_udp()
#创建GPIO对象
pin2=machine.Pin(2,machine.Pin.OUT)
#接收udp数据
while True:
recv_data,sender_info=udp_socket.recvfrom(1024)
print("{}发送的数据:{}".format(sender_info,recv_data))
recv_data_str=recv_data.decode("utf-8") #解码
print("解码后的数据:{}".format(recv_data_str))
#根据解码后的udp数据控制led
if recv_data_str =='on':
pin2.value(1)
elif recv_data_str=='off':
pin2.value(0)
if __name__ == "__main__":
main()
效果演示
发送电脑端串口发送on,LED和二极管点亮
发送电脑端串口发送off,LED和二极管熄灭