随着物联网技术的飞速发展,智能行车记录仪可以在联网后,实时上传行车过程中的画面。无论身在何处,车主都可以通过手机或电脑,实时获取车辆行驶画面,有效提升行车安全性和远程管理便利性。
接下来,我们就使用行空板的SIoT功能搭配Mind+的可视化界面来制作一款这样的智能车载远程监控系统吧!
任务目标
小车在巡线过程中,开启摄像头。然后,将摄像头中检测到的实时画面上传到Mind+可视化界面上显示,车主可以通过可视化界面,查看小车行驶过程中采集到的实时视频。

知识点
1.了解图像文件转字符串的相关知识掌握Mind+可视化面板的使用方法
2.掌握Mind+可视化面板的使用方法
3.掌握行空板向可视化界面传送视频流的方法
材料清单
硬件准备:

软件使用:Mind+编程软件(V1.8.0及以上版本)
注意:使用Mind+可视化面板需将行空板SIoT服务升级至2.0版本。对应版本的Mind+和SIoT2.0升级文件,都可以进入下面链接下载:https://mindplus.dfrobot.com.cn/dashboard_kit0194

课前准备 -环境设置
在开始正式学习之前,我们需要对行空板进行一些基础准备,确保系统和环境设置都正确。
具体步骤,请参考:行空板无人驾驶系列课程 第一课 课前准备 部分内容。
动手实践
这个项目主要是使用行空板的SIoT服务器功能,开启行空板的SIoT功能后,可以将移动终端摄像头采集到的实时数据上传到SIoT服务器端,可视化界面可以从SIoT服务器端接收数据后进行显示。因此,整个项目分为下面两个小任务来完成。
任务一:搭建移动终端
小车在巡线过程中,开启摄像头,并将摄像头采集到的实时数据通过MQTT协议发送到SIoT服务器平台。
任务二:搭建服务器端
服务器端作为移动终端与可视化界面通信的桥梁,接收移动终端的数据后向可视化界面输送数据,最后将移动终端采集到的数据显示在可视化界面上。
任务一:搭建移动终端
1.硬件连接
使用type-c转A数据线,将USB音频模块与行空板连接,然后再使用type-c转A线将摄像头连接在音频模块上。

2.软件准备
(1)打开Mind+:打开Mind+,界面上方会出现一个“可视化面板”菜单。

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

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

3.编写程序
首先,在“Python主程序开始”下,使用Opencv库中的视频操作指令“创建VideoCapture对象vd”,创建一个名为“vd”的视频对象。

视频对象创建成功后,使用“使用VideoCapture对象vd打开视频\设备0”指令,打开连接在行空板上的摄像头。

接下来,使用“使用VideoCapture对象vd是否初始化完成”指令与“等待直到”指令,完成视频对象vd的初始化。

移动终端要向SIoT服务器端发送视频数据,首先使用MQTT指令区的“MQTT的初始化+——发起连接——保持连接——订阅”这四个指令,向SIoT服务器端发起连接。注意,这里需要订阅主题“siot/行车记录”。

在“循环执行”指令中,使用“如果……那么执行”指令与“Videocapture对象vd中是否存在下一帧”指令,判断摄像头中是否出现图像。当条件为真时,使用“从Videocapture对象vd中抓取下一帧grab以及状态”指令,获取一帧图像。

图像获取成功后,就使用“MQTT发布”指令,将获取的图片发送到“siot/行车记录”主题中。

由于“MQTT发布”指令仅支持文本数据传输,需将图像转换为字符串后再发送。要向SIoT主题发送图像数据,就需要将图像转换成字符串进行发送。在“Python主程序开始”下,使用base64指令区中的“初始化base64模块”指令与“获取图像 转换base编码后的字符串”指令,将图像转换为字符串后,再向SIoT主题发送。
注意:图像转字符串的详细说明请参考知识园地

最后,新建一个线程,将巡线功能的程序放到“当线程对象thread1启动后执行”指令下,并在“Python主程序开始”下启动用线程thread1,完整程序如下:

4.程序运行
远程连接192.168.1.80,连接成功后,点击运行。小车按照地图上的轨迹,进行巡线,并将摄像头中的画面上传到SIoT主题“siot/行车记录”中。

