基于S3C2410的辅助倒车数字图象系统设计

发布者:Serendipitous55最新更新时间:2015-09-22 来源: ednchina关键字:S3C2410  辅助倒车  数字图象系统 手机看文章 扫描二维码
随时随地手机看文章
1 、引言 

据统计,由于车后盲区所造成的交通事故在中国约占30%,美国20%。前两代倒车辅助产品,一种是倒车喇叭,一种是倒车雷达。前者只能提醒路人自行躲闪,而司机却一无所知,固定的障碍物更是无法探测,起到的作用微乎其微,后者虽能把固定的障碍物通过报警的形式告知司机,但司机还是无法判断障碍物的确切位置,更不能探测地坑或低矮障碍物。

目前,国内外的研究趋势是在倒车雷达的基础上采用数字图像处理技术,利用强大的嵌入式处理器,开发用于检测车后物距和监视车后图像的优点相结合的车载可视倒车装置。

因此本文提出一种基于S3C2410的辅助倒车系统设计,该系统不但使驾驶员可以在车内观察到汽车车尾的真实场景,而且可以通过系统所带的测距报警模块可以实时测距,并在车与障碍物过近时,对驾驶员实施语音报警,从而克服了后试镜小,视野窄的缺点,使倒车变得更加快速高效,增强倒车的安全性。 

2、系统概述

系统以S3C2410为主控制器,主频最高可达266MHz,选用Linux2.6.14.1操作系统,系统总体设计可以被分为三个部分:

1) 图像数据实时显示模块设计;
2) 测距报警模块设计;
3) 人机交互界面设计。

图像数据实时显示模块主要是实现图像数据实时采集并显示在LCD显示器上,系统通过装在汽车尾部的摄像头采集车后实时图像,并将图像显示在终端LCD上。测距报警模块以超声波测距电路来进行测距,当所测距离值超过系统设定的安全距离时实施语音报警,人机交互界面模块为系统提供了一个良好的人机交互界面,配合触摸屏,操作便利、简洁。其系统框架结构图如图1所示。




3、图像数据实时显示模块实现

图像数据实时显示模块采用Linux内核公开支持ov511芯片的网眼公司的v3000USB摄像头来采集图像,其实现分为两部分,Linux内核中摄像头驱动程序模块的加载和基于Qt的可视倒车应用程序设计。

3.1 USB驱动模块动态加载

在嵌入式Linux的内核定制和编译时,加入对Video4Linux模块及OV511设备的支持,通过Video4Linux模块提供的编程接口(API)从OV511设备中获取图像帧。如下配置Linux内核:Multimedia device->< M >VideoforLinux; usb support-><M>usb camera ov511,采用模块方式编译video4Linux驱动和OV511摄像头驱动,用命令insmod加载USB及OV511设备驱动模块。加载驱动后将OV511摄像头插入USB接口,摄像头将被正确识别并生成 /dev/v4l/video设备。

3.2 可视倒车程序设计

倒车过程中驾驶员与软件交互操作较少,因此无需设计复杂的用户操作界面。程序的设计主要集中在摄像头图像的采集上。Linux下进行视频采集是通过Video4Linux驱动提供的接口函数和相关数据结构来完成,使用Video4Linux操作USB摄像头的流程如图2所示。




在程序设计中,与摄像头相关的操作和数据结构都被封装在VideoCapture类中。其成员函数通过Video4Linux提供的接口完成对摄像头的具体操作。VideoCapture类设计如下:

Class VideoCaPture
{ Public:

bool hasCamera() const
//判断是否有可用的摄像头
Void getCameralmage(Qlmage & img),
//获取摄像头的图像数据
QSize captureSize()const;//返回摄像使用的分辨率
Void setCaptureSize(QSizesize);//设置摄像使用的分辨率
int minimumFramePeriod() const;
Private:

struct video_mbuf mbuf;//进行内存映射的帧信息

void setupCamera(QSize size);//摄像头初始化及参数设置函数
void shut down();//关闭摄像头
};

VideoCapture类中的void setupCamera(QSize size)成员函数来初始化USB摄像头设备,根据系统LCD显示器的特点,主要参数设置为:图像色彩模式设置为VIDEO_PALETTE_RGB565 格式;图像分辨率设置为640*480;图像位深设置为16位。每采集一帧数据后调用ioctl(fd,VIDIOCSYNC,&frame)函数等待采集结束,然后根据需要继续采集下一帧图像或关闭摄像头。

