畢業(yè)論文-基于S3C2410的汽車(chē)倒車(chē)防撞控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
畢業(yè)論文-基于S3C2410的汽車(chē)倒車(chē)防撞控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
畢業(yè)論文-基于S3C2410的汽車(chē)倒車(chē)防撞控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
畢業(yè)論文-基于S3C2410的汽車(chē)倒車(chē)防撞控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
畢業(yè)論文-基于S3C2410的汽車(chē)倒車(chē)防撞控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

大連東軟信息學(xué)院本科畢業(yè)設(shè)計(jì)(論文)論文題目論文題目:基于S3C2410的汽車(chē)倒車(chē)防撞控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)系所:電子工程系專(zhuān)業(yè):電子信息工程(嵌入式系統(tǒng)工程方向)學(xué)生姓名:學(xué)生學(xué)號(hào):指導(dǎo)教師:導(dǎo)師職稱(chēng):教授完成日期:2014年5月2日大連東軟信息學(xué)院DalianNeusoftUniversityofInformatio大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文) 摘要-33-目錄TOC\o"1-3"\u摘要 IAbstract II第1章緒論 11.1課題研究背景 11.2課題研究的目的、意義 11.3課題研究現(xiàn)狀 11.4課題研究?jī)?nèi)容與方法 1第2章關(guān)鍵技術(shù)介紹 22.1S3C2410處理器 22.2Linux驅(qū)動(dòng) 22.3超聲波測(cè)距 3第3章系統(tǒng)需求分析 43.1系統(tǒng)設(shè)計(jì)目標(biāo) 43.2系統(tǒng)功能需求 43.2.1數(shù)據(jù)采集模塊 43.2.2聲音提示模塊 43.2.3顯示模塊 43.2.4數(shù)據(jù)處理模塊 43.2.5剎車(chē)控制模塊 43.3系統(tǒng)非功能需求 43.4系統(tǒng)開(kāi)發(fā)環(huán)境 53.5系統(tǒng)可行性分析 53.5.1技術(shù)可行性 53.5.2經(jīng)濟(jì)可行性 5第4章系統(tǒng)設(shè)計(jì) 64.1系統(tǒng)設(shè)計(jì)指導(dǎo)原則 64.1.1先進(jìn)性 64.1.2可靠性及安全性 64.2體系結(jié)構(gòu)設(shè)計(jì) 64.3硬件設(shè)計(jì) 74.3.1S3C2410與外圍設(shè)備連接電路設(shè)計(jì) 74.3.2HC-SR04轉(zhuǎn)接版電路設(shè)計(jì) 74.3.3剎車(chē)控制模塊電路設(shè)計(jì) 84.4軟件設(shè)計(jì) 84.4.1控制流程設(shè)計(jì) 94.4.2UI界面設(shè)計(jì) 94.4.3功能模塊設(shè)計(jì) 10第5章系統(tǒng)實(shí)現(xiàn) 125.1環(huán)境配置 125.2功能模塊實(shí)現(xiàn) 125.2.1數(shù)據(jù)采集模塊 125.2.2報(bào)警模塊 165.2.3顯示模塊 185.2.4剎車(chē)控制模塊 185.3系統(tǒng)集成與調(diào)試 215.3.1系統(tǒng)集成所需硬件 215.3.2交叉編譯 215.3.3系統(tǒng)聯(lián)調(diào) 215.3.4問(wèn)題與解決 21第6章系統(tǒng)測(cè)試 246.1測(cè)試概述 246.2測(cè)試用例 246.2.1系統(tǒng)開(kāi)機(jī)測(cè)試 246.2.2HC-SR04數(shù)據(jù)采集測(cè)試 246.2.3自動(dòng)剎車(chē)功能測(cè)試 256.2.4聲音報(bào)警功能測(cè)試 25第7章結(jié)論 26參考文獻(xiàn) 28致謝 29附錄A 30大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)第1章緒論1.1課題研究背景隨著社會(huì)的不斷發(fā)展,尤其是近幾年來(lái),汽車(chē)已逐漸成為人們不可或缺的交通工具。然而,由于汽車(chē)的普及,因汽車(chē)所萌生的一系列問(wèn)題正漸漸突顯出來(lái)。車(chē)輛密度增大,車(chē)位也越來(lái)越狹小,對(duì)于駕駛員來(lái)說(shuō),倒車(chē)時(shí)所產(chǎn)生的車(chē)后盲區(qū),時(shí)時(shí)刻刻威脅著我們的人身和車(chē)輛的安全。所以研發(fā)一款用來(lái)探測(cè)車(chē)后行人或障礙物的倒車(chē)?yán)走_(dá)系統(tǒng)迫在眉睫。1.2課題研究的目的、意義倒車(chē)?yán)走_(dá)可以在倒車(chē)時(shí)實(shí)時(shí)探測(cè)車(chē)身與車(chē)后障礙物的距離,通過(guò)聲音和距離顯示幫助駕駛員安全倒車(chē)。1.3課題研究現(xiàn)狀現(xiàn)在大部分的轎車(chē)在出廠時(shí)已經(jīng)配備了倒車(chē)?yán)走_(dá)和倒車(chē)影像。但對(duì)于低配轎車(chē)、客車(chē)和貨車(chē)來(lái)說(shuō),沒(méi)有倒車(chē)?yán)走_(dá)的配備。國(guó)內(nèi)也有很多廠家和電子愛(ài)好者制作的基于單片機(jī)處理器的倒車(chē)?yán)走_(dá),但單片機(jī)處理能力有限,無(wú)法快速的測(cè)距本課題所研究的倒車(chē)?yán)走_(dá)系統(tǒng)可以很方便的安裝在任何車(chē)輛上。1.4課題研究?jī)?nèi)容與方法本課題采用三星公司ARM內(nèi)核的S3C2410作為處理器,使用HC-SR04超聲波測(cè)距模塊用來(lái)探測(cè)車(chē)身與車(chē)后障礙物的距離。使用LCD顯示屏來(lái)實(shí)時(shí)顯示車(chē)身與車(chē)后障礙物的距離。當(dāng)車(chē)身與車(chē)后障礙物在危險(xiǎn)距離時(shí)使用蜂鳴器來(lái)報(bào)警,用來(lái)提醒駕駛員。當(dāng)車(chē)輛在危險(xiǎn)報(bào)警后仍然不采取措施時(shí),該系統(tǒng)會(huì)主動(dòng)采取倒車(chē)制動(dòng)。以保證人身和車(chē)輛安全。采集模塊用來(lái)不斷的采集車(chē)與車(chē)后障礙物的距離,把采集數(shù)據(jù)發(fā)送給處理器,處理器進(jìn)行對(duì)數(shù)據(jù)處理并顯示到LCD屏上,判斷采集來(lái)的數(shù)據(jù)是否在危險(xiǎn)距離,如果在危險(xiǎn)距離,處理器給報(bào)警模塊和制動(dòng)模塊發(fā)送信號(hào),報(bào)警模塊進(jìn)行聲音報(bào)警,制動(dòng)模塊進(jìn)行制動(dòng)。大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)第2章關(guān)鍵技術(shù)介紹2.1S3C2410處理器S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核推出的處理器,采用0.18um制造工藝的32位微控制器。專(zhuān)為手持設(shè)備和一般類(lèi)型應(yīng)用提供了低價(jià)格、低功耗、高性能小型微控制器的解決方案。該處理器功能強(qiáng)大且穩(wěn)定,具有豐富的內(nèi)部設(shè)備。如圖2.1為S3C2410的內(nèi)部結(jié)構(gòu)圖,可以看到很多外圍設(shè)備接口,其中用AHB和APB總線(xiàn)里連接。圖2.1S3C2410的內(nèi)部結(jié)構(gòu)圖2.2Linux驅(qū)動(dòng)Linux驅(qū)動(dòng):驅(qū)動(dòng)是介于操作系統(tǒng)和設(shè)備之間的特殊程序,驅(qū)動(dòng)相當(dāng)于操作系統(tǒng)和硬件設(shè)備之間的橋梁,用來(lái)傳遞硬件設(shè)備和操作系統(tǒng)之間的信息。每種操作系統(tǒng)都有自己的驅(qū)動(dòng)程序框架。當(dāng)然Linux也有,Linux驅(qū)動(dòng)就是Linux操作系統(tǒng)下的驅(qū)動(dòng)程序。Linux驅(qū)動(dòng)分三類(lèi):字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備是在對(duì)字符設(shè)備發(fā)出讀寫(xiě)請(qǐng)求時(shí),實(shí)際的硬件IO口一般立即發(fā)生變化。塊設(shè)備是利用一塊系統(tǒng)內(nèi)存作為緩沖區(qū),當(dāng)用戶(hù)進(jìn)程對(duì)設(shè)備請(qǐng)求恩那個(gè)滿(mǎn)足用戶(hù)要求,就返回請(qǐng)求數(shù)據(jù),如不能,就調(diào)用請(qǐng)求函數(shù)來(lái)進(jìn)行實(shí)際的IO操作。Linux驅(qū)動(dòng)設(shè)備都有兩個(gè)設(shè)備號(hào),第一個(gè)是主設(shè)備號(hào),用來(lái)標(biāo)識(shí)驅(qū)動(dòng)程序,區(qū)別是何種設(shè)備的驅(qū)動(dòng)程序。第二個(gè)是次設(shè)備號(hào),用來(lái)標(biāo)識(shí)使用同一設(shè)備驅(qū)動(dòng)的不同的硬件設(shè)備。在編寫(xiě)Linux驅(qū)動(dòng)中,有三個(gè)結(jié)構(gòu)體非常重要,分別為file_operations、inode和file結(jié)構(gòu)體。File_operatios結(jié)構(gòu)體是Linux訪問(wèn)驅(qū)動(dòng)程序的接口,結(jié)構(gòu)體中的每一位成員都對(duì)應(yīng)著一個(gè)調(diào)用函數(shù)。Inode結(jié)構(gòu)體是用來(lái)表示具體的文件,提供設(shè)備文件的信息。File結(jié)構(gòu)體代表一個(gè)打開(kāi)的文件描述符,系統(tǒng)中沒(méi)一個(gè)打開(kāi)的文件在內(nèi)核中都有一個(gè)關(guān)聯(lián)的file結(jié)構(gòu)體,內(nèi)核都是通過(guò)這個(gè)結(jié)構(gòu)體來(lái)操作文件的。2.3超聲波測(cè)距超聲波測(cè)距:超聲波測(cè)距的原理是利用超聲波在空氣中的傳播速度已知,測(cè)量聲波在發(fā)射后遇到障礙物反射回來(lái)的時(shí)間,根據(jù)發(fā)射和接受時(shí)間的時(shí)間差計(jì)算出發(fā)射點(diǎn)到障礙物的實(shí)際距離。測(cè)距公式表示為: (2-1)

