ESP32 使用MicroPython编写代码实现远程控制LED灯

ESP32开发可以用Arduino也可以用MicroPython,但还是喜欢用python一点,因为后续集成AI更简单一些。

MicroPython 固件下载

官网地址:https://micropython.org/

Thonny编辑器下载:

官网地址:https://thonny.org/

ESP32的USB驱动下载请参考我另一篇文章:https://www.cnblogs.com/tuyile006/p/19436344

以下代码实现ESP32最核心最基础的功能,连接Wifi,实现TCP服务端,接收远程TCP请求执行命令控制LED灯亮和灭:

import socket
import network
import time
import machine

# 连接到Wi-Fi网络
def connect_wifi(ssid, password):
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        wlan.connect(ssid, password)
        while not wlan.isconnected():
            time.sleep(1)  # 等待连接
    if wlan.isconnected():
        ip=wlan.ipconfig('addr4')
        print("Wi-Fi连接成功,ip为",ip[0])
        return ip[0]
    else:
        return ''

# 2. 启动网络UDP服务端
def start_udp():
    # 2.1. 创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2.2. 绑定本地信息
    udp_socket.bind(("0.0.0.0", 8899))

    return udp_socket

# 3.启动网络TCP服务端
def start_tcp():
    # 创建 socket 对象
    tcp_socket = socket.socket(
            socket.AF_INET, socket.SOCK_STREAM)
    # 绑定端口号
    tcp_socket.bind(("0.0.0.0", 8899))
    # 设置最大连接数,超过后排队
    tcp_socket.listen(5)
    
    return tcp_socket

#主程序
def main():
    # 1. 链接wifi
    connect_wifi('hcdl-1005-2','1qaz2wsx')
    # 2. 创建UDP
    #udp_socket = start_udp()
    #2.1创建TCP
    tcp_socket=start_tcp()
    
    # 3. 创建灯对象
    led = machine.Pin(2, machine.Pin.OUT)
    # 4. 接收网络数据
    while True:
        
        #recv_data, sender_info = udp_socket.recvfrom(1024)
        clientsocket,sender_info = tcp_socket.accept()
        print("Client {} connected".format(sender_info))
        while True:
            recv_data=clientsocket.recv(1024)
            if not recv_data:  # 客户端已断开
                print("Client disconnected")
                break
            print("{}发送{}".format(sender_info, recv_data))
            recv_data_str = recv_data.decode("utf-8")
            try:
                print(recv_data_str)
            except Exception as ret:
                print("decode error:", ret)
            
            # 5. 处理接收的数据
            if recv_data_str == "light on":
                print("这里是要灯亮的代码...")
                led.value(1)
            elif recv_data_str == "light off":
                print("这里是要灯灭的代码...")
                led.value(0)

if __name__=='__main__':
    main()

  既然可远程控制灯开灭,就可以远程控制舵机、电机、任何你能想到的远程控制功能。

posted @ 2026-01-21 10:45  小y  阅读(0)  评论(0)    收藏  举报