MicroPython Server网页LED开关

使用MicroPython在TPYBoard v202上创建了一个简单的Web服务器,通过WiFi连接获取IP地址,并展示在串口上。用户可以通过输入该IP地址在浏览器中访问页面,实现远程控制LED灯的开关。博客提到了去除登录页面并美化了控制界面,但要注意ESP8266的内存限制。此外,还分享了main.py和device.html的代码示例。
摘要由CSDN通过智能技术生成

MicroPython Server网页LED开关

最近入手了TPYBoard v202:

https://s2.loli.net/2022/06/21/nXhF9HPxW6ojcIl.png

下面用的是micropython开发的led例程,板子连接wifi后获取到Ip地址,并打印在串口上,通过ip地址用浏览器访问页面,实现控制led开关:

效果:

https://s2.loli.net/2022/06/21/25XKB4JnbgirvA6.png

我在官方的例程做了稍稍改动,去除了登录页面,美化了一下控制页面:

由于esp8266自带内存太小,一次性打开的device.html不可以太大,否则会出现网页文件不全,在手机端无法显示网页,所以一定要注意这个。

device.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,initial-scale=1">
    <style>
    body{width: 100%;height: 100vh;display: flex;justify-content: center;align-items: center;background-color: #efeeee;
        }
    input[type="submit"] {
        background-color: #F5F5F5;border: 20px solid rgba(0, 0, 0, 0.1);color: #666666;font-size: 20px;font-weight: bold;
        height: 100px;
        line-height: 27px;
        margin: 11px 6px;
        min-width: 100px;
        padding: 0 8px;text-align: center;
    }
    </style>
    <title>智能家居平台</title>
</head>
<body>
    <div class="container">
        <center>
            <h2>智能家居控制平台</h2>
            <form action="/" method="get" accept-charset="utf-8">
                <span style='font-size:100px;'>&#128161;</span>
                <p>灯光:&nbsp;</p>
                <input type="Submit" value="ON" name="led" />
                <input type="Submit" value="OFF" name="led" />
            </form>
        </center>
    </div>
</body>
</html>

main.py

try:
    import usocket as socket
except:
    import socket
import network
from machine import UART
from machine import Pin

led_flag=Pin(2, Pin.OUT)
led = Pin(4, Pin.OUT)   //继电器开关控制针脚连接G4针脚

led.value(0)

led_flag.value(0)
def do_connect(ssid,pwd):
    sta_if = network.WLAN(network.STA_IF)#STA 模式
    sta_if.active(False)
    if not sta_if.isconnected():#判断是否连接
        sta_if.active(True)
        sta_if.connect(ssid,pwd)#ssid:WIFI名称 pwd:WIFI 密码
        while not sta_if.isconnected():
            pass
    if sta_if.isconnected():
        return sta_if.ifconfig()[0]

def main(ip_):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ai = socket.getaddrinfo(ip_, 80)
    addr = ai[0][-1]
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
    s.bind(addr)
    s.listen(5)
    led_flag.value(0)
    while True:
        res = s.accept()
        client_s = res[0]  #连接的客户端
     
        led_flag.value(1) #设置8266 led常亮
     
        req = client_s.recv(1024).decode('utf-8')
        print(req)
        try:
            req_path = req.split(" ")[1]
        except:
            continue
        print("req_path:------",req_path)
        if req_path.find('favicon.ico') > -1:
            client_s.send(" ")
            client_s.close()
            continue
        elif req_path.find('led=ON') > -1:
            led.value(1)
            print('led:', led.value())
            led_flag.value(0)
        elif req_path.find('led=OFF') > -1:
            led.value(0)
            print('led:', led.value())
            led_flag.value(0)
        elif req_path.find('ledstatus') > -1:
            client_s.send(str(led.value()))
            client_s.close()
            continue

        with open('device.html','r') as f:
            client_s.send(f.read())
            client_s.close()
       

myip=do_connect('essid','password')#家中网络的WIFI名称和密码
print(myip)
main(myip)

server.zip

https://s2.loli.net/2022/06/21/Ez2tmqpZol64Bry.png

python还是适用于树莓派之类的性能高的比较合适,不太适用于MCU,虽然MicroPython比Arduino强大一些,但是运行性能不及Arduino

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值