任务二:搭建服务器端
1.编写程序
服务器端主要是用于车主远程查看行车状态,因此,直接使用“Mind+可视化面板”设计一个简单的监控界面。
(1)搭建服务器端
(1.1)开启行空板SIoT服务:长按行空板的“Home”键进入菜单页,点击“应用开关”,检查SIoT服务是否开启。如果显示“已禁用”,点击SIoT选项,切换SIoT状态为“已启用”。

(1.2)进入SIoT2.0物联网平台:浏览器地址栏输入服务器端IP地址:192.168.1.80,进入行空板设置界面,进入应用开关,然后点击“打开页面”,进入SIoT2.0服务平台登录页面。输入对应的账号和密码,即可完成登录。账号:siot,密码:dfrobot。
注意:如果进入的不是SIoT 2.0,需要对行空板SIoT服务器进行升级。
升级方法:https://mindplus.dfrobot.com.cn/dashboard_kit0194

(1.3)创建主题:登录成功后,进入SIoT数据管理页面。然后点击“新建主题”,在弹出窗口中填写“主题名称”,点击“确定”完成主题的创建,页面会显示对应的主题标签。
注意:如果打开的还是SIoT1.0页面,可以使用Ctrl+F5强制刷新页面缓存。

(2)新建项目
打开任务一的程序,在Mind+界面上,点击“可视化面板”按钮,开启“Mind+可视化窗口”。

点击“新建空白项目”,在弹出的窗口中填写好项目名称,点击“确定”项目管理页面就会出现新建项目的标签。

(3)连接SIoT
新建好项目后,点击对应标签上的“编辑”,进入编辑页面,然后我们可以在页面上方的“菜单栏”,点击“未设置”,选择“数据源设置”,在弹出的窗口中填写要连接的物联网平台信息。“完成”后,显示订阅成功。


(4)设计可视化界面
首先,在可视化编辑页面中右侧的“属性区”设置画布尺寸、主题以及封面。

在组件区找到“装饰组件”中的“文字”组件进行添加,在“组件属性”中,勾选“隐藏底色”,并修改文本的显示内容为“智能行车记录仪”。

在组件区找到“显示组件”中的“网络图片”组件进行添加,在“组件属性”中,找到“Topic”选择“siot/行车记录”主题,并设置组件宽度和组件高度。

2.程序运行
在可视化界面启用全屏模式后,将小车置于地图起点并运行任务一程序。可以看到小车在巡线过程中,将摄像头中检测到的画面上传到可视化界面中显示。车主可以通过可视化界面,观察到小车在行驶过程中的实时画面。

知识园地
1. 了解图像转字符串的相关知识
因为计算机只能以二进制的形式来理解数据,所以当我们的计算机存储图片时,通常以一系列的0和1的二进制数来表示。
但是,如果我们想在文本中传输或嵌入图片,是不能直接使用这些二进制数据的,因为文本文件只能包含字符,无法直接表示二进制数据。这时候,就需要用到base64编码了。
Base64编码通过64种字符将二进制数据转换为文本格式,这样做的好处是可以在文本文件中存储和传输这些数据,而不会因为特殊字符导致出现问题。
例如,一张图片的二进制数据如下:

通过base64编码,它会被转换成一串包含A-Z、a-z,0-9以及两个额外字符(通常是‘+’和‘/’)的字符,例如:

图像通过转换后就变成了一串字符,然后这串字符可以嵌入到文本中,或通过网络传输。通过此方法,摄像头视频流可实时显示在可视化界面中。

2.指令学习
该指令用于创建一个视频流捕获对象,并自定义对象名。
该指令用于创建一个视频流捕获对象,并自定义对象名。
该指令用于判断视频捕获对象是否已成功打开。
该指令用于判断视频捕获对象是否已成功打开。
该指令用于判断视频捕获对象是否已成功打开。
挑战自我
这个项目中,可以通过可视化界面远程查看小车在行驶过程中摄像头采集到的实时图像,但是在行空板上没有做任何显示。接下来,大家在原程序的基础上,添加“创建窗口winname并设置为全屏”与“显示图片img并设置图片名称“Mind+.png”指令,将摄像头中采集到的画面也显示在行空板上。

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