基于嵌入式Linux的倒車(chē)影音系統設計
本設計是通過(guò)MiniGui加載jpeg來(lái)實(shí)現LCD實(shí)時(shí)顯示USB攝像頭采集到圖像的。在編譯程序時(shí),加上了jpeg庫的支持。編程的思路就是不斷地從攝像頭采集圖像并存儲在/tmp/l.jpg中。在Linux圖形用戶(hù)界面支持系統MiniGUI中,通過(guò)loadbitmap函數來(lái)加載圖像,而圖像加載后不會(huì )自動(dòng)更新,不能根據1.jpg的改變自動(dòng)變化。因此,在程序中要設定一個(gè)定時(shí)器,每隔100 ms刷新屏幕,基本上實(shí)現了實(shí)時(shí)更新。
3.2 超聲波測距驅動(dòng)程序的設計
超聲波發(fā)生程序的作用是由PWM定時(shí)計數器產(chǎn)生一個(gè)超聲波信號頻率約40 kHz的方波。采用Timer0,同時(shí)把Timerl打開(kāi)進(jìn)行計時(shí)。超聲波測距器主程序利用外部中斷檢測返回的超聲波信號,一旦發(fā)現立即進(jìn)入中斷程序。進(jìn)入該中斷后立即關(guān)閉Timerl停止計時(shí),并將測距成功標志字賦值1。各程序流程如圖6~圖8所示。
當主程序檢測到接收成功的標志位后,按下式計算即可得到車(chē)尾與障礙物之間的距離(設計時(shí)取20℃時(shí)的聲速C為344 m/s):
S=(C·T1)/2
其中,T1為計數器Timerl的計數值。
該部分程序可設計為Linux下字符設備驅動(dòng)程序。要使用Linux系統提供一個(gè)設備驅動(dòng)接口函數struct file_operations的數據結構,來(lái)實(shí)現超聲波傳感器設備的打開(kāi)、讀寫(xiě)、釋放和控制。定時(shí)器和外部中斷相關(guān)寄存器的初始化和參數的設定都是在open()接口函數中完成的。在此設備驅動(dòng)程序中定義的。file_operations的數據結構為:
s3c2440_sonar_open()函數用于打開(kāi)的設備。s3c2440_sonar_rcad()和s3c2440_sonar_write()函數用于讀寫(xiě)設備。s3c2440_sonar_re-lease()函數完成中斷的釋放。s3c2440_sonar_ioctl()函數用于控制設備中定時(shí)中斷和測距值,由copy_to_user()函數和put_user()函數來(lái)實(shí)現數據傳遞,在應用程序下打開(kāi)設備,實(shí)現內核態(tài)與用戶(hù)態(tài)之間的數據傳遞。模塊初始化函數s3c2440_sonar_init()實(shí)現設備的初始化、中斷初始化及處理、設備注冊等。static void s3c2440_sonar_exit()用于模塊卸載時(shí)中斷停止、資源的釋放等。
3.3 語(yǔ)音報警程序設計
當所測距離值小于閾值時(shí),由S3C2440發(fā)控制命令給XF-S3011,啟動(dòng)語(yǔ)音模塊。組成一個(gè)語(yǔ)音合成命令幀的部分代碼如下:
命令合成完畢后,就可以發(fā)送給XF-S3011模塊了。在嵌入式Linux系統中先打開(kāi)XF-S3011設備文件,然后將此命令幀寫(xiě)入該文件,最后關(guān)閉設備文件。
結語(yǔ)
本文采用嵌入式Linux操作系統和三星公司S3C2440微處理器設計的可視與語(yǔ)音報警為一體的安全倒車(chē)系統,具有較高的實(shí)用價(jià)值。在顯示視頻圖像處理的過(guò)程中,能夠通過(guò)超聲波對車(chē)尾與障礙物之間進(jìn)行測距,當測距值小于預設定的距離時(shí)會(huì )有語(yǔ)音對駕駛員進(jìn)行報警提示。經(jīng)實(shí)驗驗證,該系統運行穩定,能讓駕駛員準確地把握車(chē)后路況,提高了倒車(chē)安全性。
評論