本帖最后由 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代码,具体步骤见视频  
  
 
 七、代码附件  
 
 |