通过web页面远程控制K10
本文目标是通过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.
注:上传全部文件并非刚需,如果资源有限可以仅上传必要的文件

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

观察行空板k10

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蛇年新年快乐
米菲爸爸敬上




