请帮我设计一个main.py文件使用ESP32的GPIO引脚控制两个独立的灯泡和两个独立的继电器。它还创建了一个简单的Web服务器,可以通过HTML页面控制这些设备的状态。当您访问ESP32的IP地址时,您将看到一个包含按钮的页面,您可以单击这些按钮来控制设备的状态。页面还会显示设备的当前状态
时间: 2023-05-11 16:04:44 浏览: 80
以下是一个简单的main.py文件,可以使用ESP32的GPIO引脚控制两个独立的灯泡和两个独立的继电器,并创建一个简单的Web服务器,可以通过HTML页面控制这些设备的状态。当您访问ESP32的IP地址时,您将看到一个包含按钮的页面,您可以单击这些按钮来控制设备的状态。页面还会显示设备的当前状态。
```python
import machine
import network
import socket
import time
# 设置GPIO引脚
led1 = machine.Pin(2, machine.Pin.OUT)
led2 = machine.Pin(4, machine.Pin.OUT)
relay1 = machine.Pin(5, machine.Pin.OUT)
relay2 = machine.Pin(16, machine.Pin.OUT)
# 创建Web服务器
def start_server():
# 获取IP地址
sta_if = network.WLAN(network.STA_IF)
ip = sta_if.ifconfig()[0]
# 创建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((ip, 80))
s.listen(5)
# 处理请求
while True:
conn, addr = s.accept()
request = conn.recv(1024)
if request:
# 解析请求
request = str(request)
if request.find('/led1/on') != -1:
led1.value(1)
elif request.find('/led1/off') != -1:
led1.value(0)
elif request.find('/led2/on') != -1:
led2.value(1)
elif request.find('/led2/off') != -1:
led2.value(0)
elif request.find('/relay1/on') != -1:
relay1.value(1)
elif request.find('/relay1/off') != -1:
relay1.value(0)
elif request.find('/relay2/on') != -1:
relay2.value(1)
elif request.find('/relay2/off') != -1:
relay2.value(0)
# 发送响应
response = 'HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n'
response += '<html><body>'
response += '<h1>ESP32 Control Panel</h1>'
response += '<p>LED1: '
response += 'On' if led1.value() else 'Off'
response += ' <a href="/led1/on">On</a> <a href="/led1/off">Off</a></p>'
response += '<p>LED2: '
response += 'On' if led2.value() else 'Off'
response += ' <a href="/led2/on">On</a> <a href="/led2/off">Off</a></p>'
response += '<p>Relay1: '
response += 'On' if relay1.value() else 'Off'
response += ' <a href="/relay1/on">On</a> <a href="/relay1/off">Off</a></p>'
response += '<p>Relay2: '
response += 'On' if relay2.value() else 'Off'
response += ' <a href="/relay2/on">On</a> <a href="/relay2/off">Off</a></p>'
response += '</body></html>'
conn.send(response)
conn.close()
# 启动Web服务器
start_server()
```
请注意,此代码仅供参考,您需要根据自己的需求进行修改和调整。
阅读全文