因为ov511不支持系统调用read的方式获取图像数据,所以使用内存映射输入/输出(MMIO)方式获取图像数,在使用MMIO方式获取图像数据时,图像的内存的信息保存video_mbuf memoryBuffer这个变量中。所以进行图像数据采集之前首先需要使用Video4Linux中的VIDIOCGMBUF接口获取MMIO所需信息,然后通过mmap函数将摄像头的图像缓冲区映射到虚拟内存中并使用Video4Linux中的VIDIOCMCAPTURE接口捕获图像。函数voidgetCameraImage(QImage & img)用来完成对一帧图像的完整采集过程并通过定时器来实现的图像数据的连续采集和显示。每当定时器的时间到就触发一个定时器事件,在事件中调用getCameraImage函数完成对图像的采集和显示。


4、测距报警模块实现

为提高系统的安全性和可靠性,增加测距报警功能,可视倒车功能启动后,采用超声波测距模块来实现对车后方的障碍物的实时测距并使用语音合成模块来实现障碍物距车身过近的语音报警。 

4.1 超声波测距模块

超声波测距电路主要由超声波发射电路和接收电路组成,原理框图如图3所示。该模块单片机选用Freescale公司的MC68HC908QL4,该芯片可靠性高、抗干扰能力强。超声波探测车物之间的距离,并将数据传送至车内主处理器进行处理。[page]





由于超声波测距只在汽车倒车时为驾驶员提供车后信息,而倒车时车速较慢,与声速相比可认为是静止的,因此采用渡越时间法来测距,即超声波发射器不断发射超声波,遇到障碍物后反射回来,超声波接受器接受到反射波信号并将其转变为电信号,测出从发射超声波到接受到反射波的时间差即可求出距离s。





式中,s为所测距离;c为超声波声速;t为发射超声波到接受反射波的时间差。

4.2 超声波测距软件设计

超声波测距软件主要包括测距及数据发送,其流程图如图4所示。 





4.3 语音合成模块

本系统采用语音合成芯片XF-3011,与s3C2410通过串口进行通信,s3c2410与语音合成芯片XF-3011通信时,发送给XF-3011的所有命令和数据都需要用“帧”方式进行封装后,再通过串口发送到芯片,帧的最大度为204字节(包括帧头标记字节)。具体的帧格式如表1所示。

表1 语音合成芯片通信传输数据帧格式




XF-3011收到控制命令后。当XF-3011收到一帧正确的命令帧后会立即反馈“0x41”。如果是语音合成命令,那么开始合成所接收的文本数据,所有文本合成完毕之后,向上位机反馈“0x4F”,然后进行语音播放。

4.4 语音合成模块流程图 

当测距模块所测距离大小超过系统设定的安全距离时,主处理器发送控制命令给XF-3011,启动语音合成功能提醒驾驶员注意。




5、人机交互界面模块的实现

本系统采用Qtopia嵌入式桌面环境,用户不仅可以方便的管理系统资源和程序,而且能在帧缓冲机制基础上实现程序的屏幕显示,达到与用户的友好交互。

5.1 图形界面系统的建立

本系统使用的是基于Qt/Embedded的图形界面系统,Qt/Embedded的编译主要分为三个步骤:

① 编译Qt/X11,Qt/X11是运行在IBM兼容PC中标准Linux之上的,它主要为Qt/Embedded及其应用程序提供图形编译环境及仿真运行环境;
② 编译Qt/Embedded,Qt/Embedded为在嵌入式Linux平台上运行的图形界面系统及应用程序提供一系列的函数库;
③ 编译Qtopia,通过使用Qt/X11提供的编译工具以及Qt/Embedded提供的函数库,编译出最终基于嵌入式Linux平台的图形界面系统及该环境下的应用程序。

5.2 扩展可视倒车程序

Qtopia图形桌面环境为在qtopia平台上扩展应用程序提供了一个良好的机制,把应用程序发布到qtopia平台上,需要有三个文件:一个执行文件、一个启动器文件和一个图标文件,在这里可视倒车程序可执行文件就是这个执行文件取名为car,图标文件是一个.Png文件,我们可以自己制作一个car.png,启动器文件是一个.desktop文件,可以参考qtopia已有的.desktop为例,创建一个car.desktop,具体内容如下: 


