找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12250|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

我的機(jī)器小車誕生了!

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:262 發(fā)表于 2014-10-21 15:50 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
經(jīng)過幾月幾周地看資料,收集小時候的玩具,發(fā)現(xiàn)多數(shù)已不能玩了,但大多數(shù)電子零件仍能使用,于是,動手DIY,幾乎花了2個星期(周一周五只有中午和晚上不到2小時時間)做成。
2011年4月2日21點,所有零件收集完畢,開始組裝底盤和電機(jī)驅(qū)動。
電機(jī)驅(qū)動我使用L298N。紅黃兩條大線為主動力電源線。紅黑黃綠為信號輸入線,紅白為L298N芯片供電線,黑白為使能信號線,即PWM調(diào)速和緊急制動線。電機(jī)是減速電機(jī)吧,功率忘記了,幾年前的玩具(挖土機(jī))。
2011年4月2日22時,底盤完成組裝,所有線全部集合上布。
2011年4月3日陽光明媚的早上10時(這天氣來得真合適!),我的智能小車組裝完成,程序代碼也編寫完成。我把這臺車命名為 YYQ霹靂一號,簡稱:一號。
她拖著長長的數(shù)據(jù)線和電源線,身上背著電池,一身亂七八糟,毫不打扮,匆匆忙忙地來到了人世間。
Hello World!
你好,世界!
所屬相冊:YYQ的智能車
剛出生,與它的“母親” 電腦的連接還沒中斷呢!而且,身上還必須背著芯片電池。
或許你可能要問了,既然拖著電源線,又連著電腦,怎么還要背電池?
是這樣的,她現(xiàn)在確實是完全不能獨立開來,電機(jī)動力需要DC14V電源供應(yīng),電機(jī)驅(qū)動需要DC5V電源,大腦“MCU”單片機(jī)也需要DC5V電源供應(yīng)。我惱了幾天,仍找不到現(xiàn)成合適的電源一次性全部供給。所以,暫時分開供電。
供電情況:
1.“小霸王”游戲?qū)W習(xí)機(jī)(插黃色的卡帶、接電視玩游戲,超級瑪麗,魂斗羅等)兩臺,其中一臺內(nèi)部主板損壞,我便取其電源。由此電機(jī)動力得到DC15V電源供應(yīng)。
2.已經(jīng)損壞的AA/AAA電池充電器,拆開,取其電池盒。
用電烙鐵高溫?zé)乱慌_插卡的街機(jī)游戲機(jī)的電池盒。 將這兩個電池盒串聯(lián)起來,可以放4個AAA電池(1.2V*4=4.8V)得到DC4.8V電源,我將它輸入到L298N芯片上。
3.單片機(jī)電源仍由電腦USB口的DC5V供應(yīng)。
活動活動身體,走了一段路后,開始覺得不順了。
原來是有履帶的輪子,但是,因為那履帶不能用了套不上去。這樣子沒有履帶走起來很費勁。
2011年4月3日22時,我完成了對它的輪子的改造以及對亂七八糟的衣服進(jìn)行打扮,還有對電源的供應(yīng),不再依賴電腦,已經(jīng)斷開了與電腦的連接,但仍由外部“MP3充電適配器”提供DC5V電源。
不過現(xiàn)在走起來好多了,也顯得更有精神了。
這是車頭,呵呵,拍攝時,紅外收發(fā)模塊還在工作呢,你看到傳說中的“紅外線”了嗎?
這是車尾。
這本來是反的,但是由于L298N芯片的GND需要與單片機(jī)共地,還有2條使能線要與單片機(jī)針腳連接但線都不夠長, 信號線不適合焊接。所以,只好把單片機(jī)開發(fā)板轉(zhuǎn)個方向了。以紅外收發(fā)頭為車頭。(后面要用它來避障)
原來的電池組,我把盒子多余的部分燒掉,顯得更為簡約,放在車子中層。 這是單片機(jī)電源和動力電源的供應(yīng)。
2011年4月5日21時,由于底盤的電機(jī)多年老化以及齒輪磨損的關(guān)系,產(chǎn)生的動力不足,也不方便以后的擴(kuò)展。放棄使用玩具挖土機(jī)底盤。正在想新的底盤設(shè)計。
2011年4月8日22時,決定使用RP5底盤作為一號的底盤。外加一塊萬用版(面包板)為以后的電子元件的安放預(yù)留位置。電池與L298N芯片一起在底盤下面,中間隔萬用版,再上層單片機(jī)開發(fā)板。留有足夠的距離來避免電機(jī)受280大功率電機(jī)的磁場干擾單片機(jī)跑飛。
底盤情況:兩個280直流電機(jī),附帶一個6節(jié)AA電池盒。電機(jī)最大承受電壓12VDC,推薦9VDC。
2011年4月9日0時,將各個部件連接起來,有一條線特別難焊,不是走位就是不上錫,燙死、郁悶死我了。
不過還好,效果極其不錯,非常不錯。動力非常充足,開起來非常精神,轉(zhuǎn)彎通過左右兩邊的履帶反轉(zhuǎn),效果非常不錯。捉地力強(qiáng),不容易打滑。
現(xiàn)在的供電線更為簡潔了。電機(jī)用底盤下面的電池盒供電,6節(jié)AA電池,正好9V。再加上附帶舊的兩個電池盒供電L298N,剩下單片機(jī)的,由電腦供電,也方便下載程序進(jìn)去。
忽然發(fā)現(xiàn),數(shù)字電視機(jī)頂盒的遙控器里的方向鍵手感不錯,所以,修改下程序,就可以直接使用機(jī)頂盒遙控器控制車的前后左右轉(zhuǎn)彎所有功能了。
(╭(╯^╰)╮哼!別以為說一句好話,換一身馬甲,我就不認(rèn)識你了。照樣是“一號”。
車身體積:長17CM,寬13CM,高16CM
睡覺了,大家晚安!
2011年4月9日20時,對小車的所有元件供電均使用電池,F(xiàn)在除了燒錄程序外,完全不需要外部連線。
單片機(jī):x3 AA
L298N芯片:x4 AAA
280電機(jī):x6 AA
在四個方向放置4個紅外收發(fā),實現(xiàn)檢測障礙物以及自動避障,目前有關(guān)避障方面程序尚未編寫。
2011年4月10日17時,自動避障程序基本編寫完成。 在四個方向無阻礙的情況下,由人工控制遙控器控制車的行走。如果命令它前進(jìn),它就前進(jìn)。但是,在前進(jìn)過程中,如果前方有墻壁,它會立即自動停下腳步。然后向相反方向后退1秒鐘的時間。(我沒有安裝齒輪測速,所以只能延遲。)然后停止。如果過程中遙控器命令停止,它也停止。
但是,紅外避障也存在一個弊端。在光線過足的情況下(例如太陽光下),距離會變得很短,或太過早地誤判斷。超聲波是比較可以的,但成本比較高。目前先不考慮這個,完成整體工程再說。
2011年4月16日22時,程序編寫部分實現(xiàn)對兩個電機(jī)(左右)的PWM調(diào)速。目前可以用紅外遙控器控制車子移動速度。
還有一周考試了,但不知為什么,越接近考試,搞這東西效率就越高。
不管了,復(fù)習(xí)下,估計下2周內(nèi)進(jìn)展緩慢。
2011年4月21日13時,實現(xiàn)通過串口與計算機(jī)通訊。通過USB模擬串口線。
整理優(yōu)化所有代碼,更美觀、模塊化,可讀性增強(qiáng),多余的代碼刪除,單片機(jī)運行效率提高不少,方便以后修改。
程序數(shù)據(jù)占用77.3字節(jié),程序代碼占用1841字節(jié),代碼量1013行,注釋175行。
2011年5月1日0時,純手工完成它的“手”部的基本部分。
等我在廢舊里找到一枚合適的螺絲和螺母后,安裝支點,然后再固定到車上就行了。因為是木的,上螺絲要很小心。
2011年5月1日 17時,完成“機(jī)器手”搭建。線也已連接好。程序尚未完成。
2011年5月7日22時,控制板完全脫離開發(fā)板,手工焊接了單片機(jī)最小系統(tǒng),也脫離了不間斷供電的電源,改用三合一的鋰電池供電,可以分別輸出5V、9V和12V電壓,而且容量足夠大,最大15000毫安時。最小6500毫安時。
2011年5月8日23時,小車做好啦!除機(jī)器手外,小車已成型。
大概在10號或11號,帶去學(xué)校接受張老師的檢閱。
目前的功能有:自動避障、紅外遙控。
紅外遙控可以控制兩邊履帶的速度,可以實現(xiàn)圓圈運動、直線運動和平滑轉(zhuǎn)彎,也可以緊急轉(zhuǎn)彎和剎住。
2011年5月9日23時,對小車的自動避障算法進(jìn)行優(yōu)化和改進(jìn),可以自動避開九十度的死角區(qū)域,并且無論角的兩邊有多長,可自動調(diào)節(jié)轉(zhuǎn)彎角度直到合適為止。目前可以適應(yīng)多種常見的障礙物擺放情況了。
但在識別死角區(qū)域后,我還是用到了傳統(tǒng)的“左手法則”,一步步脫離死角,可能會在以后的圖像采集功能中改進(jìn)。
2011年5月11日下午小車第一次進(jìn)入欽州市外國語學(xué)校大門,得到很多同學(xué)贊同和表揚,但是我發(fā)現(xiàn)了避障算法中的90°死角避障出現(xiàn)BUG,“左手法則”使用出問題,當(dāng)小車靠近直角的左邊進(jìn)入直角區(qū)域后,會卡死在直角處。從右邊或45°斜入無問題。
2011年5月12日上午給給物理老師張老師看看,目前尚無法解決,正在與各位電腦老師和物理老師討論中。
2011年5月15日13時,小車已經(jīng)改頭換面,好看多了,線也排好了。這種改造是可擴(kuò)展性的,以后的機(jī)器手,可以直接裝上去。
加了塊有機(jī)玻璃,多謝那位老師傅(忘記問貴姓了)的加工,總共跑去那3次了,不嫌煩地幫忙改造玻璃。人很好啊!
2011年5月25日小車全部完工。電路板由于是用萬用電路板的原因,連線還是有點多。
整個工程告一大段落了。
2011年5月29日15時,增加LCD1602,顯示小車的所有狀態(tài),連線減短。
2011年6月5日13時,機(jī)器手搭建部分完成了!6個自由度。程序代碼尚未編寫,目前可以由電腦通過串口通訊控制。暫無法自行控制。
第一次調(diào)試時,居然被它打了一下,比較有力的。
謝謝上次那個師傅了,加工有機(jī)玻璃。這次知道名字了,黃師傅。
休息狀態(tài),回收手臂。
張望什么呢?。。。嗯?
2011年6月7日18時,發(fā)現(xiàn)底盤觸地地有效面積太小,6自由度機(jī)器臂工作時不穩(wěn)定,重心不妥,時有翻車危險。決定減掉一個自由度。
現(xiàn)在是5自由度機(jī)器臂。將來有條件弄個大大的底盤,有半米長,機(jī)身1.2米高,兩個6自由度機(jī)器臂,相信會很有意思。
2011年6月7日19時,發(fā)現(xiàn)小車轉(zhuǎn)向不正常,不是不動,就是走直線。
晚22時,我明白了底盤太小的因素決定這個轉(zhuǎn)向的效果,但是底盤已經(jīng)無法改變。怎么辦呢?
我的腳不小心碰了一下機(jī)器手,最底座的舵機(jī)位置偏離,大約到了底盤右上角45°,這時轉(zhuǎn)彎,非常靈活。
我就在這刻,突然明白了一個新的方法!可以通過移動機(jī)器手臂的重心,來彌補底盤太小的不足,進(jìn)而可以實現(xiàn)轉(zhuǎn)彎。
2011年6月8日23時,機(jī)器手臂程序試驗性編寫成功,單片機(jī)和控制器已經(jīng)很好地連接并正常工作。以后就可以正常編寫機(jī)器臂程序了。
這一步,本來是順順利利的,結(jié)果出了一個不可意料的錯誤,到現(xiàn)在也沒找到原因。麻煩了幾位老師,甚至是控制板技術(shù)員,也無解。
問題是:用開發(fā)板用控制板的波特率和數(shù)據(jù)的位停止位等屬性給電腦發(fā)送串口數(shù)據(jù),電腦能正常接收,開發(fā)板也能收到電腦發(fā)來的信息。
用這同一根串口線,把電腦和控制板連起來,波特率和其他屬性一樣,電腦能控制控制板,可以操控機(jī)器手。
最后一步來了,單片機(jī)用這同一根串口線,波特率和其他屬性一樣,卻不能控制控制板,不能操控機(jī)器手。
老師說是共地,我也按照他們說的詳細(xì)檢查并正確共地,也不行。由上面排除程序沒有問題,串口線沒有問題。
單片機(jī)也是用MAX232芯片,控制板也是。大家的針腳經(jīng)過串口線,我用萬能表測,也是對應(yīng)相通的。
晚上晚自修回來,根據(jù)白天詢問的信息,所有可能性都再試一下。突然,又是一個偶然的時候,我把RXD和TXD反接,接到控制板TTL電平口,共地,然后讓單片機(jī)循環(huán)發(fā)送數(shù)據(jù),居然機(jī)器手臂動了!!這一刻我既被嚇?biāo)烙直皇直弁蝗淮蛄艘幌拢詈蠹铀懒耍?/font>
由這個結(jié)果,我猜想,是不是把串口線的2、3口交叉,也就是用一條交叉串口線,就可以用單片機(jī)的串口連接到控制板的串口呢?但現(xiàn)在沒法試驗,況且現(xiàn)在用的杜邦線比串口線方便得多,簡便,也可以正?刂。
獻(xiàn)上試驗性程序錄像,影片最后,機(jī)器手臂做揮手的手勢(速度在程序上調(diào)慢了,不是舵機(jī)性能問題。),( ^_^ )/~~拜拜,我也拜拜,去睡覺了。
2011年6月11日22時機(jī)器手程序代碼編寫完成,現(xiàn)在可以通過紅外遙控器控制它了。
這是目前程序代碼情況:
創(chuàng)建目標(biāo) 'Target 1' 編譯 Motor.c ... 編譯 delay.c ... 編譯 main.c ... 編譯 IR.c ... IR.c(338): 警告 C323: newline expected, extra characters found
//這行代碼我用了#undef語句來撤銷#define定義的一個宏,調(diào)試時用的。所以提示這是一個不安全的代碼。 編譯 1602.c ... 編譯 UART.c ... 編譯 hand.c ... 連接 ... Program Size: data=82.6 xdata=0 code=2987 創(chuàng)建 HEX 文件 ".\obj\YYQcar" ... ".\obj\YYQcar" - 0 個錯誤, 1 個警告。
代碼量也差不多3K了......
2周后又要考試了,呼呼(~ o ~)~zZ,似乎做了半個學(xué)期了呢。
現(xiàn)在這個階段,機(jī)器小車已經(jīng)完成了。
暑假可能會考慮增加攝像頭,進(jìn)行圖像識別。這意味著不再使用51單片機(jī)了,進(jìn)入到下一個單片機(jī)學(xué)習(xí),用DSP來處理圖像或者用ARM做嵌入式操作系統(tǒng)。
2011年7月2日拍攝了抓取實物的錄像,暫無攝像頭自行定位
2011年7月17日,小車可以播放音樂了。只能播放音樂的旋律。我讓它可以播放《星之所在》的旋律。
2011年7月23日18:13:21
音樂功能完善?梢赃x曲,我寫有《星之所在》、《世上只有媽媽好》、《蘭花草》、《小星星》四首歌曲在程序里。
但有一個缺陷:由于播放音樂的需要,加上只有一個單片機(jī),單片機(jī)內(nèi)部資源緊缺。沒有條件在播放音樂的同時處理紅外遙控信號,因此只有在播放音樂完成之后方可進(jìn)行紅外遙控,在播放音樂期間,遙控器任意鍵無效,若停止播放音樂,需復(fù)位單片機(jī)。
7月17日那時是直接由單片機(jī)I/O口驅(qū)動,因能量守恒定律,電流很小,導(dǎo)致喇叭聲音過小。因此,這次加入了ULN2003芯片,有更大的電流驅(qū)動0.25W喇叭。
找不到合適的可調(diào)電阻來調(diào)節(jié)電流大小,因此暫不能調(diào)節(jié)音量,不過我相信還比較大聲的了。
下面是最新外形圖。機(jī)器手暫時沒有裝上,程序代碼沒有刪除機(jī)器手部分。
車子的功能:移動、機(jī)器手、播放音樂,三大功能是由一個菜單連接起來的,四個支柱可以很方便裝卸機(jī)器手。
在寫播放音樂代碼時,想到一個移動方面的思路:設(shè)立一個“世界規(guī)則”的處理器?赡苓@個名字難理解,具體是這樣的:這個世界規(guī)則處理器是主動啟動的(從程序員最終完成機(jī)器人調(diào)試后,發(fā)布命令啟動,然后自動銷毀該命令,相同、類似的調(diào)試命令均無效),即使沒有電源供給,也會由備用電池運行著。且當(dāng)主電源供給時,由專門一個定時器頻繁檢查它是否在運行(間隔不到1秒),它循環(huán)檢查車子的各種狀態(tài)是否遵循著現(xiàn)實世界中的規(guī)則。
例如如果前面有墻,操控者命令車子向墻行進(jìn)。計算車子以目前的速度是否可能會撞上墻,如果還有2秒就撞上了,那么違反世界規(guī)則,“世界規(guī)則”就立即下令停止前進(jìn),直到轉(zhuǎn)彎,否則遙控鍵 前進(jìn) 永遠(yuǎn)失效。這是保護(hù)車子(機(jī)器人)本身的規(guī)則。
;又例如:(以后有攝像頭的時候),有人在操控車子(機(jī)器人),旁邊有一個觀看者,操控者用機(jī)器手抓起一把小刀,然后,命令機(jī)器手小刀朝觀看者方向移動,由于世界規(guī)則是頻繁的,當(dāng)攝像頭識別機(jī)器手中的是危險物品,又識別前方是人,而且操控下達(dá)的命令是“攻擊人”,那么違反世界規(guī)則中的規(guī)則,車子(機(jī)器人)會立即無視遙控的命令,違反操控者的要求,停下當(dāng)前的動作。這是保護(hù)他人的規(guī)則。
這種思路,我會應(yīng)用在以后的機(jī)器人開發(fā)中。
并且,這種思路的最終目標(biāo)是:“世界規(guī)則”是可以自我更新的或者不需要PC電腦進(jìn)行編程,像父母教育小孩那樣,通過語言來人為設(shè)定規(guī)則。當(dāng)規(guī)則生成成功時,該規(guī)則永遠(yuǎn)生效,不可刪除,機(jī)器人在運行過程中會永遠(yuǎn)遵循該規(guī)則。
這已經(jīng)涉及到了人工智能領(lǐng)域,在我看來這的確是保護(hù)人類本身和機(jī)器人本身的重要設(shè)計思路。
當(dāng)然,我會遵循那“機(jī)器人三大定律”來設(shè)定基本規(guī)則,等到正式運行時,這些基本規(guī)則限制著新生成的規(guī)則。形成基本規(guī)則和新規(guī)則之間相互制約的關(guān)系。
如:基本規(guī)則中有一條:不可供給人類。但在成品后運行中,有人給他建立一條新規(guī)則:拿起刀后必須朝人類前進(jìn),直至撞上人類。那么這條新規(guī)則違反基本規(guī)則,生成失敗。
正在播放音樂。 本作品源代碼:http://115.com/file/eilus2x1

