3988浏览
查看: 3988|回复: 2

行空板遥控物联小车

[复制链接]
本帖最后由 gray6666 于 2022-5-7 11:43 编辑

一、项目背景
随着小学信息科技的课程调整公布,高中信息技术老师也在对未来课程变化进行讨论?开源硬件,linux系统,物联网,人工智能,教学中经常会提到,但相关相关概念、知识点讲解枯燥无味,学生不感兴趣;行空板自带linux系统(未来信息技术教学的新趋势)和siot服务器,python语言,各种库更是一站式配齐,行空板作为信息技术实验室建设必备利器应该会有一席之地。
本次案例利用行空板作为siot服务器和操控端设计界面,分享热点,物联小车按照指令运动。
行空板遥控物联小车图1

二、项目用到的python库
行空板已安装好unihiker库和paho-mqtt 客户端库,上手即用。
1.unihiker库:行空板首发,图形界面开发利器,再次特别感谢开发组各位成员。
为了便于行空板的使用,开发组开发了一个python库,名字为unihiker,将行空板需要而第三方python库没有或使用不便的功能集成与此库中,主要功能简介:为了方便屏幕显示和控制,我们在unihiker库中基于tkinter库封装了一个GUI类;为了方便麦克风和usb喇叭的使用,我们在unihiker库中封装了一个Audio类。
行空板遥控物联小车图2

2.paho-mqtt库:目前 Python 中使用较多的 MQTT 客户端库,它在 Python 2.7 或 3.x 上为客户端类提供了对 MQTT v3.1 和 v3.1.1 的支持;使将消息发布到 MQTT 服务器变得非常简单。本次案例用该库实现行空板给SIOT服务器发送信息。
具体用法参考地址
https://github.com/eclipse/paho.mqtt.python
https://pypi.org/project/paho-mqtt/
行空板遥控物联小车图3

三、实验硬件
1.行空板*1 https://www.dfrobot.com.cn/category-307.html
行空板遥控物联小车图4
2.掌控板小车一套
可参考我的另一篇帖子https://mc.dfrobot.com.cn/thread-312420-1-1.html

四、行空板设置
1.开启SIOT服务
行空板遥控物联小车图5

2.开启无线热点
行空板遥控物联小车图6

3.Thonny编辑器实现界面设计、编程测试
配置Thonny编辑器
行空板遥控物联小车图15

行空板遥控物联小车图16

运行代码
行空板遥控物联小车图7

python代码,大家可自行简化使用
  1. <font size="4" face="宋体">import time
  2. from unihiker import GUI   #导入包
  3. import paho.mqtt.client as mqtt
  4. #[url]https://github.com/eclipse/paho.mqtt.python[/url]
  5. #[url]https://pypi.org/project/paho-mqtt/[/url]
  6. #配置SIOT服务器连接参数
  7. HOST = "10.1.2.3" #服务器ip地址
  8. PORT = 1883   #服务器端口
  9. USER = 'siot'     #登陆用户名
  10. PASSWORD = 'dfrobot'    #用户名对应的密码
  11. #连接服务器,连接成功会给服务发送'行空板连接成功'的消息
  12. client = mqtt.Client()
  13. client.username_pw_set(USER, PASSWORD)   #如果服务器要求需要账户密码
  14. client.connect(HOST, PORT, keepalive=600) # 连接服务器
  15. client.publish('car/car1', '行空板成功连接', qos=0)
  16. #定义按钮模块给SIOT服务器发送的前、后、左、右、停消息程序
  17. def front():
  18.     client.publish('car/car1', '前进', qos=0)
  19.     print("前进")
  20. def back():
  21.     client.publish('car/car1', '后退', qos=0)
  22.     print("后退")
  23. def left():
  24.     client.publish('car/car1', '左转', qos=0)
  25.     print("左转")
  26. def right():
  27.     client.publish('car/car1', '右转', qos=0)
  28.     print("右转")
  29. def stop():
  30.     client.publish('car/car1', '停止', qos=0)
  31.     print("停止")
  32. #制作行空板控制端界面
  33. gui=GUI()  #实例化GUI类
  34. gui.draw_digit(x=120, y=60, text='行空板控制器', origin = "center",color="red",font_size=15)#数码管字体显示
  35. gui.add_button(x=120, y=110, w=50, h=30, text="前进", origin='center', onclick=lambda: front())
  36. gui.add_button(x=40, y=150, w=50, h=30, text="左转", origin='left', onclick=lambda: left())
  37. gui.add_button(x=120, y=150, w=50, h=30, text="停止", origin='center', onclick=lambda: stop())
  38. gui.add_button(x=200, y=150, w=50, h=30, text="右转", origin='right', onclick=lambda: right())
  39. gui.add_button(x=120, y=190, w=50, h=30, text="后退", origin='center', onclick=lambda: back())
  40. #设置主程序
  41. while True:
  42.     #增加等待,防止程序退出和卡住
  43.     time.sleep(1)
  44. </font>
复制代码
界面运行效果
行空板遥控物联小车图8

行空板服务器测试
10.1.2.3:8080
行空板遥控物联小车图9

五、掌控小车端代码
mind+V1.7.1RC2.0
1.连接热点,初始化SIOTf服务器
行空板遥控物联小车图10

2.收到SIOT消息,小车运动状态改变
行空板遥控物联小车图11

3.小车运动状态控制
行空板遥控物联小车图12

六、测试行空板和小车
依次开启小车连接热点和SIOT服务器,Thonny编辑器运行python代码,具体步骤见视频

行空板遥控物联小车图14


七、代码附件


Forgotten  版主

发表于 2022-5-7 23:56:23

用行空板做控制器,这思路不错
回复

使用道具 举报

云隐山河  学徒

发表于 2023-5-28 18:47:33

正好在学习行空板,用到此案例,非常感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail