基于安卓手机端实现的可视倒车系统设计

2022-05-24 11:43许龙铭徐宗锐
电子设计工程 2022年10期
关键词:安卓摄像头语音

许龙铭,徐宗锐

(广州城市理工学院通信工程学院,广东 广州 510800)

近年来,汽车技术不断发展,人们越来越重视汽车安全问题[1]。车周围相对较近的区域是驾驶者的视野盲区[2-4],汽车在倒车时极易引发碰撞,同时倒车的失误会引发较多交通事故的发生[5-6]。汽车倒车系统一般分为倒车影像和倒车雷达两种,汽车厂商为了不同配置车型的营销往往在中高配车型上才会选择一种或者两种倒车系统安装,导致了部分车主只能自行加装。加装的倒车系统需要在中控上安装一个或两个显示器件,甚至需要改变原车线路,造成了安全隐患。文中设计的汽车倒车系统同时整合了倒车影像和倒车雷达,使用安卓手机端APP 进行监控视频和倒车距离的显示,解决了汽车加装倒车系统的局限性。

1 方案设计

倒车系统的结构如图1 所示,主控制器使用联发科公司的MT7688 平台,搭建基于OpenWrt Linux发行版的开放式开发平台。然后驱动USB 连接的UVC 摄像头采集实时倒车影像数据、雷达检测倒车距离数据,两路数据分别由主控制器通过WIFI 发送给驾驶员的安卓手机端APP 进行显示和距离预警等处理。系统设计了离线模式,当未使用APP 连接时,也可作为正常的倒车雷达使用,可在倒车过程中进行距离播报和报警提示。

图1 倒车系统结构图

整个可视倒车系统主要由5 个部分组成:

1)MT7688 主控,作为整个系统的核心,主要进行摄像头图像数据处理、雷达传感器数据采集、TTS语音处理以及局域网数据传输。

2)雷达电路,检测汽车实时的倒车距离。

3)UVC 摄像头,采集实时的倒车图像数据。

4)TTS电路,播报实时倒车距离并进行报警提示。

5)安卓手机端APP,整个系统的用户交互接口。

2 硬件设计

2.1 MT7688

可视倒车系统使用LinkIt Smart 7688 核心板作为主控。LinkIt Smart 7688 搭载的是联发科公司的MT7688AN 芯片,MT7688AN 作为一颗系统级别的芯片,能够提供高性能的802.11n 1T1R WiFi 和各种周边连接能力。

LinkIt Smart 7688 核心板IO 图如图2 所示,对外提供了常用的PWM、I2C、SPI、I2S 和UART 等数字通信接口,安装了OpenWrt 操作系统可支持Python、Node.js 和C 语音等编程语言,能够驱动外围硬件进行物联网产品的快速开发。

图2 LinkIt Smart 7688 IO图

2.2 UVC摄像头电路

UVC 摄像头的选用基于标准的USB 视频设备协议。由于各大主流操作系统均提供了设备驱动支持[7],文中选用的是一款30 W 像素的UVC 摄像头,支持YUV/MJPG 动态格式的输出,最大支持640×480的分辨率,性能满足倒车影像的图像数据采集需求。

2.3 雷达电路

雷达电路中选用收发一体式超声波传感器,搭载超声波驱动专用集成电路芯片—LM1812。LM1812芯片内部的主要器件由以下几部分组成:脉冲调制C 类振荡器、高增益接收器、脉冲调制检测器和噪音抑制器。

雷达电路如图3 所示,将LM1812 芯片的第1 脚外接L1、C1,并由此决定电路发送的工作频率,其工作频率f0=1/2π[8]。

图3 雷达电路图

LM1812 的8 号引脚用于切换发射/接收模式,当8 号引脚为低电平时,LM1812 工作于接收模式;当8号引脚为高电平时,LM1812 工作于发射模式。由于LM1812 芯片需要12 V 电压驱动,因此MT7688 主控与LM1812 连接时需要进行电压转换,即MT7688 通过IN 引脚,经过电平转换电路放大IO 的电压信号后输入到LM1812 中。LM1812 的14 号引脚(OUT)为输出端,接MT7688 的外部中断IO。

2.4 TTS电路

为了保证用户未使用手机连接可视倒车系统也能够提供基本的倒车雷达功能,文中设计了基于SYN6288 语音合成芯片的TTS 电路,用于在离线模式下进行倒车距离的播报和报警提示。

TTS 电路如图4 所示,SYN6288 是一款采用异步串口(UART)通信的语音合成芯片,因此将SYN6288的TxD 和RxD 连接到MT7688 的串口后,向SYN6288发送文本数据,便可输出对应的语音信号,实现文本到语音的转换。

图4 TTS电路

3 软件设计

3.1 MT7688下位机软件设计

3.1.1 移植OpenWrt

OpenWrt 是一个高度模块化、高度自动化的嵌入式Linux 系统[9],作为主流路由器的固件使用。OpenWrt 区别于其他单一的、静态的系统,最重要的是其提供了一个完全可写的文件系统。

在MT7688 平台上移植OpenWrt 的步骤如图5所示,整个移植过程包括以下4 个步骤。

图5 OpenWrt移植步骤

1)安装依赖

由于该文是在Ubuntu 系统下进行的OpenWrt 系统编译,因此首先需要在Ubuntu 下搭建编译环境,安装U-Boot 和OpenWrt 源码编译所需要的依赖库。