第3章系統(tǒng)需求分析3.1系統(tǒng)設(shè)計(jì)目標(biāo)科技讓行車(chē)更安全。如今我國(guó)車(chē)輛數(shù)量與日俱增,造成道路擁堵,交通事故頻發(fā),給人們的生命和財(cái)產(chǎn)帶來(lái)了巨大的損失。安全駕駛成為人們關(guān)注的焦點(diǎn)。本系統(tǒng)設(shè)計(jì)目標(biāo)就是解決汽車(chē)倒車(chē)安全問(wèn)題。倒車(chē)?yán)走_(dá)可以為駕駛員實(shí)時(shí)提供車(chē)身與車(chē)后障礙物的距離,并在危險(xiǎn)距離時(shí),聲音提醒駕駛員。在聲音提示時(shí)駕駛員仍沒(méi)做出改變措施時(shí),進(jìn)行主動(dòng)制動(dòng)。保證倒車(chē)安全。3.2系統(tǒng)功能需求根據(jù)需求調(diào)研結(jié)果確定本系統(tǒng)主要包括以下功能模塊。3.2.1數(shù)據(jù)采集模塊通過(guò)驅(qū)動(dòng)程序控制HC-SR04超聲波測(cè)距模塊進(jìn)行測(cè)試車(chē)后與障礙物的距離,并實(shí)時(shí)的把數(shù)據(jù)傳遞給處理器。3.2.2聲音提示模塊聲音報(bào)警模塊是通過(guò)蜂鳴器報(bào)警。蜂鳴器會(huì)根據(jù)車(chē)與車(chē)后障礙物的距離,而發(fā)出不同頻率的beep聲。如果處理器有給報(bào)警信號(hào),蜂鳴器就會(huì)一直響。用來(lái)提醒駕駛員,已經(jīng)處于危險(xiǎn)距離。不在危險(xiǎn)距離不響??捎捎脩?hù)設(shè)置是否開(kāi)啟該功能。3.2.3顯示模塊顯示模塊通過(guò)顯示屏,把車(chē)后與車(chē)后障礙物的距離實(shí)時(shí)顯示到顯示屏上,駕駛員能很直觀地看到自己的車(chē)與障礙物距離,輔助安全倒車(chē)。顯示模塊中,ARM板通過(guò)WIFI模塊,發(fā)送到手機(jī)上,在手機(jī)上查看車(chē)后是否有障礙物或與障礙物的距離。3.2.4數(shù)據(jù)處理模塊數(shù)據(jù)處理模塊是安裝了Linux操作系統(tǒng)的S3C2410處理器,它控制采集模塊不斷地采集數(shù)據(jù),把采集來(lái)的數(shù)據(jù)進(jìn)行處理,并把數(shù)據(jù)傳遞給顯示模塊,如在危險(xiǎn)距離還會(huì)控制報(bào)警模塊報(bào)警或主動(dòng)制動(dòng)。3.2.5剎車(chē)控制模塊剎車(chē)控制模塊是在處理器發(fā)出危險(xiǎn)信號(hào)時(shí)自動(dòng)剎車(chē),控制小車(chē)緊急停車(chē),同時(shí)在小車(chē)停車(chē)后,不允許倒車(chē),即使在駕駛員仍然向后倒車(chē)的情況下,通過(guò)剎車(chē)模塊禁止倒車(chē)動(dòng)作,只能往前進(jìn)的方向行駛。可由用戶(hù)設(shè)置是否開(kāi)啟該功能。3.3系統(tǒng)非功能需求性能:測(cè)量距離為2cm-400cm,測(cè)距精度可達(dá)高到3mm。成本:?jiǎn)蝹€(gè)設(shè)備售價(jià)不高于600元。3.4系統(tǒng)開(kāi)發(fā)環(huán)境硬件環(huán)境CPU:Inter(R)Core(TM)i7M620@2.67GHz2.67GHz/S3C2410RAM:3.00GB/256M硬盤(pán):320GB軟件環(huán)境操作系統(tǒng):Windows7、Linux2.4.5編譯器:QT、arm-linux-gcc3.5系統(tǒng)可行性分析3.5.1技術(shù)可行性本系統(tǒng)采用LINUX系統(tǒng)的底層架構(gòu),采用C作為開(kāi)發(fā)語(yǔ)言,按照Linux驅(qū)動(dòng)和應(yīng)用框架,開(kāi)發(fā)相應(yīng)的驅(qū)動(dòng)和應(yīng)用程序。使用QT開(kāi)發(fā)交互界面。3.5.2經(jīng)濟(jì)可行性其中S3C2410價(jià)格較高,其他外圍設(shè)備價(jià)格便宜??傮w成本適中,可以開(kāi)發(fā)。第4章系統(tǒng)設(shè)計(jì)4.1系統(tǒng)設(shè)計(jì)指導(dǎo)原則4.1.1先進(jìn)性采用高性能的處理器S3C2410,定時(shí)器精度最高可以達(dá)到0.015us,利用高精度定時(shí)器可以更準(zhǔn)確地處理采集數(shù)據(jù)。其中顯示模塊采用無(wú)線(xiàn)傳輸,避免在汽車(chē)上安裝時(shí)的布線(xiàn)問(wèn)題。4.1.2可靠性及安全性處理器采用市面上流行的S3C2410,搭載嵌入式LINUX操作系統(tǒng),所需技術(shù)成熟。報(bào)警和自動(dòng)剎車(chē)模塊通過(guò)物連線(xiàn)與處理器和采集模塊連接,在倒車(chē)時(shí)可以實(shí)時(shí)的采集、處理、報(bào)警、剎車(chē)。不存在延遲。顯示模塊是通過(guò)無(wú)線(xiàn)傳輸?shù)斤@示器,采用WIFI技術(shù),網(wǎng)絡(luò)穩(wěn)定,傳輸速度快。非常滿(mǎn)足該系統(tǒng)的數(shù)據(jù)傳輸。系統(tǒng)可靠性和安全性相當(dāng)高。4.2體系結(jié)構(gòu)設(shè)計(jì)汽車(chē)倒車(chē)防撞控制系統(tǒng)框架設(shè)計(jì)是通過(guò)采集模塊實(shí)時(shí)采集數(shù)據(jù)并傳遞給處理器,處理器通過(guò)對(duì)數(shù)據(jù)的處理和判斷,并通過(guò)串口發(fā)送給WIFI模塊,然后顯示到顯示屏上。當(dāng)在危險(xiǎn)距離時(shí)使剎車(chē)模塊和報(bào)警模塊工作。實(shí)現(xiàn)安全倒車(chē)。系統(tǒng)體系架構(gòu)如圖4.1所示。 S3C2410S3C2410采集模塊(HC-SR04)無(wú)線(xiàn)數(shù)據(jù)傳輸(WIFI)報(bào)警模塊(蜂鳴器)剎車(chē)模塊(剎車(chē)控制板)顯示屏超聲波驅(qū)動(dòng)剎車(chē)驅(qū)動(dòng)蜂鳴器驅(qū)動(dòng)串口驅(qū)動(dòng)圖4.1系統(tǒng)體系結(jié)構(gòu)4.3硬件設(shè)計(jì)4.3.1S3C2410與外圍設(shè)備連接電路設(shè)計(jì)S3C2410的TX0、RX0分別接WIFI模塊的RX、TX用作串口通信的連線(xiàn)。ENIT16、GP8分別接超聲波轉(zhuǎn)接板上的TRNG、ECHO,GP8是類(lèi)似PWM信號(hào),每隔一段時(shí)間會(huì)有一10us的高電平,用來(lái)觸發(fā)HC-SR04發(fā)出超聲波。ENIT16是中斷引腳,用來(lái)連接HC-SR04的回響引腳,當(dāng)HC-SR04有收到回波信號(hào)時(shí),就會(huì)通過(guò)回響引腳發(fā)送高電平,觸發(fā)ENIT16中斷。PWM接蜂鳴器引腳。down和up分別接剎車(chē)控制板N和R。用來(lái)控制小車(chē)的停止倒車(chē)和前行的。如圖4.2為S3C2410的外接電路。圖4.2S3C2410外接電路圖4.3.2HC-SR04轉(zhuǎn)接版電路設(shè)計(jì)HC-SR04為5v輸入輸出,直接接到S3C2410的IO口會(huì)燒掉,所以設(shè)計(jì)了一個(gè)輸出分壓電路,由HC-SR04的ECHO(回響引腳)串連三個(gè)同樣阻值得電阻接地,在第一個(gè)電阻與第二個(gè)電阻之間引線(xiàn)連接到IO口就起到了分壓的作用。如圖4.3為轉(zhuǎn)接板電路圖。圖4.3超聲波模塊轉(zhuǎn)接電路圖4.3.3剎車(chē)控制模塊電路設(shè)計(jì)剎車(chē)控制模塊設(shè)計(jì)的初衷是在非危險(xiǎn)距離情況下,不干預(yù)車(chē)輛的行駛。在危險(xiǎn)情況下,主動(dòng)控制汽車(chē)剎車(chē)。所用小車(chē)是采用RX-2B和TX-2B芯片控制小車(chē)。當(dāng)RX-2B芯片倒車(chē)和前進(jìn)使能接三極管H橋,驅(qū)動(dòng)小車(chē)電機(jī)。我所做的設(shè)計(jì)是從RX-2B芯片的倒車(chē)使能引腳和前進(jìn)使能引腳引出兩條線(xiàn),分別接一個(gè)NPN三極管。當(dāng)?shù)管?chē)危險(xiǎn)時(shí),通過(guò)三極管拉低倒車(chē)使能端,使其無(wú)法倒車(chē)。但所用小車(chē)溜車(chē)很厲害,即使關(guān)閉倒車(chē)使能,仍能靠慣性跑一段距離,所以加上了前進(jìn)使能。為的是在小車(chē)倒車(chē)使能關(guān)閉后,通過(guò)三極管拉高前進(jìn)使能,使其緩沖下慣性,停下來(lái)。如圖4.4,剎車(chē)控制電路圖設(shè)計(jì)。圖4.4剎車(chē)控制電路圖4.4軟件設(shè)計(jì)軟件設(shè)計(jì)分兩部分一部分是S3C2410處理器端,另一部分是顯示器端。S3C2410處理器端:設(shè)備驅(qū)動(dòng)和應(yīng)用程序。設(shè)備驅(qū)動(dòng)程序是用來(lái)驅(qū)動(dòng)超聲波HC-SR04設(shè)備、蜂鳴器和串口設(shè)備。應(yīng)用程序是對(duì)采集數(shù)據(jù)處理,開(kāi)關(guān)蜂鳴器和串口數(shù)據(jù)發(fā)送接受的操作。顯示器端:顯示端是安裝android操作系統(tǒng)的手機(jī),手機(jī)通過(guò)與處理器上的WIFI模塊建立TCP鏈接傳輸數(shù)據(jù)。顯示器端的軟件設(shè)計(jì)是建立TCP連接,接收處理器發(fā)送的數(shù)據(jù),發(fā)送用戶(hù)設(shè)置,把數(shù)據(jù)顯示到顯示器。4.4.1控制流程設(shè)計(jì)圖4.5控制流程圖4.4.2UI界面設(shè)計(jì)UI界面是在Android系統(tǒng)的手機(jī)上實(shí)現(xiàn)的,主要布局有一個(gè)按鈕、兩個(gè)復(fù)選框控件和兩個(gè)靜態(tài)文本框。按鈕是用來(lái)連接主板,接受數(shù)據(jù)的。兩個(gè)復(fù)選框用來(lái)選擇是否打開(kāi)聲音報(bào)警和自主剎車(chē)功能的。兩個(gè)靜態(tài)文本框是用來(lái)顯示數(shù)據(jù)的。如圖4.6所示。圖4.6界面設(shè)計(jì)4.4.3功能模塊設(shè)計(jì)軟件功能模塊分為:系統(tǒng)總控模塊:主要任務(wù)對(duì)數(shù)據(jù)進(jìn)行處理和判斷,是否在危險(xiǎn)距離,開(kāi)關(guān)閉聲音報(bào)警和自動(dòng)剎車(chē)功能。以及數(shù)據(jù)的顯示。數(shù)據(jù)采集:驅(qū)動(dòng)HC-SR04模塊發(fā)出超聲波,并在有回波時(shí),開(kāi)啟定時(shí)器計(jì)算回波的時(shí)長(zhǎng)。計(jì)算出距離。聲音報(bào)警:當(dāng)系統(tǒng)主控模塊在危險(xiǎn)距離的時(shí)候給出危險(xiǎn)信號(hào)后,就會(huì)通過(guò)驅(qū)動(dòng)開(kāi)啟蜂鳴器,發(fā)出響聲。自動(dòng)剎車(chē):當(dāng)系統(tǒng)主控模塊發(fā)出危險(xiǎn)信號(hào)后,拉低倒車(chē)使能。使其停止倒車(chē)。顯示模塊:與系統(tǒng)主控模塊建立TCP連接,進(jìn)行數(shù)據(jù)的傳輸,并且把數(shù)據(jù)顯示到顯示器上。用戶(hù)設(shè)置:其中用戶(hù)設(shè)置包含開(kāi)關(guān)報(bào)警和開(kāi)關(guān)自動(dòng)剎車(chē)兩功能模塊。系統(tǒng)軟件功能框圖如圖4.7所示。圖4.7系統(tǒng)軟件功能框圖大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)第5章系統(tǒng)實(shí)現(xiàn)5.1環(huán)境配置軟件環(huán)境配置主要安裝交叉編譯環(huán)境,Uboot和Linux3.0內(nèi)核的編譯和移植,部分設(shè)備驅(qū)動(dòng)的加載等。硬件環(huán)境主要有根據(jù)設(shè)計(jì)的原理圖連接各個(gè)模塊。5.2功能模塊實(shí)現(xiàn)5.2.1數(shù)據(jù)采集模塊HC-SR04超聲波傳感器有四個(gè)引腳,本別是VCC、GND、ECHO(回響信號(hào))和TIRG(觸發(fā)信號(hào))。軟件實(shí)現(xiàn)是通過(guò)LINUX內(nèi)核定時(shí)器每隔一段時(shí)間通過(guò)給TIRG引腳10us的高電平來(lái)觸發(fā)超聲波傳感器。ECHO接到S3C2410的EINT16中斷引腳,當(dāng)有回響時(shí)就會(huì)觸發(fā)中斷,進(jìn)入中斷函數(shù)開(kāi)啟定時(shí)器,計(jì)算回響信號(hào)的時(shí)間,從而計(jì)算出距離。如圖5.1超聲波驅(qū)動(dòng)流程圖。中斷函數(shù)把采集和計(jì)算的距離數(shù)據(jù)寫(xiě)入到設(shè)備結(jié)構(gòu)體中,應(yīng)用層程序可以通過(guò)打開(kāi)該設(shè)備驅(qū)動(dòng),用read函數(shù)讀取到采集數(shù)據(jù)。圖5.1超聲波驅(qū)動(dòng)流程圖定時(shí)器初始化:定時(shí)器初始化主要分為配置輸入時(shí)鐘,配置定時(shí)器。配置時(shí)鐘:超聲波在空氣中的傳播速度是340m/s,通過(guò)計(jì)算得到,超聲波在空氣中傳播。2mm所用的時(shí)間為5.8us。所以配置時(shí)鐘為5.8us一個(gè)間隔,最后測(cè)得數(shù)據(jù)即為定時(shí)器所減少的值。所以配置時(shí)鐘為prescaker=23,分頻為16。配置定時(shí)器:通過(guò)配置CSTAT定時(shí)器中斷和狀態(tài)寄存器,關(guān)閉Timer2的中斷。通過(guò)配置TCON配置寄存器,打開(kāi)自動(dòng)重載定時(shí)器值。通過(guò)對(duì)TCNTB2寄存器賦值,來(lái)給定時(shí)器2載入初值。tcfg0=__raw_readl(S3C_TCFG0)tcfg0&=~S3C_TCFG_PRESCALER1_MASK;tcfg0|=(24<<8);//prescaler=23配置時(shí)鐘輸入//mux=1/16tcfg1&=~S3C_TCFG1_MUX2_MASK; //清零tcfg1|=S3C_TCFG1_MUX2_DIV16; //分頻1246816__raw_writel(tcfg1,S3C_TCFG1);__raw_writel(tcfg0,S3C_TCFG0);tcnt=9000;printk("\npclkis:%ld\n\n",pclk);//testforpclkprintk("\ntcntis:%ld\n\n",tcnt);//testfortcnt__raw_writel(tcnt,S3C_TCNTB(2)); //裝載時(shí)間cstat=__raw_readl(S3C_TINT_CSTAT);//關(guān)閉定時(shí)器中斷cstat|=S3C_TINT_CSTAT_T2INT;__raw_writel(cstat,S3C_TINT_CSTAT);tcon&=~S3C_TCON_T2MANUALUPD;__raw_writel(tcon,S3C_TCON);中斷函數(shù):當(dāng)ECHO腳有高電平時(shí),就會(huì)觸發(fā)中斷進(jìn)入該函數(shù),定時(shí)器timer清零,開(kāi)啟計(jì)時(shí),等待引腳電平變?yōu)榈?,結(jié)束計(jì)時(shí)計(jì)算距離。其中中斷函數(shù)必須為irqterum_t類(lèi)型。gpio_get_value(gpio_pin)函數(shù)是獲取某引腳的電平狀態(tài),在該中斷函數(shù)里是一直讀取中斷引腳的電平狀態(tài),當(dāng)變低了終止等待,計(jì)算時(shí)間和距離。首先通過(guò)給TCON定時(shí)器控制寄存器的第12位置1,開(kāi)啟定時(shí)器2。然后等待回響引腳的高電平變低,再通過(guò)對(duì)該位置0關(guān)閉定時(shí)器2。TCNTB2寄存器內(nèi)的值為開(kāi)始時(shí)載入的計(jì)時(shí)初值,TCNT0在定時(shí)器開(kāi)始時(shí)由TCNTB2內(nèi)的值載入,S3C2410的定時(shí)器為向下增長(zhǎng),所以TCNT0內(nèi)的值每到一個(gè)時(shí)鐘,就會(huì)減一。等減到0時(shí)就會(huì)觸發(fā)中斷。要想知道定時(shí)器在觸發(fā)中斷前經(jīng)過(guò)了幾個(gè)時(shí)鐘,用TCNTB2的值減去TCNT0即為高電平的時(shí)間?;仨懸_變?yōu)榈碗娖胶箨P(guān)閉定時(shí)器,讀出時(shí)間。經(jīng)計(jì)算得到測(cè)量距離。由于輸入時(shí)鐘頻率正好是超聲波在空氣中傳播2mm的距離。所以計(jì)時(shí)器所記得時(shí)即為距離。單位毫米。irqreturn_tsimplekey_interrupt(intirq,void*dev_id){__raw_writel(tcnt,S3C_TCNTB(2)); //裝載時(shí)間tcon=__raw_readl(S3C_TCON);tcon=(tcon&~(0xf<<12))|(0xf<<12);__raw_writel(tcon,S3C_TCON);//starttimer2while(gpio_get_value(S3C24XX_GPL(8))==1);//waittcon=__raw_readl(S3C_TCON);//closetimer2tcon&=~S3C_TCON_T2START;__raw_writel(tcon,S3C_TCON);tcnt=__raw_readl(S3C_TCNTB(2));//readtimer2tcnt=__raw_readl(S3C_TCNT0(2));s=tcnt-tcno;device_devp->data[0]=s;ReturnIRQ_HANDLED;}Tirg引腳觸發(fā):Tirg引腳的頻率性觸發(fā),采用LINUX內(nèi)核定時(shí)器計(jì)時(shí),時(shí)間到期觸發(fā)時(shí)間中斷函數(shù),直行觸發(fā)引腳的高低電平操作。structtimer_listpolling_timer; //定義定時(shí)器init_timer(&polling_timer); //初始化定時(shí)器polling_timer.data=0; polling_timer.function=polling_handler;polling_timer.expired=jiffies+HZ;add_timer(&polling_timer);voidpolling_hander(void){Gpio_set_value(S3C24XX_GPP(8),1);Gpio_set_value(S3C24XX_GPP(8),);Mdelay(100);Polling_timer.expires=jiffies+HZ;Add_timer(&polling_timer);}Timer_list是Linux內(nèi)核定時(shí)器,在linux/timer.h頭文件里定義。expires是表示定時(shí)器期望運(yùn)行的jiffies值,當(dāng)定時(shí)器時(shí)間到達(dá)這個(gè)jiffies值時(shí),就會(huì)觸發(fā)中斷函數(shù)。void(*function)(unsignedlong)是定時(shí)器用來(lái)存儲(chǔ)中斷處理函數(shù)的指針,當(dāng)定時(shí)器中斷時(shí)就會(huì)運(yùn)行這個(gè)函數(shù)。Data為參數(shù),當(dāng)中斷函數(shù)被調(diào)用時(shí),會(huì)將data作為一個(gè)參數(shù)傳遞給中斷函數(shù),用來(lái)區(qū)分那個(gè)定時(shí)器中斷了。一般多用于多定時(shí)器共用一個(gè)中斷函數(shù)時(shí)使用,單個(gè)定時(shí)器使用時(shí)data為0。voidinit_timer(structtimer_list*timer)函數(shù)是用來(lái)初始化定時(shí)器。Timer_list必須在使用前初始化,保證所有的成員被正確建立。voidadd_timer(structtimer_list*timer)函數(shù)是用來(lái)向內(nèi)核中加載定時(shí)器,開(kāi)啟計(jì)時(shí)的。intdel_timer(structtimer_list*timer)函數(shù)是負(fù)責(zé)從系統(tǒng)的定時(shí)器管理隊(duì)列中摘除一個(gè)定時(shí)器對(duì)象#include<linux/timer.h>structtimer_list{unsignedlongexpires;void(*function)(unsignedlong);unsignedlongdata;};voidinit_timer(structtimer_list*timer);voidadd_timer(structtimer_list*timer);intdel_timer(structtimer_list*timer);

