|
該系統(tǒng)主要由四個部分組成,分別為系統(tǒng)初始化、藍(lán)牙控制模塊、紅外檢測模塊,
自動循跡模塊。下面進(jìn)行詳細(xì)介紹。
一、 系統(tǒng)初始化
函數(shù)原型:void setup()
函數(shù)功能:首先要對該系統(tǒng)進(jìn)行初始化,初始化大致又可分為三個部分,分
別為傳感器接口的初始化、輪胎電機(jī)接口的初始化、輪胎電機(jī)電位的初始化。
詳細(xì)設(shè)計(jì):
1.1 傳感器接口的初始化
由于小車是用傳感器感知外界環(huán)境的,所以各個傳感器的接口設(shè)置為輸入模
式,將傳感器讀取的數(shù)據(jù)輸入到接口中。
1.2 輪胎電機(jī)接口的初始化
小車在運(yùn)行過程中需要我們給輪胎電機(jī)相應(yīng)接口相應(yīng)的電位值,所以是把數(shù)
據(jù)從接口輸出到電機(jī)上,各電機(jī)接口設(shè)置為輸出模式,將我們設(shè)置的電位值從接
口輸出到電機(jī)上,使小車運(yùn)動起來。
1.3 輪胎電機(jī)電位的初始化
初始化只會在小車的第一次啟動運(yùn)行,所以小車的電機(jī)電位設(shè)置為零,小車
初始狀態(tài)為靜止。
二、 藍(lán)牙控制模塊
該模塊的功能是使小車能夠根據(jù)手機(jī)等設(shè)備通過藍(lán)牙輸出的字符值來進(jìn)行
不同的運(yùn)動。代碼內(nèi)容就是幾個 if 語句判斷不同的字符值,詳細(xì)設(shè)計(jì)參照“圖 1
主流程圖”。
三、紅外檢測模塊
函數(shù)原型:void _track()
函數(shù)功能:使小車能夠根據(jù)前方物體的位置來進(jìn)行不同的運(yùn)動,例如用手擋
在左傳感器前方,小車左轉(zhuǎn)。
詳細(xì)設(shè)計(jì):參照“圖 2 紅外追蹤函數(shù)流程圖”
四、自動循跡模塊
函數(shù)原型:void _trace()
函數(shù)功能:使小車能夠根據(jù)下方的道路顏色來自動直行或者轉(zhuǎn)彎。
詳細(xì)設(shè)計(jì):參照“圖 3 自動尋路函數(shù)流程圖”
六.創(chuàng)新點(diǎn)
對于這次項(xiàng)目,我們小組主要有兩個創(chuàng)新的地方。
1.首先就是對于小車轉(zhuǎn)彎處的速度的一個修改 ,我們考慮到轉(zhuǎn)彎的時候,左右
兩個輪子的速度并不一樣,所以對兩個輪子的速度進(jìn)行了一個調(diào)整,使小車在轉(zhuǎn)
彎時又快又穩(wěn)。
2.第二個地方就是在藍(lán)牙控制小車進(jìn)入指定區(qū)域的時候,我們下載了另外一個軟
件,在上面我們能夠進(jìn)行更為細(xì)致的設(shè)置,比如每個鍵,手指按住的時候就執(zhí)行
相關(guān)操作,如左轉(zhuǎn)右轉(zhuǎn)前進(jìn)等,而手指松開的時候就自動轉(zhuǎn)變?yōu)?stop 狀態(tài),這
樣設(shè)置后,操作起來更為順暢,并且更為精準(zhǔn)。
八.計(jì)劃進(jìn)度
11:00-11:30:測試藍(lán)牙模塊、端口、傳感器、電機(jī)及連線。連接上裝置后,
通過已有程序測試,發(fā)現(xiàn)各裝置運(yùn)行正常。
11:30-11:50:開始系統(tǒng)代碼的書寫工作。
12:40-13:30:完成代碼的書寫工作,開始將代碼錄入到主板中,進(jìn)行測試操
作,覺得車速有些慢,于是對代碼進(jìn)行適當(dāng)修改。
13:30-14:20:將修改完后的代碼錄入到主板中,再次放到賽道上進(jìn)行測試,
發(fā)現(xiàn)修改后小車在第一個賽道的位置總是不能夠很好地轉(zhuǎn)過去,仔細(xì)測試后發(fā)現(xiàn)
距離近一些就能過去,于是再次檢查代碼是否有問題。
14:20-15:00:將代碼中的速度減小了一些,然后再進(jìn)行測試,結(jié)果,小車依
舊不能完整地通過第一個彎道,經(jīng)過一系列的觀察,發(fā)現(xiàn)是車輪的問題,于是重
組小車的兩個輪子,再次將小車進(jìn)行測試,發(fā)現(xiàn)小車仍舊不能很好地轉(zhuǎn)彎。
15:00-16:10:將代碼仔細(xì)檢查,確認(rèn)無誤后,再檢查小車運(yùn)行過程,發(fā)現(xiàn)車
輪所在的固定桿處并不完全成垂直狀,于是將小車固定桿修理后,再次運(yùn)行,結(jié)
果仍然不能通過。
16:10-17:10:將小車放置在賽道上發(fā)現(xiàn)灰度傳感器的感應(yīng)出現(xiàn)問題,于是開
始調(diào)試傳感器的位置,改變多次卻仍舊不能讓小車完整通過賽道,并且裝置盒處
也沒有完好的傳感器用于更換。
17:10-17:30:由于快到檢測的時間了,我們決定向老師求助,老師檢查后發(fā)
現(xiàn)傳感器的檢測高度太低,螺絲無法固定在如此低的高度,所以導(dǎo)致我們無論怎
么調(diào)整高度都無法實(shí)現(xiàn)目的。
17:30-17:35:在老師提供新的傳感器并及時更換后,小車終于行駛正常。但
由于超過指定時間又有兩次犯規(guī),并且由于電池電量不足,導(dǎo)致小車速度很慢,
所以最終的成績不是很理想。
九.個人心得體會
羅吉:
這次關(guān)于智能小車的項(xiàng)目,讓我體會頗深。
一開始我們小組其實(shí)進(jìn)度比較快的,從拿到小車到檢查,都沒什么問題,于是就
開始著手寫代碼,按照老師上課提到的內(nèi)容進(jìn)行代碼的書寫。下課之后,我們吃
完午飯也沒有回到寢室休息,而是直接到實(shí)驗(yàn)室將代碼完成并且進(jìn)行后面的操作
步驟。將代碼錄入到小車主板后,進(jìn)行運(yùn)行后,發(fā)現(xiàn)紅外這方面沒有問題,藍(lán)牙
控制這里也沒有問題,就是自動尋路這里,第一個彎道處總是過不去,可是拿近
一點(diǎn)又能夠過去,所以我們就猜想是不是速度太快。因此我們又將代碼中的速度
修改了一下,再去測試,結(jié)果還是不行,又考慮到是不是左右輪的速度其實(shí)在轉(zhuǎn)
彎時是有差別的,所以我們又在代碼上修改了一下,再次錄入后進(jìn)行操作,結(jié)果
還是不行。我們又觀察到轉(zhuǎn)彎時這個左輪總是像轉(zhuǎn)不動似的,所以又猜想是不是
輪子的問題,換上輪子后,我們再進(jìn)行測試,結(jié)果還是不理想。
我們又看到左輪的轉(zhuǎn)軸的固定桿的那個鐵桿并不成 90 度,于是又換了一個固定
桿,換完后我們再進(jìn)行測試,結(jié)果還是不行。觀察了半天,我們覺得問題只能是
出在這個灰度傳感器上了。所以測試了一下,果然,這個灰度傳感器并不靈敏,
離地高度有些高,然后我們就將灰度傳感器的位置調(diào)整了一下,可是仍然達(dá)不到
要求,臺上也沒有好的灰度傳感器替換,所以只能向老師求助了。老師測試后發(fā)
現(xiàn),這個灰度傳感器的感應(yīng)范圍太低了,螺絲也沒法固定了,所以就跟我們拿了
一個新的傳感器,換上之后再進(jìn)行測試,果然就成功了。可是電池電量又沒了,
好不容易找到一個電池,雖然電量不足,但還是勉強(qiáng)過了。
怎么說呢,我們就是沒找準(zhǔn)方向,在錯誤的地方花費(fèi)了太多時間?墒侵皽y試
時這個灰度傳感器也沒有問題,所以沒想著它會壞掉的。并且一開始我們還一度
懷疑是不是自己的代碼出了問題,可是最后才發(fā)現(xiàn),代碼也沒有問題。所以,問
題還是得找到本質(zhì)的錯誤地方,否則還是解決不了問題。另外,還是得感謝老師
和助教的寬容!
陳:
記得在老師上課的時候說,很多同學(xué)會踩很多坑,有些同學(xué)運(yùn)氣不好拿到了
不太好的車子,我相信你們一定會在報(bào)告中個人心得體會這一塊吐槽一番。剛開
始我還想,這種事情怎么可能會發(fā)生在我們組身上呢。沒想到結(jié)果還真就發(fā)生了。
上午的 ppt 演示完之后,我們?nèi)齻人用藍(lán)牙同時連接上了 5 號和 12 號車,
最終我們選擇了5號車,也正是這個時候,大半年里最緊張刺激的一天開始了。
在測試完基本功能后,我們一馬當(dāng)先來到了電腦前,打開編譯器。就這兩行
破代碼還用得著圖形界面? 直接上手代碼,很快就寫完,然后把程序燒進(jìn)小車,
一發(fā)指令,車輪轉(zhuǎn)向均正確。欣喜之余,我們開始討論,反正已經(jīng)寫完了,中午
要不要回去睡覺啊。。。下午還有那么多時間,我們該干嘛啊。。。我們要不要把聲
控功能加進(jìn)去啊等等高瞻遠(yuǎn)矚的話題。在膨脹結(jié)束之后,我們決定放小車到跑道
上測試一下。
藍(lán)牙發(fā)送指令 ok,紅外傳感 ok,自動尋跡。。。這下問題來了。我們非常驚
訝的發(fā)現(xiàn),小車在第一個彎道處無法轉(zhuǎn)彎,而在第二個彎道處卻順利轉(zhuǎn)彎了。測
試了很多遍都是如此,這就奇怪了,兩個彎道轉(zhuǎn)向都是一樣,唯一不一樣的是距
離,因?yàn)榕艿朗且粋類似于長方形的跑道。于是我們很自然得想到把小車第一個
轉(zhuǎn)彎之前的行駛距離縮短,這下果然,小車順利轉(zhuǎn)彎了,但是小車在直道行駛中
車速是不變的,怎么會出現(xiàn)這種情況呢?(這個問題至今也沒想通,不過后面會
有推測)。
但最后驗(yàn)收的時候總不能中途強(qiáng)行用手讓車子停下吧,于是我們想了個辦法,
在代碼中設(shè)置一個指令,是讓車子減速的。于是我們重新寫了函數(shù),再燒進(jìn)去。
這是,我們又驚訝的發(fā)現(xiàn),車子居然不!動!了!第一反應(yīng)是代碼問題,確實(shí)寫
錯了一個地方,再燒進(jìn)去車子還是不動。我們?nèi)齻人從頭到尾仔仔細(xì)細(xì)看了代碼,
都沒問題。然后把新加進(jìn)來的代碼注釋掉后,車子還是不動。把注釋掉的代碼刪
除后,車子還是不動。撤銷撤銷撤銷變回最開始的時候,車子居然動!了!
那是我那個早上最為震驚的一瞬間。學(xué)過編程的人都知道,這種事情是根本
不可能發(fā)生的。我開始思考各種可能,我是不是無意間改了原來的代碼什么地方,
但不可能啊,我們?nèi)p眼睛一行行對照過了;是不是編譯器的問題,不可能啊,
這么出名的軟件怎么會有 bug;是不是端口沒識別,不可能啊,端口一直在呢;
是不是沒把傳感器線拔掉導(dǎo)致端口被占,不可能啊,我們四個傳感器線都拔了。
根據(jù)福爾摩斯所說,排除了一切的不可能,剩下的,無論你相信不相信,都一定
是事實(shí)。在這里,就是小車的問題跑不掉了,不過究竟是什么問題我們也不知道。
不過不管怎樣,現(xiàn)在車子好歹能動了。我們再去測試,還是老樣子,第一個
彎轉(zhuǎn)不了第二個彎能轉(zhuǎn)。我們繼續(xù)考慮調(diào)整車速,同時考慮到“藍(lán)牙串口通信助
手”這個軟件這能通過鍵盤輸入字符發(fā)送指令,這樣難免有點(diǎn)考驗(yàn)手速,于是我
們又找了一個能按鍵操作的軟件,這樣就方便多了。同時我們繼續(xù)回去修改車速,
再燒進(jìn)去時,車子又!不!動!了!這次,雖然很不情愿,我還是撤回撤回撤回
把代碼恢復(fù)到最初狀態(tài),這下車子徹底沒了動靜,這也證實(shí)了我們之前的推測是
對的,就是車子自身的問題。
中午已經(jīng)過去了一半,而我們的小車還是時動時不動,去問老師,老師還信
誓旦旦的讓我們把代碼一行一行的燒進(jìn)去看看。。。。。老師啊,你當(dāng)我們計(jì)算機(jī)專
業(yè)編程都是白學(xué)的么。。。。。。就在我們?nèi)f般無奈之時,我的手觸碰到了傳感器插
口的三根金屬條,小車居然動!了!立馬想到短路,立馬又想到接觸不良,不會
是電源接觸不良吧,那這樣問題就大了,這輛車和電源接觸不良的話只能換車了
啊。沒辦法先給電池沖會電,這時,我們驚訝的發(fā)現(xiàn),電池插進(jìn)去顯示的是綠色,
其實(shí)我們剛才并沒有給電池充過多少電,而且小車又用了那么久,按理說充電器
顯示的紅色才對啊。瞬間我明白了,充電器剛剛根!本!就!沒!有!充!進(jìn)!
電!換了個充電插頭充了一會電后,小車果然轉(zhuǎn)了,一個困擾了我們整個中午的
問題居然是電池沒電了!
這也解釋了一下一系列現(xiàn)象:車速 20 和車速 200 是一個轉(zhuǎn)速,小車時轉(zhuǎn)時
不轉(zhuǎn)(因?yàn)椴逯鴘sb 接口能夠充少量電,當(dāng)電量足夠后小車就能轉(zhuǎn)了)。
困擾了一個中午的問題終于解決了,但是無濟(jì)于事啊,灰度傳感器依舊無法
正常工作。這時我們再想是不是傳感器的位置不好,是不是考的太近了,于是我
們把傳感器拆了下來裝在了靠外的地方,然而還是沒有效果。我們又裝回來后這
下完了,傳感器就像瞎了一樣,連直線都走偏了。我們以為是輪胎問題,把輪胎
拆下來一看,果然,兩個固定輪胎的金屬板根本就不對稱,一個歪的厲害,于是
我們換了一塊,但是傳感器仍然罷工,此時已經(jīng)開始檢查了,我們也越來越急,。
最后還得找老師,不過老師的檢測故障方法確實(shí)厲害,把一邊傳感器壓低靠近地
面來測試它的感應(yīng)距離,這個方法我們確實(shí)沒有想到。后來發(fā)現(xiàn)這個傳感器不太
靈敏,需要減少他和地面的距離,然而,我們把整根螺絲都加滿了螺母,已經(jīng)把
距離減少到了極小值,傳感器依然反應(yīng)不過來。此時檢查時間已經(jīng)快結(jié)束了。這
時我們心態(tài)已經(jīng)崩了。
最后,找老師換了個灰度傳感器,一切正常,順利完成檢查。三個人傻眼了
四個小時,在最后五分鐘終于變聰明了。
統(tǒng)計(jì)一下我們經(jīng)歷的問題:學(xué)校配的 usb 線無法顯示端口,電池接觸不良+
電池充不進(jìn)電,車輪固定板不對稱,灰度傳感器靈敏度太低。
總而言之,這驚險(xiǎn)刺激的一天告訴我:
1. 有的時候需要自信果斷一些。不要不敢直視錯誤,無論是不是你的錯。
2. 短板再怎么修也不可能變回原來的樣子,唯一的辦法是把這塊板子拆了
裝上新的,桶才不會漏水。
再急,也要擰好每一顆螺絲釘。產(chǎn)品如此,人生亦是如此。
劉:
這次智能小車的電工實(shí)習(xí)給我留下了很深刻的印象,在這次電工實(shí)習(xí)過程中我們
小組也是遇到了許多難以解決的問題,探索這些問題的解決方案的時候我們也是
思考了許多東西,當(dāng)然也收獲的許多經(jīng)驗(yàn),下面是我在這次電工實(shí)習(xí)中的心得體
會。
我把這次電工實(shí)習(xí)的過程總結(jié)為了三個階段。第一個階段就是前期的一帆風(fēng)
順,我們小組成員在上午老師講完課分完組之后并沒有回宿舍休息,而是吃完飯
之后直接回到了實(shí)驗(yàn)室來進(jìn)行電工實(shí)習(xí),中午留在實(shí)驗(yàn)室的小組并不多,我們一
小段一小段的完善代碼并階段性的把代碼燒進(jìn)小車中來檢驗(yàn)每個模塊的功能,直
至完成手動控制的全部內(nèi)容,我們的實(shí)習(xí)都是一帆風(fēng)順的,大概到了下午一點(diǎn)多,
我們的已經(jīng)可以很流暢的手動控制我們的小車了。接下來我們就開始編寫小車紅
外檢測功能的代碼,代碼實(shí)際上是比較簡單的,所以我們也是花費(fèi)了很少的時間
就完成了,然后在賽道上進(jìn)行檢驗(yàn)的結(jié)果也非常不錯。最后就是自動循跡功能的
完成了,自動循跡的代碼和紅外檢測的代碼十分相似,我們也是沒有花費(fèi)太長時
間就完成了,但是我們的第一個問題出現(xiàn)了。
第二個階段就是小車實(shí)際運(yùn)行中難以解決的問題,首先第一個問題就是當(dāng)我
們把添加好自動循跡功能的代碼燒進(jìn)小車后,我們用藍(lán)牙控制小車時,不僅僅是
自動循跡功能不能正常工作,連原來檢驗(yàn)好的手動控制和紅外檢測功能都不能運(yùn)
行了,用手機(jī)藍(lán)牙發(fā)出各種信號后小車完全沒有反應(yīng),我們一開始認(rèn)為這是代碼
的問題,于是就開始檢查我們的代碼,并對代碼進(jìn)行各種刪減發(fā)現(xiàn)把自動循跡功
能的代碼刪除以后小車又能回復(fù)正常工作,這更加讓我們加深了是我們代碼的問
題的觀念,但是問題是把那部分代碼注釋掉卻不行,這也讓我們感到疑惑。在經(jīng)
過漫無目的的尋找錯誤的過程中,我們突然發(fā)現(xiàn)小車又可以正常運(yùn)行了,于是就
抓緊拿上跑道進(jìn)行測試,一開始我們設(shè)置的速度比較低,我們不斷測試調(diào)整自動
循跡的下面兩個傳感器的位置,最后終于可以使小車可以慢速的完整自動循跡完
兩個彎道,于是我們就趕緊回去修改小車自動循跡時的速度,然后把代碼燒進(jìn)小
車中,我們以為我們的任務(wù)可以早早結(jié)束了(大部分小組中午都回去休息了,我
們經(jīng)過一個中午的忙活,進(jìn)度要遠(yuǎn)遠(yuǎn)快于其他人)。但是剛才出現(xiàn)的問題又出現(xiàn)
了,代碼燒進(jìn)小車之后再用藍(lán)牙控制小車,小車并沒有反應(yīng),我們還是剛才錯誤
的思想:認(rèn)為我們的代碼有問題。于是我們就不斷修改那短短幾行的代碼,燒進(jìn)
小車,檢驗(yàn),發(fā)現(xiàn)一直行不通。這時其他同學(xué)的進(jìn)度都已經(jīng)是慢慢趕上來了,我
們也感到非常著急。在我們自己琢磨了一個多小時后,發(fā)現(xiàn)我們的代碼沒有一點(diǎn)
問題,我們?nèi)柪蠋,但是老師也沒有給出一個明確的答復(fù),于是我們就開始思
考到底是哪里出錯了。終于,我們偶然間發(fā)現(xiàn)換了一塊電池,小車又能夠正常運(yùn)
行了,我們意識到這是電源的問題。我們經(jīng)過檢驗(yàn)發(fā)現(xiàn)了電源除了和小車接觸不
良之外還和充電器接觸不良,可能我們沖了一中午電的那塊電池根本就沒有充上
電。沒想到是糟糕的硬件出了問題,當(dāng)我們最終發(fā)現(xiàn)這個問題的時候,其他的小
組基本上都在進(jìn)行最后的測試了。電池充了點(diǎn)電之后,我們又繼續(xù)我們的測試,
這次手動控制和紅外檢測都沒有問題但是問題卻出在了最重要的自動循跡,在這
次測試中,我們的自動循跡功能完全不能正常運(yùn)行,小車只能走直線,有時候會
有一些及其衛(wèi)校的轉(zhuǎn)向,我們首先認(rèn)為這是傳感器位置的問題,不斷調(diào)節(jié)傳感器
的位置甚至是重新再不同的位置安裝傳感器都沒有任何效果,我們又注意到我們
的小車的車輪根本不正,就換車輪和固定車輪的部件,也沒有效果。再次向老師
求助,老師拿著小車不斷檢驗(yàn),發(fā)現(xiàn)還是傳感器的位置,傳感器的敏感程度太低,
讓我們調(diào)整傳感器的高度。我們調(diào)整完之后發(fā)現(xiàn)還是不行,老師就給我們拿了新
的傳感器,我們安裝好之后,小車果然可以正常運(yùn)行了,又是硬件的問題。
第三個階段就是最后的檢驗(yàn)階段了,由于我們出現(xiàn)了各種各樣難以解決的問
題,浪費(fèi)了很多時間,本來進(jìn)度領(lǐng)先許多的我們變成了最后幾個沒有檢驗(yàn)的小組
之一,因?yàn)闄z查時間的問題,我們最后只能是用了個電量僅剩一點(diǎn)點(diǎn)的電源完成
檢驗(yàn),當(dāng)然分?jǐn)?shù)也是非常的不理想。
通過這次電工實(shí)習(xí),我感覺自己收獲到了許多,尤其是動手能力、獨(dú)立思考
的能力和團(tuán)隊(duì)合作的能力。在實(shí)習(xí)過程中出現(xiàn)的大部分問題,我們?nèi)齻人都可以
經(jīng)過縝密的思考和討論最后得出問題的根源,雖然一些問題耗費(fèi)了我們很多的時
間,這讓我們不僅僅局限于理論,更深刻體會到了現(xiàn)實(shí)中會出現(xiàn)的各種問題。當(dāng)
然,我也希望實(shí)驗(yàn)室中的傳感器、電源之類的硬件能更加靠譜一些,這樣當(dāng)我們
發(fā)現(xiàn)是硬件的問題時可以及時的進(jìn)行更換調(diào)整而不是浪費(fèi)許多的時間去思考是
不是其他的問題。
完整的pdf格式文檔51黑下載地址:
智能小車報(bào)告.pdf
(1.09 MB, 下載次數(shù): 16)
2019-5-30 19:47 上傳
點(diǎn)擊文件名下載附件
包括Arduino代碼
|
評分
-
查看全部評分
|