栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

ESP32E基于Thonny——python框架,PC端进行局域网控制led亮灭

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ESP32E基于Thonny——python框架,PC端进行局域网控制led亮灭

ESP32基于Thonny——python框架,PC端进行局域网控制led亮灭

用中文讲,该如何实现这个功能呢?

1:成功连接wifi

2:能循环正常接收数据

3:判断接收的数据,使led亮灭

就3步!那如何用代码实现呢?

第一步:成功连接wifi

调用官方联网模块:http://docs.micropython.org/en/latest/esp32/quickref.html#networking

def do_connect():  #自动连接WiFi函数
    
    #启动wifi模块
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    
    #扫描是否连接wifi
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('wifi名称', 'wifi密码')
        while not wlan.isconnected():
            print("正在连接网络……")
            time.sleep(1)
    
    #已连接wifi,并打印
    print('已连接WiFi', wlan.ifconfig())

第二步:能正常接收数据

我的数据通信使用的是UDP通信

故:先创建一个UDP套接字并固定端口,然后将套接字返回——》主函数接收套接字使用——》接收数据——》打印接收的数据——》将接收的数据解码并打印——》完成接收;

def create_udp_socket():
    #创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    #绑定一个固定的端口(socket:插座,端口;bind:捆绑,绑定)
    udp_socket.bind(("0.0.0.0",7788))
    
    return udp_socket

def main():  #主函数
    
    #wifi自动连接函数
    do_connect()
    
    led = machine.Pin(2, machine.Pin.OUT)
    
    udp_socket = create_udp_socket()
    
    #死循环
    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))

第三步:正确判断接收的数据并作出正确反应

调用IO口控制函数——》将led相应IO口重新定义——》进行判断——》为on:led就置1;

为off:led置0

安装网络调试助手进行PC端led的控制:Thonny, Python IDE for beginners

 打开调试助手,将协议类型设置成UDP与字符编译器设置成UTF—8,并将电脑与路由器防火墙关闭,然后将发送目标IP地址与端口号正确填写,编辑好数据准备发送:on    off 

即可进行led亮灭控制! 

完成!!!

完成!!!

完成!!!

完整程序:如下

import network  #wifi连接头文件
import time     #延时函数
import machine  #IO口直接调用模块
import socket   #套接字头文件


def do_connect():  #自动连接WiFi函数
    #启动wifi模块
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    
    #扫描是否连接wifi
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('wifi名称', '密码')
        while not wlan.isconnected():
            print("正在连接网络……")
            time.sleep(1)
    
    #已连接wifi,并打印
    print('已连接WiFi', wlan.ifconfig())

def create_udp_socket():
    #创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    #绑定一个固定的端口(socket:插座,端口;bind:捆绑,绑定)
    udp_socket.bind(("0.0.0.0",7788))
    
    return udp_socket

def main():  #主函数
    
    #wifi自动连接函数
    do_connect()
    
    #将D2IO口重新定义为led
    led = machine.Pin(2, machine.Pin.OUT)
    
    udp_socket = create_udp_socket()
    
    #死循环
    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))
        
        #循环判断接收的数据,并作出反应
        if recv_data_str == "on":
            led.value(1)
        elif recv_data_str == "off":
            led.value(0)
 
 
if __name__ == "__main__":
    main()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号