ESP32 使用MicroPython编写代码实现远程控制LED灯
ESP32开发可以用Arduino也可以用MicroPython,但还是喜欢用python一点,因为后续集成AI更简单一些。
MicroPython 固件下载
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()
既然可远程控制灯开灭,就可以远程控制舵机、电机、任何你能想到的远程控制功能。
-----------------------------------------------------------------

浙公网安备 33010602011771号