gray6666 发表于 2022-5-6 21:18:13

行空板遥控物联小车

本帖最后由 gray6666 于 2022-5-7 11:43 编辑

一、项目背景随着小学信息科技的课程调整公布,高中信息技术老师也在对未来课程变化进行讨论?开源硬件,linux系统,物联网,人工智能,教学中经常会提到,但相关相关概念、知识点讲解枯燥无味,学生不感兴趣;行空板自带linux系统(未来信息技术教学的新趋势)和siot服务器,python语言,各种库更是一站式配齐,行空板作为信息技术实验室建设必备利器应该会有一席之地。本次案例利用行空板作为siot服务器和操控端设计界面,分享热点,物联小车按照指令运动。https://www.bilibili.com/video/BV1mu411r7Ys?share_source=copy_web
二、项目用到的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服务器发送信息。具体用法参考地址https://github.com/eclipse/paho.mqtt.python
https://pypi.org/project/paho-mqtt/
三、实验硬件1.行空板*1 https://www.dfrobot.com.cn/category-307.html2.掌控板小车一套 可参考我的另一篇帖子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
#https://github.com/eclipse/paho.mqtt.python
#https://pypi.org/project/paho-mqtt/
#配置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.01.连接热点,初始化SIOTf服务器
2.收到SIOT消息,小车运动状态改变
3.小车运动状态控制
六、测试行空板和小车依次开启小车连接热点和SIOT服务器,Thonny编辑器运行python代码,具体步骤见视频

https://www.bilibili.com/video/BV1eF411j7HD?share_source=copy_web
七、代码附件

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

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

云隐山河 发表于 2023-5-28 18:47:33

正好在学习行空板,用到此案例,非常感谢!
页: [1]
查看完整版本: 行空板遥控物联小车