本帖最后由 gray6666 于 2022-5-7 11:43 编辑
一、项目背景 随着小学信息科技的课程调整公布,高中信息技术老师也在对未来课程变化进行讨论?开源硬件,linux系统,物联网,人工智能,教学中经常会提到,但相关相关概念、知识点讲解枯燥无味,学生不感兴趣;行空板自带linux系统(未来信息技术教学的新趋势)和siot服务器,python语言,各种库更是一站式配齐,行空板作为信息技术实验室建设必备利器应该会有一席之地。 本次案例利用行空板作为siot服务器和操控端设计界面,分享热点,物联小车按照指令运动。
二、项目用到的python库 行空板已安装好unihiker库和paho-mqtt 客户端库,上手即用。 1.unihiker库:行空板首发,图形界面开发利器,再次特别感谢开发组各位成员。 为了便于行空板的使用,开发组开发了一个python库,名字为unihiker,将行空板需要而第三方python库没有或使用不便的功能集成与此库中,主要功能简介:为了方便屏幕显示和控制,我们在unihiker库中基于tkinter库封装了一个GUI类;为了方便麦克风和usb喇叭的使用,我们在unihiker库中封装了一个Audio类。
2.paho-mqtt库:目前 Python 中使用较多的 MQTT 客户端库,它在 Python 2.7 或 3.x 上为客户端类提供了对 MQTT v3.1 和 v3.1.1 的支持;使将消息发布到 MQTT 服务器变得非常简单。本次案例用该库实现行空板给SIOT服务器发送信息。 具体用法参考地址
三、实验硬件 1.行空板*1 https://www.dfrobot.com.cn/category-307.html 可参考我的另一篇帖子https://mc.dfrobot.com.cn/thread-312420-1-1.html
四、行空板设置 1.开启SIOT服务
2.开启无线热点
3.Thonny编辑器实现界面设计、编程测试 配置Thonny编辑器
运行代码
python代码,大家可自行简化使用
- <font size="4" face="宋体">import time
- from unihiker import GUI #导入包
- import paho.mqtt.client as mqtt
- #[url]https://github.com/eclipse/paho.mqtt.python[/url]
- #[url]https://pypi.org/project/paho-mqtt/[/url]
- #配置SIOT服务器连接参数
- HOST = "10.1.2.3" #服务器ip地址
- PORT = 1883 #服务器端口
- USER = 'siot' #登陆用户名
- PASSWORD = 'dfrobot' #用户名对应的密码
- #连接服务器,连接成功会给服务发送'行空板连接成功'的消息
- client = mqtt.Client()
- client.username_pw_set(USER, PASSWORD) #如果服务器要求需要账户密码
- client.connect(HOST, PORT, keepalive=600) # 连接服务器
- client.publish('car/car1', '行空板成功连接', qos=0)
- #定义按钮模块给SIOT服务器发送的前、后、左、右、停消息程序
- def front():
- client.publish('car/car1', '前进', qos=0)
- print("前进")
- def back():
- client.publish('car/car1', '后退', qos=0)
- print("后退")
- def left():
- client.publish('car/car1', '左转', qos=0)
- print("左转")
- def right():
- client.publish('car/car1', '右转', qos=0)
- print("右转")
- def stop():
- client.publish('car/car1', '停止', qos=0)
- print("停止")
-
- #制作行空板控制端界面
- gui=GUI() #实例化GUI类
- gui.draw_digit(x=120, y=60, text='行空板控制器', origin = "center",color="red",font_size=15)#数码管字体显示
- gui.add_button(x=120, y=110, w=50, h=30, text="前进", origin='center', onclick=lambda: front())
- gui.add_button(x=40, y=150, w=50, h=30, text="左转", origin='left', onclick=lambda: left())
- gui.add_button(x=120, y=150, w=50, h=30, text="停止", origin='center', onclick=lambda: stop())
- gui.add_button(x=200, y=150, w=50, h=30, text="右转", origin='right', onclick=lambda: right())
- gui.add_button(x=120, y=190, w=50, h=30, text="后退", origin='center', onclick=lambda: back())
- #设置主程序
- while True:
- #增加等待,防止程序退出和卡住
- time.sleep(1)
- </font>
复制代码
界面运行效果
行空板服务器测试 10.1.2.3:8080
五、掌控小车端代码 mind+V1.7.1RC2.0 1.连接热点,初始化SIOTf服务器
2.收到SIOT消息,小车运动状态改变
3.小车运动状态控制
六、测试行空板和小车 依次开启小车连接热点和SIOT服务器,Thonny编辑器运行python代码,具体步骤见视频
七、代码附件
|