自動(dòng)跟隨智能小車(chē)的定位與跟隨系統(tǒng)設(shè)計(jì)_第1頁(yè)
自動(dòng)跟隨智能小車(chē)的定位與跟隨系統(tǒng)設(shè)計(jì)_第2頁(yè)
自動(dòng)跟隨智能小車(chē)的定位與跟隨系統(tǒng)設(shè)計(jì)_第3頁(yè)
自動(dòng)跟隨智能小車(chē)的定位與跟隨系統(tǒng)設(shè)計(jì)_第4頁(yè)
自動(dòng)跟隨智能小車(chē)的定位與跟隨系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

北京理工大學(xué)珠海學(xué)院2020屆本科生畢業(yè)設(shè)計(jì)緒論1.1引言隨著5G時(shí)代的到來(lái),現(xiàn)代網(wǎng)絡(luò)通信技術(shù)相較十幾年前已經(jīng)有了質(zhì)的飛躍。全球智能化的浪潮使得現(xiàn)代社會(huì)逐漸朝著智能社會(huì)不斷發(fā)展,人工智能的逐漸普及,讓智能化的生活離人們?cè)絹?lái)越近。許多智能小車(chē)的設(shè)計(jì)都具有自主巡線的功能,自動(dòng)尋跡小車(chē)等各種各樣的智能小車(chē)在大學(xué)生的課余科技活動(dòng)中扮演著不可缺少的角色,但是大多數(shù)智能小車(chē)只是完成了基本部分的功能,只實(shí)現(xiàn)了按照既定路線行駛的基本功能,而在跟隨性方面的考慮較少,大多數(shù)都沒(méi)有實(shí)現(xiàn)跟隨性的方面的功能。自動(dòng)跟隨智能小車(chē)定位與跟隨系統(tǒng)是指在自動(dòng)跟隨智能小車(chē)在開(kāi)啟跟隨模式時(shí),能夠自動(dòng)識(shí)別出被跟隨物體的所在方位,利用核心控制系統(tǒng)及跟隨控制系統(tǒng)對(duì)被跟隨物體進(jìn)行一定距離的自動(dòng)跟隨的系,是基于機(jī)械結(jié)構(gòu)、計(jì)算機(jī)技術(shù)及自動(dòng)控制原理設(shè)計(jì)運(yùn)行控制的系統(tǒng)。1.2智能小車(chē)現(xiàn)狀研究1.2.1國(guó)外研究現(xiàn)狀如圖1.1所示,有人設(shè)計(jì)出了自動(dòng)跟隨高爾夫球球童車(chē),這款高爾夫球球童自動(dòng)跟隨車(chē)車(chē)上可以攜帶高爾夫球袋及各種日常用品并自動(dòng)跟隨主人行駛。當(dāng)主人戴上一個(gè)發(fā)射器向小車(chē)持續(xù)發(fā)送無(wú)線信號(hào),當(dāng)小車(chē)接收到無(wú)線信號(hào)后,就會(huì)自動(dòng)跟隨主人行駛,操作十分的簡(jiǎn)單。這樣的自動(dòng)跟隨高爾夫球球童車(chē)更夠極大的減輕人的負(fù)擔(dān),也能節(jié)約對(duì)于球童的人力開(kāi)支。圖1.1國(guó)外的自動(dòng)跟隨高爾夫球球童車(chē)在汽車(chē)跟隨的領(lǐng)域,如今自動(dòng)駕駛技術(shù)大多數(shù)都是運(yùn)用小轎車(chē)上,未來(lái)將會(huì)有越來(lái)越多的小轎車(chē)添加自動(dòng)駕駛技術(shù)。在現(xiàn)代物流運(yùn)輸?shù)刃袠I(yè)中,大貨車(chē)駕駛員往往需要在貨物的長(zhǎng)途運(yùn)輸時(shí)長(zhǎng)時(shí)間的工作,會(huì)導(dǎo)致在精神或者體力上都產(chǎn)生較大的消耗,這樣極為容易導(dǎo)致疲勞駕駛的出現(xiàn)。貨車(chē)產(chǎn)生交通事故的很大一部分原因是疲勞駕駛。如果將自動(dòng)跟隨駕駛技術(shù)運(yùn)用到物流行業(yè)的貨車(chē)中,將會(huì)使這種非常容易產(chǎn)生疲勞駕駛的現(xiàn)狀,得到有效的解決。國(guó)外有人研發(fā)了自動(dòng)跟隨的自動(dòng)駕駛卡車(chē)。如圖1.2所示,由佩洛頓(Peloton)公司研發(fā)的一種卡車(chē)自動(dòng)跟隨技術(shù)REF_Ref23076\r\h[1],現(xiàn)在已經(jīng)有了多個(gè)車(chē)隊(duì)使用這種技術(shù)。圖1.2自動(dòng)跟隨卡車(chē)這項(xiàng)技術(shù)是佩洛頓科技建立在佩洛頓pro駕駛跟隨技術(shù)之上的。這項(xiàng)技術(shù)只要應(yīng)用在了2輛或者更多的卡車(chē)車(chē)隊(duì)中,就可以使前車(chē)的駕駛員既可以駕駛自己的卡車(chē)向前行駛,同時(shí)還可以使后面的另一輛卡車(chē)被前車(chē)司機(jī)間接控制著一起行走。這樣后方駕駛員可以在感覺(jué)到疲勞時(shí)將控制權(quán)交給前車(chē)駕駛員,從而獲得休息的時(shí)間,當(dāng)前面的駕駛員感覺(jué)到疲勞時(shí),也可以與后車(chē)司機(jī)輪換位置。這種自動(dòng)駕駛技術(shù),可以使卡車(chē)在一定程度上不需要人的控制,使后車(chē)真正的實(shí)現(xiàn)了自動(dòng)駕駛的目的。這項(xiàng)技術(shù)基于在多輛卡車(chē)間建立V2V通信,在所有卡車(chē)上安裝雷達(dá)的主動(dòng)制動(dòng)系統(tǒng)。后車(chē)在接收到前車(chē)發(fā)送的數(shù)據(jù)后,經(jīng)過(guò)后車(chē)的控制計(jì)算機(jī)的處理可以使后車(chē)模仿前車(chē)包括前進(jìn)、轉(zhuǎn)彎、制動(dòng)在內(nèi)的所有操作從而實(shí)現(xiàn)兩輛卡車(chē)可以向前同時(shí)行駛的功能。如圖1.3所示,這是一種由谷歌公司所研發(fā)的不依賴人類駕駛的無(wú)人駕駛小車(chē)REF_Ref23105\r\h[2]。圖1.3由谷歌研發(fā)的無(wú)人駕駛小車(chē)這些無(wú)人駕駛小車(chē)還沒(méi)有真正的應(yīng)用,目前仍處于開(kāi)發(fā)和實(shí)驗(yàn)的階段。它們的基本工作原理是激光測(cè)距傳感器向四周發(fā)車(chē)激光,當(dāng)激光碰到四周的障礙物時(shí)會(huì)返回接受,通過(guò)對(duì)整個(gè)過(guò)程時(shí)間的計(jì)算可以得出小車(chē)和小車(chē)四周障礙物的相對(duì)距離。通過(guò)對(duì)于四周障礙物的距離探測(cè)可以實(shí)現(xiàn)小車(chē)對(duì)于當(dāng)前道路的交通狀況的“觀察”。小車(chē)使用谷歌地圖的詳細(xì)定位數(shù)據(jù)可以計(jì)算出車(chē)輛的具體位置,實(shí)現(xiàn)為無(wú)人駕駛小車(chē)導(dǎo)航的功能。通過(guò)小車(chē)上的計(jì)算機(jī)對(duì)于小車(chē)“觀察”到的數(shù)據(jù)和小車(chē)的定位導(dǎo)航數(shù)據(jù)進(jìn)行高速的處理,從而實(shí)現(xiàn)小車(chē)的自動(dòng)駕駛。1.2.2國(guó)內(nèi)研究現(xiàn)狀如圖1.4所示,類似于電影拍攝的跟隨攝影小車(chē),或者比賽場(chǎng)地上的跟隨攝影車(chē)。這一類跟隨攝影小車(chē)一般需要工作人員提前鋪設(shè)好小車(chē)的行駛軌道,小車(chē)只能在固定的行駛軌道上前進(jìn)或后退。通過(guò)對(duì)小車(chē)人為的控制或者圖像識(shí)別處理等方式,實(shí)現(xiàn)小車(chē)的跟隨拍攝。圖1.4跟隨攝影軌道車(chē)如圖1.5所示,國(guó)內(nèi)有公司推出了自動(dòng)跟隨行李箱,能夠通過(guò)與手機(jī)或者遙控器與行李箱之間的無(wú)線連接實(shí)現(xiàn)5米范圍內(nèi)行李箱的自動(dòng)跟隨。以上幾種產(chǎn)品雖然實(shí)現(xiàn)了自動(dòng)跟隨的功能,但它們都有著十分昂貴的價(jià)格,所以自動(dòng)跟隨的產(chǎn)品難以在大眾間普及。圖1.5自動(dòng)跟隨行李箱如圖1.6所示,由百度公司研發(fā)的無(wú)人駕駛汽車(chē)。圖1.6由百度研發(fā)的無(wú)人駕駛小車(chē)國(guó)內(nèi)的百度從2013年才開(kāi)始對(duì)無(wú)人駕駛汽車(chē)的開(kāi)發(fā)進(jìn)行研究。其基本的工作原理和谷歌的無(wú)人駕駛小車(chē)類似,采用多種傳感器對(duì)小車(chē)周?chē)沫h(huán)境進(jìn)行信息采集再通過(guò)智能計(jì)算機(jī)對(duì)與采集到信息進(jìn)行處理分析得到小車(chē)周?chē)牡缆沸畔?。結(jié)合百度地圖的定位信息和道路信息對(duì)小車(chē)進(jìn)行導(dǎo)航,為小車(chē)規(guī)劃出最佳的道路行駛方案。1.3室內(nèi)定位技術(shù)1.3.1WLAN(無(wú)線局域網(wǎng))技術(shù)無(wú)線局域網(wǎng)技術(shù)是一種現(xiàn)在已經(jīng)普及了的技術(shù)。相較于需要通過(guò)網(wǎng)線連接的有線局域網(wǎng)技術(shù),無(wú)線網(wǎng)絡(luò)技術(shù)使用無(wú)線電波的方式搭建網(wǎng)絡(luò)。這樣的優(yōu)勢(shì)在于可以節(jié)約大量的布線成本,同時(shí)優(yōu)化了用戶的上網(wǎng)體驗(yàn)。無(wú)線網(wǎng)絡(luò)通常選擇利用無(wú)線路由器來(lái)建立。無(wú)線路由器向各個(gè)方向持續(xù)發(fā)送無(wú)線電波,在電波覆蓋范圍內(nèi)的智能電子設(shè)備便可以連接到無(wú)線網(wǎng)絡(luò)。由于無(wú)線電波傳播時(shí)會(huì)受到傳播介質(zhì)(大多數(shù)時(shí)候是空氣)和各種障礙的阻擋或者吸收從而產(chǎn)生衰減,當(dāng)智能設(shè)備與無(wú)線路由器之間的間隔距離越遠(yuǎn),信號(hào)強(qiáng)度就會(huì)變得越低。現(xiàn)代無(wú)線網(wǎng)絡(luò)通常采用的頻段一個(gè)是2.4GHz,另外一個(gè)是5GHz。因?yàn)轭l率的提高,5GHz的無(wú)線網(wǎng)絡(luò)頻段干擾遠(yuǎn)小于2.4GHz的無(wú)線網(wǎng)絡(luò),網(wǎng)絡(luò)傳輸速率也更高,但是覆蓋范圍和穿墻能力要更弱。WLAN室內(nèi)定位具有定位精度高、部署成本低、適用性廣、應(yīng)用開(kāi)發(fā)廣泛的特點(diǎn)REF_Ref23242\r\h[3]。無(wú)線局域網(wǎng)定位技術(shù)的基本原理是通過(guò)計(jì)算多個(gè)信號(hào)點(diǎn)的接收信號(hào)強(qiáng)度(RSSI)得出信號(hào)發(fā)出點(diǎn)與接收點(diǎn)的相對(duì)距離,從而確定信號(hào)發(fā)出點(diǎn)的具體位置。1.3.2ZigBee技術(shù)ZigBee又名紫峰協(xié)議。是現(xiàn)代誕生的一種較為新的技術(shù)。具有低能耗,低成本,網(wǎng)上節(jié)點(diǎn)數(shù)量多等特點(diǎn)。ZigBee技術(shù)依賴于一種特殊的標(biāo)準(zhǔn),使得它可以實(shí)現(xiàn)成千上萬(wàn)個(gè)微型傳感器之間的協(xié)調(diào)通信。這種低功耗,數(shù)量龐大的組網(wǎng)方式就是ZigBee無(wú)線通信技術(shù)最大的優(yōu)勢(shì)。在大多數(shù)無(wú)線數(shù)據(jù)傳輸過(guò)程中,都會(huì)出現(xiàn)信號(hào)沖突和傳輸不穩(wěn)定的情況。ZigBee技術(shù)采用了一種防止發(fā)生沖突的辦法,這種沖突防止的辦法可以使ZigBee技術(shù)的無(wú)線傳輸更加穩(wěn)定從而更好的保證了數(shù)據(jù)的安全傳輸。ZigBee對(duì)數(shù)據(jù)的處理采用了加密的方式,在一定程度上來(lái)說(shuō),其安全性比藍(lán)牙技術(shù)好REF_Ref23830\r\h[4]。在ZigBee應(yīng)用于定位技術(shù)的方面,現(xiàn)在已有類似于隧道人員定位等的多種應(yīng)用。這種定位方式通過(guò)多個(gè)測(cè)距基站向需要定位的定位標(biāo)簽發(fā)送測(cè)距信號(hào),通過(guò)對(duì)于距離不同基站不同距離的計(jì)算方式,得到定位標(biāo)簽所在的具體位置。在使用ZigBee定位技術(shù)時(shí),往往只需要很低的能耗就可以使ZigBee持續(xù)不斷的工作。1.3.3UWB(超寬帶)技術(shù)超帶寬技術(shù)是一種先進(jìn)的無(wú)線通信技術(shù)。在傳統(tǒng)的窄帶和寬帶通信系統(tǒng)中,一般使用連續(xù)的電磁波作為載波REF_Ref4334\r\h[5]。超寬帶技術(shù)使用的不是正弦波載波而是選擇超寬基帶脈沖用于傳輸數(shù)據(jù),這樣能夠使得超寬帶技術(shù)的頻譜范圍變大。由于超帶寬技術(shù)具有非常大的帶寬,所以使得超帶寬技術(shù)能夠有相當(dāng)可觀的數(shù)據(jù)傳輸速率。超帶寬技術(shù)的數(shù)據(jù)傳輸效率和數(shù)據(jù)處理能力比傳統(tǒng)無(wú)線傳輸更加優(yōu)秀。在無(wú)線定位的解決方案中,近年來(lái)越來(lái)越多的利用超寬帶技術(shù)進(jìn)行方案設(shè)計(jì)。這樣的優(yōu)點(diǎn)使得超帶寬技術(shù)能夠作為一種優(yōu)秀的解決辦法出現(xiàn)在對(duì)于定位精度要求較高的應(yīng)用場(chǎng)合,但是超寬帶技術(shù)無(wú)線定位的成本相較于其他解決方案會(huì)更高。1.3.4藍(lán)牙技術(shù)藍(lán)牙技術(shù)是一種短距離的無(wú)線通信技術(shù)。二戰(zhàn)時(shí)期無(wú)線電通訊技術(shù)在戰(zhàn)場(chǎng)上被用作無(wú)線通訊系統(tǒng)。在后來(lái)的藍(lán)牙、Wi-Fi等移動(dòng)通訊系統(tǒng)上,跳頻擴(kuò)頻(FHSS)技術(shù)為無(wú)線數(shù)據(jù)收發(fā)問(wèn)題的解決發(fā)揮了不可缺少的關(guān)鍵作用。藍(lán)牙技術(shù)最初方案是為了研究在各種智能設(shè)備和智能元器件間搭建一種低功耗、低成本的無(wú)線通信連接。最初的目的是為各種智能設(shè)備和智能元器件間的無(wú)線通訊創(chuàng)造統(tǒng)一的規(guī)則也就是協(xié)議的標(biāo)準(zhǔn)化。一旦有了標(biāo)準(zhǔn)化的通信協(xié)議就可以很好的解決各種不用的智能設(shè)備間兼容問(wèn)題。在連接的方式上,藍(lán)牙設(shè)備無(wú)需像紅外設(shè)備一樣口對(duì)口的進(jìn)行通訊,只需要互相連接的藍(lán)牙設(shè)備處于有效通訊范圍內(nèi),極大地簡(jiǎn)單化了設(shè)備的連接方式,使用戶們的使用體驗(yàn)更加的方便,同時(shí)藍(lán)牙技術(shù)比其他紅外設(shè)備的傳輸速率更快,效率也更高。1999年,其使用的無(wú)線頻段正式確定為2.4GHz,這個(gè)頻段屬于微波頻段,同時(shí)具有傳輸過(guò)程穩(wěn)定,傳輸速率較快的優(yōu)點(diǎn),這樣就能在更加短的時(shí)間之內(nèi)傳輸信息量更為龐大的數(shù)據(jù)。因?yàn)閭鬏斝实奶岣?,從而降低了設(shè)備工作時(shí)產(chǎn)生的能耗。就在剛剛過(guò)去的2019年,北歐集成電路公司(nordic)通過(guò)了NRF52811芯片的內(nèi)部測(cè)試,這個(gè)芯片可以在一定程度上被稱為“室內(nèi)定位技術(shù)中的王者”。這是北歐集成電路公司(nordic)首款采用了最新的藍(lán)牙5.1技術(shù)的室內(nèi)定位SoC(System-on-a-Chip)芯片。這款芯片可以擴(kuò)展例如藍(lán)牙5.1定向查找、專有2.4GHz頻段等的很多不同功能。藍(lán)牙5.1定位技術(shù)具有測(cè)向的功能,這使得室內(nèi)定位技術(shù)的方案可以通過(guò)信號(hào)發(fā)出的實(shí)際方向進(jìn)行解決,而不是像傳統(tǒng)方案一樣只能僅僅局限與接收信號(hào)強(qiáng)度(RSSI)。1.4選題的研究意義現(xiàn)代社會(huì)逐漸注重智能化發(fā)展,近年來(lái)快遞、物流行業(yè)發(fā)展迅速。如圖1.7所示,在快遞倉(cāng)庫(kù)里,很多AGV車(chē)在貨物搬運(yùn)方面占據(jù)了很大部分。通過(guò)在地上鋪設(shè)的電磁軌道,AGV小車(chē)能夠獲取到與自身相關(guān)的工作信息,聽(tīng)從核心計(jì)算機(jī)的指令在倉(cāng)庫(kù)中快速的移動(dòng)。這樣可以很好的幫助快遞行業(yè)運(yùn)輸貨物從而提高貨物搬運(yùn)的效率,為其他工作節(jié)約時(shí)間。這類小車(chē)的工作原理就和尋跡小車(chē)大致相同,但是目前還是具有造價(jià)昂貴的缺點(diǎn)。圖1.7天貓倉(cāng)庫(kù)的AGV小車(chē)本文選題的自動(dòng)跟隨智能小車(chē),基于使用現(xiàn)代化的智能設(shè)備,解放人類勞動(dòng)力的理念,利用當(dāng)前普及的藍(lán)牙通信技術(shù)嘗試設(shè)計(jì)出可以自動(dòng)跟隨指定的被跟隨物體自動(dòng)行走的小車(chē)。如果添加載物功能,便能極大的方便倉(cāng)庫(kù)工作人員對(duì)于貨品的管理甚至是組建運(yùn)輸小車(chē)陣列,這樣就能夠替代造價(jià)高昂的AGV小車(chē)?;蚴窃诳爝f派送的時(shí)候?yàn)榭爝f員減輕負(fù)擔(dān)?;蚴歉脑斐蔁o(wú)需人力推動(dòng)的跟隨式購(gòu)物小車(chē),方便人們?cè)诔欣镔?gòu)物。自動(dòng)跟隨智能小車(chē)具有較為廣泛的應(yīng)用前景及商業(yè)市場(chǎng)。本文設(shè)計(jì)的自動(dòng)跟隨智能小車(chē)使用的各種傳感器的成本低廉,使用便宜且簡(jiǎn)單的各種傳感器就可以實(shí)現(xiàn)自動(dòng)跟隨智能小車(chē)行駛、避障、跟隨的各種功能。小車(chē)核心控制芯片為STM32芯片,是現(xiàn)在較為普及的單片機(jī)芯片,可編程程度高,核心控制技術(shù)比較的成熟,被廣泛運(yùn)用于各種商業(yè)產(chǎn)品當(dāng)中。小車(chē)通過(guò)無(wú)線通信與被跟隨物體進(jìn)行無(wú)線數(shù)傳,具有較短的通訊延遲時(shí)間和較快的數(shù)據(jù)傳輸速率。1.5本文的主要工作本文將研究設(shè)計(jì)一款注重要求小車(chē)跟隨主人的自動(dòng)跟隨智能小車(chē)。研究其核心控制結(jié)構(gòu)、定位方式、跟隨方式,從而設(shè)計(jì)出自動(dòng)跟隨智能小車(chē)的核心控制系統(tǒng)、定位跟隨系統(tǒng)。(1)搭建自動(dòng)跟隨智能小車(chē)的自動(dòng)避障系統(tǒng)和定位跟隨系統(tǒng)通過(guò)對(duì)各種傳感器、無(wú)線模塊進(jìn)行調(diào)查研究,為小車(chē)自動(dòng)避障系統(tǒng)和定位跟隨系統(tǒng)的搭建選擇合適的元器件,通過(guò)元器件與STM32單片機(jī)的連接,構(gòu)建出小車(chē)的自動(dòng)避障系統(tǒng)和定位跟隨系統(tǒng)。(2)對(duì)自動(dòng)跟隨智能小車(chē)的自動(dòng)避障系統(tǒng)進(jìn)行研究設(shè)計(jì)出自動(dòng)跟隨智能小車(chē)在行駛過(guò)程中的避障系統(tǒng)。在小車(chē)行駛過(guò)程中,小車(chē)通過(guò)各種傳感器對(duì)于障礙物進(jìn)行檢測(cè),在檢測(cè)行駛前方存在障礙物時(shí),小車(chē)將自動(dòng)停止行駛。只能倒退行駛,或是在排除障礙物后繼續(xù)行駛。(3)對(duì)自動(dòng)跟隨智能小車(chē)的定位與跟隨系統(tǒng)進(jìn)行研究對(duì)于自動(dòng)跟隨智能小車(chē)在跟隨過(guò)程中的被跟隨物體進(jìn)行定位。在小車(chē)開(kāi)啟跟隨行駛模式后,小車(chē)需要判斷被跟隨的方向等參數(shù),這需要定位系統(tǒng)對(duì)于被跟隨物體與小車(chē)的相對(duì)位置進(jìn)行判定,經(jīng)過(guò)計(jì)算處理后得出小車(chē)的行駛方向。通過(guò)對(duì)于被跟隨物體的實(shí)時(shí)定位,跟隨系統(tǒng)將對(duì)小車(chē)的行駛軌跡進(jìn)行角度、速度的修正,從而實(shí)現(xiàn)跟隨的功能。

2自動(dòng)跟隨智能小車(chē)整體設(shè)計(jì)2.1自動(dòng)跟隨智能小車(chē)結(jié)構(gòu)部分如圖2.1所示,本文設(shè)計(jì)的自動(dòng)跟隨智能小車(chē)底座采用亞克力材質(zhì)。亞克力又稱有機(jī)玻璃,亞克力是一種具有很好的化學(xué)穩(wěn)定性和透光性的高分子材料。亞克力板良好的透光性能夠讓在對(duì)各種電子元件調(diào)試的時(shí)候進(jìn)行更好的觀察。另外亞克力板的硬度很高,耐磨性好。亞克力板的堅(jiān)固能夠很好的支撐起整個(gè)小車(chē)的重量而且不易變形。圖2.1自動(dòng)跟隨智能小車(chē)底座底板兩測(cè)為2個(gè)電機(jī)的安裝留有位置。底板前部為扇形結(jié)構(gòu),留有多個(gè)M3孔洞便于各種傳感器和電子元件的安裝。后部為萬(wàn)向輪的安裝留有4個(gè)M3孔洞位置。相比較于驅(qū)動(dòng)小車(chē)行駛的大車(chē)輪,萬(wàn)向輪的體積較小。為了保持小車(chē)底板的水平,在萬(wàn)向輪和小車(chē)底板間使用4根長(zhǎng)度為10mm的M3銅柱進(jìn)行連接。在調(diào)試過(guò)程做發(fā)現(xiàn),萬(wàn)向輪會(huì)導(dǎo)致小車(chē)實(shí)際的行駛路線與預(yù)期的行駛路線產(chǎn)生一定的偏差,尤其是在轉(zhuǎn)向或者后退的時(shí)候,小車(chē)會(huì)產(chǎn)生非自主性的轉(zhuǎn)向。于是使用2根M3銅柱將萬(wàn)向輪的旋轉(zhuǎn)角度固定,限制萬(wàn)向輪的角度轉(zhuǎn)動(dòng)使其近似的變?yōu)槎ㄏ蜉?。在自?dòng)跟隨智能小車(chē)底座的左右兩側(cè)預(yù)留了用于固定電機(jī)的亞克力板插槽位置。電機(jī)與底座之間通過(guò)螺栓、螺母和亞克力板進(jìn)行固定。小車(chē)的車(chē)輪選用直徑65mm的橡膠車(chē)輪。車(chē)輪內(nèi)部輪轂為塑料材質(zhì),塑料材質(zhì)堅(jiān)硬的特點(diǎn)可以保證車(chē)輪能夠承受小車(chē)的整體重量。車(chē)輪胎面為橡膠材質(zhì),橡膠的特性既可以車(chē)輪保證承重的能力,一定的柔韌程度又可以為小車(chē)行駛的時(shí)候提供足夠的摩擦力。小車(chē)上層板為一塊PCB萬(wàn)用板。用于放置單片機(jī)等核心控制的電子元件。以及布置各種元器件之間的跳線。上層PCB板通過(guò)M3銅柱與底層亞克力底座連接,使用螺絲、螺母進(jìn)行固定。2.2自動(dòng)跟隨智能小車(chē)驅(qū)動(dòng)部分2.2.1驅(qū)動(dòng)電機(jī)電機(jī)作為小車(chē)重要的驅(qū)動(dòng)元件,堅(jiān)固耐用是必須考慮的因素。小車(chē)的驅(qū)動(dòng)電機(jī)選用相較于步進(jìn)電機(jī)而言更加便宜的直流電 機(jī)。直流電機(jī)的馬達(dá)在3V空載的情況下能達(dá)到每分鐘4800轉(zhuǎn)。電機(jī)內(nèi)部采用雙軸減速比為48:1減速機(jī)構(gòu)。經(jīng)過(guò)減速機(jī)構(gòu)的減速后,電機(jī)在3V空載的情況下輸出轉(zhuǎn)速為每分鐘100轉(zhuǎn)。適合自動(dòng)跟隨智能小車(chē)速度不宜太快的應(yīng)用場(chǎng)景。經(jīng)過(guò)減速器減速后的電機(jī)扭矩比減速前的電機(jī)扭矩更大,適合于需要小車(chē)載重行駛的應(yīng)用場(chǎng)景。2.2.2驅(qū)動(dòng)電源電池作為小車(chē)重要的供能元件,長(zhǎng)久的續(xù)航能力是必須考慮的因素。鋰充電電池是目前市面上使用范圍較廣,使用場(chǎng)合極多的一種電池。鋰充電電池主要有兩種。鋰離子充電電池的成本相較于鋰聚合物充電電池的成本更加低,所以使用的場(chǎng)景往往會(huì)多過(guò)鋰聚合物電池。因?yàn)殇嚲酆衔镫姵氐陌踩阅芤蠕囯x子電池更加高,所以鋰聚合物電池的價(jià)格往往也會(huì)高于鋰離子電池。通常運(yùn)用在給類似于手機(jī)、電腦等成本和安全需求都比較高電子產(chǎn)品中。目前市面上常見(jiàn)的電池種類還有鉛酸電池、鎳氫電池等等。如圖2.2所示,本文出于對(duì)成本及硬件部分的電壓、電流使用需求,選用2節(jié)電池組成驅(qū)動(dòng)小車(chē)的電源電池組。2節(jié)14500鋰離子充電電池安裝在智能小車(chē)底部的電池座,通過(guò)串聯(lián)的方式為小車(chē)供電。14500鋰離子充電電池在充滿電后能夠達(dá)到4V的輸出電壓,能夠支持小車(chē)的正常工作。圖2.214500鋰離子充電電池2.3自動(dòng)跟隨智能小車(chē)控制部分2.3.1單片機(jī)目前市面上的8051單片機(jī),采用最多的一般是STC89C51和AT89C51芯片,這兩款8位的單片機(jī)芯片結(jié)構(gòu)簡(jiǎn)單,普及的范圍比較廣。學(xué)習(xí)資料也比較豐富,能夠比較簡(jiǎn)單的獲得。但是8051單片機(jī)如果要使用AD轉(zhuǎn)換等功能往往需要在外部電路進(jìn)行擴(kuò)展,這會(huì)使得硬件部分變得更加復(fù)雜。8051單片機(jī)的IO口輸出電流往往十分的小,無(wú)法在高電平的時(shí)候連接負(fù)載進(jìn)行電流輸出工作。這使得8051單片機(jī)需要另外添加負(fù)載驅(qū)動(dòng)元件才能驅(qū)動(dòng)負(fù)載工作。另外8051單片機(jī)的工作速度也不算太快。相較于古老的89C51單片機(jī),STM32單片機(jī)是商用范圍更廣,性價(jià)比更高,功能更加強(qiáng)大的單片機(jī)。STM32單片機(jī)是以Cortex-M為內(nèi)核的32位單片機(jī)。STM32單片機(jī)對(duì)比于8051單片機(jī)具有很多的優(yōu)勢(shì)。在運(yùn)行速度上來(lái)比較,32位的STM32單片機(jī)一次能夠處理32位的數(shù)據(jù),這使得STM32單片機(jī)對(duì)于數(shù)據(jù)的處理效率提高了非常的多。而且STM32單片機(jī)不存在8051單片機(jī)IO引腳輸出高電平電流過(guò)小的缺點(diǎn),STM32單片機(jī)的IO引腳能夠直接連接負(fù)載進(jìn)行電流輸出的工作。根據(jù)本文對(duì)于自動(dòng)跟隨智能小車(chē)的實(shí)際功能的研究和開(kāi)發(fā)過(guò)程的需求,選擇STM32單片機(jī)作為自動(dòng)跟隨智能小車(chē)的主要控制元件。STM32使用串口通信接口實(shí)現(xiàn)串行通信,支持IIC、USART、SPI、CAN、USB等多種通訊協(xié)議。STM32單片機(jī)通常含有一個(gè)或多個(gè)通用異步收發(fā)器和通用同步收發(fā)器。如圖2.3所示,本文使用的STM32F407VET6芯片是一款基于ARM公司研發(fā)的Cortex-M4內(nèi)核的32位單片機(jī)。在芯片的全部名稱中,F(xiàn)的意思是芯片的子系列類型。407的意思是這一款芯片的具體型號(hào)。V的意思是這一款芯片一共有100根引腳。E的意思是這一款芯片的內(nèi)嵌Flash(閃存)容量為512K字節(jié)。T的意思是這一款芯片的封裝類型為L(zhǎng)QFP封裝。6的意思是這一款芯片的工作溫度范圍為零下40攝氏度至85攝氏度。另外這款芯片的具有3個(gè)通用的定時(shí)器。3個(gè)通用同步/異步串行接收/發(fā)送器,可接外圍設(shè)備有直接存儲(chǔ)器訪問(wèn),電機(jī)控制脈沖寬度調(diào)制,溫度傳感器,濕度傳感器等等。圖2.3STM32F407VET6芯片2.3.2L298N電機(jī)驅(qū)動(dòng)模塊如圖2.4所示,L298N電機(jī)驅(qū)動(dòng)模塊是目前使用較為廣泛的電機(jī)驅(qū)動(dòng)模塊。它可以通過(guò)單片機(jī)的IO引腳對(duì)于模塊的邏輯輸入實(shí)現(xiàn)對(duì)于2個(gè)電機(jī)的運(yùn)動(dòng)控制。電機(jī)驅(qū)動(dòng)模塊可以將12V的輸入電壓通過(guò)穩(wěn)壓芯片將至5V進(jìn)行輸出。通道A和通道B可以直接連接電機(jī)的正負(fù)極。通過(guò)4個(gè)邏輯輸入的引腳可以控制通道A和通道B的正負(fù)極。如果需要用到PWM對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行控制,可以將通道A使能和通道B使能的跳線帽拔出,改用PWM輸入使能通道A和通道B。圖2.4L298N電機(jī)驅(qū)動(dòng)模塊2.3.3PWM(脈沖寬度調(diào)制)脈沖寬度調(diào)制以一個(gè)特定的頻率不斷開(kāi)關(guān)電源。在一定的周期時(shí)間內(nèi),改變電源開(kāi)關(guān)的時(shí)間長(zhǎng)短,使得電源輸出中電壓的占空比發(fā)生改變。從而實(shí)現(xiàn)控制電源平均輸出的電壓的目的。通過(guò)這樣一種改變的方式可以達(dá)到例如控制小車(chē)的電機(jī)轉(zhuǎn)速、控制溫度、控制燈光亮度等的效果。在STM32芯片中使用PWM控制時(shí),通常使用定時(shí)器和中斷相結(jié)合的方式實(shí)現(xiàn)。通過(guò)定時(shí)器控制IO引腳的高電平輸出時(shí)間,從而實(shí)現(xiàn)對(duì)于平均電壓的調(diào)節(jié)的功能。在使用脈沖寬度調(diào)試的時(shí)候,需要注意一些特別的地方。在控制小車(chē)電機(jī)轉(zhuǎn)速的時(shí)候,如果輸出電壓的占空比過(guò)小,對(duì)導(dǎo)致電壓過(guò)小,可能達(dá)不到電機(jī)運(yùn)行的最小電壓導(dǎo)致無(wú)法驅(qū)動(dòng)電機(jī)工作。通過(guò)使能單片機(jī)控制小車(chē)電機(jī)的引腳采用PWM的工作方式。能夠?qū)崿F(xiàn)小車(chē)在轉(zhuǎn)向過(guò)程中的差速轉(zhuǎn)向。2.4自動(dòng)跟隨智能小車(chē)傳感器部分2.4.1紅外距離傳感器紅外線是一種不可見(jiàn)的電磁波。是生活中眾多的不可見(jiàn)的電磁波中的一種。紅外線在云霧中有著比可見(jiàn)光更強(qiáng)的穿透能力。在現(xiàn)代的科技領(lǐng)域中,紅外線的引用非常的廣泛的普遍。在醫(yī)學(xué)方面,紅外線的發(fā)熱能力普遍被用來(lái)制作醫(yī)用紅外線燈。紅外線對(duì)于皮膚具有一定的穿透能力,能夠?qū)崃繋У奖砥ひ韵?,具有促進(jìn)血液循環(huán)等功能。在軍事領(lǐng)域中,有紅外夜視裝置。因?yàn)橐归g的可見(jiàn)光數(shù)量遠(yuǎn)遠(yuǎn)比不上日間的可見(jiàn)光數(shù)量,這使得紅外光等不可見(jiàn)光的采集在夜間更為容易。紅外夜視裝置將人類無(wú)法用肉眼觀測(cè)到的紅外線通過(guò)紅外接收裝置進(jìn)行采集,利用光電轉(zhuǎn)換的技術(shù)將采集到的信號(hào)轉(zhuǎn)換成電信號(hào),通過(guò)一定的計(jì)算處理,將圖像顯示在屏幕中。在工業(yè)生產(chǎn)中,紅外線能夠起到測(cè)溫的功能。自然界中的所有物體都會(huì)由于自身的運(yùn)動(dòng)輻射出紅外線,紅外測(cè)溫儀通過(guò)將物體輻射的功率信號(hào)轉(zhuǎn)換成電信號(hào)后,成像裝置的輸出信號(hào)就可以完全一一對(duì)應(yīng)地模擬掃描物體表面溫度的空間分布,經(jīng)電子系統(tǒng)處理,傳至顯示屏上,得到與物體表面熱分布相應(yīng)的熱像圖,運(yùn)用這一方法,便能實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)行遠(yuǎn)距離熱狀態(tài)圖像成像和測(cè)溫并進(jìn)行分析判斷[6]。在水利、地質(zhì)、交通等領(lǐng)域中,利用紅外線測(cè)距的原理制造出來(lái)的測(cè)繪工具往往是不可缺少的必要工具。紅外線測(cè)距儀利用發(fā)光二極管發(fā)出經(jīng)過(guò)調(diào)制后的高頻紅外信號(hào),因?yàn)榧t外信號(hào)的折射率很低所以紅外信號(hào)不會(huì)在傳播的過(guò)程中過(guò)多的擴(kuò)散。這樣的特點(diǎn)使得紅外測(cè)距的精度能夠達(dá)到很高的水平。如圖2.5所示,本文中使用的紅外距離傳感器。紅外距離傳感器模塊在工作過(guò)程中能夠比較好的適應(yīng)環(huán)境光。紅外距離傳感器的有效最低工作距離為2厘米,有效的最高工作距離為30厘米。紅外距離傳感器對(duì)于障礙物的探測(cè)距離的閾值可以通過(guò)對(duì)電位器旋鈕進(jìn)行調(diào)節(jié),當(dāng)順時(shí)針調(diào)節(jié)電位器旋鈕時(shí),增大紅外距離傳感器對(duì)于障礙物的檢測(cè)距離,當(dāng)逆時(shí)針調(diào)節(jié)電位器旋鈕時(shí),減小紅外距離傳感器對(duì)于障礙物的檢測(cè)距離。紅外距離傳感器最低有效工作電壓為3V,最高有效電壓為5V。當(dāng)外接電源電壓低于3V時(shí),無(wú)法驅(qū)動(dòng)紅外距離傳感器的正常工作。當(dāng)外接電源電壓高于5V時(shí),容易使得紅外距離傳感器中的芯片和二極管等元件發(fā)生損壞。圖2.5紅外距離傳感器模塊2.4.2超聲波距離傳感器在生活中,超聲波的頻率通常會(huì)高于兩萬(wàn)赫茲。超聲波的能量比普通的聲波集中的多。這樣的特點(diǎn)賦予了超聲波許多的特性。在醫(yī)學(xué)研究方面,B超就是超聲波探測(cè)的最廣泛的應(yīng)用。超聲波通過(guò)對(duì)于內(nèi)臟器官等的探測(cè),能夠?qū)⒎答伒慕Y(jié)果經(jīng)過(guò)計(jì)算機(jī)的數(shù)據(jù)處理顯示在屏幕上,能夠使醫(yī)生直觀的觀察人體內(nèi)部的健康情況。在工業(yè)領(lǐng)域中,超聲波探傷廣泛運(yùn)用在各種各樣的工程現(xiàn)場(chǎng),超聲波探傷是一種對(duì)于被檢測(cè)對(duì)象沒(méi)有損害和影響的檢測(cè)手段。超聲波探傷的原理是通過(guò)對(duì)金屬材料發(fā)射超聲波,超聲波在遇到金屬材料中的裂隙、空洞等缺陷時(shí),會(huì)產(chǎn)生不同的超聲波回波,通過(guò)超聲波探傷儀器對(duì)特殊的回波進(jìn)行處理分析,就能確定金屬材料中的缺陷位置。在機(jī)器人和自動(dòng)化等領(lǐng)域中超聲波測(cè)距有著不可缺少的地位。因?yàn)槌暡ǖ哪芰坎蝗菀自趥鬏斶^(guò)程中被消耗,而且超聲波的定向發(fā)送能力比較出色,這使得超聲波經(jīng)常被用做測(cè)距的工具。在我們?cè)S多家用轎車(chē)的倒車(chē)系統(tǒng)中,防碰撞的報(bào)警器就是用超聲波測(cè)距的原理實(shí)現(xiàn)防碰撞的。如圖2.6所示,本文選用的是HC-SR04超聲波距離傳感器作為超聲波測(cè)距裝置。它性能比較穩(wěn)定,對(duì)于距離的測(cè)量數(shù)據(jù)往往都很準(zhǔn)確,其測(cè)量精度可以達(dá)到最小3mm的距離。超聲波距離傳感器的最低有效工作距離為30毫米,最高有效工作距離為4000毫米。超聲波距離傳感器有2個(gè)部分。一個(gè)部分是超聲波的發(fā)射部分,發(fā)射部分利用IO端口所給出的大于10us的高電平信號(hào),通過(guò)發(fā)射端口發(fā)出8個(gè)頻率為40KHz的方波。當(dāng)超聲波遇到了障礙物就會(huì)產(chǎn)生回波,通過(guò)對(duì)于回波時(shí)間的計(jì)算,超聲波接收端口向單片機(jī)的IO口輸入不同持續(xù)時(shí)間的高電平,持續(xù)時(shí)間越長(zhǎng)的高電平代表超聲波距離傳感器所測(cè)量獲得的距離越遠(yuǎn),反之持續(xù)時(shí)間越短的高電平代表超超聲波距離傳感器所測(cè)量獲得的距離越近。由于聲音在不同溫度下的空氣中具有不同的傳播速度,使得超聲波距離傳感器可能會(huì)受到環(huán)境溫度的干擾,從而會(huì)出現(xiàn)對(duì)于距離測(cè)量時(shí)產(chǎn)生一定的微小誤差。圖2.6HC-SR04超聲波距離傳感器2.5自動(dòng)跟隨智能小車(chē)通信部分2.5.1藍(lán)牙通信模塊現(xiàn)代較為常見(jiàn)的無(wú)線通訊技術(shù)有藍(lán)牙、WLAN、ZIGBEE等通訊技術(shù)。WLAN技術(shù)的覆蓋范圍一般比藍(lán)牙技術(shù)的覆蓋范圍更大,信號(hào)頻段的干擾會(huì)比藍(lán)牙更少。但是比起WLAN復(fù)雜的設(shè)置過(guò)程而言,藍(lán)牙的搭建顯得更加的簡(jiǎn)單。藍(lán)牙技術(shù)和WLAN技術(shù)相比于ZIGBEE,傳輸速度更快。WLAN技術(shù)相較與藍(lán)牙技術(shù)和ZIGBEE0技術(shù)的安全性更高。當(dāng)前最常見(jiàn)的藍(lán)牙模塊為藍(lán)牙2.0和藍(lán)牙4.0模塊。藍(lán)牙5.0于2016年正式的發(fā)布,藍(lán)牙5.0在相比較于過(guò)去的藍(lán)牙2.0和4.0具備更快更遠(yuǎn)的傳輸能力,傳輸速率和有效傳輸距離得到了極大地提高。如圖2.7所示,本文選用藍(lán)牙2.0的HC-05藍(lán)牙芯片進(jìn)行單片機(jī)與手機(jī)之間的通信??梢允箚纹瑱C(jī)與手機(jī)之間搭建無(wú)線數(shù)據(jù)透明傳輸?shù)耐ǖ?,使使用者能夠通過(guò)手機(jī)上的控制信號(hào)對(duì)小車(chē)進(jìn)行無(wú)線的控制。圖2.7HC-05藍(lán)牙數(shù)傳模塊2.5.2藍(lán)牙信標(biāo)目前市面上許多產(chǎn)品都采用了藍(lán)牙信標(biāo),例如智能防丟器、智能手環(huán)等等。當(dāng)藍(lán)牙信標(biāo)處于工作狀態(tài)時(shí),藍(lán)牙信標(biāo)會(huì)不斷的向四周一定范圍內(nèi)發(fā)射信號(hào),形成信號(hào)的范圍覆蓋。只要有能接受藍(lán)牙的電子產(chǎn)品進(jìn)入了藍(lán)牙信標(biāo)的信號(hào)覆蓋的范圍,就能夠接收到這個(gè)發(fā)射信號(hào)的藍(lán)牙信標(biāo)特有的藍(lán)牙信標(biāo)ID。電子產(chǎn)品可以通過(guò)對(duì)于信號(hào)源的藍(lán)牙信標(biāo)的特有ID進(jìn)行解析,可以獲得藍(lán)牙信標(biāo)中預(yù)存好的信息。藍(lán)牙信標(biāo)相比較于GPS定位來(lái)說(shuō),藍(lán)牙信標(biāo)的定位精度更加的準(zhǔn)確,藍(lán)牙信標(biāo)的功耗也更加的低。因?yàn)樗{(lán)牙信標(biāo)是不斷向覆蓋范圍內(nèi)的電子產(chǎn)品發(fā)送信息的,所以藍(lán)牙信標(biāo)經(jīng)常被商場(chǎng)的商家們用來(lái)發(fā)紅包或者微信搖一搖。一旦預(yù)設(shè)好需要發(fā)送的內(nèi)容,商家們就不再需要多余的操作,藍(lán)牙信標(biāo)會(huì)通過(guò)與電子產(chǎn)品之間的自動(dòng)應(yīng)答進(jìn)行工作。如圖2.8所示,本文采用以藍(lán)牙5.0的nRF52832低功耗藍(lán)牙芯片為核心的藍(lán)牙信標(biāo)。圖2.8nRF52832低功耗藍(lán)牙信標(biāo)

3自動(dòng)跟隨智能小車(chē)避障和跟隨系統(tǒng)設(shè)計(jì)3.1總體設(shè)計(jì)方案根據(jù)自動(dòng)跟隨智能小車(chē)的功能設(shè)計(jì)要求,小車(chē)需要對(duì)各個(gè)傳感器的數(shù)據(jù)進(jìn)行采集,通過(guò)核心控制系統(tǒng)的處理分析,可以得到小車(chē)與障礙物的間隔長(zhǎng)度,通過(guò)對(duì)于距離數(shù)據(jù)的判斷,判斷小車(chē)是否需要停車(chē)、后退或者轉(zhuǎn)向。從而實(shí)現(xiàn)小車(chē)的避障功能。若工作環(huán)境為室內(nèi),可以采用紅外距離傳感器和超聲波距離傳感器同時(shí)避障,若工作環(huán)境為室外,日光會(huì)極大的干擾紅外距離傳感器的正常工作,盡量使用超聲波距離傳感器進(jìn)行避障。定位與跟隨系統(tǒng)的實(shí)現(xiàn)基于被跟隨物體和自動(dòng)跟隨智能小車(chē)之間的藍(lán)牙通信,通過(guò)對(duì)于被跟隨物體或自動(dòng)跟隨智能小車(chē)的藍(lán)牙模塊的RSSI(接收信號(hào)強(qiáng)度指示)進(jìn)行計(jì)算,測(cè)定自動(dòng)跟隨智能小車(chē)(信號(hào)點(diǎn))與被跟隨物體(接收點(diǎn))二者間的距離?;蛘呤褂贸暡òl(fā)射模塊和超聲波接收模塊實(shí)現(xiàn)對(duì)于藍(lán)牙信標(biāo)的替代方案,利用超聲波發(fā)射端和2個(gè)超聲波接收端的距離計(jì)算出小車(chē)與被跟隨物體間的距離,利用三角定位算法實(shí)現(xiàn)小車(chē)對(duì)于被跟隨物體的準(zhǔn)確定位。3.2避障系統(tǒng)設(shè)計(jì)3.2.1紅外測(cè)距傳感器要使得紅外測(cè)距傳感器工作,需要先將紅外測(cè)距傳感器的電源和地與小車(chē)的供電裝置進(jìn)行連接,最低工作電為3伏,最高工作電壓為5伏。將紅外測(cè)距傳感器的VCC與小車(chē)上經(jīng)過(guò)降壓后的5V電源連接,將紅外測(cè)距傳感器的GND與電源負(fù)極連接。在單片機(jī)上配置好避障需要用到的IO口為輸入模式后,將紅外測(cè)距傳感器的OUT與單片機(jī)的IO口相連接。在紅外測(cè)距傳感器一般的工作情況下,OUT輸出端口的電平為高電平,輸出指示燈保持熄滅。這時(shí)候不會(huì)觸發(fā)避障函數(shù)進(jìn)入中斷。當(dāng)紅外測(cè)距傳感器檢測(cè)到小車(chē)行駛到障礙物后方的時(shí)候,OUT輸出端口的電平改變?yōu)榈碗娖剑敵鲋甘緹綦娐穼?dǎo)通,輸出指示燈保持亮起,同時(shí)觸發(fā)避障函數(shù)進(jìn)入中斷。在避障中斷服務(wù)函數(shù)中小車(chē)只能后退,無(wú)法前進(jìn)或轉(zhuǎn)向,直到紅外測(cè)距傳感器不再檢測(cè)到小車(chē)位于障礙物后方。紅外測(cè)距傳感器具體工作流程如圖3.1所示。圖3.1紅外測(cè)距傳感器避障流程圖3.2.1超聲波測(cè)距傳感器要使得超聲波測(cè)距傳感器能夠正常的進(jìn)行工作,需要先將超聲波測(cè)距傳感器的電源和地與小車(chē)的供電裝置進(jìn)行連接。超聲波測(cè)距傳感器的額定電壓為5伏,將超聲波測(cè)距傳感器的VCC與小車(chē)上經(jīng)過(guò)降壓后的5V電源連接,將超聲波測(cè)距傳感器的GND與電源負(fù)極連接。將超聲波測(cè)距傳感器的發(fā)送引腳與接收引腳分別各連接一個(gè)單片機(jī)上的IO口。將發(fā)送引腳連接的IO口配置為輸出模式,將接收引腳連接的IO口配置為輸入模式。通過(guò)超聲波測(cè)距傳感器的時(shí)序圖可以理解超聲波測(cè)距傳感器的原理。初始化好超聲波測(cè)距傳感器后,通過(guò)超聲波避障函數(shù)可以獲得小車(chē)與前方障礙物的距離,一旦小車(chē)過(guò)于接近前方的障礙物,自動(dòng)進(jìn)入避障中斷服務(wù)函數(shù)。在避障中斷服務(wù)函數(shù)中小車(chē)只能后退,無(wú)法前進(jìn)或轉(zhuǎn)向,直到超聲波測(cè)距傳感器檢測(cè)到小車(chē)與前方存在的障礙物的距離高于觸發(fā)中斷的距離的閾值。如圖3.2所示為超聲波測(cè)距傳感器具體工作流程。圖3.2超聲波測(cè)距避障流程圖3.3定位跟隨系統(tǒng)設(shè)計(jì)3.3.1定位的基本原理室內(nèi)定位方法如果按照信號(hào)類型來(lái)分類可以分為射頻識(shí)別類(RFID、WIFI、藍(lán)牙ZigBee、UWB)、圖像信號(hào)和視頻信號(hào)類、聲音和超聲音信號(hào)類、紅外信號(hào)類、可見(jiàn)光信號(hào)類、磁場(chǎng)信號(hào)類等等。室內(nèi)定位方法如果按照參數(shù)類型來(lái)進(jìn)行分類可以分為接收信號(hào)強(qiáng)度(RSSI)、到達(dá)時(shí)間(TOA)、到達(dá)時(shí)差(TDOA)、到達(dá)角(AOA)、出發(fā)角角(AOD)。室內(nèi)定位方法還可以分為基于測(cè)距和基于非測(cè)距的方法,基于測(cè)距的定位方法有三角定位法等等,基于非測(cè)距的定位方法有RSSI指紋法等等。三角測(cè)量定位法是一種最為經(jīng)典的定位方法。三角測(cè)量定位法通過(guò)至少兩個(gè)測(cè)量裝置測(cè)量與被定位物體之間的距離,通過(guò)對(duì)三角形的三條邊進(jìn)行計(jì)算,就可以的出被定位物體的準(zhǔn)確位置?,F(xiàn)代的GPS(全球定位系統(tǒng))的定位原理也可以看作是三角測(cè)量定位法的一種。通過(guò)測(cè)量被定位物體與全球定位系統(tǒng)中的至少四顆衛(wèi)星距離,可以獲得被定位物體的三維坐標(biāo)。在藍(lán)牙定位的過(guò)程中,三角測(cè)量定位法也是一種很好的實(shí)現(xiàn)辦法,通過(guò)布置至少兩個(gè)藍(lán)牙信標(biāo),用手機(jī)測(cè)量獲得兩個(gè)藍(lán)牙信標(biāo)的接收信號(hào)強(qiáng)度(RSSI),根據(jù)接收信號(hào)強(qiáng)度(RSSI)在不同距離的值的不同,可以計(jì)算出手機(jī)與兩個(gè)藍(lán)牙信標(biāo)之間的距離。再結(jié)合已知的兩個(gè)藍(lán)牙信標(biāo)之間的距離,就可以使用三角測(cè)量定位法準(zhǔn)確定位到手機(jī)的距離。在藍(lán)牙5.1中出現(xiàn)了藍(lán)牙定向的概念。藍(lán)牙定向是準(zhǔn)確辨別藍(lán)牙方向的有效方法。在藍(lán)牙5.1中的定位方法有到達(dá)角度(AOA)方法和出發(fā)角度(AOD)方法。到達(dá)角度(AOA)方法需要藍(lán)牙信號(hào)接收器上面安裝了至少兩根天線。通過(guò)計(jì)算不同接收器上的不同接收時(shí)間,結(jié)合不同接收器間的距離,通過(guò)測(cè)量不同接收器之間的相位差,可以得到發(fā)射器的到達(dá)角度,從而實(shí)現(xiàn)定位。出發(fā)角度(AOD)方法與到達(dá)角度(AOA)方法相類似,只是出發(fā)角度(AOD)方法需要藍(lán)牙信號(hào)發(fā)射器上至少安裝了兩根天線。通過(guò)發(fā)射器上的天線發(fā)出信號(hào),接收器會(huì)接收不同相位值的信道數(shù)據(jù),通過(guò)對(duì)相位值的判斷可以得到發(fā)射器的出發(fā)角度,從而實(shí)現(xiàn)定位。3.3.2跟隨系統(tǒng)的設(shè)計(jì)方案(1)方案一:在小車(chē)上搭建與手機(jī)通信的藍(lán)牙芯片和檢測(cè)小車(chē)車(chē)身姿態(tài)的三軸傳感器。小車(chē)通過(guò)車(chē)體前方的超聲波測(cè)距模塊測(cè)量出人與小車(chē)間的實(shí)時(shí)距離。當(dāng)人手持手機(jī)向前行走時(shí),小車(chē)會(huì)與人之間保持相對(duì)穩(wěn)定的實(shí)時(shí)距離。當(dāng)人轉(zhuǎn)向時(shí),通過(guò)獲取手機(jī)的陀螺儀數(shù)據(jù)確定人的轉(zhuǎn)向角度。手機(jī)通過(guò)藍(lán)牙串口通信將從陀螺儀獲取的轉(zhuǎn)向角度等等數(shù)據(jù)發(fā)送給小車(chē),小車(chē)根據(jù)自身的三軸傳感器轉(zhuǎn)動(dòng)相同的角度,通過(guò)單片機(jī)的計(jì)算和控制,從而實(shí)現(xiàn)小車(chē)對(duì)于人手持的手機(jī)跟隨的目的。(2)方案二:在小車(chē)上布置安裝一個(gè)或者兩個(gè)藍(lán)牙信標(biāo)和藍(lán)牙通信芯片。人手持手機(jī)行走。手機(jī)通過(guò)對(duì)于藍(lán)牙信標(biāo)和藍(lán)牙通信芯片進(jìn)行信號(hào)強(qiáng)度的測(cè)量,計(jì)算出手機(jī)與藍(lán)牙信標(biāo)和藍(lán)牙通信芯片的實(shí)時(shí)距離。通過(guò)三角定位算法算出小車(chē)與人手持的手機(jī)的相對(duì)位置,利用三軸傳感器判斷小車(chē)需要的轉(zhuǎn)向角度。通過(guò)單片機(jī)的計(jì)算和控制,從而達(dá)成小車(chē)對(duì)于人手持的手機(jī)跟隨的目的。(3)方案三:在小車(chē)上布置安裝兩個(gè)超聲波接收裝置,組裝一個(gè)人手持的超聲波發(fā)射裝置。小車(chē)通過(guò)超聲波接收裝置接收到超聲波后計(jì)算得出實(shí)時(shí)的距離。如果人手持著超聲波發(fā)射裝置轉(zhuǎn)向后,安裝在小車(chē)兩側(cè)的兩個(gè)接收裝置的到信號(hào)會(huì)產(chǎn)生不同。通過(guò)對(duì)于超聲波發(fā)射裝置和兩個(gè)超聲波接收裝置的距離不同,獲取小車(chē)應(yīng)該向哪個(gè)方向轉(zhuǎn)向的信息。通過(guò)單片機(jī)的計(jì)算和控制,從而實(shí)現(xiàn)小車(chē)對(duì)于人手持的手機(jī)跟隨的目的。從理論的角度上來(lái)說(shuō),以上3個(gè)方案都是可以實(shí)現(xiàn)的。但是由于本人能力有限,只實(shí)現(xiàn)了第三個(gè)方案的內(nèi)容。如圖3.3所示為小車(chē)超聲波自動(dòng)跟隨的流程圖。小車(chē)通過(guò)藍(lán)牙串口接收到自動(dòng)跟隨的指令。打開(kāi)超聲波發(fā)射端電源,超聲波發(fā)射端持續(xù)發(fā)射超聲波。小車(chē)車(chē)前方的2個(gè)超聲波接收端持續(xù)接收超聲波,將接收到的超聲波數(shù)據(jù)經(jīng)過(guò)一定的處理后可以轉(zhuǎn)換為距離信息。通過(guò)對(duì)左右兩端的距離信息進(jìn)行比較,可以判斷出小車(chē)需要進(jìn)行的動(dòng)作。當(dāng)小車(chē)左端接收到的距離數(shù)據(jù)大于小車(chē)右端接收到的距離數(shù)據(jù)時(shí),可以判斷出超聲波的發(fā)射位置在小車(chē)的偏右側(cè),所以小車(chē)應(yīng)該向右轉(zhuǎn)向直到小車(chē)兩接收端接收到的距離數(shù)據(jù)相等。當(dāng)小車(chē)左端接收到的距離數(shù)據(jù)小于小車(chē)右端接收到的距離數(shù)據(jù)時(shí),可以判斷出超聲波的發(fā)射位置在小車(chē)的偏左側(cè),所以小車(chē)應(yīng)該向左轉(zhuǎn)向直到小車(chē)兩接收端接收到的距離數(shù)據(jù)相等。當(dāng)小車(chē)兩接收端接收到的數(shù)據(jù)相等時(shí),通過(guò)比較距離數(shù)據(jù)與預(yù)先設(shè)定的跟隨閾值的大小,判斷小車(chē)應(yīng)該前進(jìn)還是后退。圖3.3超聲波自動(dòng)跟隨流程圖3.4軟件調(diào)試工具3.4.1KeiluVision5(mdk5.14)如圖2.1所示,Keil系列編程軟件單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng)。在安裝Keil5軟件時(shí),如果windows用戶名是中文,可能會(huì)導(dǎo)致在編譯代碼過(guò)程中出現(xiàn)錯(cuò)誤,所以一定要將windows系統(tǒng)用戶名修改為英文。如果安裝路徑中含有中文,也可能會(huì)導(dǎo)致在編譯代碼過(guò)程中出現(xiàn)錯(cuò)誤,所以安裝路徑也不能含有中文。另外在安裝完成后一定要設(shè)置環(huán)境變量,否則代碼將會(huì)無(wú)法編譯。另外,在使用Keil5軟件為STM32單片機(jī)編寫(xiě)程序時(shí),最好使用庫(kù)函數(shù)編程。因?yàn)閷?xiě)代碼速度會(huì)更快,寫(xiě)出的代碼更加可靠,bug更少。圖2.1keil軟件3.4.2串口調(diào)試工具單片機(jī)多功能調(diào)試助手,是由粵嵌溫工開(kāi)發(fā)的一款單片機(jī)多功能調(diào)試軟件,可以用來(lái)調(diào)試超聲波模塊等串口通信模塊,也可以為藍(lán)牙模塊進(jìn)行設(shè)置波特率、設(shè)置工作模式等工作。通過(guò)對(duì)單片機(jī)多功能調(diào)試助手中串口連接電腦的端口號(hào)進(jìn)行設(shè)置,可以選擇單片機(jī)與電腦連接的串口。通過(guò)對(duì)調(diào)試助手中的波特率進(jìn)行設(shè)置,可以調(diào)節(jié)串口的數(shù)據(jù)傳輸速率。通過(guò)對(duì)調(diào)試助手中的數(shù)據(jù)位和停止位進(jìn)行配置,可以調(diào)節(jié)不同串口的不同通信格式。在數(shù)據(jù)顯示界面上調(diào)試助手還可以使用十六進(jìn)制的格式顯示數(shù)據(jù),能夠給更加方便快速的讓用戶調(diào)試串口發(fā)送的數(shù)據(jù),當(dāng)調(diào)試助手通過(guò)串口接收到的數(shù)據(jù)量比較龐大時(shí)可以打開(kāi)文本輸出模式進(jìn)行大量數(shù)據(jù)的顯示,防止調(diào)試助手在數(shù)據(jù)顯示的過(guò)程中發(fā)生錯(cuò)誤引發(fā)調(diào)試助手的崩潰。圖2.2單片機(jī)多功能調(diào)試助手

4總結(jié)與展望4.1設(shè)計(jì)總結(jié)該自動(dòng)跟隨智能小車(chē)的定位與跟隨系統(tǒng)是基于STM32F407單片機(jī)的核心控制,使用keil5和串口調(diào)試工具結(jié)合開(kāi)發(fā)出的在一定程度上實(shí)現(xiàn)了智能化的系統(tǒng)。利用紅外測(cè)距傳感器和超聲波測(cè)距傳感器實(shí)現(xiàn)自動(dòng)跟隨智能小車(chē)對(duì)于行駛過(guò)程中的自動(dòng)避障系統(tǒng)。利用藍(lán)牙信標(biāo)和人手持的手機(jī)實(shí)現(xiàn)小車(chē)的定位系統(tǒng)。利用STM32F407單片機(jī)的計(jì)算與控制,實(shí)現(xiàn)小車(chē)對(duì)于目標(biāo)的自動(dòng)跟隨。4.2設(shè)計(jì)創(chuàng)新(1)采用紅外測(cè)距傳感器和超聲波測(cè)距傳感器相結(jié)合的方式控制小車(chē)的自動(dòng)避障;(2)采用藍(lán)牙信標(biāo)的方式實(shí)現(xiàn)小車(chē)對(duì)于目標(biāo)物體的自動(dòng)定位;(3)通過(guò)藍(lán)牙串口實(shí)現(xiàn)小車(chē)于手機(jī)之間的無(wú)線通信,實(shí)現(xiàn)小車(chē)的手動(dòng)藍(lán)牙控制;(4)當(dāng)開(kāi)啟自動(dòng)跟隨模式時(shí)小車(chē)跟隨物體自動(dòng)行駛。(5)使用超聲波實(shí)現(xiàn)小車(chē)對(duì)于被跟隨物體的三角定位4.3設(shè)計(jì)不足紅外避障傳感器受自然光線的影響較大,很容易誤觸發(fā)避障系統(tǒng);由于電流的波動(dòng),亦會(huì)造成紅外避障系統(tǒng)的誤觸發(fā);通過(guò)藍(lán)牙信標(biāo)的定位方式需要2個(gè)藍(lán)牙信標(biāo)間的距離比較遠(yuǎn),使得這種方案比較難以在小車(chē)上實(shí)現(xiàn);超聲波模塊和紅外模塊的耗電量很大,14500電池?zé)o法支持小車(chē)長(zhǎng)時(shí)間運(yùn)作。4.4展望在未來(lái)的生活中,智能化、自動(dòng)化的控制實(shí)現(xiàn)一定是無(wú)處不在的。室內(nèi)定位的技術(shù)目前仍處于不斷發(fā)展的過(guò)程當(dāng)中。越來(lái)越多的智能產(chǎn)品實(shí)現(xiàn)了定位的功能,盡管有的精度不高。這個(gè)作品是本人經(jīng)過(guò)長(zhǎng)時(shí)間的不斷地學(xué)習(xí)和不斷地努力后所制作出來(lái)的。雖然我們的畢業(yè)設(shè)計(jì)作品在一定程度上實(shí)現(xiàn)了自動(dòng)跟隨的功能,但是作品中還是存在非常多的不足之處。這體現(xiàn)出了一個(gè)好的產(chǎn)品不僅僅需要優(yōu)秀的設(shè)計(jì),還需要在生產(chǎn)過(guò)程中的不斷完善、調(diào)試、優(yōu)化,這樣的過(guò)程絕對(duì)不是短時(shí)間就能夠完成的,需要設(shè)計(jì)人員努力的不斷付出汗水與時(shí)間。這一次的畢業(yè)設(shè)計(jì)亦是對(duì)于大學(xué)四年時(shí)間所學(xué)知識(shí)的綜合運(yùn)用,可以鞏固在大學(xué)中學(xué)習(xí)到的知識(shí),為即將投入的工作做出必要的鋪墊。

參考文獻(xiàn)戴朝典.Peloton公司的智能動(dòng)力和車(chē)隊(duì)排列系統(tǒng)[J].汽車(chē)與配件,2016,(52)何佳,戎輝,王文揚(yáng)等.百度谷歌無(wú)人駕駛汽車(chē)發(fā)展綜述[J].汽車(chē)電器,2017,(12)牛煜榮.基于RSSI的WLAN室內(nèi)定位的研究與實(shí)現(xiàn)[D].2016.董春榮.基于RSSI-LQI的ZigBee定位算法的研究與設(shè)計(jì)[D].2017.李曉龍.基于UWB的移動(dòng)定位算法研究[D].2016.林品云.關(guān)于紅外線測(cè)溫儀的若干問(wèn)題[J].科技展望,2015,(10)蔣危平,田建新,王子誠(chéng).數(shù)字化超聲波探傷儀十五年技術(shù)進(jìn)展[J].無(wú)損檢測(cè),2004,26(3)劉旸.亞克力材料在復(fù)雜裝置中的一體化設(shè)計(jì)與應(yīng)用——以港深雙年展參展作品"微巨構(gòu)"裝置為例[J].江西建材,2017,(21)肖曉蘭,黃海峰,劉利河,等.一種可自動(dòng)跟隨手機(jī)行走的小車(chē)[J].機(jī)械工程與自動(dòng)化劉豐華,張遠(yuǎn)見(jiàn),吳永輝.無(wú)線局域定位系統(tǒng)的分析與設(shè)計(jì)[J].電子產(chǎn)品世界,2004,(19)蔣偉.基于GPS定位的智能跟隨小車(chē)設(shè)計(jì)[J].數(shù)字化用戶,2018,24(7):44-45.劉偉麗.自動(dòng)跟隨小車(chē)控制系統(tǒng)[D].吉林:長(zhǎng)春理工大學(xué),2013.聶憲波,邵澤箭,鞏文文,等.基于單片機(jī)自動(dòng)跟隨小車(chē)的設(shè)計(jì)與制作[J].山東工業(yè)技術(shù),2015,(4):158-158.劉金海,王勃凡,周龍,等.基于UWB技術(shù)實(shí)現(xiàn)自動(dòng)跟隨小車(chē)設(shè)計(jì)[J].農(nóng)業(yè)裝備與車(chē)輛工程,2019,57(12):8-12.夏曉楓,楊佳麗,寧維陽(yáng),等.超聲波定位智能小車(chē)自動(dòng)跟隨算法[J].科技資訊張萍,陳國(guó)壯,候云雷,等.基于Android平臺(tái)的WIFI遙控智能小車(chē)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2018,26(6):189-191,195.

