15987| 6
|
[uPyCraft IDE] uPyCraft-micropython教程--网页控制板载LED灯 |
早就想用网页做些控制一些东西了,想了一下自己GET请求和WebSocket都不是很熟,不好下手。今天请教了一下做web的师兄,终于看懂了js代码。参考了一些网络资源,做了一个网页控制PWM-LED灯的演示。 实验准备: 1. uPyCraft 软件,目前最新的是V0.20版本 2. FireBeettle-ESP32主板(在8266上也测试通过了,但是感觉是内存原因,快速通信容易挂) 3. 路由器(大家都有吧:lol ,请将你的电脑和FireBeetle连到同一个网段) 实验代码 [mw_shl_code=python,true]from machine import Pin,PWM import network import os import time import socket import gc SSID="DFROBOT_AP" PASSWORD="12345678" wlan=None s=None led=None def connectWifi(ssid,passwd): global wlan wlan=network.WLAN(network.STA_IF) wlan.active(True) wlan.disconnect() wlan.connect(ssid,passwd) while(wlan.ifconfig()[0]=='0.0.0.0'): time.sleep(1) return True def ajaxWebserv(): # minimal Ajax in Control Webserver global s,led s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((wlan.ifconfig()[0], 80)) s.listen(1) while True: conn, addr = s.accept() #print("Got a connection from %s" % str(addr)) request = conn.recv(1024) conn.sendall('HTTP/1.1 200 OK\nConnection: close\nServer: FireBeetle\nContent-Type: text/html\n\n') request = str(request) ib = request.find('Val=') if ib > 0 : ie = request.find(' ', ib) Val = request[ib+4:ie] print("Val =", Val) led.duty(int(Val)*100) conn.send(Val) else: with open('webCtrl.htm', 'r') as html: conn.sendall(html.read()) conn.sendall('\r\n') conn.close() #print("Connection wth %s closed" % str(addr)) try: led=PWM(Pin(2),freq=100) led.init() led.duty(0) connectWifi(SSID, PASSWORD) ajaxWebserv() except: if (s): s.close() led.deinit() wlan.disconnect() wlan.active(False)[/mw_shl_code] 1. 将附件中的webCtrl.htm拖动到FireBeetle主板device目录下 2. 新建一个webpwm.py文件,保存代码并上传到FireBeettle主板device目录下,直接运行 目录结构如下 3. 运行后,命令终端框显示 发现已经连接到了路由器上面,地址是192.168.3.159 (注意你获得的ip和我肯定不同哦) 4. 在浏览器(请选择firefox或chrome,不要用ie)中输入这个ip,显示网页 5. 拖动下面这个划条,板载的LED灯可以调节亮度啦,upycraft终端框可以看到打印如下 |
844 Bytes, 下载次数: 3008
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed