车辆在公路上应以与路况相符的速度行驶,太快了易出事故, 太慢了将成为后续车辆的绊脚石。但是,常有个别司机不按规定的速度行驶而违章,导致事故频生。交管部门为了取证纠违, 目前多采用雷达测速系统(利用多普勒效应)对违章车辆进行测速取证,予以处罚。
可近期市场上出现了一种叫做“电子狗”的反雷达测速装置,此装置在接近雷达测速区时,能提前捕捉到雷达测速的信息而报警,使违章车辆逃脱处罚,事故隐患犹存。因此,研究一套既能准确测定汽车速度, 又不会被“电子狗”所发现的可靠测速、管理系统就尤为必要。
本文研究的以红外光、ARM 为核心部件的新型测速系统测速时不会被“电子狗”所发现,不仅能识别汽车速度V 的大小,还能测出其速度超过上限速度(Vmax)的量值(+△V)或低于下限速度(Vmin)的量值(—△V)等信息,据该信息酌情驱动取证系统(打印、照相)工作,能有效提高交通管制的力度。
系统由调制式红外光传感器[1]、公司的LPC2294 ARM 嵌入式处理器,带的彩色液晶显示器以及报警摄像等系统构成,如图1 所示。图1 中M、N 两点是路旁一侧护栏上的两点,分别安装着可发射38KHz 的红外发光管,一直向外发射调制式红外光。调制式红外光被另一侧护栏上相应的两点M’、N’处安放的光电接收器接收,共同组成一个光控测速区。当有车辆通过光控测速区时,M 点发出的光线首先被阻断,第一个光电探测器M-M’将光信号转换为电信号送入信号调理电路,经过放大、整形,送至ARM 处理器。ARM接到此触发信号,打开内部开始计数,时间t 的值相应不断增加。当汽车达到N 点时,第二个光电探测器N-N’将光信号转换为电信号经信号调理电路送至ARM 处理器使计数器停止计数,t 的值就确定了。由M、N 两点间的距离L 除以t 便得到速度V。如果计算得到的V 值在设定的安全速度范围之内,显示屏则显示当前安全速度值,摄像、报警电路就不工作;如果V 值超出设定范围之外,则计算速度偏移量△V =Vmax—V,同时显示该车辆超速行驶,并让摄像、报警电路启动工作。同理,若车辆以V

光电发射接收系统原理如图2 所示。产生频率为38KHz 的信号, 驱动红外发光管发光。光电接收器则接收红外发光管射出的光脉冲,接收到的光脉冲信号经调节电位器连接到检测器的输入端[2]。将接收到的调制式光脉冲信号送入放大器进行放大,经阈值检测后变成与同步振荡器同步输出的逻辑电平脉冲,再通过脉冲同步解调,得到与车辆运动状态相关的光电信号,并经缓冲输出。

如图3 所示,在没有车辆经过光控测速区时,M’、N’两点一直能接收到38KHz 的调制红外光,均输出高电平,暂稳态电路均处在稳态。门G 的输出为逻辑1,UL 始终为高电平。当有车辆通过光控测速区时,M 点发出的光线首先被阻断,UM 由高电平先变为低电平,暂稳态电路1 被触发而进入暂稳态,如图4 中的t1 时刻之后所示。此时,UM’为低电平,G 门触发,输出UL 为低电平。ARM 系统的CAP1.0 捕获到UL 由高电平变低电平,发生下降沿捕获,自动装载T1TC 的值传输到捕获寄存器T1CR,并产生中断,进入中断服务子程序,读取T1CR 的值而保存。


随后,当汽车达到N 点时——即在t2 时刻,暂稳态电路2 被触发,UN’变为高电平,经过非门变为低电平UN’’。此时G 门输出由低电平变为高电平,ARM 的CAP1.0 捕获到UL由低电平变高电平,发生上升沿捕获,自动装载T1TC 的值到捕获寄存器T1CR,并产生中断,进入中断服务子程序。计算两次捕获寄存器T1CR 的差值N 及计数器的工作频率f,得到车辆通过两测试点M 点和N 点的时间差t2-t1。
系统核心板采用DEEARM2200 工控板, 其内嵌飞利浦公司的LPC2294ARM7TDMI-S 嵌入式处理器,最高频率60MHz,并带有8M PSRAM 存储器和16M NANDFlash,性能完全满足高速车速测量系统的要求。由于其较小的封装、极低的功耗,可使用电池供电,因此十分适合于野外无外接电源的情况下工作。
目前,嵌入式Linux 平台下常见的 GUI 系统有: MicroWindows、QT/Embedded、XWindows、OpenGUI、MiniGUI 等多种选择。从易用性、跨平台性以及开发成本等多方面因素考虑,本文采用飞漫公司的MiniGUI 实现GUI 人机交互图形界面的开发[5]。为方便调试,采用VMware 软件在windows 系统下建立linux 平台的宿主机,进入linux 环境,从www.minigui.com 上下载函数库源代码包libminigui-str-1.6.2.tar.gz 和资源文件包minigui-res-str-1.6.tar.gz 并展开。
MiniGUI 为实现其跨平台特性,采用GAL(图形抽象层)和IAL(输入抽象层)将MiniGUI上层和操作系统隔离开。因此,首先创建lcdgal.c 文件,参考native 图形引擎数据结构和Framebuffer 驱动程序按照GAL 接口编写接口函数;然后将液晶驱动程序lcddriver.clcddriver.h 及LPC2294 的头文件lpc2294.h 放在libminigui 下的/src/gal/native 目录下并修改Makefile.am 文件。在libminigui 的/src/ial 目录下添加ialinput.h 和 ialinput.c 编写IAL 接口函数,并添加触摸屏控制器驱动程序fm7843.c、fm7843.h 到/src/ial 目录,同时修改Makefile.am文件。加入MINIGUI 扩展库libmgext 支持,以Threads 模式交叉编译并将得到的MiniGUI静态链接库与交叉编译后的用户应用程序进行链接,生成可在目标板上运行的目标文件,最后在移植好的uclinux 系统上安装运行MiniGUI 所需的资源文件。
3.4 用户界面设计
用户界面主要包括一个主窗体用来显示速度信息以及一个为车辆速度报警而设定的对话框。以MniniGUIMain( int argc, const char* argv[ ] ) 为入口,定义显示区域,使用CreateThreadForMainWindow( )函数创建了两个并发的线程,定义线程的入口函数地址并返回线程标识符;在主线程中配置完成对timer1 的初始化操作,通过hMainWnd =CreateMainWindow( &Createinfo ) 创建主窗体并配置Createinfo 的各项属性, 调用ShowWindows( hMainWnd, SW_SHOWNORMAL )函数显示窗体作为用户主界面,最终进入消息循环。监视线程和主线程同时启动,此后,监视线程在后台对车速信息数据进行实时监控,并通过SendMessage( )向主线程发送相应的消息。消息的处理与超速报警判定可在主窗体窗口过程函数SpeedWinProc( )中实现。主窗体中的SET和About 下拉菜单通过CreatMenu( )和CreatePopupMenu( )函数实现,分别用于弹出速度设定对话框和系统说明对话框。将菜单句柄赋给主窗体的hMenu 属性并在窗体过程函数中加入对应菜单的处理代码,当菜单被管理者点击时,该窗体会收到相应的MSG_COMMAND 消息,系统根据消息执行相应菜单下的速度设定处理程序或系统说明显示程序。在速度设定对话框中,按钮使用普通“确定/OK”按钮L_BUTTON,两个静态框CTRL_STATIC 分别标识两个单行编辑框CTRL_SLEDIT的功能:“上限速度设定”和“下限速度设定”。两个编辑框用来接收管理者输入的上限速度和下限速度。编辑框内的速度设定值通过MSG_GETTEXT 消息由CTRL_COOLBAR 控件实现的数字按钮输入。各控件的创建通过以控件类名调用Createwindow 函数实现。
4 结论
调制式红外光汽车速度识别系统,不仅能准确测出汽车车速状况,其测速信息还能避开“电子狗”式的反测速装置捕捉,使违章车辆难以逃避处罚,对提高交通管制的质量、消除事故隐患、保证人民群众的生命财产安全具有重要作用,并可用于其他测速场合,应用前景非常广阔。由于感应头仅对38 kHz 的调制红外光敏感, 其他红外光对其几乎无作用, 因此,系统具有较强的抗干扰能力。系统采用了ARM 嵌入式处理器、uclinux 操作系统以及触摸屏,不但人机交互性好,而且升级和扩展能力强,工作稳定,具有较大的应用前景。
-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。锐单自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。