通过web页面远程控制K10

2025-01-27247
AI 快速预览详细 收起
本文介绍了如何通过Web页面远程控制行空板K10。首先,需要刷写Micropython unihiker_k10官方固件,并下载ESP32固件烧录软件。接着,从GitHub下载Microdot并将其部署到K10上。创建目录/lib/microdot并将microdot工程中的文件上传到该目录。此外,还可以创建static目录来存放HTML文件。最后,编写Python代码并通过Thonny执行,即可在电脑或手机浏览器中打开页面进行远程控制。

本文目标是通过web页面远程控制K10,无论是页面还是手机浏览器均可。

使用的方法是在K10上部署webserver服务

准备工作

K10刷Micropython unihiker_k10官方固件

下载固件:点击下载micropython_unihiker_k10&Box_20241122_V0.5.bin

下载ESP32固件烧录软件:点击下载

文档在此

https://www.unihiker.com.cn/wiki/k10/micropython_unihiker_k10#%E5%9B%BA%E4%BB%B6%E7%83%A7%E5%BD%95

如果不熟悉可以参考我B站视频

https://www.bilibili.com/video/BV1tCkXYkESQ/

手机或电脑和K10需要在同一个局域网内(当然也可以通过网络穿透从外网访问,不在本文范围内)

 

操作过程

1.从github下载Microdot

https://github.com/miguelgrinberg/microdot.git

2.把microdot作为webserver部署到K10上

2.1 创建目录/lib/microdot把

microdot工程中的src\microdot下所有文件上传到/lib/microdot.

注:上传全部文件并非刚需,如果资源有限可以仅上传必要的文件

image.png

3创建目录static,此目录非刚需,但是为了文件类型分类应把html文件单独存放

目前不支持本地部署js文件,但是css文件可以部署到本地,由于资源有限最好还是部署在cdn上比如

 

4编写代码如下python框

4.1在Thonny中执行代码

4.2在电脑浏览器或者手机浏览器中打开页面(测试可以使用无痕模式)

K10所在ip地址可以通过以下代码获取

 

from unihiker_k10 import wifi wifi.connect(ssid="dfrobotOffice",psd="dfrobot2011",timeout=50000) #尝试连接wifi网络。可以不写参数名称。timeout为可选参数,表示连接超时时长,默认超时时间为10000毫秒 wifi.status() #返回网络连接状态,True表示已连接,False表示未连接 wifi.info() #返回包含当前IP地址、子网掩码、网关等信息的字符串

 

http://192.168.68.130:5000/rgb

image.png

观察行空板k10

634ef0ac948e26ff5b486bf9a83abbf.jpg

k10三个灯按要求点亮

 

html文件比较长,列出在文章中没有太大意义所以放在以下附件中,大家可以随意下载修改。

Python解释在注释中,我尽量对每个细节走做了详细的解释。

附件

代码
from unihiker_k10 import rgb
from microdot import Microdot, redirect, send_file
import netlib #自定义网络相关类

netlib.init() #可用from unihiker_k10 import wifi例子代码代替

# 实例化Microdot
app = Microdot()

#定义路由,为了代码清晰这个文件中我没有定义index根文件,跟文件可以对各种操作做总调度
@app.route('/rgb', methods=['GET', 'POST'])
def index(request):
    message_cookie = None
    #可以接收Get和Post两种模式
    #Post负责接收用户实际选择的内容
    if request.method == 'POST':
        #这里可以优化成一次性把信息编辑好
        if 'led1_red' in request.form:
            led1R = int(request.form.get('led1_red'))
            led1G = int(request.form.get('led1_green'))
            led1B = int(request.form.get('led1_blue'))
            led2R = int(request.form.get('led2_red'))
            led2G = int(request.form.get('led2_green'))
            led2B = int(request.form.get('led2_blue'))
            led3R = int(request.form.get('led3_red'))
            led3G = int(request.form.get('led3_green'))
            led3B = int(request.form.get('led3_blue'))
            rgb.write(num = 0, R=led1R,G=led1G,B=led1B)
            rgb.write(num = 1, R=led2R,G=led2G,B=led2B)
            rgb.write(num = 2, R=led3R,G=led3G,B=led3B)
        #显示完成后重定向回去
        response = redirect('/rgb')
    else:
        #写一个cookie
        if 'message' not in request.cookies:
            message_cookie = 'Select 3 RGBs and click Set RGB.'
        #Get模式把定义好的html文件抛给用户。这里使用了static/rgb.html
        response = send_file('static/rgb.html')
        
    if message_cookie:
        response.set_cookie('message', message_cookie)

    return response

# 启动web服务,端口号为5000可以按需修改
app.run(host='0.0.0.0', port=5000, debug=False, ssl=None)


这里只是以RGB灯作为例子,实际已经取得了K10的全面控制。例如可以远程控制K10+麦昆组合进行前进后退转向等操作。我们在下一个文章里再详细说明。

 

祝大家2025蛇年新年快乐

米菲爸爸敬上

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -