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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

附錄附錄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)定時器 SysTick->LOAD=(168*n)-1;//配置計數(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)定時器 SysTick->LOAD=(168000)-1; //配置計數(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); //車輪初始化voidcar_stop(void);//停車voidcar_go(void);//前進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);//自動跟隨voidcar_auto(void) //自動跟隨{ 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硬件時鐘使能 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; //沒有使能上下拉電阻 GPIO_Init(GPIOD,&GPIO_InitStructure);}voidcar_stop(void)//停車{ 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)//前進{ 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)//后退{ 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){ //使能(打開)端口A的硬件時鐘,就是對端口A供電 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能系統(tǒng)配置時鐘 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; //沒有使能上下拉電阻 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ā),用于識別電平的變低 EXTI_InitStructure.EXTI_LineCmd=ENABLE; //使能 EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn; //外部中斷0的請求通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占優(yōu)先級0 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; //響應(yīng)優(yōu)先級0 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能該通道 NVIC_Init(&NVIC_InitStructure); }//串口1初始化voidusart1_init(uint32_tbaud){ //打開PA硬件時鐘 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //打開串口1硬件時鐘 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; //沒有使能上下拉電阻 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ù):波特率、無校驗位、8位數(shù)據(jù)位、1個停止位 USART_InitStructure.USART_BaudRate=baud; //波特率 USART_InitStructure.USART_WordLength=USART_WordLength_8b; //8位數(shù)據(jù)位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //1個停止位 USART_InitStructure.USART_Parity=USART_Parity_No; //無奇偶校驗 USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //無硬件流控制 USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //允許收發(fā)數(shù)據(jù) USART_Init(USART1,&USART_InitStructure); //配置串口1的中斷觸發(fā)方法:接收一個字節(jié)觸發(fā)中斷 USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //配置串口1的中斷優(yōu)先級 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){ //打開PB硬件時鐘 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //打開串口3硬件時鐘 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; //沒有使能上下拉電阻 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ù):波特率、無校驗位、8位數(shù)據(jù)位、1個停止位 USART_InitStructure.USART_BaudRate=baud; //波特率 USART_InitStructure.USART_WordLength=USART_WordLength_8b; //8位數(shù)據(jù)位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //1個停止位 USART_InitStructure.USART_Parity=USART_Parity_No; //無奇偶校驗 USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //無硬件流控制 USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //允許收發(fā)數(shù)據(jù) USART_Init(USART3,&USART_InitStructure); //配置串口3的中斷觸發(fā)方法:接收一個字節(jié)觸發(fā)中斷 USART_ITConfig(USART3,USART_IT_RXNE,ENABLE); //配置串口3的中斷優(yōu)先級 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){ //打開PB硬件時鐘 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //打開串口2硬件時鐘 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; //沒有使能上下拉電阻 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ù):波特率、無校驗位、8位數(shù)據(jù)位、1個停止位 USART_InitStructure.USART_BaudRate=baud; //波特率 USART_InitStructure.USART_WordLength=USART_WordLength_8b; //8位數(shù)據(jù)位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //1個停止位 USART_InitStructure.USART_Parity=USART_Parity_No; //無奇偶校驗 USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //無硬件流控制 USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //允許收發(fā)數(shù)據(jù) USART_Init(USART2,&USART_InitStructure); //配置串口2的中斷觸發(fā)方法:接收一個字節(jié)觸發(fā)中斷 USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); //配置串口2的中斷優(yōu)先級 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++; }}//藍牙模塊配置voidbluetooth_config(void){ //使能端口E的硬件時鐘,端口E才能工作,說白了就是對端口E上電 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE); //配置硬件,配置GPIO,端口E,第6個引腳 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; //第6個引腳 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; //輸出模式 GPIO_InitStructure.GPIO_Speed=GPIO_High_Speed; //引腳高速工作,收到指令立即工作;缺點:功耗高 GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //增加輸出電流的能力 GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; //不需要上下拉電阻 GPIO_Init(GPIOE,&GPIO_InitStructure); //PE6引腳輸出高電平,即EN引腳為高電平,進入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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論