回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

行空板无人驾驶系列课程 第10课:智能远程车辆控制系统 简单

头像 zoey不种土豆 2025.08.20 13 0

随着智能技术的快速发展,机器人和自动化控制系统在工业、教育、娱乐等领域的应用日益广泛。特别是在远程控制领域,越来越多的场景需要通过便捷的方式对设备进行实时操控和监控。本项目旨在设计一个通过移动终端远程控制的智能小车系统。移动终端提供用户友好的操作界面,可实时监控小车的车灯状态、车速及夹持器状态,实现智能化和远程化的操控需求。

第16课 智能远程车辆控制系统200.png

 

任务目标

移动终端:作为用户操作的核心设备,移动终端充当小车的遥控器,提供友好的控制界面。用户可以通过界面查看小车的车灯状态、车速、夹持器工作情况等信息。此外,移动终端上的按钮允许用户进行以下操作:远程开关车灯、远程控制夹持器的开合、控制小车前进、后退、左转、右转、实时调节小车的行驶速度。

智能终端:智能终端安装在小车上,作为接收指令和执行操作的核心模块。它能够接收来自移动终端的各类控制指令,并严格执行相应的动作。

 

知识点

1.了解多块行空板组件物联网

2.了解远程控制相关知识

3.掌握物联网远程控制技术的使用方法

 

第16课 智能远程车辆控制系统439.png

材料清单

硬件准备:

80c8025dd995e9f605be4dc573e54c9f.png

软件使用:Mind+编程软件(V1.8.0及以上版本) 

第16课 智能远程车辆控制系统576.png

 

课前准备 

环境设置:

在开始正式学习之前,我们需要对行空板进行一些基础准备,确保系统和环境设置都正确。

具体步骤,请参考:行空板无人驾驶系列课程 第一课 课前准备 部分内容。

 

动手实践

本项目分为两个核心部分:移动终端的搭建与智能终端的实现。首先,开发一个简洁直观的用户界面,通过移动终端让用户能够远程控制和监控小车的状态与操作。其次,智能终端负责接收来自移动终端的控制指令并执行。

任务一:搭建移动终端

设计一个简洁直观的用户界面,用户可以通过移动终端远程监控和控制小车的各项功能。界面应显示小车的车灯状态、当前车速以及夹持器的工作状态。同时,通过按钮实现远程开关车灯、控制夹持器的开合、操控小车前进、后退、左转、右转,并提供调节车速的功能。此外,还需确保移动终端与智能终端之间的无线通信,能够实时发送控制指令到SIoT服务器。

任务二:搭建智能终端

智能终端负责接收移动终端的指令并执行,同时反馈小车状态。具体包括控制小车的车灯、夹持器的操作,指挥小车的前进、后退、转向以及调节行驶速度。智能终端还需通过无线通信模块与移动终端保持稳定的连接,确保指令能够及时接收和执行。

 

任务一:搭建移动终端

1.硬件连接

将单独的一块行空板M10,使用USB线连接到计算机。

第16课 智能远程车辆控制系统1044.png

2.软件准备

(1)打开Mind+:按照下面的图示完成软件准备工作。

第16课 智能远程车辆控制系统1103.png

(2)添加官方库:点击“扩展”,在“官方库”中找到“MQTT-py”,并完成添加。

第16课 智能远程车辆控制系统1171.png

3.准备工作

在这个项目中,我们需要使用两块行空板组建物联网,一块行空板作为移动终端,用于监测智能终端的设备并发送控制指令,一块行空板搭配小车作为智能终端,接收控制指令并执行对应动作。

第16课 智能远程车辆控制系统1291.png

(1)配置网络

要实现移动终端与智能终端的数据传输,首先要将这两块行空板接入同一网络下,为了可以通过电脑访问SIoT服务器,电脑也需要接入同一网络下。首先,将电脑连入路由器或手机的热点(需要使用2.4G WiFi)。

第16课 智能远程车辆控制系统1540.png

 

然后,取一块行空板用USB线连接电脑,并打开浏览器在地址栏输入“10.1.2.3”,进入行空板服务页面。接下来,点击“网络设置”,在“WiFi连接”中点击“扫描”寻找电脑连接的无线网,输入正确的WiFi密码后,点击“连接”,等待连接成功。

第16课 智能远程车辆控制系统1689.png

 

完成后,我们用同样的方式给另一块行空板配置网络。最后,需要给两块行空板同时上电,使它们都保持开机状态。接下来,我们需要分别进入两块行空板的Home菜单,查看网络信息中的IP地址。

注意:给行空板供电有三种方式:1.电源适配器(手机充电头连接type-c口输出的USB线)。2. 充电宝(充电宝连接type-c口输出的USB线)。3. 电脑USB端口(通过type-c线将行空板和电脑连接)。

第16课 智能远程车辆控制系统1914.png

如果两块行空板的IP地址,前三段的数字相同,表示行空板处于同一局域网。现在,选择其中一块行空板同时作为移动终端和服务器端,去开启SIoT服务器。这里,我选择IP地址为:192.168.1.151这块行空板开启SIoT服务,作为移动终端和服务器端,另一块IP地址为:192.168.1.80的行空板作为智能终端。

第16课 智能远程车辆控制系统2099.png

(2)开启SIoT服务器

(2.1)开启行空板SIoT服务:长按行空板的“Home”键进入菜单页,点击“应用开关”,检查SIoT服务是否开启。如果显示“已禁用”,点击SIoT选项,切换SIoT状态为“已启用”。

(2.2)进入SIoT2.0物联网平台:浏览器地址栏输入服务器端IP地址:192.168.1.151,进入行空板设置界面,进入应用开关,然后点击“打开页面”,进入SIoT2.0服务平台登录页面。输入对应的账号和密码,即可完成登录。账号:siot,密码:dfrobot。

注意:如果进入的不是SIoT 2.0,需要对行空板SIoT服务器进行升级。

升级方法:https://mindplus.dfrobot.com.cn/dashboard_kit0194

(2.3)创建主题:登录成功后,进入SIoT数据管理页面。然后点击“新建主题”,在弹出窗口中填写“主题名称”,点击“确定”完成主题的创建,页面会显示对应的主题标签。

注意:如果打开的还是SIoT1.0页面,可以使用Ctrl+F5强制刷新页面缓存。

第16课 智能远程车辆控制系统2730.png

使用同样的方法,在服务器中创建主题“夹持器状态”、“车速”、“电机控制”。

第16课 智能远程车辆控制系统2797.png

4.编写程序

(1)UI界面设计

首先观察一下,移动终端控制界面上都包含了哪些元素?背景、车灯状态、夹持器状态、当前车速,以及开、关、前、后、左、右、加、减按钮。

第16课 智能远程车辆控制系统2903.png

为简化程序,静态文字和背景框均整合为背景图片。接下来,将背景图片“背景.png”,从素材文件夹库中,导入到“文件系统”的“项目中的文件”中。

第16课 智能远程车辆控制系统3003.png

使用“对象名 显示图片 在X Y ”指令,设置图片的XY坐标为(0,0),将文件系统中的“背景.png”显示在行空板上。然后使用“更新对象名 数字参数 宽为 ”指令,更新图片的宽为240。

第16课 智能远程车辆控制系统3127.png

然后,使用“对象名 显示文字 在X Y 字号 颜色”指令,在车灯状态和夹持器状态后面,显示文字“关”。

第16课 智能远程车辆控制系统3208.png

关于当前车速的显示,也使用同样的方法,为了方便后续使用按钮调节车速,新建“变量 速度”,并初始化车速的值为500,显示的内容为“变量 速度”。

第16课 智能远程车辆控制系统3309.png

下面,使用“对象名 增加按钮 在 X Y 宽 高 点击回调函数button_click1”与“当点击回调函数button_click1被触发”指令,分别设置控制车灯、车窗的开关按钮。

第16课 智能远程车辆控制系统3432.png

在对应“当点击回调函数button_click1被触发”指令下,添加每个按钮的功能。例如,当“button_click1”按钮被按下,使用“更新对象名 文本内容参数为”指令,更新车灯的文本内容为“开”。其余3个按钮的功能,使用同样的方法,进行对应的文本内容更新。

第16课 智能远程车辆控制系统3593.png

使用“对象名 增加按钮”与“当点击回调函数 被触发”指令,将控制电机运动的“前、后、左、右”按钮以及调节电机速度的“+/-”创建完成。

第16课 智能远程车辆控制系统3690.png

“+/-”按钮主要是用于调节电机速度,因此,在“当点击回调函数button_click9被触发”与“当点击回调函数button_click10被触发”指令下,设置“变量 速度”为“全局变量”。当“+”按钮被点击,速度增加20;当“-”按钮被点击,速度减小20。

第16课 智能远程车辆控制系统3850.png

(2)发送数据