齊新皓,蘇秀云,馬國(guó),等.單目視覺(jué)自動(dòng)跟隨小車(chē)的設(shè)計(jì)[J].機(jī)器人技術(shù)與應(yīng)用,2018,(5):42-44.蔡磊,周亭亭,郭云鵬,等.基于超聲波定位的智能跟隨小車(chē)[J].電子測(cè)量技術(shù)劉碩,師五喜.智能小車(chē)編隊(duì)避障控制系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀表,2019,34(1):28-32.HongguiLi,MariaTrocan,DimitriGalayko.Virtualfingerprintandtwo-wayranging-basedBluetooth3DindoorpositioningwithRSSIdifferenceanddistanceratio[J].JournalofElectromagneticWavesandApplications,2019,33(16).

謝辭轉(zhuǎn)眼間大學(xué)四年便已經(jīng)過(guò)去,畢業(yè)設(shè)計(jì)是大學(xué)四年中的最后一門(mén)課。經(jīng)過(guò)了數(shù)個(gè)月的不斷努力后,畢業(yè)設(shè)計(jì)的工作逐漸進(jìn)入了尾聲。自動(dòng)跟隨智能小車(chē)的基本功能都已經(jīng)實(shí)現(xiàn)了。盡管沒(méi)有達(dá)到最好的預(yù)期目標(biāo),但是至少我很盡力的去完成了這一次的畢業(yè)設(shè)計(jì)。非常感謝尹新彥老師在畢業(yè)設(shè)計(jì)最開(kāi)始的定題階段中對(duì)我的支持,老師說(shuō)畢業(yè)設(shè)計(jì)就是要做自己最感興趣的東西。在畢業(yè)設(shè)計(jì)的制作過(guò)程中,尹新彥老師在理論方面提供了很多實(shí)用的建議,老師還在論文撰寫(xiě)方面給了很多的有用指導(dǎo),往往能夠?yàn)槊悦5奈抑该饕粭l前進(jìn)的道路。我還要感謝我的組員對(duì)我的支持和陪伴,是在我們的共同努力下,才做出了這次的畢業(yè)設(shè)計(jì)。另外,我還要感謝同班同學(xué)黃浩榕在我的畢業(yè)設(shè)計(jì)過(guò)程中為我提供的幫助。十分感謝大學(xué)四年里所有教過(guò)我的老師們。老師們不僅教會(huì)了我許多的知識(shí),還教會(huì)了我學(xué)習(xí)的方法和許多為人處世的道理。最后,感謝各位答辯老師們?cè)诎倜χ谐槌鰰r(shí)間來(lái)閱讀我的論文,祝所有老師們都身體健康,工作順利。

附錄附錄1操作界面主系統(tǒng)主要程序代碼#include"stm32f4xx.h"#include"sys.h"#include<stdio.h>staticEXTI_InitTypeDef EXTI_InitStructure;staticGPIO_InitTypeDef GPIO_InitStructure;staticNVIC_InitTypeDef NVIC_InitStructure;staticUSART_InitTypeDef USART_InitStructure;staticuint8_tk;staticuint8_tnum1=0;staticuint8_tnum2=0;staticuint8_tdat_right[2];staticuint8_tdat_left[2];staticuint16_tdistance_right;staticuint16_tdistance_left;#pragmaimport(__use_no_semihosting_swi)struct__FILE{inthandle;/*Addwhateveryouneedhere*/};FILE__stdout;FILE__stdin;//printf重定向intfputc(intch,FILE*f){ USART_SendData(USART3,ch); while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET); USART_ClearFlag(USART3,USART_FLAG_TXE); returnch;}void_sys_exit(intreturn_code){}voiddelay_us(uint32_tn){ SysTick->CTRL=0; //DisableSysTick,關(guān)閉系統(tǒng)定時(shí)器 SysTick->LOAD=(168*n)-1;//配置計(jì)數(shù)值(168*n)-1~0 SysTick->VAL=0; //Clearcurrentvalueaswellascountflag SysTick->CTRL=5; //EnableSysTicktimerwithprocessorclock while((SysTick->CTRL&0x10000)==0);//Waituntilcountflagisset SysTick->CTRL=0; //DisableSysTick }voiddelay_ms(uint32_tn){ while(n--) { SysTick->CTRL=0; //DisableSysTick,關(guān)閉系統(tǒng)定時(shí)器 SysTick->LOAD=(168000)-1; //配置計(jì)數(shù)值(168000)-1~0 SysTick->VAL=0; //Clearcurrentvalueaswellascountflag SysTick->CTRL=5; //EnableSysTicktimerwithprocessorclock while((SysTick->CTRL&0x10000)==0);//Waituntilcountflagisset } SysTick->CTRL=0; //DisableSysTick }voidcar_work(void); //車(chē)輪初始化voidcar_stop(void);//停車(chē)voidcar_go(void);//前進(jìn)voidcar_back(void);//后退voidcar_left1(void);//左轉(zhuǎn)1voidcar_right1(void);//右轉(zhuǎn)1voidcar_left2(void);//左轉(zhuǎn)2 voidcar_right2(void);//右轉(zhuǎn)2voidcar_auto(void);//自動(dòng)跟隨voidcar_auto(void) //自動(dòng)跟隨{ while(30<=distance_left&&distance_left<6800&&30<=distance_right&&distance_right<6800) { if(distance_left>=distance_right+5) { car_right1(); } if(distance_right>=distance_left+5) { car_left1(); } else { if(distance_left>1200&&distance_right>1200) { car_go(); } else { car_stop(); } } if(k==0) break; } car_stop();}voidcar_work(void)//PD0、PD1、PD2、PD3引腳初始化{ //端口D硬件時(shí)鐘使能 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE); //配置PD0、PD1、PD2、PD3為輸出模式 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; //第0、1、2、3根引腳 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; //輸出模式 GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //推挽輸出,增加輸出電流能力。 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//高速響應(yīng) GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; //沒(méi)有使能上下拉電阻 GPIO_Init(GPIOD,&GPIO_InitStructure);}voidcar_stop(void)//停車(chē){ GPIO_ResetBits(GPIOD,GPIO_Pin_0);//控制右邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_1); GPIO_ResetBits(GPIOD,GPIO_Pin_2);//控制左邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_3);}voidcar_go(void)//前進(jìn){ GPIO_SetBits(GPIOD,GPIO_Pin_0);//控制右邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_1); GPIO_SetBits(GPIOD,GPIO_Pin_2);//控制左邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_3);}voidcar_back(void)//后退{(lán) GPIO_SetBits(GPIOD,GPIO_Pin_1);//控制右邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_0); GPIO_SetBits(GPIOD,GPIO_Pin_3);//控制左邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_2);}voidcar_left1(void)//左轉(zhuǎn)1{ GPIO_SetBits(GPIOD,GPIO_Pin_0);//控制右邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_1); GPIO_ResetBits(GPIOD,GPIO_Pin_2);//控制左邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_3);}voidcar_right1(void)//右轉(zhuǎn)1{ GPIO_ResetBits(GPIOD,GPIO_Pin_0);//控制右邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_1); GPIO_SetBits(GPIOD,GPIO_Pin_2);//控制左邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_3);}voidcar_left2(void)//左轉(zhuǎn)2{ GPIO_SetBits(GPIOD,GPIO_Pin_0);//控制右邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_1); GPIO_SetBits(GPIOD,GPIO_Pin_3);//控制左邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_2);}voidcar_right2(void)//右轉(zhuǎn)2{ GPIO_SetBits(GPIOD,GPIO_Pin_1);//控制右邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_2); GPIO_SetBits(GPIOD,GPIO_Pin_2);//控制左邊輪胎 GPIO_ResetBits(GPIOD,GPIO_Pin_3);}//外部中斷初始化voidexti0_init(void){ //使能(打開(kāi))端口A的硬件時(shí)鐘,就是對(duì)端口A供電 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能系統(tǒng)配置時(shí)鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); //配置PA0引腳為輸入模式 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //第0根引腳 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN; //輸入模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//高速響應(yīng) GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; //沒(méi)有使能上下拉電阻 GPIO_Init(GPIOA,&GPIO_InitStructure); //將PA0和EXTI0連接在一起 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0); //外部中斷的配置 EXTI_InitStructure.EXTI_Line=EXTI_Line0; //外部中斷0 EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt; //中斷 EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling; //下降沿觸發(fā),用于識(shí)別電平的變低 EXTI_InitStructure.EXTI_LineCmd=ENABLE; //使能 EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn; //外部中斷0的請(qǐng)求通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占優(yōu)先級(jí)0 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; //響應(yīng)優(yōu)先級(jí)0 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能該通道 NVIC_Init(&NVIC_InitStructure); }//串口1初始化voidusart1_init(uint32_tbaud){ //打開(kāi)PA硬件時(shí)鐘 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //打開(kāi)串口1硬件時(shí)鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //配置PA9和PA10為復(fù)用功能模式 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10; //第910根引腳 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //多功能模式 GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //推挽輸出,增加輸出電流能力。 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//高速響應(yīng) GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; //沒(méi)有使能上下拉電阻 GPIO_Init(GPIOA,&GPIO_InitStructure); //將PA9和PA10引腳連接到串口1的硬件 GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //配置串口1相關(guān)參數(shù):波特率、無(wú)校驗(yàn)位、8位數(shù)據(jù)位、1個(gè)停止位 USART_InitStructure.USART_BaudRate=baud; //波特率 USART_InitStructure.USART_WordLength=USART_WordLength_8b; //8位數(shù)據(jù)位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //1個(gè)停止位 USART_InitStructure.USART_Parity=USART_Parity_No; //無(wú)奇偶校驗(yàn) USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //無(wú)硬件流控制 USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //允許收發(fā)數(shù)據(jù) USART_Init(USART1,&USART_InitStructure); //配置串口1的中斷觸發(fā)方法:接收一個(gè)字節(jié)觸發(fā)中斷 USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //配置串口1的中斷優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); //使能串口1工作 USART_Cmd(USART1,ENABLE);}//串口3初始化voidusart3_init(uint32_tbaud){ //打開(kāi)PB硬件時(shí)鐘 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //打開(kāi)串口3硬件時(shí)鐘 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); //配置PB10和PB11為復(fù)用功能模式 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_11; //第1011根引腳 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //多功能模式 GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //推挽輸出,增加輸出電流能力。 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//高速響應(yīng) GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; //沒(méi)有使能上下拉電阻 GPIO_Init(GPIOB,&GPIO_InitStructure); //將PB10和PB11引腳連接到串口3的硬件 GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_USART3); GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_USART3); //配置串口3相關(guān)參數(shù):波特率、無(wú)校驗(yàn)位、8位數(shù)據(jù)位、1個(gè)停止位 USART_InitStructure.USART_BaudRate=baud; //波特率 USART_InitStructure.USART_WordLength=USART_WordLength_8b; //8位數(shù)據(jù)位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //1個(gè)停止位 USART_InitStructure.USART_Parity=USART_Parity_No; //無(wú)奇偶校驗(yàn) USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //無(wú)硬件流控制 USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //允許收發(fā)數(shù)據(jù) USART_Init(USART3,&USART_InitStructure); //配置串口3的中斷觸發(fā)方法:接收一個(gè)字節(jié)觸發(fā)中斷 USART_ITConfig(USART3,USART_IT_RXNE,ENABLE); //配置串口3的中斷優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannel=USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); //使能串口3工作 USART_Cmd(USART3,ENABLE);}//串口2初始化voidusart2_init(uint32_tbaud){ //打開(kāi)PB硬件時(shí)鐘 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //打開(kāi)串口2硬件時(shí)鐘 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //配置PA2和PA3為復(fù)用功能模式 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3; //第23根引腳 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //多功能模式 GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //推挽輸出,增加輸出電流能力。 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//高速響應(yīng) GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; //沒(méi)有使能上下拉電阻 GPIO_Init(GPIOA,&GPIO_InitStructure); //將PA2和PA3引腳連接到串口2的硬件 GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2); GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2); //配置串口2相關(guān)參數(shù):波特率、無(wú)校驗(yàn)位、8位數(shù)據(jù)位、1個(gè)停止位 USART_InitStructure.USART_BaudRate=baud; //波特率 USART_InitStructure.USART_WordLength=USART_WordLength_8b; //8位數(shù)據(jù)位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //1個(gè)停止位 USART_InitStructure.USART_Parity=USART_Parity_No; //無(wú)奇偶校驗(yàn) USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //無(wú)硬件流控制 USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //允許收發(fā)數(shù)據(jù) USART_Init(USART2,&USART_InitStructure); //配置串口2的中斷觸發(fā)方法:接收一個(gè)字節(jié)觸發(fā)中斷 USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); //配置串口2的中斷優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); //使能串口2工作 USART_Cmd(USART2,ENABLE);}voidusart3_send_str(char*str){ char*p=str; while(p&&(*p!='\0')) { USART_SendData(USART3,*p); while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET); p++; }}//藍(lán)牙模塊配置voidbluetooth_config(void){ //使能端口E的硬件時(shí)鐘,端口E才能工作,說(shuō)白了就是對(duì)端口E上電 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE); //配置硬件,配置GPIO,端口E,第6個(gè)引腳 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; //第6個(gè)引腳 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; //輸出模式 GPIO_InitStructure.GPIO_Speed=GPIO_High_Speed; //引腳高速工作,收到指令立即工作;缺點(diǎn):功耗高 GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //增加輸出電流的能力 GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; //不需要上下拉電阻 GPIO_Init(GPIOE,&GPIO_InitStructure); //PE6引腳輸出高電平,即EN引腳為高電平,進(jìn)入AT指令模式 PEout(6)=1; delay_ms(500); delay_ms(500); usart3_send_str("AT\r\n"); delay_ms(500); usart3_send_str("AT\r\n"); delay_ms(500); usart3_s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論