評分

參與人數(shù) 1黑幣 +5 收起 理由
魔術(shù)快斗 + 5 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

14#
ID:250717 發(fā)表于 2019-4-12 09:31 | 只看該作者
diy的精神令人欽佩
回復(fù)

使用道具 舉報

13#
ID:33383 發(fā)表于 2017-9-4 12:40 | 只看該作者
如果你還在用學(xué)習(xí)板,就別說你做成了什么東西!
回復(fù)

使用道具 舉報

12#
ID:228999 發(fā)表于 2017-8-24 17:25 | 只看該作者
一口氣看完~~~樓主真是太有才了。!
回復(fù)

使用道具 舉報

11#
ID:152839 發(fā)表于 2017-1-14 16:30 | 只看該作者
樓主的恒心杠杠的
回復(fù)

使用道具 舉報

10#
ID:134810 發(fā)表于 2016-11-23 17:33 來自手機(jī) | 只看該作者
很兇!
回復(fù)

使用道具 舉報

9#
ID:134810 發(fā)表于 2016-11-23 17:25 來自手機(jī) | 只看該作者
這個板子是德飛萊的,我有一個
回復(fù)

使用道具 舉報

8#
ID:136368 發(fā)表于 2016-8-9 16:15 | 只看該作者
好棒額
回復(fù)

使用道具 舉報

7#
ID:107105 發(fā)表于 2016-3-4 06:00 來自手機(jī) | 只看該作者
厲害,這種主動思考的能力非常重要!
回復(fù)

使用道具 舉報

6#
ID:44267 發(fā)表于 2015-11-16 11:26 | 只看該作者
diy的精神讓人欽佩
回復(fù)

使用道具 舉報

5#
ID:73964 發(fā)表于 2015-3-1 22:28 | 只看該作者
看樣子不錯呀
回復(fù)

使用道具 舉報

地板
ID:56903 發(fā)表于 2015-1-22 10:45 | 只看該作者

diy的精神讓人欽佩!!
回復(fù)

使用道具 舉報

板凳
ID:72143 發(fā)表于 2015-1-13 14:29 來自手機(jī) | 只看該作者
diy的精神讓人欽佩!!
回復(fù)

使用道具 舉報

沙發(fā)
ID:72053 發(fā)表于 2015-1-12 13:14 | 只看該作者
研究研究
回復(fù)

使用道具 舉報

樓主
ID:70191 發(fā)表于 2014-12-9 16:48 | 只看該作者
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表