2)编译U-Boot

从GitHub 上下载U-Boot 源码,使用交叉编译工具编译源码,编译完成后得到U-Boot 镜像文件。

3)编译OpenWrt 源码

下载了OpenWrt 源码后,根据需求修改配置文件,编译完成后得到目标平台的OpenWrt 固件。

4)烧写固件

通过TFTP 烧写U-Boot 和OpenWrt 固件。

3.1.2 mjpeg-streamer视频服务器搭建

mjpeg-streamer 是一款免费的视频流服务器软件[10],倒车影像的实现主要由mjpeg-streamer 视频服务器实现,因此需要在OpenWrt 系统上搭建服务器。

首先下载UVC摄像头对应的驱动,在OpenWrt上进行安装,安装完成后测试系统能够成功识别设备。

然后对mjpeg-streamer 进行配置,设置摄像头设备名、分辨率和帧率等,再将服务器设置为开机自启动。

MT7688主控重启后,首先驱动UVC摄像头采集图片,用服务器中的JPEG图库存储图片数据流。用户再使用浏览器通过html进行解析,用mjpeg-streamer持续进行流程控制,最终实现mjpeg-streamer视频服务器。

3.1.3 Python主程序设计

Python 是现在最流行、最常用的编程语言[11],文中的MT7688 下位机软件使用Python 进行编写。

由于视频传输由mjpeg-streamer 服务器完成,因此MT7688 下位机软件的主要工作包括:

1)搭建TCP 服务器

为了与安卓手机端APP 进行通信,采用基于TCP协议的上、下位机通讯模式[12],因此需要在OpenWrt上搭建TCP 服务器,用于传输倒车距离数据。

2)倒车距离检测

采用LM1812 驱动超声波探头检测实时倒车距离,由MT7688 对数据进行处理,再通过TCP 服务器向APP 转发。

3)TTS

TTS 是Text-to-Speech 的缩写[13],TTS 技术是指通过预录制的语音元素,运用目前语音合成中的拼接方法进行发声[14]。MT7688 下位机软件通过心跳包检测安卓手机端APP 是否在线,当其离线后通过串口驱动TTS 电路,进行倒车距离播报。同时判断倒车距离是否低于APP 设置的报警距离,如果是,则进行对应的语音报警。

3.2 安卓手机端APP上位机软件设计

3.2.1 APP总体软件流程概述

APP 软件流程如图6 所示,软件运行后进行Activity 初始化操作,在onCreate()方法中初始化各个界面控件,为控件设置监听器,设置事件处理方法。初始化完成后通过Socket 向TCP 服务器请求倒车距离数据,接收成功后将数据显示在TextView 上,同时进行报警距离判断处理。最后在子线程上通过Http获取倒车影像数据,更新到SurfaceView 控件中。

图6 APP软件流程

3.2.2 倒车影像处理软件设计

安卓手机端APP 倒车影像功能主要通过Http 连接mjpeg-streamer 服务器,获取服务器上存储的图像数据。由于安卓的View适合主动更新,而SurfaceView更适合频繁的被动更新。因此,APP 获取到的每一帧倒车影像数据均在子线程中通过SurfaceView 进行实时的更新显示,不会影响UI 的主线程[15]。

3.2.3 倒车距离处理软件设计

MT7688 上检测到的实时倒车距离通过TCP 服务器往外传输,因此在APP 上需要由TCP 客户端子程序来获取。TCP 套接口是字节流套接口(stream socket)的一种[16],APP 通过Socket 来完成倒车距离的获取,与TCP 服务器建立连接后,主动请求数据,得到倒车距离数据,并进行判断处理。

4 实验结果与分析

可视倒车系统最关键的两个参数是倒车影像的流畅度(帧率)和倒车距离的精度。因此,实验环节分别对两个参数进行实验测试。

首先,进行倒车影像帧率测试实验,由于通信距离是固定的,实验时主要测量车辆在静止和倒车时的帧率。每种状态进行100 次测量,然后取平均值,得到倒车影像帧率测试数据如表1 所示。

表1 倒车影像帧率数据

其次,进行倒车距离精度测试实验,分别将雷达探头正对墙壁,放置在不同距离时,记录系统测试到的倒车距离。取100 个样本数据的平均值,再与实际距离进行对比,得到倒车距离数据如表2 所示。

表2 倒车距离测试数据

由实验数据分析可知,可视倒车系统的倒车影像帧率无论在静止或倒车状态下,均能达到27 Hz 以上,倒车距离精度为±6 cm 以内,总体能满足汽车倒车情景的应用要求。

5 结论

基于安卓手机端实现的可视倒车系统可以解决传统车机可视倒车系统安装过程繁琐以及费用昂贵的弊端,能够应用在低配小汽车、货车以及大巴车上等出厂没安装倒车系统的车辆上。

猜你喜欢
安卓摄像头语音
浙江首试公路非现场执法新型摄像头
iPhone不卡的秘密曝光:安卓也能享受
摄像头连接器可提供360°视角图像
文物表情包
魔力语音
基于MATLAB的语音信号处理
基于MQ3与MP3的价廉物美的酒驾语音提醒器
安卓系统或成智能汽车标配
对方正在输入……
奔驰360°摄像头系统介绍