一种新型的汽车监控终端系统的设计与实现

2021-05-25 10:04付建宽张庆余张苏林
科学技术创新 2021年11期
关键词:板卡电路设计内核

付建宽 张庆余 张苏林

(中汽数据(天津)有限公司,天津300000)

1 概述

近年来各家车企纷纷在自家量产车型上配置车载终端,期望实现对车辆的远程监控,以便及时掌握车辆的故障情况和运行状态,对于单个用户来说通过手机APP 就可以查看这些信息,国家对此也出台了相应的管理规定[1],但是对于多种不同厂家不同型号的车辆管理起来就显得捉襟见肘了,另外对于一些没有配置车载终端的车型也很难统一远程调度管理。为了满足这种需求,本文设计实现了一种新型的汽车监控终端系统,可以无缝衔接各类车型。

2 系统硬件设计

2.1 系统整体设计

监控终端采用明远智睿公司的MYZR-IMX28-CB142 核心板,CPU 为NXP 的i.MX287,主 频454MHz,内 存128MB DDR2-400 存储128MB NandFlash,邮票孔结构,搭载自研的底板,扩展了各种功能模块,底板上采用中科微电子的ATGM332D-5N 导航定位模块来获取GPS、北斗等卫星导航系统的卫星信号,实现联合定位、导航与授时;采用广和通公司的NL668 无线通讯模块实现车联网;采用免驱的USB 摄像头获取车内图像信息[2];通过OBD 转接线连接车辆的CAN 总线;通过GPIO 外接DS18B20 温度传感器感知车内实时温度[3];通过GPIO 外接MQ2 烟雾气敏传感器感知车内有害气体浓度[4];另外底板上预留了一路RS232 调试串口、一路RS485 工业总线、一路百兆以太网RJ45 口。系统总体结构组成框图如图1 所示。

图1 系统组成框图

限于篇幅,下面仅对底板上电源电路、定位模块电路、网口电路、CAN 总线保护电路的设计进行说明。

2.2 电源电路设计

首先电源来源,对于乘用车可以直接从点烟器处取电,对于试验车可以从底盘供电线缆处取电。电路设计支持9~50V 宽电压输入,通过高效率的DC/DC 变压器UW2405D-20W,转成5V 直流稳压为终端设备供电,再通过RT8010 将5V 降压到3.3V 输出,电路设计如图2 所示。

图2 电源电路设计

图3 定位模块电路设计

2.3 定位模块电路设计

该部分设计采用了低纹波的LDO 供电,纹波相对小;使用无源天线,模块前端增加一级低噪声放大器(LNA) AT2659 保证性能[5],电路设计如图3 所示。

2.4 网口电路设计

由于i.MX287 内部集成了MAC,所以只需要在底板上外扩独立的PHY 芯片即可,本设计采用低功耗的LAN8720A,通过RMII 接口和MAC 层通信,同时连接带网络隔离变压器的HR911105A RJ45 接头和外部设备通信,电路设计如图4 所示。

图4 网口电路设计

2.5 CAN 总线保护电路设计

CAN 收发器采用ISO1050,加装SMBJ12CA 瞬态抑制二极管(TVS),确保CAN 总线在传输数据时能够隔离浪涌、快速电脉冲群、静电等的影响,提高可靠性。

图5 CAN 总线保护电路设计

3 系统软件设计

3.1 系统环境配置和烧写

系统开发使用了VirtualBox 虚拟机,内嵌Ubuntu12.04,交叉编译工具链采用的是gcc-4.4.4,内核版本为Linux-3.14.54,串口调试工具使用SecureCRT 8.0,文件上传下载工具采用SSH Secure File Transfer Client。uboot、内核、文件系统、设备树的烧写工具采用了官方提供的MfgTool.exe 以及Tftpd32.exe。

3.2 Linux 驱动程序设计

4G 通信模块采用PPP 拨号,需要在内核中添加USB 串口驱动,Ubuntu 下切换到内核所在目录,点击鼠标右键打开终端,执行make menuconfig 命令,依次选择device drivers->usb support->usb serial converter support,选中如下组件:USB driver for GSM and CDMA modems,选中后保存配置。打开内核源码文件drivers/usb/serial/option.c,在源码中找到option_ids 数组,在数组中添加NL668 产品的VID(0x1508)和PID(0x1001),然后交叉编译到模块,最后在板卡上执行sudo modprobe option 加载驱动。编辑好几个配置文件之后,便可以通过pppd 命令进行拨号:# pppd call modem_NL668 &。

定位模块使用/dev/ttyAPP0 串口设备节点,需要追加以下命令到文件系统的etc c.dinit.dmyzr 中以便上电开机自动执行。

USB 摄像头的驱动支持需要编译进内核,执行make menuconfig 命令后依次选择Multimedia support->Video capture adapters->V4L USB devices->USB Video Class (UVC),选中UVC input events device support,然后make 编译。

GPIO 驱动的配置是通过更改设备树实现的,可以首先查看管脚功能文件arch/arm/boot/dts/imx28-pinfunc.h,然后更改设备树主文件arch/arm/boot/dts/imx28-evk.dts。

DS18B20 需要在内核中开启w1 选项,编译内核,然后烧写内核到板卡,这样便会在文件系统/sys/bus/w1/devices/下发现该设备。

CAN 通信使用的是FLEXCAN,对应内核代码中的drivers/net/can/flexcan.c,CAN 将被作为网络设备进行操作,在之后应用程序的初始化中添加如下代码加载CAN 模块并配置波特率和始能CAN,便可以像操作网口设备一样操作CAN 设备了。

3.3 Linux 应用程序设计

应用程序采用开源的IDE CodeBlocks 开发,系统设置“compiler and debugger settings”对话框中选择GNU ARM GCC Compiler,Linker settings 中 添 加-lpthread -ljpeg,“Toolchain executables”中添加交叉编译工具。经过编译生成的二进制可执行程序通过共享文件夹将其拷贝到虚拟机外部的Windows 系统上,再通过SSH 工具将可执行文件上传到板卡上,在板卡上对文件再次授权后,便可以在板卡上执行了。

终端的应用程序采用C 语言设计,多线程编程,为了增强鲁棒性,添加了软件看门狗,通过操作/dev/watchdog 设备,设置超时时间,当定时器超时,系统自动执行复位操作。

4G 模组初始化完成后,会生成一个虚拟网卡,应用程序中可直接通过socket 套接字来进行网络编程,在终端上构建了一个TCP 客户端,和云平台的TCP 服务器进行报文信息交互,实现本地信息上传和远程指令的接收和执行。

定位模块初始化完成后,会输出NEMA-0183 报文,应用程序中开辟了一个线程进行定位信息的解析,解析结果将通过消息队列传递给TCP 客户端。

烟雾传感器通过数字IO 接到i.MX287 上,当连续三次监测到TTL 电平为低时,立即点亮告警灯并驱动告警喇叭,同时将信息上报给云平台。

摄像头模块通过调用opencv 库进行抓拍驾驶员位置,生成的图片放到指定路径下,应用程序将自动定时将图片通过FTP上传到云服务器上。

3.4 云平台监控运行效果

我们在阿里云服务器上基于QT 开发了可扩展的车辆远程监控平台,可以实时查看网络状态、车辆位置、车内温度、是否有可燃气体等信息,支持远程重启设备,支持OTA 更新固件,平台运行效果如图6 所示。

图6 车辆远程监控平台运行效果

4 总结与展望

本文设计的汽车监控终端功能强大,可以对突发状况进行预警和上报,无人值守帮助节省了人力成本[6],同时多车部署的情况下可以大大提高监控效率。由于自研的底板接口丰富,后面将尝试接入更多的传感器,便于云端可远程掌握更多的车况信息。目前该终端已经在我公司内部开始小批量安装试用,运行稳定可靠,未来充满商用价值。

猜你喜欢
板卡电路设计内核
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
HCM3000板卡固件智能化下载系统设计与实现
RTX系统下并行I/O卡驱动程序的开发
基于Multisim的单管共射放大电路设计与仿真分析
一种车用醉驾检测电路设计
Altium Designer在电路设计中的应用
微软发布新Edge浏览器预览版下载换装Chrome内核
负反馈放大电路设计