基于arduino的超聲波避障小車設(shè)計(jì)含28張CAD圖
基于arduino的超聲波避障小車設(shè)計(jì)含28張CAD圖,基于,arduino,超聲波,小車,設(shè)計(jì),28,cad
摘要
隨著5G技術(shù)的日趨成熟,無人駕駛有了更加有力的技術(shù)支持。無人駕駛技術(shù)是未來幾十年汽車和科技公司的一個(gè)重要研究方向,避障技術(shù)是無人駕駛技術(shù)中最基礎(chǔ)、最核心的一項(xiàng)技術(shù),具有廣闊的發(fā)展前景。
本論文的設(shè)計(jì)內(nèi)容為設(shè)計(jì)一輛基于Arduino的超聲波避障小車,本設(shè)計(jì)將基于Arduino單片機(jī)作為控制中心,使用超聲波傳感器和紅外尋跡傳感器來獲取環(huán)境信息,使用舵機(jī)來轉(zhuǎn)動(dòng)超聲波傳感器,使用L298N模塊作為電機(jī)驅(qū)動(dòng)模塊驅(qū)動(dòng)四輪小車,解決了小車?yán)@過障礙物后返回原路線的難題,實(shí)現(xiàn)了設(shè)計(jì)要求。
經(jīng)過實(shí)驗(yàn)驗(yàn)證,本文所設(shè)計(jì)的小車能夠檢測(cè)障礙物并進(jìn)行避障,并能夠在避障后按照原路線進(jìn)行行駛。達(dá)到了預(yù)期的目標(biāo)和要求。
關(guān)鍵詞 Arduino 超聲波 避障 小車
Abstract
As 5G technology matures, driverless driving has more powerful technical support. Unmanned driving technology is an important research direction for automobile and technology companies in the next few decades. Obstacle avoidance technology is the most basic and core technology in unmanned driving technology, and has broad development prospects.
The design of this paper is to design an Arduino-based ultrasonic obstacle avoidance car. This design will be based on the Arduino single-chip microcomputer as the control center, using ultrasonic sensors and infrared tracking sensors to obtain environmental information, using steering gear to rotate the ultrasonic sensor, using L298N As a motor drive module, the module drives the four-wheeled car, which solves the problem of the car returning to the original route after bypassing the obstacle, and realizes the design requirements.
After experimental verification, the car designed in this paper can detect obstacles and avoid obstacles, and then follow the original route after avoiding obstacles. Achieved the expected goals and requirements.
Key wards Arduino;ultrasound;avoidance;car
目錄
摘要 I
Abstract II
第1章緒論 1
1.1 選題背景 1
1.2 研究的目的和意義 2
1.2.1研究目的 2
1.2.2研究意義 2
1.3 國內(nèi)外研究現(xiàn)狀 3
1.3.1國外研究現(xiàn)狀 3
1.3.2國內(nèi)研究現(xiàn)狀 3
1.4 論文的研究?jī)?nèi)容 4
1.5 本章小結(jié) 4
第2章系統(tǒng)設(shè)計(jì) 5
2.1 系統(tǒng)設(shè)計(jì) 5
2.2 本章小結(jié) 5
第3章超聲波測(cè)距原理 6
3.1 超聲波測(cè)距原理 6
3.2 本章小結(jié) 6
第4章硬件設(shè)計(jì) 7
4.1 硬件選擇 7
4.1.1單片機(jī)選擇 7
4.1.2超聲波模塊選擇 8
4.1.3舵機(jī)選擇 8
4.1.4紅外尋跡模塊選擇 9
4.1.5電機(jī)驅(qū)動(dòng)模塊選擇 10
4.1.6其它器件選擇 10
4.2 硬件組裝 11
4.3 本章小結(jié) 11
第5章軟件設(shè)計(jì) 12
5.1 各個(gè)模塊程序設(shè)計(jì) 12
5.1.1Arduino UNO單片機(jī) 12
5.1.2超聲波模塊 12
5.1.3舵機(jī)模塊 13
5.1.4紅外尋跡模塊 13
5.1.5電機(jī)驅(qū)動(dòng)模塊 14
5.2 小車子程序設(shè)計(jì) 16
5.2.1靠近障礙物 16
5.2.2檢測(cè)障礙物 16
5.2.3沿壁行駛 18
5.2.4檢測(cè)黑線 19
5.2.5尋跡行駛 20
5.3 小車完整程序設(shè)計(jì) 21
5.4 本章小結(jié) 22
第6章工程定額概算 23
6.1 小車制作過程成本預(yù)算 23
6.2小車對(duì)環(huán)境的影響及其可持續(xù)性 23
6.2.1材料污染環(huán)境問題 23
6.2.2噪音污染問題 23
6.2.3工業(yè)三廢問題 23
6.2.4社會(huì)可持續(xù)發(fā)展問題 23
6.3 本章小結(jié) 23
第7章總結(jié) 24
參考文獻(xiàn) 25
致謝 26
第1章緒論
智能小車是一種由多個(gè)輪子驅(qū)動(dòng)的能夠自動(dòng)完成一定任務(wù)的智能機(jī)器人。科學(xué)技術(shù)的不斷發(fā)展,為智能小車提供了強(qiáng)有力的技術(shù)支持,使得智能小車的實(shí)現(xiàn)成為了可能,智能小車也因此成為了科學(xué)技術(shù)研究的一個(gè)熱門的、重要的方向。智能小車自身也有著很多的優(yōu)點(diǎn),其中最為明顯的優(yōu)點(diǎn)是能夠不需要人為干預(yù)地、自主地完成一定的任務(wù);智能小車還擁有其它的一些優(yōu)點(diǎn),它具有體積比較小、重心比較低、運(yùn)動(dòng)靈活等優(yōu)點(diǎn)[1]。避障技術(shù)就是智能小車通過自身的控制中心執(zhí)行一定的避障程序來使智能小車實(shí)現(xiàn)躲避障礙物的一項(xiàng)技術(shù),這項(xiàng)技術(shù)能夠大大提高智能小車在執(zhí)行任務(wù)過程中的安全性,避免智能小車受到損傷。
1.1 選題背景
智能小車在生活服務(wù)、工業(yè)制造、軍事等行業(yè)已經(jīng)有了廣泛的應(yīng)用[1],使得智能小車的避障技術(shù)成為了國內(nèi)外很多研究機(jī)構(gòu)關(guān)注的焦點(diǎn)。智能小車避障技術(shù)的實(shí)現(xiàn)需要硬件和軟件,硬件就是為智能小車添加控制芯片以及各種能夠采集智能小車所處空間信息的傳感器,軟件就是基于智能小車所搭載的基于硬件系統(tǒng)編寫的能夠?qū)崿F(xiàn)小車躲避障礙物功能的程序。智能小車避障系統(tǒng)目前已經(jīng)處于大規(guī)模發(fā)展階段,但是避障系統(tǒng)還存在諸多的缺陷和局限性,同時(shí)也有著廣闊的發(fā)展前景,這使得更多的從事相關(guān)領(lǐng)域研究的人投入智能小車技術(shù)的研究之中。近些年來,經(jīng)過所有從事研究智能小車人員的不斷探索和研究,智能小車的避障算法越來越先進(jìn),智能小車在躲避障礙物的時(shí)候能夠更加精準(zhǔn)、更加準(zhǔn)確,傳統(tǒng)的避障智能小車變得更加智能、更能夠適應(yīng)復(fù)雜的工作環(huán)境。
在生活服務(wù)領(lǐng)域:在汽車行業(yè)之中,5G技術(shù)的日趨成熟,為自動(dòng)駕駛技術(shù)的實(shí)現(xiàn)提供了強(qiáng)大的技術(shù)支持,自動(dòng)駕駛技術(shù)將會(huì)成為各個(gè)汽車品牌的一項(xiàng)核心賣點(diǎn)。自動(dòng)駕駛技術(shù)中不可或缺、最為重要的一項(xiàng)技術(shù)就是避障技術(shù),避障技術(shù)能夠保證乘客在乘坐汽車時(shí)的安全性。在快遞服務(wù)行業(yè)之中,快遞行業(yè)的巨頭們都在研究自主運(yùn)行的快遞車,旨在解決快遞配送服務(wù)的最后一公里的難題,無人快遞車目前已經(jīng)在部分大學(xué)之中進(jìn)行定點(diǎn)試運(yùn)行,避障技術(shù)無疑是無人快遞車的一項(xiàng)核心技術(shù),避障技術(shù)能夠避免快遞車撞到行人或者其它障礙物。相信在不遠(yuǎn)的未來,我們收到的快遞都是由無人快遞車進(jìn)行配送的,快遞車成為我們生活中的重要組成部分。此外,在2020年伊始,新冠病毒蔓延全球,人類的生命受到了巨大的威脅,很多人因此喪命,但這次疫情也是一次機(jī)遇,為了盡量避免人與人之間的交叉感染,很多的科技公司拿出他們的正在研究的智能車輛,進(jìn)行了試運(yùn)行。順豐快遞公司使用它們公司的無人車為武漢配送瓜果蔬菜等生活物資;京東集團(tuán)所研究的無人車為武漢的醫(yī)院配送醫(yī)療物資。還有其它的智能小車配合5G技術(shù)使得醫(yī)生能夠遠(yuǎn)程會(huì)診、遠(yuǎn)程查房。還有智能小車能夠裝載消毒劑,對(duì)空氣進(jìn)行消毒;搭載紫外線生成器,對(duì)病房進(jìn)行紫外線消毒;還能夠運(yùn)送垃圾。這些智能小車,全部需要運(yùn)用避障技術(shù),這也正好體現(xiàn)了避障技術(shù)在未來智能生活、智能城市中的重要性。
在工業(yè)制造領(lǐng)域:在快遞分揀中心,上千個(gè)無人“小黃車”快速地、自主地分揀快遞。我國的上海洋山港四期碼頭,最為吸引人的地方莫過于該碼頭高度的自動(dòng)化。高度的自動(dòng)化實(shí)現(xiàn)的方式是采用了上百臺(tái)自動(dòng)引導(dǎo)運(yùn)輸車,也被稱為AGV。通過“智能”大腦,AGV可以自定行車路線,有效規(guī)避碰撞。洋山四期的鋰電池驅(qū)動(dòng)AGV采用了當(dāng)今最前沿的技術(shù),除了無人駕駛、自動(dòng)導(dǎo)航、路徑優(yōu)化、主動(dòng)避障外,還支持自我故障診斷、自我電量監(jiān)控等功能[2]。顯而易見,若想讓上述的情況變成現(xiàn)實(shí),必定離不開避障技術(shù)。
在軍事領(lǐng)域:無人機(jī)能夠承擔(dān)偵察、轟炸等任務(wù)。無人車還能夠承擔(dān)巡邏等任務(wù)。這一切也都離不開避障技術(shù)。
綜上所述:避障技術(shù)是未來智能時(shí)代最重要、最核心、最基礎(chǔ)的一項(xiàng)技術(shù),避障技術(shù)的研究對(duì)于實(shí)現(xiàn)理想的智慧城市有著極其重要的意義。
1.2 研究的目的和意義
1.2.1研究目的
(1)設(shè)計(jì)一輛基于arduino單片機(jī)的利用超聲波傳感器模塊來實(shí)現(xiàn)避障的小車,此外,小車能夠在繞過障礙物后繼續(xù)按照原路線進(jìn)行行駛。
(2)由于本科階段的課程之中未涉及到arduino單片機(jī)的原理及應(yīng)用的學(xué)習(xí),但是本科的課程學(xué)習(xí)了最基礎(chǔ)的51單片機(jī),在學(xué)習(xí)的過程中積累了學(xué)習(xí)單片機(jī)的思路及學(xué)習(xí)方法,根據(jù)學(xué)習(xí)51單片機(jī)的方法和思路的積累,自己通過網(wǎng)上視頻教程和相關(guān)書籍學(xué)習(xí)一種新的單片機(jī):arduino的使用方法。
(3)由于arduino使用類C語言進(jìn)行編程,本科階段的對(duì)C語言進(jìn)行了學(xué)習(xí)。該設(shè)計(jì)能夠提高C語言的編程能力。
(4)通過自己動(dòng)手搭建一個(gè)智能小車平臺(tái),能夠掌握智能小車平臺(tái)的搭建方法,提高動(dòng)手能力。
(5)該設(shè)計(jì)分為硬件搭建和軟件編程兩個(gè)方面,該設(shè)計(jì)能夠掌握硬件與軟件結(jié)合調(diào)試的基本方法和技巧。
(6)設(shè)計(jì)過程可能會(huì)出現(xiàn)意想不到的問題,因此需要學(xué)會(huì)分析問題的原因,能夠提高解決問題的能力。
1.2.2研究意義
智能小車在生活服務(wù)、工業(yè)制造、軍事領(lǐng)域都有著深遠(yuǎn)的研究意義。
生活服務(wù):避障技術(shù)對(duì)于無人駕駛技術(shù)的最終實(shí)現(xiàn)有著極其重要的意義,它可以保證無人駕駛技術(shù)的安全性,保護(hù)了人們的生命財(cái)產(chǎn)安全,它本身就是自動(dòng)駕駛技術(shù)中的一部分。此外,餐廳服務(wù)機(jī)器人、銀行服務(wù)機(jī)器人等各種各樣的機(jī)器人,想要真正實(shí)現(xiàn),都離不開避障技術(shù)的支持。
工業(yè)制造:快遞中心的自動(dòng)分揀機(jī)器人、無人碼頭的自動(dòng)引導(dǎo)運(yùn)輸車的實(shí)現(xiàn),都需要避障技術(shù)作為其技術(shù)基礎(chǔ)。
軍事領(lǐng)域:隨著信息技術(shù)近些年的飛速發(fā)展,戰(zhàn)爭(zhēng)已經(jīng)從過去傳統(tǒng)的機(jī)械化戰(zhàn)爭(zhēng)變成了信息化戰(zhàn)爭(zhēng),信息化戰(zhàn)爭(zhēng)對(duì)于軍事裝備提出了新的要求,無人機(jī),無人偵察車等多種裝備成為了軍事領(lǐng)域研究的重要方向。而這一切都離不開避障技術(shù)的支持。
無人化、智能化、自動(dòng)化才是未來人們的生活方式的常態(tài),而這一切都離不開避障技術(shù)的支持,避障技術(shù)的研究有著深遠(yuǎn)的影響。
1.3 國內(nèi)外研究現(xiàn)狀
1.3.1國外研究現(xiàn)狀
國外智能小車的研究歷史較長(zhǎng),始于上世紀(jì)50年代。它的發(fā)展歷程大體可以分為三個(gè)階段[3]。
第一階段:這個(gè)階段仍處于智能小車研究的起步階段,剛開始有科研人員開始了對(duì)智能小車的研究。1954年美國Barrett Electronics公司研究開發(fā)了世界上第一臺(tái)自主引導(dǎo)車系統(tǒng)AGVS(Automated Guided Vehicle System)[3]。該系統(tǒng)是為了提高企業(yè)工廠物品搬運(yùn)的自動(dòng)化水平而進(jìn)行的探索研究,實(shí)現(xiàn)了拖車在固定線路上的自主運(yùn)行的功能。這也是人類對(duì)于智能小車技術(shù)最早的探索和研究。
第二階段:這個(gè)階段是智能小車研究逐漸風(fēng)行的階段。在歐洲、美洲的美國以及亞洲的日本等國家意識(shí)到了智能小車發(fā)展的重要性,紛紛成立機(jī)構(gòu)來加大對(duì)智能小車技術(shù)的研究和探索,這就促進(jìn)了智能小車技術(shù)的整體進(jìn)步。緊接著,智能小車的研究浪潮席卷了整個(gè)世界,大量的世界著名的公司陸續(xù)地投入到智能小車的研究之中。
第三階段:這個(gè)階段智能小車的研究已經(jīng)進(jìn)入了深入、系統(tǒng)、大規(guī)模研究階段[3],國外對(duì)于智能小車的研究目前仍處于第三階段。美國卡內(nèi)基.梅隆大學(xué)、麻省理工大學(xué)、德意志聯(lián)邦大學(xué)、日本大阪大學(xué)等很多的學(xué)校對(duì)智能小車進(jìn)行了深入的研究。這個(gè)階段,對(duì)于智能小車的研究成果呈現(xiàn)井噴狀態(tài),各種方案被用于實(shí)驗(yàn)驗(yàn)證,其中充滿了大量的具有深遠(yuǎn)影響意義的解決方案。例如:UBM視覺系統(tǒng)、Combi road系統(tǒng)、航位推測(cè)系統(tǒng)。
1.3.2國內(nèi)研究現(xiàn)狀
相對(duì)于國外,我國開展智能小車技術(shù)方面的研究起步較晚,開始于上個(gè)世紀(jì)的80年代。雖然我國在智能車輛技術(shù)方面的研究總體上落后于發(fā)達(dá)國家,并且存在一定的技術(shù)差距[4],但是隨著我國政府和企業(yè)認(rèn)識(shí)到了科技創(chuàng)新的重要性并加大了對(duì)科技創(chuàng)新的投入,以及我國科學(xué)技術(shù)研究人員的不懈努力,截止到今天,我國的智能小車技術(shù)的研究取得了豐碩的成果,在某些方面趕上了、甚至超越了世界先進(jìn)水平。
中國第一汽車集團(tuán)公司和國防科技大學(xué)機(jī)電工程與自動(dòng)化學(xué)院與2003年研制成功我國第一輛自主駕駛轎車[4]。這輛轎車除了能夠完成在高速公路上的正常行駛之外,還能夠?qū)崿F(xiàn)超車這種復(fù)雜的自動(dòng)控制。在當(dāng)時(shí),這輛的總體技術(shù)水平已經(jīng)和世界上最為先進(jìn)的智能小車水平不相上下。南京理工大學(xué)、北京理工大學(xué)、浙江大學(xué)、國防科技大學(xué)、清華大學(xué)等多所院校聯(lián)合研制了7B.8軍用室外自主車,該車裝有彩色攝像機(jī)、激光雷達(dá)、陀螺慣導(dǎo)定位等傳感器[4]。其體系結(jié)構(gòu)以水平式結(jié)構(gòu)為主,采用傳統(tǒng)的“感知-建模-規(guī)劃-執(zhí)行”算法。智能車輛研究也是智能交通系統(tǒng)ITS的關(guān)鍵技術(shù)。隨著ITS研究的興起,我國已形成一支ITS技術(shù)研究開發(fā)的技術(shù)專業(yè)隊(duì)伍。并且各交通、汽車企業(yè)越來越加大了對(duì)ITS及智能車輛技術(shù)研發(fā)的投入,整個(gè)社會(huì)的關(guān)注程度在不斷提高[4]。
總而言之,近些年我國經(jīng)濟(jì)的高速發(fā)展,為發(fā)展智能小車技術(shù)提供了經(jīng)濟(jì)基礎(chǔ);國家對(duì)于科技創(chuàng)新越來越重視,為發(fā)展智能小車技術(shù)提供了政策基礎(chǔ);各個(gè)大學(xué)培養(yǎng)出了大批的高素質(zhì)人才,為發(fā)展智能小車技術(shù)提供了人才基礎(chǔ),可以肯定,我國對(duì)于智能小車的研究必然會(huì)越來越好,避障技術(shù)作為其中重要的一項(xiàng)組成部分,其研究也必然會(huì)越來越好。
1.4 論文的研究?jī)?nèi)容
該論文在四輪小車平臺(tái)上基于arduino單片機(jī)進(jìn)行研究,研究的主要內(nèi)容為利用超聲波模塊、舵機(jī)模塊、紅外尋跡模塊所采集環(huán)境信息并通過執(zhí)行避障程序來使得小車實(shí)現(xiàn)避障,并且在避障之后智能小車能夠按照原路線進(jìn)行行駛。
小車整個(gè)運(yùn)行過程:在地面上鋪設(shè)黑線作為小車的行駛路線,使用超聲波傳感器來檢測(cè)小車距離障礙物的距離,當(dāng)小車距離障礙物小于10cm時(shí),小車先停止前進(jìn);然后小車向左行駛,并使超聲波朝向障礙物,通過超聲波傳感器所測(cè)量的距離判斷障礙物的左邊界,然后向右行駛判斷右邊界,從而判斷小車從障礙物左側(cè)避障還是右側(cè)避障,以保證小車采用最佳避障路線;繞過障礙物的過程采用沿壁行駛;然后通過紅外尋跡傳感器檢測(cè)地面上的黑線,使小車車頭回正;繼續(xù)尋跡沿著黑線行駛,當(dāng)小車檢測(cè)到橫向黑線時(shí),小車停止運(yùn)動(dòng)。至此,小車完成全部任務(wù)。
1.5 本章小結(jié)
了解了避障技術(shù)的發(fā)展歷程,認(rèn)識(shí)到了避障技術(shù)的重要性和研究的深遠(yuǎn)意義。明確了該設(shè)計(jì)的研究?jī)?nèi)容。
第2章系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)設(shè)計(jì)
本設(shè)計(jì)的設(shè)計(jì)目的是設(shè)計(jì)一臺(tái)基于Arduino的超聲波避障小車,因此,選擇Arduino單片機(jī)作為整個(gè)系統(tǒng)的控制中心,使用超聲波傳感器作為該設(shè)計(jì)測(cè)量距離的傳感器。小車在避障之前需要判斷從哪一側(cè)繞行,采用的方案為小車在障礙物前方橫向行駛,超聲波朝向障礙物,通過超聲波測(cè)量的距離來判斷障礙物的邊界。因?yàn)樾枰D(zhuǎn)動(dòng)超聲波,所以需要一個(gè)舵機(jī)。小車?yán)@過障礙物的過程選擇小車沿著障礙物的側(cè)面距離一定距離繞行的方案。由于小車需要在躲避障礙物之后繼續(xù)沿著原路線行駛,因此選擇在地上鋪設(shè)黑線作為小車行駛的原路線,為小車配置紅外尋跡傳感器用來識(shí)別黑白線,使小車在躲避障礙物以后通過檢測(cè)黑線回到原路線進(jìn)行行駛,同時(shí)在小車?yán)@過障礙物以后進(jìn)行尋跡行駛,這樣可以通過鋪設(shè)黑線來自由規(guī)定小車的行駛路線,到小車檢測(cè)到橫向黑線時(shí),小車停止前進(jìn)。
通過上述分析,可知該設(shè)計(jì)共分為7個(gè)部分,分別為:Arduino、超聲波、紅外尋跡、舵機(jī)、電機(jī)、電機(jī)驅(qū)動(dòng)、電池。由此可以繪制整個(gè)小車系統(tǒng)框架,如圖2-1所示。
圖2-1 小車系統(tǒng)框架
2.2 本章小結(jié)
分析了小車系統(tǒng)各個(gè)部分,建立了設(shè)計(jì)的小車的系統(tǒng)框架。
第3章超聲波測(cè)距原理
3.1 超聲波測(cè)距原理
超聲波是一種頻率高于20000赫茲的聲波。它的方向性好、穿透能力墻,易于獲得較集中的聲能,在水中傳播距離遠(yuǎn),可用于測(cè)距、測(cè)速、清洗、焊接、碎石、殺菌消毒等。在醫(yī)學(xué)、軍事、工業(yè)、農(nóng)業(yè)上有很多的應(yīng)用[5]。
超聲波測(cè)距原理:超聲波發(fā)射器向某一個(gè)方向發(fā)射一定頻率的超聲波信號(hào),并在超聲波發(fā)射的同時(shí),計(jì)時(shí)器開始計(jì)時(shí),超聲波在空氣中進(jìn)行傳播,當(dāng)遇到物體的時(shí)候,超聲波信號(hào)反射或者漫反射回來,當(dāng)超聲波接收器接收到反射波時(shí),計(jì)時(shí)器停止計(jì)時(shí),便可以得到超聲波信號(hào)傳播到物體并反射回來的時(shí)間,取超聲波在空氣中傳播的速度為340m/s,便可以得到超聲波到物體的距離為:
距離=(時(shí)間*340m/s)/2
超聲波測(cè)距原理如圖3-1所示。
圖3-1 超聲波測(cè)距原理
3.2 本章小結(jié)
介紹了超聲波的定義、優(yōu)點(diǎn)及超聲波測(cè)距的原理。
第4章硬件設(shè)計(jì)
硬件設(shè)計(jì)包括硬件選擇和硬件組裝兩個(gè)部分。
4.1 硬件選擇
4.1.1單片機(jī)選擇
由于該設(shè)計(jì)題目要求,因此選擇該設(shè)計(jì)所使用的單片機(jī)為Arduino單片機(jī)。
Arduino單片機(jī)是一款簡(jiǎn)單的、入門級(jí)別單片機(jī),常作為新手學(xué)習(xí)的第一塊單片機(jī)。其分為硬件(各種型號(hào)的Arduino板)和軟件(Arduino IDE),于2005年冬季由一個(gè)歐洲團(tuán)隊(duì)開發(fā)[6]。
Arduino單片機(jī)擁有著諸多的型號(hào),人們接觸較多的、常見的型號(hào)有Arduino Uno R3和Arduino Nano;此外Arduino單片機(jī)還有多種初學(xué)者用不到的型號(hào),如Arduino LilyPad、Arduino Due。Arduino單片機(jī)所使用的編程軟件是名為“Arduino”的軟件,這款軟件是推出Arduino的團(tuán)隊(duì)所推出的,可在Arduino官網(wǎng)下載。
考慮到該設(shè)計(jì)要求采用四輪小車平臺(tái),并且會(huì)使用多個(gè)傳感器,對(duì)于單片機(jī)的管腳需求較大, 因此選擇管腳較多的型號(hào):Arduino UNO。Arduino單片機(jī)是開源平臺(tái),市場(chǎng)上所售賣的Arduino單片機(jī)有兩類,一類是意大利原裝正版單片機(jī),另一類是由第三方廠家根據(jù)Arduino官方公布的資料自己生產(chǎn)的;價(jià)格方面,意大利原裝正版的該型號(hào)的單片機(jī)價(jià)格較高,一般是138元左右,第三方廠家所生產(chǎn)的該型號(hào)的單片機(jī)的價(jià)格較低,從十幾元到幾十元不等。經(jīng)過對(duì)兩種單片機(jī)的了解,綜合考慮到小車的成本和運(yùn)行的穩(wěn)定性,最終選擇第三方廠家生產(chǎn)的單片機(jī)。Arduino UNO單片機(jī)圖片如圖4-1所示。
圖4-1 Arduino UNO單片機(jī)
4.1.2超聲波模塊選擇
超聲波傳感器有很多的型號(hào),精度和價(jià)格也各不相同,經(jīng)過對(duì)超聲波各種型號(hào)的參數(shù)的了解和研究,綜合考慮設(shè)計(jì)需求、設(shè)計(jì)成本和運(yùn)行穩(wěn)定性,選擇的超聲波傳感器為大多數(shù)新手開始學(xué)習(xí)所使用的型號(hào),即HC-SR04。該傳感器的圖片如圖4-2所示。
圖4-2 超聲波模塊
該型號(hào)超聲波傳感器性能穩(wěn)定,測(cè)量精度高,盲區(qū)小。該傳感器廣泛應(yīng)用于機(jī)器人避障、物體測(cè)距、液位檢測(cè)、公共安防、停車場(chǎng)檢測(cè)等領(lǐng)域[7]。
該型號(hào)超聲波傳感器的電氣參數(shù)如表4-1所示。
表4-1 HC-SR04超聲波電氣參數(shù)
電氣參數(shù)
HC-SR04超聲波模塊
工作電壓
DC 5V
工作電流
15mA
工作頻率
40Hz
最遠(yuǎn)射程
4m
最近射程
2cm
測(cè)量角度
15度
輸入回響信號(hào)
10uS的TTL脈沖
輸出回響信號(hào)
輸出TTL電平信號(hào),與射程成比例
4.1.3舵機(jī)選擇
舵機(jī)的型號(hào)也多種多樣,經(jīng)過對(duì)舵機(jī)的各型號(hào)參數(shù)的了解和研究,綜合考慮設(shè)計(jì)需要、設(shè)計(jì)成本和運(yùn)行穩(wěn)定性,選擇的舵機(jī)為較為常用到的型號(hào),即SG90。該舵機(jī)的圖片如圖4-3所示。
圖4-3 SG90舵機(jī)
舵機(jī)主要由以下幾個(gè)部分組成:舵盤、減速齒輪組、位置反饋電位儀、直流電機(jī)、控制電路板等[8]。
該型號(hào)舵機(jī)的電氣參數(shù)如表4-2所示。
表4-2 SG90舵機(jī)電氣參數(shù)
電氣參數(shù)
SG90舵機(jī)
工作電壓
DC 4.8V-6V
無負(fù)載速度
0.12秒/60度(4.8V)
堵轉(zhuǎn)扭矩
1.2-1.4公斤/厘米(4.8V)
使用溫度
-30~+60攝氏度
死區(qū)設(shè)定
7微秒
重量
9克
4.1.4紅外尋跡模塊選擇
紅外尋跡模塊也多種多樣,經(jīng)過對(duì)紅外尋跡模塊各個(gè)型號(hào)的了解和研究,綜合考慮設(shè)計(jì)需要、設(shè)計(jì)成本和運(yùn)行穩(wěn)定性,選擇紅外尋跡模塊的型號(hào)為TCRT5000??紤]到設(shè)計(jì)需要小車尋跡行駛,因此需要兩個(gè)該型號(hào)的傳感器。該紅外尋跡模塊圖片如圖4-4所示。
圖4-4 紅外尋跡模塊
該傳感器的應(yīng)用范圍為:電度表脈沖數(shù)據(jù)采樣、傳真機(jī)碎紙機(jī)紙張檢測(cè)、障礙檢測(cè)和黑白線檢測(cè)[9]。
該型號(hào)紅外尋跡傳感器的電氣參數(shù)如表4-3所示。
表4-3 TCRT5000紅外反射傳感器電氣參數(shù)
電氣參數(shù)
TCRT5000紅外反射傳感器
工作電壓
DC 3.3V-5V
檢測(cè)距離
1mm~8mm使用,焦點(diǎn)距離為2.5mm
輸出形式
數(shù)字開關(guān)量輸出(0和1)
4.1.5電機(jī)驅(qū)動(dòng)模塊選擇
經(jīng)過對(duì)電機(jī)驅(qū)動(dòng)模塊各型號(hào)的了解和研究,并結(jié)合設(shè)計(jì)的需要,選擇電機(jī)驅(qū)動(dòng)模塊的型號(hào)為L(zhǎng)298N。由于該設(shè)計(jì)平臺(tái)為4輪小車,一個(gè)L298N能夠驅(qū)動(dòng)兩個(gè)電機(jī),因此需要兩個(gè)L298N模塊。該電機(jī)驅(qū)動(dòng)模塊的圖片如圖4-5所示。
圖4-5 L298N模塊
L298N是ST公司生產(chǎn)的一種高電壓、大電流的電機(jī)驅(qū)動(dòng)芯片,該芯片采用15腳封裝。主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;額定功率25W[10]。該電機(jī)驅(qū)動(dòng)模塊可以同時(shí)驅(qū)動(dòng)兩臺(tái)直流電動(dòng)機(jī)。
該型號(hào)電機(jī)驅(qū)動(dòng)模塊的電氣參數(shù)如下表4-4所示。
表4-4 L298N電機(jī)驅(qū)動(dòng)模塊電氣參數(shù)
電氣參數(shù)
L298N電機(jī)驅(qū)動(dòng)模塊
驅(qū)動(dòng)電壓
5V-35V
邏輯電壓
5V
工作模式
H橋驅(qū)動(dòng)(雙路)
主控芯片
L298N
邏輯電流
0mA-36mA
驅(qū)動(dòng)電流
2A(MAX單橋)
儲(chǔ)存溫度
-20°C~+35°C
最大功率
25W
4.1.6其它器件選擇
小車選擇:選擇一臺(tái)四輪雙層的小車作為設(shè)計(jì)所用小車。
電池選擇:選擇常見的可充電式電池18650鋰電池作為供電電池,18650電池額定電壓為3.7V,選擇3節(jié)電池供電。并配置充電器。
面包板選擇:選擇最小的面包板即可,主要用于將各模塊的供電引腳接在一起。
還需要配置18650的電池盒、開關(guān)、數(shù)量足夠的杜邦線、舵機(jī)超聲波支架、螺釘、螺母等。
4.2 硬件組裝
將各個(gè)模塊和零件按照正確的方式組裝在一起。小車圖片如圖4-6所示。
圖4-6 小車圖片
4.3 本章小結(jié)
對(duì)該設(shè)計(jì)所使用的零件選定型號(hào),并組裝好小車。
第5章軟件設(shè)計(jì)
5.1 各個(gè)模塊程序設(shè)計(jì)
5.1.1Arduino UNO單片機(jī)
Arduino UNO微控制器采用的是Atmel的ATmega328。Arduino UNO開發(fā)板有很多的接口和引腳,其中使用到的接口是USB接口,使用到的引腳為部分?jǐn)?shù)字引腳、5V和GND引腳。USB接口可以用來給單片機(jī)下載程序,同時(shí)還兼具供電的功能。5V和GND引腳用于小車在運(yùn)行過程中給Arduino供電。20個(gè)數(shù)字引腳的名稱為0-13和A0-A5,其中A0-A5兼具模擬輸入的功能,0-13引腳之中,引腳3、5、6、9、10、11具有PWM功能。
5.1.2超聲波模塊
超聲波傳感器共有4個(gè)引腳,分別為Vcc、GND、 Trig、 Echo,其中Vcc、GND接上5V直流電源為超聲波供電, Trig控制發(fā)出的超聲波信號(hào),Echo接收反射回來的超聲波信號(hào)。
超聲波傳感器的工作原理:通過Trig引腳發(fā)一個(gè)10uS以上的高電平,模塊內(nèi)部便會(huì)自動(dòng)發(fā)送8個(gè)40kHz的方波,然后檢測(cè)Echo引腳由低電平變?yōu)楦唠娖奖汩_始計(jì)時(shí),直到Echo引腳從高電平變?yōu)榈碗娖綖橹梗x取這段時(shí)間。便可以利用測(cè)得的時(shí)間和聲音在空氣中傳播的速度計(jì)算出測(cè)得的距離,測(cè)量距離=(高電平持續(xù)時(shí)間*聲速(取340m/s))/2。
超聲波時(shí)序圖如圖5-1所示。
圖5-1 超聲波時(shí)序圖
將超聲波傳感器的Trig引腳連接在A1引腳,Echo引腳連接在A2引腳;因此可編寫超聲波模塊測(cè)量距離的程序?yàn)椋?
int Trig=A1;
int Echo=A2;
void setup() {
pinMode(Trig,OUTPUT);
pinMode(Echo,INPUT);
}
void loop() {
Distance_test( ();
}
float Distance_test(){
digitalWrite(Trig,LOW);
delayMicroseconds(2);
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
delayMicroseconds(2);
distance=pulseIn(Echo,HIGH)*340/2/10000.00;
}
5.1.3舵機(jī)模塊
舵機(jī)模塊一共有3個(gè)引腳,分別是Vcc(紅色)、GND(棕色)和控制線(橙色)。Vcc和GND引腳接在5V電源上,控制線用來控制舵機(jī)所旋轉(zhuǎn)的角度。
工作原理:舵機(jī)內(nèi)部有一個(gè)基準(zhǔn)電壓,微處理器產(chǎn)生的PWM信號(hào)通過信號(hào)線進(jìn)入舵機(jī)產(chǎn)生直流偏置電壓,與舵機(jī)內(nèi)部的基準(zhǔn)電壓作比較,獲得電壓差輸出。電壓差的正負(fù)輸出到電機(jī)驅(qū)動(dòng)芯片上,從而決定正反轉(zhuǎn)。當(dāng)舵機(jī)開始旋轉(zhuǎn)的時(shí)候,舵機(jī)內(nèi)部通過級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為零,電機(jī)停止轉(zhuǎn)動(dòng)[11]。
舵機(jī)的控制需要一個(gè)20mS左右的時(shí)基脈沖,該脈沖的高電平部分一般為0.5mS-2.5mS范圍,總間隔為2mS。脈沖的寬度了決定馬達(dá)轉(zhuǎn)動(dòng)的角度。例如:1.5mS的脈沖,電機(jī)將轉(zhuǎn)向90度的位置。如果脈沖寬度小于1.5mS,那么馬達(dá)將會(huì)轉(zhuǎn)向0度方向。如果脈沖寬度大于1.5mS,那么馬達(dá)會(huì)轉(zhuǎn)向180度方向。脈沖的寬度和馬達(dá)停止的角度成正相關(guān)。
由于該設(shè)計(jì)所用的平臺(tái)為Arduino UNO單片機(jī),單片機(jī)的庫函數(shù)包含對(duì)舵機(jī)進(jìn)行控制的程序,調(diào)用庫函數(shù)“Servo.h”能夠使程序更加簡(jiǎn)單,只需要一條程序“myservo.write(degree)”便可以控制舵機(jī)的旋轉(zhuǎn)角度。舵機(jī)的控制線接在具有PWM的9號(hào)引腳??梢跃帉懚鏅C(jī)的控制程序?yàn)椋?
#include
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
myservo.write(degree);
}
5.1.4紅外尋跡模塊
紅外尋跡模塊共有4個(gè)引腳,分別為Vcc、GND、D0和A0,Vcc和GND引腳用來連接3V-5V的電源給傳感器供電,D0引腳為數(shù)字信號(hào)輸出引腳,A0引腳在該設(shè)計(jì)中用不到。
該紅外尋跡模塊包含有發(fā)射管和接收管,其中發(fā)射管會(huì)不斷向外界發(fā)射紅外線,接收管則不斷檢測(cè)環(huán)境中的紅外線強(qiáng)度。當(dāng)發(fā)射管發(fā)射出的紅外線沒有被反射回來或反射回來但強(qiáng)度不夠大時(shí),此時(shí)模塊的輸出端為高電平,模塊上的指示燈處于熄滅狀態(tài);當(dāng)被檢測(cè)物體出現(xiàn)在檢測(cè)范圍內(nèi)時(shí),紅外線被反射回來且強(qiáng)度足夠大時(shí),模塊的輸出端為低電平,指示燈被點(diǎn)亮。
該設(shè)計(jì)一共使用了兩個(gè)該型號(hào)的紅外尋跡模塊,Vcc和GND用來接在5V的電源上供電,左側(cè)紅外尋跡模塊的D0引腳接在A3引腳,右側(cè)紅外尋跡模塊的D0引腳接在A4引腳。因此紅外尋跡模塊的程序?yàn)椋?
int hw_left=A3;
int hw_right=A4;
int l,r;
void setup() {
pinMode(hw_left,INPUT);
pinMode(hw_right,INPUT);
}
l=digitalRead(hw_left);
r=digitalRead(hw_right);
5.1.5電機(jī)驅(qū)動(dòng)模塊
L298N模塊共有13個(gè)引腳,其中左側(cè)兩個(gè)引腳為輸出A,右側(cè)兩個(gè)引腳為輸出B;前方左側(cè)三個(gè)藍(lán)色引腳從左到右分別為:12V供電引腳、GND、5V供電引腳;前方右側(cè)六個(gè)引腳從左到右分別為:通道A使能、兩個(gè)通道A控制引腳(IN1、IN2),兩個(gè)通道B控制引腳(IN1、IN2),通道B使能。使用三節(jié)串聯(lián)的18650鋰電池給L298N模塊進(jìn)行供電,連接在L298N模塊的12V供電引腳和GND引腳,兩個(gè)L298N模塊進(jìn)行并聯(lián)。L298N的5V供電引腳用來給單片機(jī)供電。
L298N電機(jī)驅(qū)動(dòng)模塊的邏輯功能表如下表5-1所示。
表5-1 L298N邏輯功能表
ENA
IN1
IN2
直流電機(jī)狀態(tài)
0
--
--
停止
1
0
0
制動(dòng)
1
0
1
正轉(zhuǎn)
1
1
0
反轉(zhuǎn)
1
1
1
制動(dòng)
將小車車輪的電機(jī)分別連接在兩個(gè)L298N對(duì)應(yīng)的輸出引腳,前方左輪、前方右輪、后方左輪、后方右輪的使能管腳分別連接在具有PWM功能的3、5、6、11引腳。前方左輪、前方右輪、后方左輪、后方右輪的控制引腳分別連接在0、1、2、4、7、8、10、12引腳??梢跃帉懙男≤囆羞M(jìn)的程序?yàn)椋?
int ENA1=3;
int flmotor1=0;
int flmotor2=1;
int ENB1=5;
int frmotor1=2;
int frmotor2=4;
int ENA2=6;
int blmotor1=7;
int blmotor2=8;
int ENB2=11;
int brmotor1=10;
int brmotor2=12;
void setup() {
pinMode(ENA1,OUTPUT);
pinMode(flmotor1,OUTPUT);
pinMode(flmotor2,OUTPUT);
pinMode(ENB1,OUTPUT);
pinMode(frmotor1,OUTPUT);
pinMode(frmotor2,OUTPUT);
pinMode(ENA2,OUTPUT);
pinMode(blmotor1,OUTPUT);
pinMode(blmotor2,OUTPUT);
pinMode(ENB2,OUTPUT);
pinMode(brmotor1,OUTPUT);
pinMode(brmotor2,OUTPUT);
}
void loop() {
forward();
}
void forward(){
analogWrite(ENA1,70);
analogWrite(ENB1,70);
analogWrite(ENA2,70);
analogWrite(ENB2,70);
digitalWrite(flmotor1,HIGH);
digitalWrite(flmotor2,LOW);
digitalWrite(frmotor1,HIGH);
digitalWrite(frmotor2,LOW);
digitalWrite(blmotor1,HIGH);
digitalWrite(blmotor2,LOW);
digitalWrite(brmotor1,HIGH);
digitalWrite(brmotor2,LOW);
}
(注:該程序僅列出小車前進(jìn)的程序,其它行進(jìn)情況的程序會(huì)在完整程序的文件中展示。)
5.2 小車子程序設(shè)計(jì)
小車整個(gè)運(yùn)行過程可分為靠近障礙物、檢測(cè)障礙物邊界、沿壁行駛、檢測(cè)黑線和尋跡行駛五個(gè)過程。為模塊化編寫程序,將上述5個(gè)過程分開進(jìn)行編程。
5.2.1靠近障礙物
靠近障礙物是為了更好地執(zhí)行沿壁程序。當(dāng)小車距離障礙物距離大于30cm時(shí),小車尋跡前行,當(dāng)小車距離障礙物距離小于30cm時(shí),小車間歇前進(jìn),目的是降低小車的速度,因?yàn)樾≤囆旭傔^程中測(cè)得的距離與實(shí)際距離差值較大。當(dāng)小車距離障礙物距離小于10cm時(shí),小車停止。由此可編寫程序?yàn)椋?
myservo.write(90);
delay(500);
Distance_test();
while(distance>30){
track();
Distance_test();
}
stoprun();
delay(100);
Distance_test();
while(distance>10){
forward();
delay(100);
stoprun();
delay(100);
Distance_test();
}
stoprun();
delay(1000);
5.2.2檢測(cè)障礙物
檢測(cè)障礙物子程序所要完成的任務(wù)是確定小車從障礙物的哪一側(cè)繞過障礙物,為實(shí)現(xiàn)上述任務(wù),實(shí)現(xiàn)的方案為小車先向左轉(zhuǎn)過90度,舵機(jī)帶動(dòng)超聲波傳感器轉(zhuǎn)向障礙物一側(cè),不斷測(cè)量距離,同時(shí)每隔100mS記一次數(shù),當(dāng)距離小于一定值時(shí),小車向前進(jìn)行檢測(cè)障礙物的沿壁行駛,否則小車右轉(zhuǎn)180度,同樣轉(zhuǎn)動(dòng)舵機(jī)帶動(dòng)超聲波傳感器朝向障礙物,不斷測(cè)量距離,同樣間隔計(jì)數(shù),當(dāng)距離小于一定數(shù)值并且計(jì)數(shù)值小于向左計(jì)數(shù)值的兩倍時(shí),小車向前進(jìn)行檢測(cè)障礙物的沿壁行駛,否則,小車停止。此時(shí),如果向右計(jì)數(shù)值等于兩倍的向左計(jì)數(shù)值并且距離小于一定值,說明小車距離障礙物左側(cè)邊界更近,小車應(yīng)該從障礙物左側(cè)繞行,小車向左轉(zhuǎn)動(dòng)180度,并向左行駛向左計(jì)數(shù)值乘100mS的時(shí)間。否則,便說明小車距離障礙物右側(cè)邊界更近,小車應(yīng)該從障礙物右側(cè)繞行。由此可編寫檢測(cè)障礙物子程序?yàn)椋?
void zhangaiwu(){
turnleft();
delay(370);
stoprun();
delay(1000);
myservo.write(0);
delay(500);
Distance_test();
while(distance<50){
zhangaiwu_yanbileft();
delay(100);
left=left+1;
Distance_test();
}
stoprun();
delay(1000);
turnright();
delay(650);
stoprun();
delay(1000);
myservo.write(180);
delay(500);
Distance_test();
while(distance<50&&(right<2*left)){
zhangaiwu_yanbiright();
delay(100);
right=right+1;
Distance_test();
}
stoprun();
delay(1000);
if((right==2*left)&&(distance<50)){
myservo.write(0);
turnleft();
delay(650);
stoprun();
delay(1000);
zhangaiwu_yanbileft();
delay(left*100);
stoprun();
delay(100);
}
}
void zhangaiwu_yanbiright(){
if(distance>=20&&distance<=24)
forward();
else if(distance<20)
runright();
else if(distance>24)
runleft();
}
void zhangaiwu_yanbileft(){
if(distance>=20&&distance<=24)
forward();
else if(distance<20)
runleft();
else if(distance>24)
runright();
}
(注:小車行進(jìn)相關(guān)程序詳細(xì)代碼可在完整程序的文件中查看。)
5.2.3沿壁行駛
沿壁行駛子程序所要完成的任務(wù)是讓小車能夠距離障礙物外邊界一定距離沿障礙物外邊界進(jìn)行行駛。為實(shí)現(xiàn)此任務(wù),實(shí)現(xiàn)的方案為旋轉(zhuǎn)舵機(jī)使超聲波傳感器朝向障礙物一側(cè),當(dāng)小車距離障礙物距離在一定范圍之內(nèi)時(shí),小車向前行駛;當(dāng)小車距離障礙物過遠(yuǎn)時(shí),小車向靠近障礙物一側(cè)行駛;當(dāng)小車距離障礙物過近時(shí),小車向遠(yuǎn)離障礙物一側(cè)行駛;當(dāng)小車距離障礙物超過一定限制時(shí),小車以較大的轉(zhuǎn)彎半徑向靠近障礙物一側(cè)進(jìn)行行駛。由此,可編寫沿壁行駛的子程序?yàn)椋?
void yanbi_right(){
Distance_test();
if(distance>=23&&distance<=27)
forward();
else if(distance<23)
turnright();
else if(distance>27&&distance<=35)
turnleft();
else
runleft();
}
void yanbi_left(){
Distance_test();
if(distance>=23&&distance<=27)
forward();
else if(distance<23)
turnleft();
else if(distance>27&&distance<=35)
turnright();
else
runright();
}
(注:小車行進(jìn)相關(guān)程序詳細(xì)代碼可在完整程序的文件中查看。)
5.2.4檢測(cè)黑線
檢測(cè)黑線子程序的任務(wù)是使黑線重新位于兩個(gè)紅外尋跡模塊之間,使小車能夠?qū)ほE。為了實(shí)現(xiàn)該任務(wù),實(shí)現(xiàn)的方案為當(dāng)小車沿壁程序執(zhí)行過程中兩個(gè)紅外尋跡模塊檢測(cè)是否有黑線,當(dāng)檢測(cè)到黑線時(shí),小車向前行駛一段距離(約半個(gè)車身的距離),然后小車停止片刻,小車右側(cè)紅外尋跡模塊檢測(cè)黑線同時(shí)小車向右轉(zhuǎn)動(dòng),當(dāng)小車檢測(cè)到黑線時(shí),小車?yán)^續(xù)向右轉(zhuǎn)動(dòng)并繼續(xù)檢測(cè)黑線,當(dāng)檢測(cè)不到黑線時(shí),黑線已經(jīng)位于小車兩個(gè)紅外尋跡模塊之間。由此,編寫檢測(cè)黑線子程序?yàn)椋?
void jchx_right(){
forward();
delay(200);
stoprun();
delay(1000);
r=digitalRead(hw_right);
while(r==LOW){
hx_turnright();
r=digitalRead(hw_right);
}
while(r==HIGH){
hx_turnright();
r=digitalRead(hw_right);
}
}
void jchx_left(){
forward();
delay(200);
stoprun();
delay(1000);
l=digitalRead(hw_left);
while(l==LOW){
hx_turnleft();
l=digitalRead(hw_left);
}
while(r==HIGH){
hx_turnleft();
l=digitalRead(hw_left);
}
}
(注:小車行進(jìn)相關(guān)程序詳細(xì)代碼可在完整程序的文件中查看。)
5.2.5尋跡行駛
尋跡行駛子程序的任務(wù)是使小車能夠按照即定路線進(jìn)行行駛。為了實(shí)現(xiàn)該任務(wù),實(shí)現(xiàn)的方案為在地上(盡量選擇顏色亮的顏色,減少對(duì)紅外線的吸收)貼上黑線作為小車行駛的路線,使用兩個(gè)紅外尋跡來檢測(cè)黑線,當(dāng)兩側(cè)的紅外尋跡模塊均未檢測(cè)到黑線時(shí),小車向前行駛;當(dāng)左側(cè)紅外尋跡模塊檢測(cè)到黑線時(shí),小車向右側(cè)轉(zhuǎn)彎行駛;當(dāng)右側(cè)紅外尋跡模塊檢測(cè)到黑線時(shí),小車向左側(cè)轉(zhuǎn)彎行駛;當(dāng)左右兩側(cè)兩個(gè)紅外尋跡傳感器都檢測(cè)到黑線時(shí),小車停止前進(jìn)。由此,可編寫尋跡行駛子程序?yàn)椋?
void track(){
l=digitalRead(hw_left);
r=digitalRead(hw_right);
if(l==LOW&&r==LOW)
forward();
else if(l==HIGH&&r==LOW)
turnleft();
else if(l==LOW&&r==HIGH)
turnright();
else if(l==HIGH&&r==HIGH){
stoprun();
while(1){}
}
}
(注:小車行進(jìn)相關(guān)程序詳細(xì)代碼可在完整程序的文件中查看。)
5.3 小車完整程序設(shè)計(jì)
通過上述對(duì)各個(gè)模塊的研究和對(duì)各個(gè)子程序的編寫可以設(shè)計(jì)出該設(shè)計(jì)的完整程序。小車主程序的流程圖如圖5-2所示。
圖5-2 主程序流程圖
5.4 本章小結(jié)
本章介紹了各模塊的使用方法并進(jìn)行了編程,同時(shí)對(duì)各個(gè)子程序進(jìn)行了編程。并確定了主程序執(zhí)行流程。
第6章工程定額概算
6.1 小車制作過程成本預(yù)算
小車制作所用零件均從網(wǎng)絡(luò)購物平臺(tái)上進(jìn)行購買。小車所有零部件價(jià)格如表6-1所示。
表6-1 小車各零件價(jià)格
(單位:元)
零件名稱
價(jià)格
零件名稱
價(jià)格
小車底盤
41.9
超聲波
2.4
舵機(jī)
4.8
超聲波舵機(jī)支架
4.5
Arduino UNO
14.9
L298N(兩個(gè))
9.65
18650電池(3節(jié))
24
18650充電器
16
18650電池盒
2.54
紅外尋跡模塊(兩個(gè))
6
面包板
0.65
杜邦線
4.75
黑色膠帶
2
--
--
6.2小車對(duì)環(huán)境的影響及其可持續(xù)性
6.2.1材料污染環(huán)境問題
本設(shè)計(jì)所采用的零件由亞克力板、塑料、PCB板、電池、少量金屬和橡膠做成。該設(shè)計(jì)所用到的小車在使用過程中不會(huì)污染環(huán)境,當(dāng)小車報(bào)廢以后,小車中亞克力不會(huì)對(duì)環(huán)境產(chǎn)生污染,可以隨生活垃圾進(jìn)行處理;塑料和橡膠零件需要特殊處理,處理之后可減輕對(duì)環(huán)境的污染;PCB板和電池會(huì)對(duì)土壤和水源產(chǎn)生污染,因此需要特殊處理。金屬零件可以回收再利用。
6.2.2噪音污染問題
該設(shè)計(jì)所用小車在運(yùn)行過程中產(chǎn)生噪聲的是舵機(jī)轉(zhuǎn)動(dòng)和車輪轉(zhuǎn)動(dòng),經(jīng)測(cè)試,運(yùn)行過程中最大噪聲在噪音污染的標(biāo)準(zhǔn)之內(nèi),不會(huì)造成噪音污染。
6.2.3工業(yè)三廢問題
“工業(yè)三廢”廣義上是指包括工業(yè)生產(chǎn)和人類生活在內(nèi)所產(chǎn)生的廢水、廢氣、廢渣[12]。該設(shè)計(jì)所用小車使用電力進(jìn)行驅(qū)動(dòng),運(yùn)行過程中不會(huì)產(chǎn)生廢氣、廢水、廢渣,因此不涉及工業(yè)三廢。
6.2.4社會(huì)可持續(xù)發(fā)展問題
該設(shè)計(jì)所用電池為可充電式鋰電池,可大大降低由一次性干電池所帶來的污染,該設(shè)計(jì)的設(shè)計(jì)理念符合社會(huì)可持續(xù)發(fā)展。
6.3 本章小結(jié)
確定了制作成本,分析設(shè)計(jì)的可持續(xù)性和環(huán)保性。
第7章總結(jié)
該設(shè)計(jì)在Arduino平臺(tái)上實(shí)現(xiàn)了四輪小車檢測(cè)障礙物,然后沿著最佳的線路繞過障礙物,然后繼續(xù)按照原路線進(jìn)行行駛。該設(shè)計(jì)解決了小車在繞過障礙物后返回原路線的難題。設(shè)計(jì)采用了超聲波作為距離探測(cè)傳感器,超聲波傳感器不受環(huán)境光線的影響,所選用的紅外尋跡模塊具有對(duì)環(huán)境光適應(yīng)能力強(qiáng)的優(yōu)點(diǎn),因此該設(shè)計(jì)能夠在一些弱光的環(huán)境中使用。在繞過障礙物的過程中采用沿壁的方案可以保證小車不會(huì)向遠(yuǎn)離障礙物的一側(cè)行駛,導(dǎo)致小車無法回到原路線的情況,并且對(duì)于各種類型障礙物的障礙物具有較強(qiáng)的適應(yīng)性。此外,該設(shè)計(jì)還有一些不足之處:加上小車檢測(cè)障礙物邊界的行駛路程,小車?yán)@行的路線可能并不是最短的路線的情況;超聲波傳感器面對(duì)小型障礙物可能出現(xiàn)測(cè)量距離不準(zhǔn)的情況;小車所設(shè)定的原路線不易出現(xiàn)半徑過小的彎道,否則小車會(huì)沖出設(shè)定路線的情況。
通過該設(shè)計(jì),我學(xué)習(xí)了一種新的單片機(jī):Arduino UNO單片機(jī),提高了自己的編程能力,提高了自己軟件和硬件結(jié)合調(diào)試的能力,提高了自己分析問題和解決問題的能力,提高了自學(xué)和探索的能力,提高了運(yùn)用模塊化設(shè)計(jì)的能力。
總而言之,這次設(shè)計(jì)對(duì)我來說受益匪淺。
參考文獻(xiàn)
[1]潘元驍.基于Arduino的智能小車自動(dòng)避障系統(tǒng)設(shè)計(jì)與研究[D].長(zhǎng)安大學(xué),2015-05-04.
[2]seawaymaritime. 13.6億中國人的驕傲!全球綜合自動(dòng)化程度最高的碼頭--洋山港“魔鬼碼頭”今天開港啦!.https://www.sohu.com/a/209639609_276266,2017-12-10.
[3]俞凡.基于單片機(jī)的廠區(qū)智能循跡滅火模型的設(shè)計(jì)和實(shí)現(xiàn)[D].安徽農(nóng)業(yè)大學(xué),2016-06-01.
[4]孫穎.基于路徑規(guī)劃的智能小車控制系統(tǒng)研究[D].青島大學(xué),2007-05-16.
[5]小宇聊電子.超聲波測(cè)距原理(帶原理圖及源碼).https://baijiahao.baidu.com/s?id=1651773925685360513&wfr=spider&for=pc,2019-12-02.
[6]張哲,陳麗銀,汪棟,覃耀,黃世玲.基于 Arduino UNO大型汽車盲區(qū)檢測(cè)與報(bào)警裝置的設(shè)計(jì)[J].科技創(chuàng)新與應(yīng)用,2018(28):49-50.
[7]陳翠.超聲波測(cè)距模塊工作原理_HC-SR04模塊詳解.http://www.elecfans.com/tongxin/tongxinmokuai/2018/0517/678551.html,2018-05-17.
[8]林志遠(yuǎn),王忠策.機(jī)器人舵機(jī)控制器設(shè)計(jì)[J].產(chǎn)業(yè)與科技論壇,2014(11):54-55.
[9]百納信達(dá).TCRT5000光電傳感器模塊產(chǎn)品說明書.http://www.doc88.com/p-0611401603467.html,2009-01-10.
[10]陳駿.基于超聲波測(cè)距與控制的運(yùn)動(dòng)實(shí)驗(yàn)平臺(tái)研發(fā)[D].南京郵電大學(xué),2014-03-01.
[11]我只是過于低調(diào).淺淡用單片機(jī)控制SG90舵機(jī)(原理+編程).http://www.51hei.com/bbs/dpj-156595-1.html,2019-04-16.
[12]任光前,曹凡,黃琳琳,林守江.中國“三廢”產(chǎn)生排放量的年際變化研究[J].安徽農(nóng)業(yè)通報(bào),2015(17):84-85.
致謝
首先感謝我的畢業(yè)論文的指導(dǎo)教師,感謝王志勝老師在該設(shè)計(jì)上給予我從構(gòu)思、資料收集、運(yùn)行過程確定、程序編寫、調(diào)試以及畢業(yè)論文上的細(xì)心指導(dǎo),是老師的悉心指導(dǎo)讓我在設(shè)計(jì)過程中遇到問題時(shí)有了解決問題的思路。然后感謝大學(xué)四年所有老師對(duì)我在學(xué)習(xí)上的耐心教導(dǎo)和生活上的悉心照顧。感謝大學(xué)四年的同窗同學(xué),感謝他們四年
收藏