【DFRobot Beetle ESP32-C3开发板试用体验】WEBSOKET—PWM—LED

描述

本文来源电子发烧友社区,作者:华仔stm32, 帖子地址:https://bbs.elecfans.com/jishu_2284182_1_1.html

【目的】展示ESP32作为web服务器的,用ESP32C3写一个websocket服务器,用网页来实现控制板载LED灯亮度的例子。
【实现思路】1、ESP32建立webserver。2、书写一个ajax的网页。3、配置LED灯的pwm。
1、打开uPyCraft 软件,建立一个esp32c3.html:


  1.  
  2.  
  3. <title>ajaxWebCtrl
  4.   
  5.   
  6.  
  7.  
  8.  
  9.    

    ESP32 PYTHON TEST  

     

    •    

    PWM LED --- Web Control for FireBeetle

     

    •  
    •    
       
    •           
    •           
    •    

  •  
  •  
复制代码
DFRobot

2、新建esp32webpwmCtrl.py


  1. from machine import Pin,PWM
  2. import network
  3. import os
  4. import time
  5. import socket
  6. import gc
  7.  
  8. SSID="HUAWEI-H10R9U"
  9. PASSWORD="18977381885@"
  10. wlan=None
  11. s=None
  12. led=None
  13.  
  14. def connectWifi(ssid,passwd):
  15.   global wlan
  16.   wlan=network.WLAN(network.STA_IF)                     #create a wlan object
  17.   wlan.active(True)                                     #Activate the network interface
  18.   wlan.disconnect()                                     #Disconnect the last connected WiFi
  19.   wlan.connect(ssid,passwd)                             #connect wifi
  20.   while(wlan.ifconfig()[0]=='0.0.0.0'):
  21.     time.sleep(1)
  22.     print(wlan.ifconfig()[0])
  23.   return True
  24.   
  25. def ajaxWebserv():
  26.   # minimal Ajax in Control Webserver
  27.   global s,led
  28.   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #create stream socket
  29.   s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)   #Set the value of the given socket option
  30.   s.bind((wlan.ifconfig()[0], 80))                      #bind ip and port
  31.   s.listen(1)                                           #listen message
  32.   while True:
  33.     conn, addr = s.accept()                             #Accept a connection,conn is a new socket object
  34.     #print("Got a connection from %s" % str(addr))
  35.     request = conn.recv(1024)                           #Receive 1024 byte of data from the socket
  36.     conn.sendall('HTTP/1.1 200 OKnConnection: closenServer: FireBeetlenContent-Type: text/htmlnn')
  37.  
  38.     request = str(request)
  39.     ib = request.find('Val=')                           #find the string 'Val=' from request
  40.     if ib > 0 :
  41.       ie = request.find(' ', ib)                        #init address of the index with ib,then find ' '
  42.       Val = request[ib+4:ie]                            #get the string of ib+4 to ie in the request
  43.       print("Val =", Val)
  44.       led.duty(int(Val)*100)                            #set the duty of led
  45.       conn.send(Val)                                    #send data
  46.     else:
  47.       with open('esp32c3.htm', 'r') as html:            #open file 'webCtrl.htm' with readonly
  48.         conn.sendall(html.read())                       #read data from 'webCtrl.htm',and send all of the data
  49.     conn.sendall('rn')
  50.     conn.close()                                        #close file
  51.     #print("Connection wth %s closed" % str(addr))
  52.  
  53. #Catch exceptions,stop program if interrupted accidentally in the 'try'
  54. try:
  55.   led=PWM(Pin(10),freq=100)                              #create led object
  56.   led.init()
  57.   led.duty(0)
  58.   connectWifi(SSID, PASSWORD)
  59.   ajaxWebserv()
  60. except:
  61.   if (s):
  62.     s.close()
  63.   led.deinit()
  64.   wlan.disconnect()
  65.   wlan.active(False)
复制代码

3、然后把两个文件上传到ESP32C3,运行esp32c3webpwmCtrl.py:
DFRobot

4、根据获取的的IP地址,打开浏览器输入ip地址:
DFRobot

【总结】python做为开发,就是快捷,快速。注(这些都是基于示例webserver创建的)


webpwm(开发板体验视频,详见作者原文链接内容)


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分