15987浏览
查看: 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目录下,直接运行
目录结构如下
uPyCraft-micropython教程--网页控制板载LED灯图1


3. 运行后,命令终端框显示
uPyCraft-micropython教程--网页控制板载LED灯图2

发现已经连接到了路由器上面,地址是192.168.3.159  (注意你获得的ip和我肯定不同哦)

4. 在浏览器(请选择firefox或chrome,不要用ie)中输入这个ip,显示网页
uPyCraft-micropython教程--网页控制板载LED灯图3

5. 拖动下面这个划条,板载的LED灯可以调节亮度啦,upycraft终端框可以看到打印如下
uPyCraft-micropython教程--网页控制板载LED灯图4


webCtrl.zip

844 Bytes, 下载次数: 3008

0574water  学徒

发表于 2017-9-27 15:41:57

好  测试通过 谢谢分享
回复

使用道具 举报

yinyu1980  学徒

发表于 2017-10-5 17:10:01

谢谢,很棒的程序
不过,快速拖拽几次滑动条后,程序会死掉并推出。
终端信息如下:
Val = 5
Val = 6
Val = 7
E:M 656
state: 5 -> 0 (0)
rm 0
del if0
mode : softAP(62:01:94:37:c2:bb)
MicroPython v1.9-6-g821dc27e-dirty on 2017-07-21; ESP module with ESP8266
Type "help()" for more information.
回复

使用道具 举报

野驴先生  学徒

发表于 2017-10-9 18:11:01

非常感谢分享过程,我正在学习ESP32的WiFi部分的功能
回复

使用道具 举报

世界雫ss  学徒

发表于 2019-3-21 17:13:56

感谢,刚接触
回复

使用道具 举报

韩怀熠  学徒

发表于 2021-7-1 13:14:08

兄弟萌  这个js页面怎么搞的
回复

使用道具 举报

xszxd  见习技师

发表于 2023-6-19 09:32:05

输入框全部删除时会int(val)出错,须增加一个判断
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail