5、PC远程控制 ESP32 LED 灯

视频链接:https://www.bilibili.com/video/BV1G34y1E7tE?p=5
文档链接: https://doc.itprojects.cn/0006.zhishi.esp32/02.doc/index.html#/05.network.led

实现功能如下:
在局域网下,通过网络调试助手来控制 ESP32 开发板上的 LED,当输入"light on"时,灯亮,当输入"light off"时,灯灭。

注意点:
在这里插入图片描述
没有出现 >>> ,说明程序处在接收状态,等待接收数据。
在这里插入图片描述
如果是中文,则需要解码。

需要注意,网络调试助手的默认编码方式为:
在这里插入图片描述
这里设置为 UTF8(需要先重启网络调试助手,再进行设置),然后在程序中就按照 utf-8 的编码方式来进行解码。
在这里插入图片描述

        # 数据解码
        recv_data_str = recv_data.decode("utf-8")

代码如下:

# 大体流程
# 1、让ESP32连接WiFi, 让其拥有ip地址
# 2、创建 UDP socket
# 3、接收 UDP 数据
# 4、根据接收到的 UDP 数据来控制LED灯的亮灭

import time
import network
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('ChinaNet-SAD8JJ_Wi-Fi5', '13179734613')
        i = 1
        while not wlan.isconnected():
            print(f"正在连接网络...{i}")
            i += 1
            time.sleep_ms(500)      # sleep for 500 milliseconds

    print('network config:', wlan.ifconfig())
    
def create_udp_socket():

    # 1、创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2、绑定一个固定的端口
    udp_socket.bind(("0.0.0.0", 7080))
    
    return udp_socket
    
def main():
    # 1、让ESP32连接WiFi, 让其拥有ip地址
    do_connect()
    
    # 2、创建 UDP socket
    udp_socket = create_udp_socket()
    
    p2 = machine.Pin(2, machine.Pin.OUT)    # create output pin on GPIO2
    
    # 3、接收 UDP 数据
    while True:
        # 返回的是一个元组, 由两个数据组合, 这里采用拆包的方式来接收数据
        # sender_info 也是一个元组, 由两部分组成, 分别是 ip地址和端口
        recv_data, sender_info = udp_socket.recvfrom(1024)
        # 数据解码
        recv_data_str = recv_data.decode("utf-8")
        print(f"{sender_info} 发送的数据:{recv_data_str}")
        
        # 4、根据接收到的 UDP 数据来控制LED灯的亮灭
        if recv_data_str=="light on":
             p2.on()                 # set pin to "on" (high) level
        elif recv_data_str=="light off":
             p2.off()                # set pin to "off" (low) level
            
            
if __name__ == "__main__":
    main()
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xuechanba

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

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

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

打赏作者

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

抵扣说明:

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

余额充值