[Desktop Entry]
comment=A car program
Exec=car
Icon=car
Type=Application
Name=car

完成以上内容后,把这三个文件分别复制到qtopia相应的目录中。图标文件Car.png复制到qtopia目录下的pics目录,执行文件car复制到qtopia目录下的bin目录,启动器文件car.desktop复制到qtopia目录中apps/Applications 下,拷贝完成后,重新启动qtopia,点击其界面上出现可视倒车功能图标,可视倒车功能启动,结果显示如图6所示。 





6、结论

本文介绍了一种基于S3C2410的辅助倒车系统设计。由于系统采用了高性能、低功耗的嵌入式微处理器s3c2410及可视倒车与测距报警功能的结合运用,系统摄像头实际捕捉到的视频信号能很够很好的显示在LCD上并满足汽车倒车实时测距的性能要求,克服了后试镜小,视野窄的缺点,消除了盲目倒车造成的事故隐患,大大提高了汽车倒车的安全效率。经实验调试,该辅助倒车系统能运行良好,操作方便,基本达到了设计要求。
关键字:S3C2410  辅助倒车  数字图象系统 引用地址:基于S3C2410的辅助倒车数字图象系统设计

上一篇:关于m0核移植ucosii时遇到的问题
下一篇:STM32和ENC28J60嵌入uip实现web服务器的设计

推荐阅读最新更新时间:2024-03-16 14:32

基于S3C2410的振动测试分析仪的研制
引言 在大型旋转机械、桥梁、地下铁路、加工机床等领域,对振动信号进行采集和分析,可以实现危险预报、故障诊断、性能指标分析等多项功能。传统的便携式振动测量分析仪大多用单片机或RISC CPU作为核心处理器,一般是8位或16位的,内存只有几Kb,外部存储器的容量也只有1~2 Mb,再加上CPU的主频不高,进行大量数据运算(如FFT等),需要很长时间,图像显示基本上依靠黑白液晶屏,可以显示的内容少,因此对传统的便携式振动测试分析仪进行性能的改进很有必要。 本项目采用ARM9的S3C2410处理器,可以连续监测8个通道,提供转速、棒图、振动通频值、数据列表、时域波形、频谱图、伯德图等振动监测、分析图表。采用640×480的TFT彩色显
[测试测量]
基于S3C2410的TFT-LCD驱动电路设计
随着电子技术的迅猛发展,具有耗电少、亮度高、体积小等特点的液晶显示器被广泛应用于嵌入式系统中。S3C2410是三星公司开发的一款以ARM920T为核心的16/32位嵌入式处理器。它主要面向手持设备以及高性价比、低功耗的应用。LTS350Q1-PE1是三星电子公司生产的一款非晶硅有源矩阵TFT-LCD,它具有功耗低、亮度高和体积小等特点,目前在嵌入式设备中应用非常广泛。 基于S3C2410,采用LTS350Q1-PE1作为显示设备可以构成一个基于嵌入式平台的液晶显示系统,如图1所示,该系统可以满足大多数嵌入式手持设备的功能要求。但是,要想S3C2410的LCD控制器可以正确有效地控制TFT-LCD,需要设计两者之间的硬
[单片机]
基于<font color='red'>S3C2410</font>的TFT-LCD驱动电路设计
基于ARM-Linux嵌入式系统引导程序的设计
0. 概述   在专用的嵌入式开发板上运行操作系统(如Linux)已经变得越来越流行,而Bootloader就是为引导操作系统内核运行的一段代码。通过它可以初始化硬件设备、建立或检测内存空间的映射,其功能有点类似于PC机的BIOS(基本输入输出系统)程序。它的主要作用是为运行操作系统提供基本的运行环境,并操作系统的内核装载到存储器(RAM)中的合适位置上去运行。本文将以Samsung公司的S3C2410开发板为开发平台,具体阐述了Bootloader的运行原理与实现分析。   Bootloader程序与CPU芯片的内核结构、具体芯片和使用的操作系统等因素有着密切关系,因此要为所有类型的嵌入式开发板建立一个通用的Bootlo
[单片机]
基于ARM-Linux嵌入式<font color='red'>系统</font>引导程序的设计
使用S3C2410设计三导联远程心电监护
  主要介绍一种基于S3C2410平台的三导联远程心电监护系统。该系统能够不受时间、空间的限制对心脏病患者进行实时监护,从而方便患者与医护人员随时进行沟通。经过临床测试受到医疗界专家和心脏病患者的高度评价。   1 引 言   随着人们生活水平的提高、生活节奏的加快,心血管疾病的发病率迅速上升,已成为威胁人类身体健康的主要因素之一。而心电图则是治疗此类疾病的主要依据,具有诊断可靠,方法简便,对病人无损害的优点,在现代医学中,变得越来越重要。常规心电图是病人在静卧情况下由心电图仪记录的心电活动,历时仅为几s~1 m,只能获取少量有关心脏状态的信息,所以在有限时间内即使发生心率失常,被发现的概率也是很低的。因此有必要通过相
