近來汽車市場出現了一種叫“電子狗”的反雷達測速裝置,這種裝置在接近雷達測速區時,能夠提前捕捉到雷達測速的信息并發出報警,使違章車輛逃脫處罰,事故隱患非常嚴重。本文分析的以紅外光傳感器、ARM 為核心部件的新型測速系統測速時不會被“電子狗”所發現,不僅能識別汽車速度V 的大小,還能測出其速度超過上限速度(Vmax)的量值(+△V)或低于下限速度(Vmin)的量值(—△V)等信息,據該信息酌情驅動取證系統工作,能夠有效地提高交通管制的力度。
1 系統工作原理
系統由調制式紅外光傳感器、飛利浦公司的LPC2294 ARM嵌入式處理器,帶觸摸屏的彩色液晶顯示器以及報警攝像等系統構成,如圖1 所示。圖1 中M、N 兩點是路旁一側護欄上的兩點,分別安裝著可發射38KHz 的紅外發光管,一直向外發射調制式紅外光。調制式紅外光被另一側護欄上相應的兩點M’、N’處安放的光電接收器接收,共同組成一個光控測速區。當汽車達到N 點時,第二個光電探測器N-N’將光信號轉換為電信號經信號調理電路送至ARM 處理器使計數器停止計數,t 的值就確定了。由M、N 兩點間的距離L 除以t 便得到速度V。如果計算得到的V 值在設定的安全速度范圍之內,顯示屏則顯示當前安全速度值,攝像、報警電路就不工作;如果V 值超出設定范圍之外,則計算速度偏移量△V =Vmax—V,同時顯示該車輛超速行駛,并讓攝像、報警電路啟動工作。同理,若車輛以V《Vmin 的低速狀態通過光控測速區時,照相及報警系統亦啟動工作,顯示屏顯示超速信息,提示此時車輛處于超低速行駛狀態。
2 系統硬件設計
2.1 光電發射接收系統
光電發射接收系統原理如圖2 所示。振蕩器產生頻率為38KHz 的信號, 驅動紅外發光管發光。光電接收器則接收紅外發光管射出的光脈沖,接收到的光脈沖信號經調節電位器連接到檢測器的輸入端。將接收到的調制式光脈沖信號送入放大器進行放大,經閾值檢測后變成與同步振蕩器同步輸出的邏輯電平脈沖,再通過脈沖同步解調,得到與車輛運動狀態相關的光電信號,并經緩沖輸出。
2.2 信號接收與定時器工作
如圖3 所示,在沒有車輛經過光控測速區時,M’、N’兩點一直能接收到38KHz 的調制紅外光,均輸出高電平,暫穩態電路均處在穩態。門G 的輸出為邏輯1,UL 始終為高電平。當有車輛通過光控測速區時,M 點發出的光線首先被阻斷,UM 由高電平先變為低電平,暫穩態電路1 被觸發而進入暫穩態,如圖4 中的t1 時刻之后所示。
2.3 ARM 核心板及觸摸顯示系統
系統核心板采用DEVICEARM2200 工控板, 其內嵌飛利浦公司的LPC2294ARM7TDMI-S 嵌入式處理器,最高頻率60MHz,并帶有8M PSRAM 存儲器和16M NANDFlash,性能完全滿足高速車速測量系統的要求。由于其較小的封裝、極低的功耗,可使用電池供電,因此十分適合于野外無外接電源的情況下工作。電路連接如圖 5 所示:顯示屏選用320×240 彩色液晶屏,將液晶控制器S1D13503 的AB0 至AB16 與LPC2294 的地址總線A1 至A17 相連,以16 位總線方式操作;S1D13503的數據總線DB0 至DB7 接LPC2294 的外部存儲器數據線D0 至D7, DB8 至DB15 接VDD,實現與LPC2294 的8 位數據總線連接;其硬件配置由兩片高速CMOS 靜態存儲器IS61C1024對S1D13503 的VD0 至VD15 來完成。四線電阻式觸摸屏可檢測到觸摸信號并通過觸摸屏控制器FM7843 將模擬信號轉換為位置坐標數據,傳遞給LPC2294 進行處理。
3 系統軟件設計
3.1 uclinux 系統移植
雖然當前 uclinux 已經支持無MMU 的ARM 體系結構,但由于具體使用的ARM 處理器芯片存儲系統不同、片內的外設不同、中斷系統也不同,因此需添加或修改LPC2294 芯片相關的具體代碼。
3.2 設備驅動程序設計
由于uclinux 2.4.x內核為非搶占式,進程時間片為10ms,本身實時性并不高。設備信息結構體用來描述該設備的open、release、read等操作方法:其中,在系統和應用程序首次使用此定時器時,首先執行timer1_open(struct inode *inode, struct file *filp) 方法調用request_irq(IRQ_timer1, timer1_irq_handle, SA_INTERRUPT, “my” DEVICE_NAME, NULL)函數進行中斷響應函數注冊,配置定時器T1IR、T1PR、T1TC、T1TCR等寄存器完成定時器初始化,使用中斷開關函數local_irq_save()和local_irq_restore()來控制臨界區;最終由uclinux系統接收硬件中斷并調用中斷服務程序;當系統和應用程序不再使用該定時器時調用timer1_release(struct inode *inode, struct file *filp)進行關閉和釋放。中斷服務程序timer1_irq_handle(int irq,void *dev_id,struct pt_regs *regs)完成清除中斷源、定時器計數器復位以及通過uclinux提供的宏inl(T1CR)讀取捕獲寄存器中計數器的值并調用系統函數copy_to_usr()將數據從內核空間拷貝至用戶空間。最后,將設備驅動程序timer1. c復制到linux-2.4.x/driver/char目錄下,在timer1.c中加入函數timer1_init()完成設備的注冊。在mem.c文件中添加timer1_init()外部函數說明,在chr_dev_init()函數添加timer1_init()調用,編譯得到新內核。
3.3 MiniGUI 移植
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( )中實現。
4 結語
調制式紅外光汽車速度識別系統,不僅能準確測出汽車車速狀況,其測速信息還能避開“電子狗”式的反測速裝置捕捉,對提高交通管制的質量、消除事故隱患、保證人民群眾的生命財產安全具有重要作用,并可用于其他測速場合,應用前景好。系統采用ARM 嵌入式處理器、uclinux 操作系統以及觸摸屏,不但人機交互性好,而且升級與擴展能力強,工作穩定,具有強大的應用前景。
-
傳感器
+關注
關注
2554文章
51561瀏覽量
757662 -
處理器
+關注
關注
68文章
19485瀏覽量
231501 -
ARM
+關注
關注
134文章
9189瀏覽量
370055 -
嵌入式
+關注
關注
5096文章
19227瀏覽量
308659
發布評論請先 登錄
相關推薦
評論