移动终端要向SIoT服务器端发送数据,首先使用MQTT指令区的“MQTT的初始化——发起连接——保持连接——订阅”这四个指令,向SIoT服务器端发起连接。

第16课 智能远程车辆控制系统3962.png

MQTT连接成功后,就可以在“当点击回调函数(button_click1)被触发”指令下,使用“MQTT发布并存储数据”指令,向SIoT平台发送数据,并将数据存储在SIoT服务器对应的主题中。

第16课 智能远程车辆控制系统4088.png

button_click1按钮的功能是打开车灯,因此在“当点击回调函数(button_click1)被触发”指令下,使用“MQTT发布并存储数据”指令,向SIoT服务器发送文本数据“打开车灯”,并将数据存储在SIoT服务器对应的主题“siot/车灯状态”中。

第16课 智能远程车辆控制系统4247.png

其余的按钮功能,使用同样的方法,向SIoT服务器发送文本数据,并将数据存储在SIoT服务器对应的主题下。需要注意的是,当前车速需要实时更新,因此,在“+/-”按钮下,使用“更新对象名 文本内容参数 ”指令,更新速度的显示内容为“变量 速度”。

第16课 智能远程车辆控制系统4398.png

完整程序如下:

第16课 智能远程车辆控制系统4435.png

5.程序运行

移动终端的行空板接通电源后,在Mind+中远程连接192.168.1.151,连接成功后,点击运行。移动终端的行空板上出现控制的UI界面,点击对应的按钮后,SIoT服务器将收到移动终端发送的消息。例如,点击“+”按钮后,当前车速显示调节后的速度,SIoT服务器的“siot/车速”主题中,显示调节后的车速。

第16课 智能远程车辆控制系统4624.png

 

任务二:搭建智能终端

1.硬件连接

如果小车是根据组装教程安装的,这一步可以忽略。这个项目中主要用到的硬件是LED灯、夹持器,将LED灯连接在行空板的P22、P24引脚,将夹持器安装在主控扩展板的P0引脚。

注意:图中的左右方向,是以行空板屏幕面向我们。

第16课 智能远程车辆控制系统4779.png

2.软件准备

(1)打开Mind+:新建一个项目,按照下面的图示完成软件准备工作。

第16课 智能远程车辆控制系统4845.png

(2)添加官方库:点击“扩展”,在“官方库”中找到“MQTT-py”,并完成添加。

第16课 智能远程车辆控制系统4913.png

(3)添加pinpong库:点击“扩展”,在“pinpong库”中找到“pinpong初始化”、“舵机”,并完成添加。

第16课 智能远程车辆控制系统4999.png

(4)添加用户库:点击“扩展”,在“用户库”中找到“Maxbot行空板小车电机驱动”,并完成添加。

第16课 智能远程车辆控制系统5075.png

 

3.编写程序

智能终端要接收SIoT服务器的数据,同样要使用MQTT指令,与SIoT服务器保持连接。使用MQTT指令区的“MQTT的初始化——发起连接——保持连接——订阅”这四个指令,向SIoT服务器端发起连接。

第16课 智能远程车辆控制系统5209.png

连接成功后,使用“MQTT订阅 ”指令,订阅任务一中创建好的4个主题“siot/车灯状态”、“siot/夹持器状态”、“siot/电机控制”、“siot/速度”

第16课 智能远程车辆控制系统5320.png

 

使用“当MQTT从MQTT主题接收到MQTT信息”指令,来接收服务器端的控制指令。

第16课 智能远程车辆控制系统5405.png

这里先以控制车灯为例,接收到数据后,首先需要判断数据是否来自主题“siot/车灯状态”。因此,需要使用条件判断“如果……那么……”指令,对“MQTT主题”进行判断。需要注意的是,“MQTT主题”的数据类型为字符串型,在进行MQTT主题判断时,需要将判断数据“siot/车灯状态”放入“文本 ”指令内。

第16课 智能远程车辆控制系统5585.png

同样使用条件判断指令,判断“MQTT信息”的具体文本内容是“打开车灯”,还是“关闭车灯”。

第16课 智能远程车辆控制系统5660.png

当接收的“MQTT信息”为“打开车灯”时,使用“设置数字引脚 输出”指令,设置P22、P24引脚输出高电平。同样的,当接收到的“MQTT信息”为“关闭车灯”时,使用“设置数字引脚 输出”指令,设置P22、P24引脚输出低电平。

第16课 智能远程车辆控制系统5803.png

接下来,完成控制夹持器开合的程序,方法与车灯的控制程序思路一样。舵机需要在“python主程序开始”下,使用“pinpong初始化 版型 端口”与“pin初始化 引脚号 模式”指令,初始化连接舵机的P0口,引脚模式为“模拟输出”。同样,舵机也需要使用“舵机初始化引脚 ”指令,进行引脚初始化,还需要使用“舵机 转动到 度”指令,设置初始化角度为90度(夹持器关闭)。

第16课 智能远程车辆控制系统6016.png

当接收到的MQTT主题为“夹持器状态”,且“MQTT信息”为“打开夹持器”时,使用“舵机 转动到 度”指令,设置舵机转动到30度(打开夹持器);当“MQTT信息”为“关闭夹持器”时,使用“舵机 转动到 度”指令,设置舵机转动到90度(关闭夹持器)。

第16课 智能远程车辆控制系统6170.png

新建“变量 速度”,并在“Python主程序开始”下,初始化变量的值为500,然后在“当MQTT 接收到”指令下,设置“变量 速度”为“全局变量”。然后当接收到的“MQTT主题”为“siot/速度”的消息时,设置变量速度的值为“MQTT信息”。

注意:因为MQTT信息是文本类型,设置电机的速度是数字类型。所以使用“数字 ”指令,将文本类型转换为数字类型。

第16课 智能远程车辆控制系统6378.png

最后,完成接收控制电机的程序。以接收到前进指令为例,当接收到的“MQTT主题”为“siot/电机控制”,且“MQTT信息”为“前进”时,使用“电机 以速度 ”指令,设置全部电机以“变量 速度”的速度进行正转0.5秒。

第16课 智能远程车辆控制系统6516.png

后退、左转、右转使用同样的方法实现。完整程序如下:

第16课 智能远程车辆控制系统6571.png

 

4.程序运行

(1)首先,在移动终端的行空板上,运行移动终端的程序,开启移动终端自带的SIoT服务器。

(2)智能终端远程连接192.168.1.80,连接成功后,点击运行。程序运行成功后,就可以使用移动终端上的按钮,远程控制小车执行对应的操作了。

第16课 智能远程车辆控制系统6717.png

 

知识园地

1. 了解物联网远程控制

什么是物联网远程控制?远程控制是建立在wifi、蓝牙、5G等无线通信的基础上,将智能设备进行连接,实现数据的读取、远距离传输和远程无线控制,进行对设备的全自动管理。

这节课程中,使用了两块行空板组建了物联网,这个系统中包含了智能终端、服务器端、移动终端。智能终端的行空板连接了多种执行器,负责接收数据并根据数据对执行器进行控制;移动终端用来查看数据,并远程控制执行器;服务器端是移动终端开启的SIoT服务功能,负责存储和收发数据。

第16课 智能远程车辆控制系统6977.png

多行空板组建物联网的一般步骤为:配置网络,将所有物联网系统中的设备连入同一网段;开启服务器端SIoT服务;SIoT连接设置,订阅主题,收发数据。当然,使用SIoT2.0时,要优先新建主题,才能成功订阅主题。

第16课 智能远程车辆控制系统7110.png

 

2. 了解什么是MQTT协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一个基于客户端-服务器的消息发布/订阅传输协议。

MQTT协议在行空板与SIoT平台中的作用是什么?

第16课 智能远程车辆控制系统7255.png

我们可以将MQTT协议理解为行空板与SIoT平台通信的桥梁,在行空板和物联网SIoT平台通信过程中,MQTT协议有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。 其中,消息的发布者和订阅者都是设备端(行空板),消息代理是服务器,消息发布者可以同时是订阅者。

类比微信群聊:消息代理是群,发布者是发消息的人,订阅者是群成员。如果你想在这个群里发消息,首先你得进入这个群,才能发送消息,而进群的方式就是MQTT协议。进群后,发消息这个人就是发布者,群就是服务器,其他群成员就是订阅者,你发的消息自己也能看到,因此发布者也可以是订阅者。

 

挑战自我

假设我们需要远程控制智能终端小车进入特殊区域,采集不同的光线数据。为确保数据实时传输,如何才能将智能终端收集到的信息及时回传,让我们通过移动终端就能实时监测各地光线变化?具体实现方法如下:

1.在SIoT服务器平台,新建主题“siot/光线数据”。

2.在智能终端将采集到的光线数据,上传到“siot/光线数据”中。

3.移动终端订阅“siot/光线数据”主题后,接收该主题的信息,并将信息更新在显示界面中。


 

获取课程资源,添加小助手微信:DFRobot2018

评论

user-avatar