[医疗电子]
移植嵌入式Linux到ARM处理器S3C2410:BootLoader
BootLoader指系统启动后,在操作系统内核运行之前运行的一段小程序。通过BootLoader,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 BootLoader 几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。   BootLoader 的实现依赖于CPU的体系结构,因此大多数 BootLoader 都分为stage1 和stage2 两大部分。依赖
[单片机]
移植嵌入式Linux到ARM处理器<font color='red'>S3C2410</font>:BootLoader
linux 2.6.24.4在S3C2410上的移植(CS8900网卡驱动)(基于GEC2410)
SMDK2410配置默认使用的是DM9000A的网卡,因此我们需要修改成CS8900A的网卡驱动. 网上找到移植方法有两种方法,一种是将以前版本的cs8900.c驱动拿过来用,只要在配置中增加ARM_CS8900选项,这个代码网上有很多,拿过来试了以下,的确没问题. 另一种方法是修改2.6.24.4自带的cs89x0.c驱动,这个驱动没有2410的直接支持,我们需要修改. 这里采用第二种方法.参考了网上很多方法,将我的步骤整理如下,如有错误,欢迎指正. 1.内核配置菜单 由于cs89x0驱动依赖于NET_PCI,见drivers/net/Kconfig depends on NET_PCI && (ISA || M
[单片机]
linux 2.6.24.4在<font color='red'>S3C2410</font>上的移植(CS8900网卡驱动)(基于GEC2410)
基于S3C2410设计三导联远程心电监护设计
 1 引 言    随着人们生活水平的提高、生活节奏的加快,心血管疾病的发病率迅速上升,已成为威胁人类身体健康的主要因素之一。而心电图则是治疗此类疾病的主要依据,具有诊断可靠,方法简便,对病人无损害的优点,在现代医学中,变得越来越重要。常规心电图是病人在静卧情况下由心电图仪记录的心电活动,历时仅为几s~1 m,只能获取少量有关心脏状态的信息,所以在有限时间内即使发生心率失常,被发现的概率也是很低的。因此有必要通过相应的监护装置对患者进行长时间的实时监护,记录患者的心电数据。又由于心脏病的发生具有突发性的特点,患者不可能长时间地静卧在医院,但又需实时得到医护人员的监护,所以研发相应的便携式无线心电监护产品就显得更加重要。   
[医疗电子]
基于<font color='red'>S3C2410</font>设计三导联远程心电监护设计
基于S3C2410嵌入式视频监控系统的研究
1 系统硬件结构 本系统采用模块化的结构设计思想,将设备分为主控模块和各个功能模块。主控模块和各功能模块之间有统一的或者特定的接口形式,用户可根据不同的需要选用不同的功能模块,各种类型的数据可以同时传输而不相互干扰,同时也可根据市场的需求继续扩展其它功能模块。远程无线视频监控系统是由以下几个模块组成:嵌入式 ARM2410 核心控制模块、自动报警模块一面使嵌入式模块上的蜂鸣器发出警报声,同时发送报警信号通过GPRS 网络及时的传回远端的监控管理中心,以便管理人员及时发现并处理火情、传感器数据处理模块、USB 摄像头视频图像采集处理模块、GPRS 无线数据传输模块、远程监控软件模块。                     
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved