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