5.2.2報(bào)警模塊報(bào)警模塊是使用蜂鳴器做聲音報(bào)警。因?yàn)殚_(kāi)發(fā)板已經(jīng)加載了蜂鳴器驅(qū)動(dòng),所以我們只需要通過(guò)應(yīng)用程序調(diào)用驅(qū)動(dòng)接口就可以控制蜂鳴器了。蜂鳴器的驅(qū)動(dòng):蜂鳴器一端接地,一端接控制引腳。當(dāng)控制引腳輸出高電平的時(shí)候蜂鳴器就會(huì)發(fā)聲。驅(qū)動(dòng)器的原理就是通過(guò)定時(shí)器有頻率的讓控制引腳輸出高電平,從而蜂鳴器就會(huì)發(fā)出有間隔的響聲。蜂鳴器應(yīng)用程序:時(shí)刻監(jiān)測(cè)處理器是否發(fā)出危險(xiǎn)信號(hào),如有危險(xiǎn)信號(hào)發(fā)出,應(yīng)用程序通過(guò)調(diào)用驅(qū)動(dòng)程序接口ioctl函數(shù)打開(kāi)蜂鳴器,發(fā)出警報(bào)。危險(xiǎn)信號(hào)解除時(shí),仍通過(guò)ioctl函數(shù)關(guān)閉蜂鳴器。程序控制流程圖如圖5.2.圖5.2蜂鳴器模塊流程圖蜂鳴器程序代碼:voidinit_pwm(void) {pwm_fd=open(“/dev/pwm”,O_RDONLY);if(pwm_fd<0){perror(“CAN`TOPENDEVICEPWM”);return0;}}voidctl_pwm(void){if(value_fd.data<DENGER) //DENGER是宏定義的危險(xiǎn)距離ioctl(pwm_fd,1,100);elseioctl(pwm_fd,0,0);}Open函數(shù):打開(kāi)設(shè)備文件,返回設(shè)備指針,后續(xù)的設(shè)備操作函數(shù)都是對(duì)這個(gè)返回的指針進(jìn)行操作。如果返回值小于0則打開(kāi)設(shè)備失敗。Ioctl函數(shù):第一個(gè)參數(shù)是設(shè)備指針,就是open函數(shù)返回的設(shè)備指針。第二個(gè)參數(shù)開(kāi)關(guān)蜂鳴器,0:關(guān)閉,1:打開(kāi)。第三個(gè)參數(shù)是蜂鳴器的發(fā)聲的頻率,值越小頻率越大。Structvalue{Intdata;Intbeep;Intstop;}Value結(jié)構(gòu)體是應(yīng)用層用來(lái)存儲(chǔ)采集數(shù)據(jù)和用戶(hù)設(shè)置的開(kāi)關(guān)蜂鳴器和自助剎車(chē)功能。data是數(shù)據(jù),beep:0關(guān)閉報(bào)警功能,1打開(kāi)報(bào)警功能。Stop:0關(guān)閉自動(dòng)剎車(chē),1打開(kāi)自動(dòng)剎車(chē)。5.2.3顯示模塊顯示模塊是通過(guò)WIFI與處理器板子建立TCP/IP連接來(lái)傳遞數(shù)據(jù)的。顯示端開(kāi)啟時(shí),首先與板子建立TCP連接,然后發(fā)送用戶(hù)設(shè)置數(shù)據(jù),如選擇關(guān)閉蜂鳴器等設(shè)置。用戶(hù)設(shè)置數(shù)據(jù)發(fā)送完成后,開(kāi)始接受數(shù)據(jù)顯示在顯示屏上。如圖5.3顯示模塊流程圖所示。圖5.3顯示模塊流程圖5.2.4剎車(chē)控制模塊剎車(chē)控制模塊設(shè)計(jì)思路是系統(tǒng)啟動(dòng)時(shí)首先判斷是否開(kāi)啟主動(dòng)剎車(chē)功能,如不開(kāi)啟,則在危險(xiǎn)距離時(shí)不做任何動(dòng)作。如開(kāi)啟,則在倒車(chē)危險(xiǎn)距離時(shí),主動(dòng)拉低倒車(chē)使能,為了能緩沖慣性,在拉低倒車(chē)使能的通過(guò)開(kāi)啟前進(jìn)使能緩沖慣性。程序流程圖如圖5.4所示。圖5.4剎車(chē)控制流程圖剎車(chē)模塊驅(qū)動(dòng)部分代碼:voidiocfg(void){ s3c_gpio_cfgpin(S3C24XX_GPP(1),S3C_GPIO_OUTPUT);//輸出配置 s3c_gpio_cfgpin(S3C24XX_GPP(13),S3C_GPIO_OUTPUT); s3c_gpio_setpull(S3C24XX_GPP(1),S3C_GPIO_PULL_DOWN);//下拉 s3c_gpio_setpull(S3C24XX_GPP(13),S3C_GPIO_PULL_DOWN);}voidenable_up(void){ gpio_set_value(S3C24XX_GPP(1),1);}voiddisable_up(void){ gpio_set_value(S3C24XX_GPP(1),0);}voidenable_down(void){ gpio_set_value(S3C24XX_GPP(13),1);}voiddisable_down(void){ gpio_set_value(S3C24XX_GPP(13),0);}staticlongs3c24xx_stop_ioctl(structfile*filep,unsignedintcmd,unsignedlongarg){ switch(cmd) { caseUP: if(arg==1)enable_up();//#defineUP1;#defineDOWN2 elsedisable_up(); break; caseDOWN: if(arg==1)enable_down(); elsedisable_down(); break; } return0;}首先初始化GPIO口,代碼中用GP1控制前進(jìn)使能,用GP13控制倒車(chē)使能。兩個(gè)GPIO口配置成輸出和下拉。然后聲明4個(gè)io口操作函數(shù),分別用于操作兩個(gè)GPIO口的高低電平輸出。s3c24xx_stop_ioctl()函數(shù)則為驅(qū)動(dòng)與應(yīng)用層接口函數(shù),應(yīng)用層通過(guò)該接口函數(shù)來(lái)控制GPIO口的輸出。s3c24xx_stop_ioctl()函數(shù),第一個(gè)參數(shù)是設(shè)備文件指針,用來(lái)區(qū)別設(shè)備。代碼用switch語(yǔ)句,首先判斷cmd的值。cmd=1則是在控制前進(jìn),cmd=2則是在控制倒車(chē)。然后判斷arg的值,arg=1是打開(kāi)對(duì)應(yīng)的使能,arg=0則是關(guān)閉。然后通過(guò)調(diào)用響應(yīng)的函數(shù)控制GPIO的高低電平輸出。5.3系統(tǒng)集成與調(diào)試5.3.1系統(tǒng)集成所需硬件根據(jù)系統(tǒng)所需功能購(gòu)買(mǎi)硬件,并按照原理圖進(jìn)行電路連接。所需硬件清單如表5.1所示。表5.1硬件清單列表名稱(chēng)功能數(shù)量S3C2410開(kāi)發(fā)板為本系統(tǒng)提供核心控制和數(shù)據(jù)處理。主要功能為處理采集數(shù)據(jù),開(kāi)關(guān)報(bào)警和自動(dòng)剎車(chē)功能以及采集數(shù)據(jù)顯示功能。1Wifi模塊為本系統(tǒng)提供無(wú)線(xiàn)數(shù)據(jù)傳輸功能。主要功能把采集的數(shù)據(jù)發(fā)送給顯示端,與顯示端建立TCP連接,搭起處理器與顯示端的數(shù)據(jù)傳輸橋梁。1剎車(chē)控制模塊為本系統(tǒng)提供剎車(chē)功能1HC-SR04模塊作為本系統(tǒng)的數(shù)據(jù)采集單元。主要功能采集車(chē)與車(chē)后障礙物的距離,并把數(shù)據(jù)傳遞給處理器。1HC-SR04模塊轉(zhuǎn)接板作為HC-SR04與處理器GPIO的轉(zhuǎn)接。主要功能把HC-SR04的5v回響電壓降低到3.3v。防止處理器被燒壞。15.3.2交叉編譯如圖5.5所示,數(shù)據(jù)處理模塊和數(shù)據(jù)采集模塊連線(xiàn)完成,進(jìn)行交叉編譯測(cè)試。在虛擬機(jī)中驅(qū)動(dòng)編寫(xiě)和Makefile完成后,通過(guò)超級(jí)中斷的make命令生成KO文件。應(yīng)用文件編寫(xiě)完成后通過(guò)arm-linux-gcc命令生成可執(zhí)行文件。把KO文件復(fù)制到文件系統(tǒng)中。通過(guò)NFS搭載到板子運(yùn)行測(cè)試。圖5.5交叉編譯圖5.3.3系統(tǒng)聯(lián)調(diào)分別測(cè)試個(gè)模塊是否能正常工作,之后連接各個(gè)模塊完成本系統(tǒng)的集成和調(diào)試。系統(tǒng)整體樣圖如圖5.6所示。圖5.6整體實(shí)物圖5.3.4問(wèn)題與解決本系統(tǒng)設(shè)計(jì)和調(diào)試過(guò)程中遇到了許多問(wèn)題。主要在內(nèi)核移植和編譯問(wèn)題、小車(chē)剎車(chē)板的電路設(shè)計(jì)問(wèn)題,各模塊集成是接口不兼容問(wèn)題和驅(qū)動(dòng)編寫(xiě)時(shí)中斷和定時(shí)器問(wèn)題。具體的問(wèn)題和解決方案如表5.2所示。問(wèn)題描述解決方案MakezImage時(shí)提示無(wú)效的系統(tǒng)內(nèi)核gcc編譯器版本低,安裝4.3.2版本后,添加環(huán)境變量問(wèn)題解決使用三極管控制倒車(chē)使能的狀態(tài),在倒車(chē)使能為高電平時(shí),三級(jí)管會(huì)燒掉,添加一個(gè)反向的二極管后,壓降太大。輸出的電壓無(wú)法驅(qū)動(dòng)小車(chē)。重新設(shè)計(jì)電路,從小車(chē)的控制芯片入手,直接操縱芯片的輸出端。問(wèn)題解決HC-SR04輸出電壓為5V,直接接到處理器的GPIO上后會(huì)燒掉處理器。為HC-SR04的輸出引腳添加一個(gè)分壓電路然后接到處理器的GPIO口上,問(wèn)題解決WIFI模塊和處理器串口連接。Wifi模塊串口是TTL接口,而處理是經(jīng)過(guò)MAX2032芯片處理過(guò)的,無(wú)法連接。為WIFI模塊做了一個(gè)轉(zhuǎn)接板。把wifi模塊的TX和RX引腳經(jīng)過(guò)MAX232處理在連接到處理器串口上,成功通信,問(wèn)題解決。HC-SR04驅(qū)動(dòng)中,GPIO外部中斷號(hào)與LINXU內(nèi)核庫(kù)函數(shù)中的偽中斷號(hào)無(wú)法確定。同時(shí)開(kāi)發(fā)板EINT0-6已經(jīng)占用無(wú)法申請(qǐng)。通過(guò)查看處理器的官方文檔和linux內(nèi)核代碼,使用GPL8引腳,中斷號(hào)使用IRQ_EINT16成功進(jìn)入中斷,問(wèn)題解決。HC-SR04驅(qū)動(dòng)中,定時(shí)器精度的問(wèn)題,開(kāi)始采用驅(qū)動(dòng)獲取引腳狀態(tài),應(yīng)用層計(jì)時(shí)。但應(yīng)用層定時(shí)器精度不夠,不能保證獲取數(shù)據(jù)的準(zhǔn)確性。后采用內(nèi)核定時(shí)器Timer_list,但精度只能達(dá)到1/100s。最后采用處理器的硬件定時(shí)器,通過(guò)配置定時(shí)器輸入時(shí)鐘進(jìn)行16分頻,prescaler=23。正好滴答間隔為5.8us,超聲波在空氣中傳播2mm所用的時(shí)間。測(cè)量精度的問(wèn)題得到解決。表5.2問(wèn)題與解決大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)第6章系統(tǒng)測(cè)試本系統(tǒng)采用S3C2410處理器并搭載LINUX操作系統(tǒng),并通過(guò)HC-SR04采集數(shù)據(jù),進(jìn)行無(wú)線(xiàn)傳輸以及實(shí)現(xiàn)主動(dòng)剎車(chē)和報(bào)警功能。為的是開(kāi)發(fā)出一套高效、準(zhǔn)確和人性化的系統(tǒng)。通過(guò)系統(tǒng)測(cè)試可以發(fā)現(xiàn)系統(tǒng)的錯(cuò)誤,加以改正,更好的完善系統(tǒng)。6.1測(cè)試概述本系統(tǒng)在軟硬件設(shè)計(jì)時(shí)已經(jīng)避免了許多可能出現(xiàn)的輸入輸出錯(cuò)誤,但是智者千慮必有一失,很難考慮周全。如不進(jìn)行全面的測(cè)試,將會(huì)造成不可估計(jì)的后果。因此系統(tǒng)測(cè)試是質(zhì)量保證必做的工作。本測(cè)試分為系統(tǒng)開(kāi)機(jī)、HC-SR04數(shù)據(jù)采集、自助剎車(chē)和聲音報(bào)警四個(gè)模塊。6.2測(cè)試用例6.2.1系統(tǒng)開(kāi)機(jī)測(cè)試系統(tǒng)開(kāi)機(jī)測(cè)試用例如表6.1所示。表6.1系統(tǒng)開(kāi)機(jī)測(cè)試用例編號(hào)測(cè)試項(xiàng)操作步驟預(yù)期結(jié)果輸入數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說(shuō)明001系統(tǒng)開(kāi)機(jī)對(duì)系統(tǒng)上電系統(tǒng)初始化完成后HC-SR04的echo和tirg以及WIFI模塊的net指示燈有頻率的閃爍無(wú)系統(tǒng)初始化完成后HC-SR04的echo和tirg以及WIFI模塊的net指示燈有頻率的閃爍符合002系統(tǒng)開(kāi)機(jī)點(diǎn)擊【連接】按鈕顯示器會(huì)有采集的數(shù)據(jù)顯示按鍵操作顯示器會(huì)有采集的數(shù)據(jù)顯示符合6.2.2HC-SR04數(shù)據(jù)采集測(cè)試HC-SR04數(shù)據(jù)采集測(cè)試用例如表6.2所示。表6.2數(shù)據(jù)采集測(cè)試用例編號(hào)測(cè)試項(xiàng)操作步驟預(yù)期結(jié)果輸入數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說(shuō)明003HC-SR04數(shù)據(jù)采集HC-SR04前方50cm放置障礙物顯示端的距離顯示框中顯示50cm放置障礙物顯示端的距離顯示框中顯示50cm符合004HC-SR04數(shù)據(jù)采集HC-SR04前方200cm放置障礙物顯示器會(huì)有采集的數(shù)據(jù)顯示200cm放置障礙物顯示器會(huì)有采集的數(shù)據(jù)顯示200cm符合6.2.3自動(dòng)剎車(chē)功能測(cè)試自動(dòng)剎車(chē)功能測(cè)試用例如表6.3所示。

表6.3自動(dòng)剎車(chē)功能測(cè)試用例編號(hào)測(cè)試項(xiàng)操作步驟預(yù)期結(jié)果輸入數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說(shuō)明005自動(dòng)剎車(chē)遙控小車(chē)向有障礙物的方向倒車(chē)。小車(chē)在危險(xiǎn)距離是自動(dòng)剎車(chē),且使用遙控器無(wú)法使小車(chē)倒車(chē)。倒車(chē)信號(hào),和后方障礙物小車(chē)在危險(xiǎn)距離是自動(dòng)剎車(chē),且使用遙控器無(wú)法使小車(chē)倒車(chē)。符合6.2.4聲音報(bào)警功能測(cè)試聲音報(bào)警功能測(cè)試用例如表6.4所示表6.4聲音報(bào)警功能測(cè)試用例編號(hào)測(cè)試項(xiàng)操作步驟預(yù)期結(jié)果輸入數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說(shuō)明006聲音報(bào)警遙控小車(chē)向有障礙物的方向倒車(chē)。小車(chē)在危險(xiǎn)距離時(shí)蜂鳴器發(fā)出聲響,并且距離障礙物越發(fā)出近聲響的頻率越快。倒車(chē)信號(hào),和后方障礙物小車(chē)在危險(xiǎn)距離時(shí)蜂鳴器發(fā)出聲響,并且距離障礙物越發(fā)出近聲響的頻率越快。符合大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)第7章結(jié)論嵌入式技術(shù)作為當(dāng)前計(jì)算機(jī)技術(shù)和微電子的一個(gè)重要的分支,經(jīng)過(guò)了幾十年的發(fā)展,也已經(jīng)深入到我們的生活、工作中。嵌入式的普及應(yīng)用,讓我們深刻感受到科技帶給我們的便捷、準(zhǔn)確和智能。本課題設(shè)計(jì)的初衷也是為了給我們提供方便?;赟3C2410汽車(chē)倒車(chē)防撞系統(tǒng)的設(shè)計(jì)就是為了保障我們?cè)诘管?chē)時(shí)的安全,為生活提供便捷和安全保障。本課題主要實(shí)現(xiàn)了在S3C2410平臺(tái)且安裝Linux操作系統(tǒng)的超聲波倒車(chē)?yán)走_(dá)防撞系統(tǒng)。旨在幫助駕駛員在倒車(chē)時(shí)解決盲區(qū)問(wèn)題,以及過(guò)失操作補(bǔ)救的自動(dòng)剎車(chē)。用于輔助駕駛員倒車(chē),做到保障人身和財(cái)產(chǎn)不受損失。通過(guò)S3C2410的GPP1引腳發(fā)出40HZ的脈沖來(lái)驅(qū)動(dòng)HC-SR04超聲波測(cè)距模塊發(fā)出超聲波。超聲波發(fā)出在碰見(jiàn)障礙物后會(huì)反射超聲波信號(hào),再由HC-SR04接收。HC-SR04的ECHO引腳就會(huì)發(fā)出高電平信號(hào),其高電平的時(shí)間就是超聲波從發(fā)出到反射后接收到的這段時(shí)間。S3C2410處理器會(huì)通過(guò)計(jì)算得到的數(shù)據(jù)進(jìn)行操作開(kāi)關(guān)報(bào)警、是否剎車(chē)以及數(shù)據(jù)顯示。本課題的顯示模塊采用顯示與采集分離模式,并且兩者之間采用無(wú)線(xiàn)通信,解決在愛(ài)車(chē)上的布線(xiàn)問(wèn)題。S3C2410使用串口連接WIFI模塊,把所要顯示的數(shù)據(jù)通過(guò)WIFI模塊發(fā)出。顯示模塊通過(guò)與WIFI模塊建立TCP連接,收發(fā)數(shù)據(jù)。實(shí)現(xiàn)無(wú)線(xiàn)數(shù)據(jù)傳輸功能。本課題所設(shè)計(jì)的汽車(chē)倒車(chē)防撞系統(tǒng)具有自動(dòng)剎車(chē)功能。在駕駛員過(guò)失操作或反應(yīng)不及時(shí)時(shí),自動(dòng)剎車(chē)功能會(huì)把住人身和財(cái)產(chǎn)安全的最后一關(guān)。本課題在同類(lèi)產(chǎn)品的基礎(chǔ)上加以完善和提高。得到了一些成果,但仍有一些問(wèn)題有待改善:1、探測(cè)可能存在探測(cè)盲區(qū)??赡軐?duì)過(guò)于低矮的障礙物、過(guò)細(xì)的障礙物、溝坎等檢測(cè)不到距離。由于傳感器的精度和個(gè)數(shù)的問(wèn)題無(wú)法對(duì)反射面過(guò)小的障礙物進(jìn)行探測(cè)。傳感器的靈敏度和準(zhǔn)確度是同類(lèi)產(chǎn)品共同面對(duì)的難題。在此給出兩個(gè)較可行的解決方案:一、增加傳感器的個(gè)數(shù),進(jìn)行多方位的探測(cè)。二、使用更靈敏的傳感器。2、由于溫度對(duì)超聲波的傳播速度有影響,測(cè)量的距離與實(shí)際距離存在誤差。解決方案:在倒車(chē)系統(tǒng)上增加溫度補(bǔ)償功能。通過(guò)畢業(yè)設(shè)計(jì),我對(duì)嵌入式系統(tǒng)有一個(gè)重新的認(rèn)識(shí)。這也是對(duì)我的專(zhuān)業(yè)知識(shí)和基礎(chǔ)的一次實(shí)質(zhì)性的檢查和鞏固,同樣也是走向工作崗位前的一次熱身。在畢設(shè)過(guò)程中收獲很多。碰見(jiàn)問(wèn)題時(shí)很懊惱,但只要有一顆想解決問(wèn)題的心,只要耐著心思去分析,研究問(wèn)題就會(huì)得到解決。在設(shè)計(jì)中要保持清新的頭腦,考慮問(wèn)題要全面。還要不斷的去學(xué)習(xí),不斷的接受新事物。也讓自己的思想不斷的得到修正和提高。參考文獻(xiàn)[1]鄭強(qiáng).linux驅(qū)動(dòng)開(kāi)發(fā)入門(mén)與實(shí)戰(zhàn)[M],清華大學(xué)出版社,2002[2]徐千祥.LinuxC函數(shù)庫(kù)參考手冊(cè)[M],中國(guó)青年出版社,2002[3]博韋等.深入理解Linux內(nèi)核[M],中國(guó)電力出版社,2004[4]飛凌嵌入式[EB/OL]./forum.php,2014[5]卡爾弗特(KennethL.Calvert).JavaTCP/IPSocket編程[M],機(jī)械工業(yè)出版社,2004[6]董敏學(xué).汽車(chē)倒車(chē)碰撞防止系統(tǒng)設(shè)計(jì)[M],上海汽車(chē),2001.11[7]趙克佳,趙慧.UNIX程序設(shè)計(jì)教程[M],清華大學(xué)出版社,2001[8]徐千祥.LinuxC函數(shù)庫(kù)參考手冊(cè)[M],中國(guó)青年出版社,2002[9]WendyBoggs,MichaelBoggs.UML與RationalRose2002從入門(mén)到精通[M],電子工業(yè)出版社,2002[10]趙克佳,趙慧.UNIX程序設(shè)計(jì)教程[M],清華大學(xué)出版社,2001致謝在整個(gè)畢業(yè)設(shè)計(jì)的各個(gè)階段我都得到了張陽(yáng)老師、張新強(qiáng)老師和葉華高級(jí)工程師的悉心指導(dǎo)和耐心幫助。他們給了我許多非常有益的建議和意見(jiàn)。使我在思路上得到很大的開(kāi)闊,并從中認(rèn)識(shí)到自己的不足,學(xué)到了很多解決問(wèn)題和學(xué)習(xí)的方法。張陽(yáng)老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和踏實(shí)的工作作風(fēng)給我留下了非常深刻的印象。張新強(qiáng)老師的耐心指導(dǎo)給我在解決問(wèn)題上有很大的幫助。通過(guò)這次的課程設(shè)計(jì)讓我更深刻的懂得道理:做學(xué)問(wèn)應(yīng)以科學(xué)嚴(yán)禁的態(tài)度,腳踏實(shí)地的認(rèn)真去做,不可眼高手低,急功近利。這些都讓我受益匪淺,大大的激勵(lì)了我。能夠在緊張的時(shí)間里完成我的畢業(yè)設(shè)計(jì),要感謝學(xué)校給我們提供的有優(yōu)約的學(xué)校條件和四年來(lái)各位老師對(duì)我的栽培。也感謝同學(xué)們?cè)谠O(shè)計(jì)中給予我的幫助和支持。最后感謝各位老師對(duì)我的論文的悉心審閱與批評(píng)指正。附錄A超聲波驅(qū)動(dòng)代碼:#include<linux/module.h>#include<linux/kernel.h>#include<linux/fs.h>#include<linux/init.h>#include<linux/delay.h>#include<linux/poll.h>#include<linux/interrupt.h>#include<linux/clk.h>#include<linux/cdev.h>#include<linux/device.h>#include<linux/miscdevice.h>#include<linux/irq.h>#include<linux/timer.h>#include<linux/sched.h>#include<linux/slab.h>#include<asm/irq.h>#include<asm/io.h>#include<asm/mach/time.h>#include<asm/uaccess.h>#include<plat/regs-timer.h>#include<plat/gpio-cfg.h>#include<plat/map-base.h>#include<mach/regs-gpoio.h>#include<mach/irq.h>#include<mach/gpoio.h>#include<mach/hardware.h>#include<mach/gpio-bank-e.h>#include<mach/gpio-bank-f.h>#include<mach/gpio-bank-k.h>#include<mach/gpio-bank-p.h>#include<mach/regs-irq.h>#defineDEVICE_NAME "super"#defineDEVICE_MAJOR "100"voidpolling_handler(void){ intinter_flag=0; inti=0; staticchar*device_name=DEVICE_NAME; staticintdevice_major=DEVICE_MAJOR; staticstructsemaphorelock; structtimer_listpolling_timer; unsignedlongtcnt; unsignedtcon; unsignedlongtcnt; unsignedlongtcno; unsignedlongs;}structdevice_dev{structcdevcdev;intdata;};structdevice_dev*device_devp;voidtimerinit(void){ unsignedlongtcfg1; unsignedlongtcfg0; unsignedlongcstat; s3c_gpio_cfgpin(S3C24XX_GPL(8),S3C_GPIO_SFN(3)); irq_set_irq_type(IRQ_EINT(16),IRQ_TYPE_EDGE_RISNG); s3c_gpio_setpull(S3C24XX_GPL(8),S3C_GPIO_PULL_DOWN); s3c_gpio_cfgpin(S3C24XX_GPP(8),S3C_GPIO_OUTPUT); /*Timer1confgi*/ init_timer(&polling_timer); polling_timer.data=0; polling_timer.function=polling_handler; polling_timer.expires=jiffies+HZ; add_timer(&polling_timer); /*Timer2config*/ tcfg0=_raw_readl(S3C_TCFG0); tcfg1=_raw_readl(S3C_TCFG1); tcfg0&=~S3C_TCFG_PRESCALER1_MASK; tcfg1|=(23<<8);//PRESCALER=23 tcfg1&=~S3C_TCFG1_MUX2_MASK; tcfg1|=S3C_TCFG1_MUX2_DIV16; _raw_writel(tcfg0,S3C_TCFG0); _raw_writel(tcfg1,S3C_TCFG1); tcnt=5000; _raw_writel(tcnt,S3C_TCNTB(2)); cstat=_raw_readl(S3C_TINT_CSTAT); cstat|=S3C_TINT_CSTAT_T2INTEN; _raw_writel(cstat,S3C_ITINT_CSTAT); printk(KERN_INFO"\superconfigsuccessz1\n");}voidpolling_handler(void){ gpio_set_value(S3C24XX_GPP(8),1); mdelay(100); gpio_set_value(S3C24XX_GPP(8),1); polling_timer.expires=jiffies+HZ/40; add_timer(&polling_timer);}irqreturn_tsinplekey_interrupt(intirq,void*dev_id){ tcon=_raw_readl(S3C_TOCN); tcon=(tcon&~(0xf<<12))|(0xf<<12)); _raw_writel(tcn,S3C_TCON); while(gpio_get_value(S3C24XX_GPL(8))==1); tcon=_raw_readl(S3C_TOCN); tcon&=~S3C_TCON_T2START; _raw_writel(tcon,S3C_TCON); tcnt=__raw__readl(S3C_TCNTB(2)); tcno=__raw__readl(S3C_TCNTO(2)); S=tcnt-tcno; device_devp->data=s; returnIRQ_HANDLED;}staticintultrasonic_open(structinode*inode,structfile*filp){ file->private_data=device_devp; if(down_trylock(&lock)) return-EBUSY; return0;}staticintultrasonic_read(structfile*filp,char___user*ubf,size_tsize,loff_t*ppos){ structdevice_dev*dev=filp->private_data; copy_to_user(buf,&dev->data,sizeofdev->data); return0;}staticintultrasonic_close(structinode*inode,structfile*file){ up(&lock); free_irq(IRQ_ENIT(16),NULL); printk("SUPERCOLSE!\n"); return0;}staticvoiddevice_setup_cdev(structdevice_dev*dev,intindex){ interr,devno=MKDEV(device_major,index); cdev_init(&dev->dev,&device_fops); dev->cdev.owner=THIS_MODOULE; err=cdev_add(&dev->dev,devno,1); if(err) printk(KERN_NOTICE"Error%daddingultrasinic%d\n",err,index);}staticint__initdevice_init(void){ intret=0,irq_singl=1; dev_tdevno=MKDEV(device_major,0); init_MUTEX(&lock); timerinit(); irq_singl=request_irq(IRQ_EINT(16),&simplekey_interrupt,IRQF_DISABLED,DEVICE_NAME,NULL); if(irq_singl) { printf(KERN_INFL"requestbuttonirqfailed!\n"); return0; } printk("SUPERDRIVEMODULEINITBEGIN\n"); printk(KERN_INFO"modelname:%S\n,device_name"); printk(KERN_INFO"modelmajor:%d,device_major"); if(device_major) ret=register_chrdev_region(devno,1,device_name); else { ret=alloc_chrdev_region(&devno,0,1,device_name); device_major=MAJOR(devno); } if(ret<0) returnret; device_devp=kmalloc(sizeof(structdevice_dev),GFP_KERNEL); if(!device_devp) { ret=-ENOMEM; gotofail_malloc; } memset(device_devp,0,sizeof(structdevice_dev)); device_setup_cdev(device_devp,0); printk(DEVICE_NAME"super!\n"); return0; fail_malloc: unregister_chrdev_region(devno,1); returnret;}staticvoid__exitdevice_exit(void){ cdev_del(&device_devp->cdev); kfree(device_dev

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論