已經(jīng)更新到解密10結(jié)構(gòu)與組裝,多謝朋友們關(guān)注......
這個(gè)是坦克的組裝視頻
這里還有一些圖片
193243s3msu2p3m4oz2h0s.jpg (36.38 KB, 下載次數(shù): 230)
下載附件
2016-4-11 16:57 上傳
193354th0gx0nvgv8vkizh.jpg (59.71 KB, 下載次數(shù): 186)
下載附件
2016-4-11 16:57 上傳
151354tllk1fkq93t966gl.jpg (47.4 KB, 下載次數(shù): 232)
下載附件
2016-4-11 16:57 上傳
151355uuwf3i7hhsnzqs9q.jpg (48.62 KB, 下載次數(shù): 186)
下載附件
2016-4-11 16:57 上傳
151356vwzqqae2c32qywjx.jpg (51.07 KB, 下載次數(shù): 230)
下載附件
2016-4-11 16:57 上傳
為方便閱讀,把解密過(guò)程,移動(dòng)到這里
125119hposouoj66iwkvhu.jpg (16.96 KB, 下載次數(shù): 269)
下載附件
2016-4-11 16:57 上傳
遙控坦克DIY過(guò)程解密(01)
>>>>>>>>>>2013-01-04<<<<<<<<<<
【前言】
貼子發(fā)布了幾天發(fā)現(xiàn)有很多網(wǎng)友對(duì)“@ZiShi”這個(gè)遙控坦克的DIY過(guò)程比較感興趣,不時(shí)有朋友通過(guò)QQ加好友詢問(wèn)這個(gè)坦克的DIY過(guò)程和控制原理,為了大家進(jìn)一步了解這個(gè)項(xiàng)目,“@ZiShi”將本著開(kāi)放、分享的原則對(duì)這個(gè)坦克的DIY過(guò)程進(jìn)行“解密”,說(shuō)是“解密”可能更多針對(duì)一些DIY“新手”而言的,對(duì)于一個(gè)DIY“高手”來(lái)說(shuō)這些可能并不算什么,但是仍然希望DIY“高手”們來(lái)分享這個(gè)過(guò)程并提出您的改進(jìn)意見(jiàn)。
【面向玩家】
這個(gè)坦克的DIY過(guò)程主要面向廣大的小車、模型、電子、機(jī)械DIY愛(ài)好者,重點(diǎn)在于分享DIY過(guò)程以及DIY心得,與更多朋友分享DIY的樂(lè)趣。
如果您是一個(gè)DIY“新手”通過(guò)“@ZiShi”的這些文字您可以了解到DIY過(guò)程中使用到的一些工具、設(shè)備、相關(guān)基礎(chǔ)知識(shí)以及這個(gè)坦克的組裝過(guò)程。如果您是一個(gè)DIY“熟手”,您可能曾經(jīng)做過(guò)類似的事情,同時(shí)更希望了解“@ZiShi”這個(gè)坦克的DIY過(guò)程以及內(nèi)部原理,“@ZiShi”在這里都會(huì)呈現(xiàn)給大家。如果您是一個(gè)DIY“老手”的話,那么“@ZiShi”的這篇文字在您面前就顯得班門弄斧了,我們更希望您能為我們的進(jìn)步提出更多寶貴意見(jiàn),在這先說(shuō)一聲謝謝。
【幾點(diǎn)說(shuō)明】
在此要說(shuō)明幾點(diǎn):
由于精力和時(shí)間的限制再加上內(nèi)容較多,這篇文字會(huì)不斷更新直到完成,請(qǐng)大家持續(xù)關(guān)注;
“解密”過(guò)程將會(huì)沿著電路、軟件、機(jī)械、組裝的過(guò)程展開(kāi);
由于篇幅所限文字將側(cè)重原理進(jìn)行講解;
文字中會(huì)涉及到一些專業(yè)知識(shí)如機(jī)械、電子以及軟件,如果我們哪里做的不合理或不正確請(qǐng)您明確指出;
對(duì)于一個(gè)DIY的作品很多地方是不能使用產(chǎn)品級(jí)的眼光去看待的,這樣會(huì)給DIY過(guò)程帶來(lái)很大困難,當(dāng)然我們力爭(zhēng)做到專業(yè);
上面說(shuō)了很多題外話,下面進(jìn)入正題。
【解密-電路】
待續(xù)……
遙控坦克DIY過(guò)程解密(02)
>>>>>>>>>>2013-01-05<<<<<<<<<<
繼續(xù)解密……
首先我們進(jìn)行一個(gè)簡(jiǎn)單設(shè)計(jì),規(guī)劃一下我們的遙控坦克要具備哪些功能。我們希望DIY后的遙控坦克可以實(shí)現(xiàn)下面一些功能:
1、前進(jìn);
2、后退;
3、左轉(zhuǎn);
4、右轉(zhuǎn);
5、炮塔順時(shí)針旋轉(zhuǎn);
6、炮塔逆時(shí)針旋轉(zhuǎn);
7、通過(guò)遙控方式實(shí)現(xiàn)功能1-6;
我們知道坦克的移動(dòng)以及炮塔的旋轉(zhuǎn)可以通過(guò)電機(jī)實(shí)現(xiàn),對(duì)于遙控功能的話我們這里選用的是NRF24L01這個(gè)無(wú)線收發(fā)模塊,所以對(duì)上面7點(diǎn)進(jìn)一步概括的話我們只要實(shí)現(xiàn)電機(jī)的控制以及無(wú)線接收與發(fā)送就可以了。
下面是遙控坦克的功能圖。
125119bae535597ae5exa0.jpg (27.15 KB, 下載次數(shù): 205)
下載附件
2016-4-11 16:57 上傳
圖中的“M”表示坦克上的3個(gè)電機(jī),分別是2個(gè)輪子和1個(gè)炮塔,綠色的框代表NRF24L01這個(gè)無(wú)線收發(fā)模塊(需要2只),實(shí)際上剩下的工作大家都很容易想到,只要接收模塊接收到遙控發(fā)來(lái)的命令然后對(duì)命令進(jìn)行識(shí)別,最后控制電機(jī)旋轉(zhuǎn)。
做過(guò)電機(jī)控制的朋友都知道只要通過(guò)一個(gè)叫“H橋”的電路就可以輕松控制電機(jī)轉(zhuǎn)動(dòng),那么實(shí)現(xiàn)“H橋”的方法有很多,大家可以使用獨(dú)立元器件去搭建電路當(dāng)然也可以選擇現(xiàn)成的控制芯片,我們選擇第二種方法,選擇使用芯片有幾個(gè)好處,第一它能夠大大節(jié)省我們的DIY時(shí)間,第二降低了實(shí)現(xiàn)的難度,同時(shí)芯片的集成度也比較高讓電路看起來(lái)比較美觀。這里我們不去討論如何選擇“H橋”芯片,我們只簡(jiǎn)單的介紹我們使用的這款芯片“L9110”,因?yàn)樗麅r(jià)格不貴而且使用方便,下圖是L9110使用手冊(cè)上的截圖。
125120lc4q8nww7zexq8ne.jpg (23.29 KB, 下載次數(shù): 207)
下載附件
2016-4-11 16:57 上傳
我們發(fā)現(xiàn)這個(gè)芯片上有8個(gè)引腳,我們只要關(guān)注其中的4個(gè)就夠了分別是IA、IB、OA和OB那么這四個(gè)引腳的關(guān)系是什么呢,繼續(xù)看芯片的使用手冊(cè)(本來(lái)是件挺輕松的事情結(jié)果動(dòng)不動(dòng)就要把手冊(cè)請(qǐng)出來(lái),真是頭大),通過(guò)瀏覽芯片的使用手冊(cè)我們會(huì)發(fā)現(xiàn)這樣一張圖,如下:
125121fln4mdgmd46hn5l4.jpg (19.07 KB, 下載次數(shù): 238)
下載附件
2016-4-11 16:57 上傳
這張引腳波形圖已經(jīng)清楚的告訴我們,IA和OA的關(guān)系以及IB和OB的關(guān)系,用一句話概括就是輸入是高那么輸出也是高,輸入是低輸出也是低,怎么樣簡(jiǎn)單吧。
知道了引腳的時(shí)序關(guān)系后就可以要把他它連接到電路中了,芯片的使用手冊(cè)上已經(jīng)給出了應(yīng)用電路,我們照做就好了,看下圖:
125121e3r3x83h2mtvxe8e.jpg (12.04 KB, 下載次數(shù): 198)
下載附件
2016-4-11 16:57 上傳
這個(gè)電路看起來(lái)還是蠻簡(jiǎn)單的,芯片左邊連接電機(jī)右邊連接單片機(jī)的IO。
待續(xù)……
遙控坦克DIY過(guò)程解密(03)
>>>>>>>>>>2013-01-07<<<<<<<<<<
繼續(xù)解密……
上一回我們已經(jīng)大致了解了“H橋”芯片L9110的使用方法了,這一回我們將解釋如何使用這個(gè)芯片來(lái)控制小馬達(dá)的旋轉(zhuǎn),參考上一回芯片手冊(cè)上給出的應(yīng)用電路,我們可以清楚的知道只要將芯片的OA和OB引腳與馬達(dá)的兩個(gè)引腳相連就完成了馬達(dá)與芯片的連接,如圖3-1所示:
125122pnpv5lt6av6pkpnq.jpg (15.23 KB, 下載次數(shù): 207)
下載附件
2016-4-11 16:57 上傳
馬達(dá)與芯片連接好以后,坦克控制系統(tǒng)的主角就要登場(chǎng)了,她就是微控制器(MCU),在我們的坦克系統(tǒng)中馬達(dá)的啟動(dòng)、停止、旋轉(zhuǎn)方向以及旋轉(zhuǎn)速度都是由微控制器進(jìn)行精確控制的,可見(jiàn)她的地位是非常重要的。
說(shuō)道微控制器我們也叫他單片機(jī),常見(jiàn)的單片機(jī)有很多51、AVR、Arduino、ARM等等,我們這個(gè)坦克所使用的單片機(jī)是51兼容的單片機(jī),具體型號(hào)是STC89C52,這款單片機(jī)的程序空間以及她的數(shù)據(jù)空間完全能夠滿足我們DIY遙控坦克的需要,而且使用起來(lái)也比較方便,圖3-2是一個(gè)STC89C52單片機(jī):
125122wif28lt9fftvjiov.jpg (18.4 KB, 下載次數(shù): 242)
下載附件
2016-4-11 16:57 上傳
單片機(jī)的IO引腳是其與外界通信的重要手段,我們正是利用單片機(jī)的IO與L9110進(jìn)行通信的,下面看我們是怎樣將兩者進(jìn)行連接的,如圖3-3所示:
125123ddrlh1r8l96d8jn9.jpg (50.78 KB, 下載次數(shù): 191)
下載附件
2016-4-11 16:57 上傳
將單片機(jī)的P10和P11分別和L9110的IB和IA相連,這里需要提醒那些想使用這個(gè)電路DIY的朋友,需要注意圖中那兩個(gè)虛框?qū)I(yè)上稱為上拉電阻的家伙,有的時(shí)候單片機(jī)引腳的驅(qū)動(dòng)能力有限需要使用這種方法提高她的驅(qū)動(dòng)能力,這個(gè)要視情況而定,并不是所有情況下都需要這個(gè)電阻的,可能有人會(huì)問(wèn)到如果需要的話選什么阻值呢,根據(jù)我們的經(jīng)驗(yàn)選擇10K歐姆電阻式可以正常工作的。
有了上面這個(gè)電路我們就可以完成一組電機(jī)的控制了,這里我們需要三個(gè)電機(jī)那么如法炮制,只要再次分配4個(gè)IO口連接另外2塊L9110就可以了,如圖3-4所示:
125124rgtyfmeywtwe8amn.jpg (16.76 KB, 下載次數(shù): 210)
下載附件
2016-4-11 16:57 上傳
另外這里還涉及到單片機(jī)的工作問(wèn)題,比如電源怎么接、地線怎么接、還有復(fù)位電路等等,這里都沒(méi)有描述,由于這些內(nèi)容講起來(lái)比較占用篇幅,如果有想使用這個(gè)電路進(jìn)行DIY但又不太熟悉單片機(jī)的朋友可以聯(lián)系“@ZiShi”,我們可以提供更細(xì)致的資料。
電機(jī)控制原理基本介紹完了,看起來(lái)并不復(fù)雜,后面該介紹數(shù)據(jù)接收部分的電路了。
今天就到這里,下回繼續(xù)……
遙控坦克DIY過(guò)程解密(04)
>>>>>>>>>>2013-01-09<<<<<<<<<<
上一回我們分享了電機(jī)控制的原理,這一回我們繼續(xù)看下遙控是如何實(shí)現(xiàn)的。
對(duì)于一個(gè)坦克或小車來(lái)講我們總不希望他拖個(gè)長(zhǎng)長(zhǎng)的尾巴跑來(lái)跑去(線控)這樣會(huì)大大的限制住坦克的活動(dòng)范圍,如果是飛機(jī)或艦船的話使用線控就顯得更不合適了,那么使用什么方法來(lái)對(duì)坦克進(jìn)行遠(yuǎn)程的控制呢,同樣有很多方案供DIY愛(ài)好者選擇,簡(jiǎn)單來(lái)說(shuō)有下面幾種:
1、常見(jiàn)的航模遙控器,如圖4-1,加上接收器一套下來(lái)估計(jì)最便宜的那種都要一兩百元,不太適合資金有限的DIY朋友;
2、還有一種遙控外觀如圖4-2,這種遙控器主要用來(lái)控制電燈的開(kāi)關(guān),以及經(jīng)常出入停車場(chǎng)的朋友常常會(huì)看到門衛(wèi)手里拿的這個(gè)東西遙控進(jìn)出口欄桿的起降,這個(gè)種模塊使用非常簡(jiǎn)單,但是有一點(diǎn)不足這個(gè)模塊可以表達(dá)的信息有限,對(duì)于簡(jiǎn)單的開(kāi)關(guān)完全可以,但要是功能多起來(lái),這個(gè)遙控就應(yīng)付不了了,尤其要實(shí)現(xiàn)比例遙控的話這個(gè)模塊就無(wú)能為力了;
3、第三個(gè)就是我們這里要討論的NRF24L01這個(gè)模塊了如圖4-3,首先他價(jià)格便宜其次它是一個(gè)數(shù)據(jù)傳輸模塊可以傳輸多種控制命令,但它也有缺點(diǎn)那就是他的接口比較復(fù)雜需要特定的時(shí)序才能完成對(duì)它的控制;
125124viiwoboo0hn4ywmy.jpg (16.39 KB, 下載次數(shù): 217)
下載附件
2016-4-11 16:57 上傳
125125gmbhslsq6ypzs6l1.jpg (11.25 KB, 下載次數(shù): 191)
下載附件
2016-4-11 16:57 上傳
125126tkbspsq5px5x8nid.jpg (12.79 KB, 下載次數(shù): 216)
下載附件
2016-4-11 16:57 上傳
經(jīng)過(guò)綜合的考慮我們選擇了NRF24L01這個(gè)模塊,決定使用單片機(jī)對(duì)它進(jìn)行控制。
下面就是硬件的連接問(wèn)題了,說(shuō)到這里我們又要去翻看芯片的使用手冊(cè),還好我們有圖4-3這樣的模塊,模塊中已經(jīng)幫我們做好了芯片的周邊電路,我們并不需要做這些工作過(guò)了,我們只要了解這個(gè)模塊各個(gè)針腳的定義就好了,看圖4-4。
125126u37happdibmmma8p.jpg (18.83 KB, 下載次數(shù): 207)
下載附件
2016-4-11 16:57 上傳
這個(gè)模塊有8個(gè)針腳,分別代表VCC、GND、CE、CSN、SCK、MOSI、MISO、IRQ,我們看看如何把這個(gè)模塊和51單片機(jī)相連,如圖4-5。
125127zynbk8w41rjr90jz.jpg (59.42 KB, 下載次數(shù): 205)
下載附件
2016-4-11 16:57 上傳
我們將無(wú)線模塊的各個(gè)引腳與單片機(jī)的P2口相連,同時(shí)將它的中斷引腳連接到單片機(jī)的INT0引腳,這部分硬件電路的搭建基本就結(jié)束了,需要注意的是圖中那個(gè)上拉電阻,到了這里坦克一端的硬件電路基本已經(jīng)形成了,看下完整的電路,圖4-6。
125127f46qxw0twy46yzx0.jpg (11.69 KB, 下載次數(shù): 227)
下載附件
2016-4-11 16:57 上傳
后面我們?cè)俸?jiǎn)要介紹一下,遙控手柄一端的電路,今天先到這里。
待續(xù)……
遙控坦克DIY過(guò)程解密(05)
>>>>>>>>>>2013-01-11<<<<<<<<<<
上一回我們介紹完了坦克一端的硬件部分,這回繼續(xù)介紹一下手柄一端的硬件,比較之前的電路手柄這邊的電路要簡(jiǎn)單一些了,還是老習(xí)慣我們先分析一下手柄的功能,如圖5-1。
125128lowqxlpkk18xnqo9.jpg (22.74 KB, 下載次數(shù): 195)
下載附件
2016-4-11 16:57 上傳
手柄的主要任務(wù)就是處理玩家的一些動(dòng)作,然后將玩家的動(dòng)作以命令形式發(fā)送給坦克。那么玩家都有哪些動(dòng)作呢?總結(jié)下來(lái)就一個(gè)動(dòng)作“按鍵”,當(dāng)手柄發(fā)現(xiàn)用戶按下按鍵后,判斷用戶按下的是哪個(gè)按鍵最后將這個(gè)按鍵對(duì)應(yīng)的操作以命令形式發(fā)送給坦克。
根據(jù)前面對(duì)坦克功能的定義我們要實(shí)現(xiàn)的動(dòng)作有前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、炮塔順時(shí)針轉(zhuǎn)、炮塔逆時(shí)針轉(zhuǎn)這幾個(gè)動(dòng)作,那么我們就來(lái)設(shè)計(jì)一個(gè)帶有6個(gè)按鍵的手柄,其大致外觀如圖5-2。
125129blzxf0gnf66igvvt.jpg (48.38 KB, 下載次數(shù): 211)
下載附件
2016-4-11 16:57 上傳
功能基本確定了我們來(lái)看下手柄一端的電路如何設(shè)計(jì),涉及到數(shù)據(jù)傳輸模塊的設(shè)計(jì)其實(shí)與坦克一端是一樣的,可以直接參考《遙控坦克DIY過(guò)程解密(04)》來(lái)完成相關(guān)電路的設(shè)計(jì),我們僅僅討論按鍵電路的設(shè)計(jì),如圖5-3所示。
125129mpfzphfhpg8cggez.jpg (14.23 KB, 下載次數(shù): 215)
下載附件
2016-4-11 16:57 上傳
其中陰影部分電路就是遙控手柄的按鍵電路,同時(shí)已經(jīng)給出了數(shù)據(jù)傳輸模塊的電路。我們一共定義了6個(gè)按鍵使用單片機(jī)的P0口去讀取按鍵的狀態(tài),如果讀入的數(shù)據(jù)是‘0’說(shuō)明按鍵是抬起狀態(tài),如果讀入的數(shù)據(jù)是‘0’說(shuō)明按鍵被按下。怎么樣其實(shí)實(shí)現(xiàn)一個(gè)手柄也并不復(fù)雜,對(duì)于我們DIY來(lái)說(shuō)這個(gè)電路已經(jīng)完全夠用了。我們可以選擇圖5-4這種小按鍵來(lái)制作我們的手柄。
125130r99zbj4h4lljbl7j.jpg (44.5 KB, 下載次數(shù): 212)
下載附件
2016-4-11 16:57 上傳
把這種按鍵焊接在萬(wàn)能版上效果如圖5-5所示。
125131ktmzqafzng4w2nu2.jpg (20.81 KB, 下載次數(shù): 217)
下載附件
2016-4-11 16:57 上傳
DIY這個(gè)遙控坦克所涉及到的硬件部分基本介紹完畢了,后面的工作就是根據(jù)原理圖(在萬(wàn)能版或面包板上)把電路搭建好,搭建好電路后就可以進(jìn)入軟件設(shè)計(jì)階段了。
今天先進(jìn)行到這里,待續(xù)……
遙控坦克DIY過(guò)程解密(06)
>>>>>>>>>>2013-01-13<<<<<<<<<<
【解密-軟件】
我們說(shuō)硬件是載體軟件是靈魂,前面已經(jīng)介紹了遙控坦克的硬件部分接下來(lái)我們?cè)撊?shí)現(xiàn)它的軟件部分了,說(shuō)簡(jiǎn)單就是寫(xiě)程序控制我們的坦克完成預(yù)計(jì)功能。看過(guò)前面文字的朋友知道我們的硬件系統(tǒng)分為兩部分,它們是坦克系統(tǒng)和手柄系統(tǒng),我們要分別為這兩個(gè)系統(tǒng)編寫(xiě)程序。首先我們先設(shè)計(jì)一下坦克一端的軟件架構(gòu),如圖6-1。
125131pfn767g6u58rzcvg.jpg (78.5 KB, 下載次數(shù): 188)
下載附件
2016-4-11 16:57 上傳
從圖中我們能看出坦克一端在不斷的接收命令,如果有命令發(fā)來(lái)就解析命令然后執(zhí)行命令,如果沒(méi)有命令那么繼續(xù)下一次接收命令,總之坦克一旦上電就在不停的接收命令直到關(guān)閉電源。這里給出部分源程序作為參考,考慮到有些朋友不太熟悉程序設(shè)計(jì)為不影響大家對(duì)原理的理解,在代碼中使用了很多注釋和偽代碼甚至插入很多中文信息,如圖6-2。
125132iqrb9x654rxq9aqq.jpg (36.02 KB, 下載次數(shù): 197)
下載附件
2016-4-11 16:57 上傳
從圖中我們可以清晰的看出程序的執(zhí)行過(guò)程,系統(tǒng)在無(wú)止境的循環(huán)接收命令、解析命令、執(zhí)行命令。其中紅色方框部分是這段程序的主體,我們會(huì)發(fā)現(xiàn)它的核心就是控制電機(jī)的旋轉(zhuǎn),那么如何通過(guò)程序來(lái)控制電機(jī)的旋轉(zhuǎn)呢,這就要回憶一下前面介紹的硬件電路了(《遙控坦克DIY過(guò)程解密(02)》),如圖6-3。
125133ksvkrar9zr332gno.jpg (51.92 KB, 下載次數(shù): 204)
下載附件
2016-4-11 16:57 上傳
根據(jù)L9110的工作時(shí)序圖以及我們的硬件原理圖,我們可以清楚的看出要想讓電機(jī)旋轉(zhuǎn)我們只要讓單片機(jī)的兩個(gè)IO引腳P10、P11輸出反相就可以了,如果轉(zhuǎn)化成代碼如圖6-4所示。
125133e88v3yvzuahuiqif.jpg (36.7 KB, 下載次數(shù): 203)
下載附件
2016-4-11 16:57 上傳
上圖中紅色方框中表示的是對(duì)一個(gè)馬達(dá)的控制,對(duì)另外2個(gè)馬達(dá)的控制方法也是一樣的,進(jìn)行到這里我們已經(jīng)可以通過(guò)程序來(lái)控制電機(jī)的旋轉(zhuǎn)了,只要正確的協(xié)調(diào)3個(gè)馬達(dá)的旋轉(zhuǎn)方向,我們就可以讓我們的坦克完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、炮塔順時(shí)針旋轉(zhuǎn)以及炮塔逆時(shí)針旋轉(zhuǎn)這幾個(gè)功能。
那么系統(tǒng)是如何知道已經(jīng)接收到數(shù)據(jù)的呢?只要有2種方法,一種方法是對(duì)NRF24L01的狀態(tài)不斷進(jìn)行查詢,另一種方法是當(dāng)NRF24L01接收到數(shù)據(jù)以后主動(dòng)通知MCU,根據(jù)我們的硬件原理圖同時(shí)為了提高系統(tǒng)執(zhí)行效率,我們采用第二種方法,代碼如圖6-5、6-6。
125134culhcvaxilzziah1.jpg (23.61 KB, 下載次數(shù): 239)
下載附件
2016-4-11 16:57 上傳
125118ss5i8bbmbzz5ijib.jpg (17.15 KB, 下載次數(shù): 354)
下載附件
2016-4-11 16:57 上傳
當(dāng)接收到數(shù)據(jù)傳輸模塊觸發(fā)的中斷后,我們?nèi)プx取傳輸模塊的狀態(tài),如果接收到數(shù)據(jù)我們就設(shè)置一個(gè)標(biāo)志,圖6-2的程序會(huì)不斷查詢這個(gè)標(biāo)志,一旦發(fā)現(xiàn)有數(shù)據(jù)發(fā)送來(lái),就可以對(duì)數(shù)據(jù)進(jìn)行解析了。
當(dāng)然這里面我們省略了初始化硬件、定時(shí)器以及傳輸模塊的詳細(xì)步驟,如果大家在DIY過(guò)程中也遇到到了具體技術(shù)問(wèn)題,可以隨時(shí)翻閱資料或?qū)W習(xí),當(dāng)然也可以與“@ZiShi”進(jìn)行交流。
如果要讓坦克正常解析接收到的命令,我們可以定義一些簡(jiǎn)單的協(xié)議,如圖6-7。
073755v9tlaeep2j49y222.jpg (58.2 KB, 下載次數(shù): 212)
下載附件
2016-4-11 16:57 上傳
有了命令列表,通信雙方就可以根據(jù)這個(gè)“協(xié)議”進(jìn)行通信了,假如坦克一端接收到0X00,那么坦克就全速向前沖,如果坦克一端接收到0X02,那么坦克就會(huì)左轉(zhuǎn),大家還可以自己擴(kuò)充這個(gè)命令列表,讓自己的坦克完成更多的功能。
坦克一端的程序原理已經(jīng)介紹完畢了,后面我們還會(huì)繼續(xù)介紹遙控手柄一端的程序原理。
今天先到這里……
遙控坦克DIY過(guò)程解密(07)
>>>>>>>>>>2013-01-15<<<<<<<<<<
前面介紹了坦克一端的程序原理這一回我們來(lái)看看手柄程序是怎么實(shí)現(xiàn)的,要實(shí)現(xiàn)手柄一端的程序我們還得回顧一下手柄一端的硬件原理圖,如圖7-1。
073756zynrgnhzoaowyon9.jpg (28.79 KB, 下載次數(shù): 217)
下載附件
2016-4-11 16:57 上傳
根據(jù)原理圖我們可以看出當(dāng)按鍵沒(méi)有被按下是,單片機(jī)對(duì)應(yīng)的IO引腳為高電平,當(dāng)有按鍵按下時(shí)候,單片機(jī)對(duì)應(yīng)的IO引腳為低電平,根據(jù)這一原理,我們的程序可以不斷去讀取IO引腳的狀態(tài)來(lái)判斷是哪個(gè)按鍵被按下了,請(qǐng)看圖7-2。
073755zqkwu77qrzyriuey.jpg (43.52 KB, 下載次數(shù): 199)
下載附件
2016-4-11 16:57 上傳
圖7-2是一段按鍵掃描程序,這段程序會(huì)返回被按下按鍵的編號(hào),最后根據(jù)按鍵的編號(hào)發(fā)送對(duì)應(yīng)的控制命令。系統(tǒng)程序運(yùn)行起來(lái)后我們只要不斷的調(diào)用這個(gè)按鍵掃描函數(shù),就可以不斷的讀取用戶輸入,發(fā)送控制命令,如圖7-3。
151357fc81zcx2m4112kmo.jpg (52.15 KB, 下載次數(shù): 179)
下載附件
2016-4-11 16:57 上傳
至此程序部分的基本原理已經(jīng)介紹完畢了,有了這些程序我們已經(jīng)可以控制我們的坦克完成預(yù)計(jì)的功能了,如果后面再需要其他功能我們會(huì)在這個(gè)程序上進(jìn)行擴(kuò)展,另外這里給出的只是框架性的內(nèi)容,為了不影響對(duì)整體程序功能的理解,我們略去了部分技術(shù)細(xì)節(jié)。
有些朋友可能對(duì)單片機(jī)編程或者對(duì)一些芯片、模塊的使用不太熟悉,這些涉及到具體細(xì)節(jié)的問(wèn)題我們可以另外進(jìn)行討論,這里還是以原理為主。
軟件部分的“解密”基本完成了,下一回我們要開(kāi)始進(jìn)行結(jié)構(gòu)與外觀的設(shè)計(jì)了,敬請(qǐng)期待……
|
DSC03349_副本.jpg(52.15 KB, 下載次數(shù): 28)
151357ztddt2h2caao4qa4.jpg (53.17 KB, 下載次數(shù): 223)
下載附件
2016-4-11 16:57 上傳
DSC03354_副本.jpg(53.17 KB, 下載次數(shù): 23)
151359zk7xjq7x70boqmob.jpg (53.71 KB, 下載次數(shù): 198)
下載附件
2016-4-11 16:57 上傳
DSC03358_副本.jpg(53.71 KB, 下載次數(shù): 27)
103417fdbeicgm0oilgeal.jpg (47.4 KB, 下載次數(shù): 208)
下載附件
2016-4-11 16:57 上傳
遙控坦克DIY過(guò)程解密(01)
>>>>>>>>>>2013-01-04<<<<<<<<<<
163940xy9z3r93e1eq3o9r.jpg (21.34 KB, 下載次數(shù): 183)
下載附件
2016-4-11 16:57 上傳
【前言】 貼子發(fā)布了幾天發(fā)現(xiàn)有很多網(wǎng)友對(duì)“@ZiShi”這個(gè)遙控坦克的DIY過(guò)程比較感興趣,不時(shí)有朋友通過(guò)QQ加好友詢問(wèn)這個(gè)坦克的DIY過(guò)程和控制原理,為了大家進(jìn)一步了解這個(gè)項(xiàng)目,“@ZiShi”將本著開(kāi)放、分享的原則對(duì)這個(gè)坦克的DIY過(guò)程進(jìn)行“解密”,說(shuō)是“解密”可能更多針對(duì)一些DIY“新手”而言的,對(duì)于一個(gè)DIY“高手”來(lái)說(shuō)這些可能并不算什么,但是仍然希望DIY“高手”們來(lái)分享這個(gè)過(guò)程并提出您的改進(jìn)意見(jiàn)。
【面向玩家】 這個(gè)坦克的DIY過(guò)程主要面向廣大的小車、模型、電子、機(jī)械DIY愛(ài)好者,重點(diǎn)在于分享DIY過(guò)程以及DIY心得,與更多朋友分享DIY的樂(lè)趣。 如果您是一個(gè)DIY“新手”通過(guò)“@ZiShi”的這些文字您可以了解到DIY過(guò)程中使用到的一些工具、設(shè)備、相關(guān)基礎(chǔ)知識(shí)以及這個(gè)坦克的組裝過(guò)程。如果您是一個(gè)DIY“熟手”,您可能曾經(jīng)做過(guò)類似的事情,同時(shí)更希望了解“@ZiShi”這個(gè)坦克的DIY過(guò)程以及內(nèi)部原理,“@ZiShi”在這里都會(huì)呈現(xiàn)給大家。如果您是一個(gè)DIY“老手”的話,那么“@ZiShi”的這篇文字在您面前就顯得班門弄斧了,我們更希望您能為我們的進(jìn)步提出更多寶貴意見(jiàn),在這先說(shuō)一聲謝謝。
【幾點(diǎn)說(shuō)明】
在此要說(shuō)明幾點(diǎn): - 由于精力和時(shí)間的限制再加上內(nèi)容較多,這篇文字會(huì)不斷更新直到完成,請(qǐng)大家持續(xù)關(guān)注;
- “解密”過(guò)程將會(huì)沿著電路、軟件、機(jī)械、組裝的過(guò)程展開(kāi);
- 由于篇幅所限文字將側(cè)重原理進(jìn)行講解;
- 文字中會(huì)涉及到一些專業(yè)知識(shí)如機(jī)械、電子以及軟件,如果我們哪里做的不合理或不正確請(qǐng)您明確指出;
- 對(duì)于一個(gè)DIY的作品很多地方是不能使用產(chǎn)品級(jí)的眼光去看待的,這樣會(huì)給DIY過(guò)程帶來(lái)很大困難,當(dāng)然我們力爭(zhēng)做到專業(yè);
上面說(shuō)了很多題外話,下面進(jìn)入正題。
【解密-電路】
待續(xù)……
遙控坦克DIY過(guò)程解密(02)
>>>>>>>>>>2013-01-05<<<<<<<<<<
163941cg5ecm5vkq4delnq.jpg (16.96 KB, 下載次數(shù): 222)
下載附件
2016-4-11 16:57 上傳
繼續(xù)解密……
首先我們進(jìn)行一個(gè)簡(jiǎn)單設(shè)計(jì),規(guī)劃一下我們的遙控坦克要具備哪些功能。我們希望DIY后的遙控坦克可以實(shí)現(xiàn)下面一些功能:
1、前進(jìn);
2、后退;
3、左轉(zhuǎn);
4、右轉(zhuǎn);
5、炮塔順時(shí)針旋轉(zhuǎn);
6、炮塔逆時(shí)針旋轉(zhuǎn);
7、通過(guò)遙控方式實(shí)現(xiàn)功能1-6;
我們知道坦克的移動(dòng)以及炮塔的旋轉(zhuǎn)可以通過(guò)電機(jī)實(shí)現(xiàn),對(duì)于遙控功能的話我們這里選用的是NRF24L01這個(gè)無(wú)線收發(fā)模塊,所以對(duì)上面7點(diǎn)進(jìn)一步概括的話我們只要實(shí)現(xiàn)電機(jī)的控制以及無(wú)線接收與發(fā)送就可以了。
下面是遙控坦克的功能圖。
163940fvaterrrv5qqae3e.jpg (27.15 KB, 下載次數(shù): 206)
下載附件
2016-4-11 16:57 上傳
圖中的“M”表示坦克上的3個(gè)電機(jī),分別是2個(gè)輪子和1個(gè)炮塔,綠色的框代表NRF24L01這個(gè)無(wú)線收發(fā)模塊(需要2只),實(shí)際上剩下的工作大家都很容易想到,只要接收模塊接收到遙控發(fā)來(lái)的命令然后對(duì)命令進(jìn)行識(shí)別,最后控制電機(jī)旋轉(zhuǎn)。
做過(guò)電機(jī)控制的朋友都知道只要通過(guò)一個(gè)叫“H橋”的電路就可以輕松控制電機(jī)轉(zhuǎn)動(dòng),那么實(shí)現(xiàn)“H橋”的方法有很多,大家可以使用獨(dú)立元器件去搭建電路當(dāng)然也可以選擇現(xiàn)成的控制芯片,我們選擇第二種方法,選擇使用芯片有幾個(gè)好處,第一它能夠大大節(jié)省我們的DIY時(shí)間,第二降低了實(shí)現(xiàn)的難度,同時(shí)芯片的集成度也比較高讓電路看起來(lái)比較美觀。這里我們不去討論如何選擇“H橋”芯片,我們只簡(jiǎn)單的介紹我們使用的這款芯片“L9110”,因?yàn)樗麅r(jià)格不貴而且使用方便,下圖是L9110使用手冊(cè)上的截圖。
163941wbsgcq7tpsvfctq0.jpg (23.29 KB, 下載次數(shù): 186)
下載附件
2016-4-11 16:57 上傳
我們發(fā)現(xiàn)這個(gè)芯片上有8個(gè)引腳,我們只要關(guān)注其中的4個(gè)就夠了分別是IA、IB、OA和OB那么這四個(gè)引腳的關(guān)系是什么呢,繼續(xù)看芯片的使用手冊(cè)(本來(lái)是件挺輕松的事情結(jié)果動(dòng)不動(dòng)就要把手冊(cè)請(qǐng)出來(lái),真是頭大),通過(guò)瀏覽芯片的使用手冊(cè)我們會(huì)發(fā)現(xiàn)這樣一張圖,如下:
163941p0s2la44zooqw42q.jpg (19.07 KB, 下載次數(shù): 180)
下載附件
2016-4-11 16:57 上傳
這張引腳波形圖已經(jīng)清楚的告訴我們,IA和OA的關(guān)系以及IB和OB的關(guān)系,用一句話概括就是輸入是高那么輸出也是高,輸入是低輸出也是低,怎么樣簡(jiǎn)單吧。
知道了引腳的時(shí)序關(guān)系后就可以要把他它連接到電路中了,芯片的使用手冊(cè)上已經(jīng)給出了應(yīng)用電路,我們照做就好了,看下圖:
112810kgugpy3gjcuczgbi.jpg (21.34 KB, 下載次數(shù): 183)
下載附件
2016-4-11 16:57 上傳
這個(gè)電路看起來(lái)還是蠻簡(jiǎn)單的,芯片左邊連接電機(jī)右邊連接單片機(jī)的IO。
待續(xù)…… 遙控坦克DIY過(guò)程解密(03)
>>>>>>>>>>2013-01-07<<<<<<<<<<
112810i9zet8tp8rltghsg.jpg (12.04 KB, 下載次數(shù): 217)
下載附件
2016-4-11 16:57 上傳
繼續(xù)解密……
上一回我們已經(jīng)大致了解了“H橋”芯片L9110的使用方法了,這一回我們將解釋如何使用這個(gè)芯片來(lái)控制小馬達(dá)的旋轉(zhuǎn),參考上一回芯片手冊(cè)上給出的應(yīng)用電路,我們可以清楚的知道只要將芯片的OA和OB引腳與馬達(dá)的兩個(gè)引腳相連就完成了馬達(dá)與芯片的連接,如圖3-1所示:
112810kfehl2rqlrn74yyc.jpg (15.23 KB, 下載次數(shù): 196)
下載附件
2016-4-11 16:57 上傳
馬達(dá)與芯片連接好以后,坦克控制系統(tǒng)的主角就要登場(chǎng)了,她就是微控制器(MCU),在我們的坦克系統(tǒng)中馬達(dá)的啟動(dòng)、停止、旋轉(zhuǎn)方向以及旋轉(zhuǎn)速度都是由微控制器進(jìn)行精確控制的,可見(jiàn)她的地位是非常重要的。
說(shuō)道微控制器我們也叫他單片機(jī),常見(jiàn)的單片機(jī)有很多51、AVR、Arduino、ARM等等,我們這個(gè)坦克所使用的單片機(jī)是51兼容的單片機(jī),具體型號(hào)是STC89C52,這款單片機(jī)的程序空間以及她的數(shù)據(jù)空間完全能夠滿足我們DIY遙控坦克的需要,而且使用起來(lái)也比較方便,圖3-2是一個(gè)STC89C52單片機(jī):
112811rxyiwwqgl3uwuuxw.jpg (18.4 KB, 下載次數(shù): 205)
下載附件
2016-4-11 16:57 上傳
單片機(jī)的IO引腳是其與外界通信的重要手段,我們正是利用單片機(jī)的IO與L9110進(jìn)行通信的,下面看我們是怎樣將兩者進(jìn)行連接的,如圖3-3所示:
112809f3p3io7tzz6hil26.jpg (50.78 KB, 下載次數(shù): 266)
下載附件
2016-4-11 16:57 上傳
將單片機(jī)的P10和P11分別和L9110的IB和IA相連,這里需要提醒那些想使用這個(gè)電路DIY的朋友,需要注意圖中那兩個(gè)虛框?qū)I(yè)上稱為上拉電阻的家伙,有的時(shí)候單片機(jī)引腳的驅(qū)動(dòng)能力有限需要使用這種方法提高她的驅(qū)動(dòng)能力,這個(gè)要視情況而定,并不是所有情況下都需要這個(gè)電阻的,可能有人會(huì)問(wèn)到如果需要的話選什么阻值呢,根據(jù)我們的經(jīng)驗(yàn)選擇10K歐姆電阻式可以正常工作的。
有了上面這個(gè)電路我們就可以完成一組電機(jī)的控制了,這里我們需要三個(gè)電機(jī)那么如法炮制,只要再次分配4個(gè)IO口連接另外2塊L9110就可以了,如圖3-4所示:
114026dpanhxz0044ta5re.jpg (13.58 KB, 下載次數(shù): 225)
下載附件
2016-4-11 16:57 上傳
另外這里還涉及到單片機(jī)的工作問(wèn)題,比如電源怎么接、地線怎么接、還有復(fù)位電路等等,這里都沒(méi)有描述,由于這些內(nèi)容講起來(lái)比較占用篇幅,如果有想使用這個(gè)電路進(jìn)行DIY但又不太熟悉單片機(jī)的朋友可以聯(lián)系“@ZiShi”,我們可以提供更細(xì)致的資料。
電機(jī)控制原理基本介紹完了,看起來(lái)并不復(fù)雜,后面該介紹數(shù)據(jù)接收部分的電路了。
今天就到這里,下回繼續(xù)……
遙控坦克DIY過(guò)程解密(04) >>>>>>>>>>2013-01-09<<<<<<<<<<
114026t6338qw7w7cx83tk.jpg (16.76 KB, 下載次數(shù): 209)
下載附件
2016-4-11 16:57 上傳
上一回我們分享了電機(jī)控制的原理,這一回我們繼續(xù)看下遙控是如何實(shí)現(xiàn)的。
對(duì)于一個(gè)坦克或小車來(lái)講我們總不希望他拖個(gè)長(zhǎng)長(zhǎng)的尾巴跑來(lái)跑去(線控)這樣會(huì)大大的限制住坦克的活動(dòng)范圍,如果是飛機(jī)或艦船的話使用線控就顯得更不合適了,那么使用什么方法來(lái)對(duì)坦克進(jìn)行遠(yuǎn)程的控制呢,同樣有很多方案供DIY愛(ài)好者選擇,簡(jiǎn)單來(lái)說(shuō)有下面幾種:
1、常見(jiàn)的航模遙控器,如圖4-1,加上接收器一套下來(lái)估計(jì)最便宜的那種都要一兩百元,不太適合資金有限的DIY朋友;
2、還有一種遙控外觀如圖4-2,這種遙控器主要用來(lái)控制電燈的開(kāi)關(guān),以及經(jīng)常出入停車場(chǎng)的朋友常常會(huì)看到門衛(wèi)手里拿的這個(gè)東西遙控進(jìn)出口欄桿的起降,這個(gè)種模塊使用非常簡(jiǎn)單,但是有一點(diǎn)不足這個(gè)模塊可以表達(dá)的信息有限,對(duì)于簡(jiǎn)單的開(kāi)關(guān)完全可以,但要是功能多起來(lái),這個(gè)遙控就應(yīng)付不了了,尤其要實(shí)現(xiàn)比例遙控的話這個(gè)模塊就無(wú)能為力了;
3、第三個(gè)就是我們這里要討論的NRF24L01這個(gè)模塊了如圖4-3,首先他價(jià)格便宜其次它是一個(gè)數(shù)據(jù)傳輸模塊可以傳輸多種控制命令,但它也有缺點(diǎn)那就是他的接口比較復(fù)雜需要特定的時(shí)序才能完成對(duì)它的控制;
114027v4ne5eectii5igpv.jpg (16.39 KB, 下載次數(shù): 197)
下載附件
2016-4-11 16:57 上傳
114028bfp2x3rkr2as3c11.jpg (11.25 KB, 下載次數(shù): 185)
下載附件
2016-4-11 16:57 上傳
114029x2psp9bc0yu2wb9r.jpg (12.79 KB, 下載次數(shù): 203)
下載附件
2016-4-11 16:57 上傳
經(jīng)過(guò)綜合的考慮我們選擇了NRF24L01這個(gè)模塊,決定使用單片機(jī)對(duì)它進(jìn)行控制。
下面就是硬件的連接問(wèn)題了,說(shuō)到這里我們又要去翻看芯片的使用手冊(cè),還好我們有圖4-3這樣的模塊,模塊中已經(jīng)幫我們做好了芯片的周邊電路,我們并不需要做這些工作過(guò)了,我們只要了解這個(gè)模塊各個(gè)針腳的定義就好了,看圖4-4。
114029nvulc8sdiuv5xslc.jpg (18.83 KB, 下載次數(shù): 184)
下載附件
2016-4-11 16:57 上傳
這個(gè)模塊有8個(gè)針腳,分別代表VCC、GND、CE、CSN、SCK、MOSI、MISO、IRQ,我們看看如何把這個(gè)模塊和51單片機(jī)相連,如圖4-5。
114030c1rkp7fc4pwp3pwp.jpg (59.42 KB, 下載次數(shù): 216)
下載附件
2016-4-11 16:57 上傳
我們將無(wú)線模塊的各個(gè)引腳與單片機(jī)的P2口相連,同時(shí)將它的中斷引腳連接到單片機(jī)的INT0引腳,這部分硬件電路的搭建基本就結(jié)束了,需要注意的是圖中那個(gè)上拉電阻,到了這里坦克一端的硬件電路基本已經(jīng)形成了,看下完整的電路,圖4-6。
102600aw0j6wzp2rvf3z9w.jpg (13.58 KB, 下載次數(shù): 205)
下載附件
2016-4-11 16:57 上傳
后面我們?cè)俸?jiǎn)要介紹一下,遙控手柄一端的電路,今天先到這里。
待續(xù)……
遙控坦克DIY過(guò)程解密(05) >>>>>>>>>>2013-01-11<<<<<<<<<<
102600z0uzcqxgog10ouyu.jpg (11.69 KB, 下載次數(shù): 213)
下載附件
2016-4-11 16:57 上傳
上一回我們介紹完了坦克一端的硬件部分,這回繼續(xù)介紹一下手柄一端的硬件,比較之前的電路手柄這邊的電路要簡(jiǎn)單一些了,還是老習(xí)慣我們先分析一下手柄的功能,如圖5-1。
102600klrfr8lpm1zp8yml.jpg (22.74 KB, 下載次數(shù): 191)
下載附件
2016-4-11 16:57 上傳
手柄的主要任務(wù)就是處理玩家的一些動(dòng)作,然后將玩家的動(dòng)作以命令形式發(fā)送給坦克。那么玩家都有哪些動(dòng)作呢?總結(jié)下來(lái)就一個(gè)動(dòng)作“按鍵”,當(dāng)手柄發(fā)現(xiàn)用戶按下按鍵后,判斷用戶按下的是哪個(gè)按鍵最后將這個(gè)按鍵對(duì)應(yīng)的操作以命令形式發(fā)送給坦克。
根據(jù)前面對(duì)坦克功能的定義我們要實(shí)現(xiàn)的動(dòng)作有前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、炮塔順時(shí)針轉(zhuǎn)、炮塔逆時(shí)針轉(zhuǎn)這幾個(gè)動(dòng)作,那么我們就來(lái)設(shè)計(jì)一個(gè)帶有6個(gè)按鍵的手柄,其大致外觀如圖5-2。
102601kefwn4wa5eiu3uea.jpg (48.38 KB, 下載次數(shù): 209)
下載附件
2016-4-11 16:57 上傳
功能基本確定了我們來(lái)看下手柄一端的電路如何設(shè)計(jì),涉及到數(shù)據(jù)傳輸模塊的設(shè)計(jì)其實(shí)與坦克一端是一樣的,可以直接參考《遙控坦克DIY過(guò)程解密(04)》來(lái)完成相關(guān)電路的設(shè)計(jì),我們僅僅討論按鍵電路的設(shè)計(jì),如圖5-3所示。
102601qpqmmzmns12naqs1.jpg (14.23 KB, 下載次數(shù): 172)
下載附件
2016-4-11 16:57 上傳
其中陰影部分電路就是遙控手柄的按鍵電路,同時(shí)已經(jīng)給出了數(shù)據(jù)傳輸模塊的電路。我們一共定義了6個(gè)按鍵使用單片機(jī)的P0口去讀取按鍵的狀態(tài),如果讀入的數(shù)據(jù)是‘0’說(shuō)明按鍵是抬起狀態(tài),如果讀入的數(shù)據(jù)是‘0’說(shuō)明按鍵被按下。怎么樣其實(shí)實(shí)現(xiàn)一個(gè)手柄也并不復(fù)雜,對(duì)于我們DIY來(lái)說(shuō)這個(gè)電路已經(jīng)完全夠用了。我們可以選擇圖5-4這種小按鍵來(lái)制作我們的手柄。
102559wg70tvl77bt77xmb.jpg (44.5 KB, 下載次數(shù): 227)
下載附件
2016-4-11 16:57 上傳
把這種按鍵焊接在萬(wàn)能版上效果如圖5-5所示。
124409qs6saz516xz6bgbm.jpg (21.34 KB, 下載次數(shù): 189)
下載附件
2016-4-11 16:57 上傳
DIY這個(gè)遙控坦克所涉及到的硬件部分基本介紹完畢了,后面的工作就是根據(jù)原理圖(在萬(wàn)能版或面包板上)把電路搭建好,搭建好電路后就可以進(jìn)入軟件設(shè)計(jì)階段了。
今天先進(jìn)行到這里,待續(xù)……
大家一起DIY
遙控坦克DIY過(guò)程解密(06) >>>>>>>>>>2013-01-13<<<<<<<<<<
124410zd3xj1ac4i7l0x7i.jpg (20.81 KB, 下載次數(shù): 340)
下載附件
2016-4-11 16:57 上傳
【解密-軟件】
我們說(shuō)硬件是載體軟件是靈魂,前面已經(jīng)介紹了遙控坦克的硬件部分接下來(lái)我們?cè)撊?shí)現(xiàn)它的軟件部分了,說(shuō)簡(jiǎn)單就是寫(xiě)程序控制我們的坦克完成預(yù)計(jì)功能?催^(guò)前面文字的朋友知道我們的硬件系統(tǒng)分為兩部分,它們是坦克系統(tǒng)和手柄系統(tǒng),我們要分別為這兩個(gè)系統(tǒng)編寫(xiě)程序。首先我們先設(shè)計(jì)一下坦克一端的軟件架構(gòu),如圖6-1。
124411aqd48j85k8jkqlaq.jpg (78.5 KB, 下載次數(shù): 193)
下載附件
2016-4-11 16:57 上傳
從圖中我們能看出坦克一端在不斷的接收命令,如果有命令發(fā)來(lái)就解析命令然后執(zhí)行命令,如果沒(méi)有命令那么繼續(xù)下一次接收命令,總之坦克一旦上電就在不停的接收命令直到關(guān)閉電源。這里給出部分源程序作為參考,考慮到有些朋友不太熟悉程序設(shè)計(jì)為不影響大家對(duì)原理的理解,在代碼中使用了很多注釋和偽代碼甚至插入很多中文信息,如圖6-2。
124411slc8xprlgrxfiqkj.jpg (36.02 KB, 下載次數(shù): 217)
下載附件
2016-4-11 16:57 上傳
從圖中我們可以清晰的看出程序的執(zhí)行過(guò)程,系統(tǒng)在無(wú)止境的循環(huán)接收命令、解析命令、執(zhí)行命令。其中紅色方框部分是這段程序的主體,我們會(huì)發(fā)現(xiàn)它的核心就是控制電機(jī)的旋轉(zhuǎn),那么如何通過(guò)程序來(lái)控制電機(jī)的旋轉(zhuǎn)呢,這就要回憶一下前面介紹的硬件電路了(《遙控坦克DIY過(guò)程解密(02)》),如圖6-3。
124406vjtgzmgnyayrntys.jpg (51.92 KB, 下載次數(shù): 220)
下載附件
2016-4-11 16:57 上傳
根據(jù)L9110的工作時(shí)序圖以及我們的硬件原理圖,我們可以清楚的看出要想讓電機(jī)旋轉(zhuǎn)我們只要讓單片機(jī)的兩個(gè)IO引腳P10、P11輸出反相就可以了,如果轉(zhuǎn)化成代碼如圖6-4所示。
124407widxld3i66f6vnfx.jpg (36.7 KB, 下載次數(shù): 215)
下載附件
2016-4-11 16:57 上傳
上圖中紅色方框中表示的是對(duì)一個(gè)馬達(dá)的控制,對(duì)另外2個(gè)馬達(dá)的控制方法也是一樣的,進(jìn)行到這里我們已經(jīng)可以通過(guò)程序來(lái)控制電機(jī)的旋轉(zhuǎn)了,只要正確的協(xié)調(diào)3個(gè)馬達(dá)的旋轉(zhuǎn)方向,我們就可以讓我們的坦克完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、炮塔順時(shí)針旋轉(zhuǎn)以及炮塔逆時(shí)針旋轉(zhuǎn)這幾個(gè)功能。
那么系統(tǒng)是如何知道已經(jīng)接收到數(shù)據(jù)的呢?只要有2種方法,一種方法是對(duì)NRF24L01的狀態(tài)不斷進(jìn)行查詢,另一種方法是當(dāng)NRF24L01接收到數(shù)據(jù)以后主動(dòng)通知MCU,根據(jù)我們的硬件原理圖同時(shí)為了提高系統(tǒng)執(zhí)行效率,我們采用第二種方法,代碼如圖6-5、6-6。
124407lqhthvtv2vdwf3vt.jpg (23.61 KB, 下載次數(shù): 171)
下載附件
2016-4-11 16:57 上傳
124409q5eqheett7wafw2f.jpg (17.15 KB, 下載次數(shù): 197)
下載附件
2016-4-11 16:57 上傳
當(dāng)接收到數(shù)據(jù)傳輸模塊觸發(fā)的中斷后,我們?nèi)プx取傳輸模塊的狀態(tài),如果接收到數(shù)據(jù)我們就設(shè)置一個(gè)標(biāo)志,圖6-2的程序會(huì)不斷查詢這個(gè)標(biāo)志,一旦發(fā)現(xiàn)有數(shù)據(jù)發(fā)送來(lái),就可以對(duì)數(shù)據(jù)進(jìn)行解析了。
當(dāng)然這里面我們省略了初始化硬件、定時(shí)器以及傳輸模塊的詳細(xì)步驟,如果大家在DIY過(guò)程中也遇到到了具體技術(shù)問(wèn)題,可以隨時(shí)翻閱資料或?qū)W習(xí),當(dāng)然也可以與“@ZiShi”進(jìn)行交流。
如果要讓坦克正常解析接收到的命令,我們可以定義一些簡(jiǎn)單的協(xié)議,如圖6-7。
074135rcmxs6scslayu66v.jpg (13.58 KB, 下載次數(shù): 190)
下載附件
2016-4-11 16:57 上傳
有了命令列表,通信雙方就可以根據(jù)這個(gè)“協(xié)議”進(jìn)行通信了,假如坦克一端接收到0X00,那么坦克就全速向前沖,如果坦克一端接收到0X02,那么坦克就會(huì)左轉(zhuǎn),大家還可以自己擴(kuò)充這個(gè)命令列表,讓自己的坦克完成更多的功能。
坦克一端的程序原理已經(jīng)介紹完畢了,后面我們還會(huì)繼續(xù)介紹遙控手柄一端的程序原理。
今天先到這里……
遙控坦克DIY過(guò)程解密(07) >>>>>>>>>>2013-01-15<<<<<<<<<<
074107xffndfty3yeed3zn.jpg (58.2 KB, 下載次數(shù): 196)
下載附件
2016-4-11 16:57 上傳
前面介紹了坦克一端的程序原理這一回我們來(lái)看看手柄程序是怎么實(shí)現(xiàn)的,要實(shí)現(xiàn)手柄一端的程序我們還得回顧一下手柄一端的硬件原理圖,如圖7-1。
074108qs5ua5sgoousxxim.jpg (28.79 KB, 下載次數(shù): 203)
下載附件
2016-4-11 16:57 上傳
根據(jù)原理圖我們可以看出當(dāng)按鍵沒(méi)有被按下是,單片機(jī)對(duì)應(yīng)的IO引腳為高電平,當(dāng)有按鍵按下時(shí)候,單片機(jī)對(duì)應(yīng)的IO引腳為低電平,根據(jù)這一原理,我們的程序可以不斷去讀取IO引腳的狀態(tài)來(lái)判斷是哪個(gè)按鍵被按下了,請(qǐng)看圖7-2。
074107e2by1w8w6a7s8l0e.jpg (43.52 KB, 下載次數(shù): 212)
下載附件
2016-4-11 16:57 上傳
圖7-2是一段按鍵掃描程序,這段程序會(huì)返回被按下按鍵的編號(hào),最后根據(jù)按鍵的編號(hào)發(fā)送對(duì)應(yīng)的控制命令。系統(tǒng)程序運(yùn)行起來(lái)后我們只要不斷的調(diào)用這個(gè)按鍵掃描函數(shù),就可以不斷的讀取用戶輸入,發(fā)送控制命令,如圖7-3。
130224fibftz0lnqdb1nk1.jpg (21.34 KB, 下載次數(shù): 197)
下載附件
2016-4-11 16:57 上傳
至此程序部分的基本原理已經(jīng)介紹完畢了,有了這些程序我們已經(jīng)可以控制我們的坦克完成預(yù)計(jì)的功能了,如果后面再需要其他功能我們會(huì)在這個(gè)程序上進(jìn)行擴(kuò)展,另外這里給出的只是框架性的內(nèi)容,為了不影響對(duì)整體程序功能的理解,我們略去了部分技術(shù)細(xì)節(jié)。
有些朋友可能對(duì)單片機(jī)編程或者對(duì)一些芯片、模塊的使用不太熟悉,這些涉及到具體細(xì)節(jié)的問(wèn)題我們可以另外進(jìn)行討論,這里還是以原理為主。
軟件部分的“解密”基本完成了,下一回我們要開(kāi)始進(jìn)行結(jié)構(gòu)與外觀的設(shè)計(jì)了,敬請(qǐng)期待……
遙控坦克DIY過(guò)程解密(08) >>>>>>>>>>2013-01-17<<<<<<<<<<
130225mtki7aekr06jeyad.jpg (34.36 KB, 下載次數(shù): 223)
下載附件
2016-4-11 16:57 上傳
前面介紹了很多專業(yè)內(nèi)容,估計(jì)大家看的有些不耐煩了,今天換換口味,欣賞一下我們拍攝的照片,之前一直有朋友反映視頻看的不是很清楚,很多細(xì)節(jié)沒(méi)有看到,今天給大家上幾張圖,我們也正在翻錄新的視頻,希望能做的更好,話不多說(shuō)開(kāi)始上圖嘍,圖8-1:
130225il5sbfaynllcnycl.jpg (64.45 KB, 下載次數(shù): 187)
下載附件
2016-4-11 16:57 上傳
上面這張圖,是我們用銅柱和螺母拼出的“DIY”和“ZiShi”字樣,圖中這兩樣?xùn)|西,是我們拼接外殼的主要連接件。他們都是很常見(jiàn)的零件,相信常常DIY的朋友對(duì)這種零件并不陌生。在看下一張,圖8-2。
130225d911llc4hjvs6u14.jpg (68.25 KB, 下載次數(shù): 222)
下載附件
2016-4-11 16:57 上傳
看到這個(gè)圖大家會(huì)不會(huì)想起兒時(shí)玩的四驅(qū)車呢,如果能夠回憶起說(shuō)明您從小就十分熱愛(ài)DIY這項(xiàng)充滿刺激的動(dòng)手活動(dòng)。我們的坦克就是利用這些簡(jiǎn)單的組件搭建出來(lái)的,蠻神奇的。
后來(lái)我們都長(zhǎng)大了,但心依然年輕,從未放棄自己熱愛(ài)的事情,只是不再滿足于“簡(jiǎn)單”的四驅(qū)車,一心想要做出自己的超級(jí)戰(zhàn)車,同時(shí)我們的戰(zhàn)車應(yīng)該具有聰明的“大腦”,而不是簡(jiǎn)單的前、后、左、右,我們要實(shí)現(xiàn)更多功能讓它具備更快的反映能力,要說(shuō)反應(yīng)能力快在這是世界上誰(shuí)還能快過(guò)計(jì)算機(jī)呢,我們打算在戰(zhàn)車中植入計(jì)算機(jī)讓它具有思維,下圖就是我們引入的51計(jì)算機(jī),圖8-3。
130226xa16spt1z91zm1tm.jpg (35.87 KB, 下載次數(shù): 221)
下載附件
2016-4-11 16:57 上傳
有了大腦戰(zhàn)車才會(huì)變得更加聰明。
要說(shuō)DIY真的樂(lè)趣很多,可以充分發(fā)揮大家的想象力和動(dòng)手能力,同時(shí)讓我們?cè)趯W(xué)校里學(xué)到的知識(shí)不被浪費(fèi)掉,所以我們一直鼓勵(lì)大家動(dòng)手去做去實(shí)踐。
說(shuō)到坦克我們?cè)賮?lái)看看他的履帶長(zhǎng)什么樣子,如圖8-4。
234751n7sn9313cqz5n9np.jpg (13.58 KB, 下載次數(shù): 203)
下載附件
2016-4-11 16:57 上傳
大家看到了嗎,坦克的履帶,我們就以這張笑臉結(jié)束今天的文字,希望我們能為大家?guī)?lái)更多的快樂(lè),同時(shí)也感謝前一段時(shí)間大家對(duì)“ZiShi”遙控坦克的支持,感謝大家。
后面我們繼續(xù)回到結(jié)構(gòu)設(shè)計(jì)的話題,請(qǐng)看下一回……
遙控坦克DIY過(guò)程解密(09)
>>>>>>>>>>2013-01-19<<<<<<<<<<
234752re92alj0zesp179j.jpg (39.17 KB, 下載次數(shù): 190)
下載附件
2016-4-11 16:57 上傳
繼續(xù)解密
今天進(jìn)行我們遙控坦克項(xiàng)目的最后一個(gè)“解密”部分,最后一部分主要是關(guān)于機(jī)械結(jié)構(gòu)的解密。對(duì)于一般的DIY愛(ài)好者來(lái)講螺絲刀、鉗子、鋼鋸、電鉆這些工具還都是具備的,但是要說(shuō)到數(shù)控機(jī)床、激光切割之類的大家伙可能很少有人具備這個(gè)條件了,是不是沒(méi)有這些大家伙我們就不能進(jìn)行DIY了呢?當(dāng)然不是的。DIY的精神就在于有條件要DO,沒(méi)條件創(chuàng)造條件也要DO,沒(méi)有工具沒(méi)有專業(yè)的知識(shí)都不能阻止我們?nèi)IY。
今天在這里“ZiShi”要給大家分享的內(nèi)容是,在有限的加工工具和有限的專業(yè)知識(shí)條件下如何進(jìn)行個(gè)人的DIY,當(dāng)然我們這回是圍繞機(jī)械結(jié)構(gòu)部分展開(kāi)的。
我們會(huì)分兩回進(jìn)行這部分內(nèi)容,第一回介紹金屬加工方法,第二回介紹非金屬加工方法。
先來(lái)看金屬加工方法,做任何事之前都需要進(jìn)行簡(jiǎn)單設(shè)計(jì),如果不進(jìn)行設(shè)計(jì)就開(kāi)工后面會(huì)遇到很多麻煩,對(duì)于機(jī)械加工來(lái)說(shuō)我們第一步要做的就是繪圖,可能有朋友說(shuō)了沒(méi)學(xué)過(guò)CAD怎么做呢?我們說(shuō)沒(méi)關(guān)系一桿筆一把直尺足夠了,當(dāng)然有時(shí)候還會(huì)用到圓規(guī)。有條件的朋友可以現(xiàn)在坐標(biāo)紙上進(jìn)行設(shè)計(jì),沒(méi)有坐標(biāo)紙呢找一張白紙也完全可以,有了這些就可以開(kāi)工嘍,具體怎么畫(huà)不用詳細(xì)介紹,我們只要一上圖,大家馬上明白,請(qǐng)看圖9-1、9-2:
234752zqvgqq2qq2e2q3yq.jpg (40.3 KB, 下載次數(shù): 226)
下載附件
2016-4-11 16:57 上傳
234752f2yc9w09cjw7ywar.jpg (30.78 KB, 下載次數(shù): 206)
下載附件
2016-4-11 16:57 上傳
這是我們?cè)?jīng)設(shè)計(jì)過(guò)的一個(gè)實(shí)例—機(jī)械腿,看著可能有些復(fù)雜,但仔細(xì)觀察發(fā)現(xiàn)圖中除了線就是圓,一把直尺一支筆一個(gè)圓規(guī)完全能搞定了,怎么樣原理并不復(fù)雜吧沒(méi)有CAD我們也可以DIY的,有了這張圖接下來(lái)就是繪制具體的零件了,這個(gè)就更加容易了,看圖9-3:
234753ifdy7yrur4hircky.jpg (10.77 KB, 下載次數(shù): 193)
下載附件
2016-4-11 16:57 上傳
上面的圖展示了3個(gè)零件的繪制方法,零件畫(huà)好以后順便標(biāo)記尺寸,這個(gè)尺寸就是我們后面進(jìn)行加工的依據(jù)了。上面這個(gè)圖是一個(gè)立體效果,我們還要把它轉(zhuǎn)化成平面的尺寸,看圖9-4:
234751xh9rm4999994rmy9.jpg (40.27 KB, 下載次數(shù): 246)
下載附件
2016-4-11 16:57 上傳
圖9-4是一個(gè)簡(jiǎn)單的零件,被展開(kāi)后就是一個(gè)矩形,我們只要把下半部分的圖紙用剪刀剪下,然后貼到金屬材料上(鐵皮、鋁片),然后使用鋼鋸沿著圖紙進(jìn)行切割就好了,切割好的材料根據(jù)預(yù)先設(shè)計(jì)的尺寸進(jìn)行折彎處理,請(qǐng)看圖9-5:
234751ce9tiamjm6qz94r7.jpg (59.71 KB, 下載次數(shù): 236)
下載附件
2016-4-11 16:57 上傳
被加工好的零件與圖9-5左下方的效果類似,這種加工方法效率不算高但是可行的,為了充分說(shuō)明這個(gè)方法的可行性,我們展示一下當(dāng)時(shí)做的機(jī)械腿效果,如圖9-6:
132720zq36z99d5qe5se8s.jpg (13.18 KB, 下載次數(shù): 178)
下載附件
2016-4-11 16:57 上傳
這里只進(jìn)行了原理性的說(shuō)明,我想大家應(yīng)該可以理解這個(gè)過(guò)程,交代的可能不是很細(xì)致,因?yàn)榫唧w的手工加工過(guò)程還是有很多技巧的,而且對(duì)動(dòng)手能力有比較高的要求,最重要的是有耐心因?yàn)檫@種方法的效率并不高,還有最最重要的是注意安全,主要保護(hù)好眼睛和手。如果大家對(duì)這種DIY方式感興趣我們可以進(jìn)一步分享經(jīng)驗(yàn)。
下一回我們就介紹非金屬材料的加工,這部分和坦克車就很接近了……
遙控坦克DIY過(guò)程解密(10) >>>>>>>>>>2013-01-22<<<<<<<<<< 上回介紹了金屬加工,本來(lái)計(jì)劃接著介紹非金屬的手工加工方法,不過(guò)團(tuán)隊(duì)中負(fù)責(zé)結(jié)構(gòu)的兄弟以及完成了坦克內(nèi)部結(jié)構(gòu)與組裝的“解密”,同時(shí)這個(gè)地方很多網(wǎng)友又比較感興趣,所以我們先進(jìn)行戰(zhàn)車的結(jié)構(gòu)和組裝“解密”,后面抽個(gè)機(jī)會(huì)再與大家分享非金屬的手工加工方法。
首先來(lái)個(gè)回顧,看看我們的坦克有幾部分構(gòu)成,看圖10-01:
132721k7q9uzu23dkg1d3i.jpg (25.78 KB, 下載次數(shù): 187)
下載附件
2016-4-11 16:57 上傳
如果以從上到下的方式去觀察的話,我們的戰(zhàn)車主要包括了炮塔和底盤兩大部分,所以我們?cè)贒IY這個(gè)戰(zhàn)車時(shí)候也依據(jù)這樣的順序,炮塔的組裝、車體的組裝、整體的裝配以及最后的電路調(diào)試過(guò)程。
組裝這個(gè)坦克涉及的工具并不復(fù)雜,一把螺絲刀一把小鉗子基本就滿足了。
首先看看炮塔是如何組裝的,既然是“解密”就要讓大家看的清清楚楚,我們特意將車體零件“散開(kāi)”讓大家進(jìn)一步了解其內(nèi)部結(jié)構(gòu),首先看看這個(gè)炮塔是怎么構(gòu)成的,如圖10-02:
132722foqrvza3a12olms2.jpg (21.16 KB, 下載次數(shù): 199)
下載附件
2016-4-11 16:57 上傳
通過(guò)上面的圖我們已經(jīng)很清晰的看出了炮管以及炮塔主體的內(nèi)部結(jié)構(gòu),而且他的組裝過(guò)程也極其簡(jiǎn)單,只要看著這個(gè)3D圖拼拼插插就好了,最后在關(guān)鍵部位使用螺釘鎖緊(哎,連我自己都佩服設(shè)計(jì)坦克的兄弟,這是怎么構(gòu)思滴泥,如果朋友們也感覺(jué)神奇,一定要頂我們哦,先謝謝大家,嘿嘿)。再來(lái)看看炮管和炮塔主體是如何進(jìn)行連接的,看圖10-03:
132722zuzjh0taya7yaoh1.jpg (6.04 KB, 下載次數(shù): 297)
下載附件
2016-4-11 16:57 上傳
一個(gè)完整的炮塔已經(jīng)躍然紙上,不過(guò)大家單純看圖可能很難體會(huì)到DIY的樂(lè)趣了,主要還是得動(dòng)手試一試,后面我們也會(huì)給大家介紹如何通過(guò)手工方法達(dá)到類似效果,當(dāng)然了僅限于簡(jiǎn)單的外觀,像坦克這么大的工程如果完全手工打造的話不是不可以而是時(shí)間長(zhǎng)零件精度方面不好控制。我們團(tuán)隊(duì)也是花了很多時(shí)間反復(fù)修改才把坦克變成今天這個(gè)樣子的,只要大家肯在DIY上面花時(shí)間,當(dāng)然也要花點(diǎn)銀子,基本工具和材料還是要買的,相信每個(gè)人都能D出自己滿意的作品。
炮塔的組裝基本就介紹完畢了,后面的組裝過(guò)程也是類似的拼拼插插,相信大家一看就能理解,組裝過(guò)程還用到了一些鏈接件,都很常見(jiàn),如圖10-04:
092934nvd4un64tdldvulv.jpg (24.19 KB, 下載次數(shù): 180)
下載附件
2016-4-11 16:57 上傳
銅柱、螺釘和螺母,相信每一個(gè)DIY愛(ài)好者家里都有不少這種東西,具體怎么使用自然不用多說(shuō)。
好了,炮塔的內(nèi)部結(jié)構(gòu)和組裝過(guò)程已經(jīng)介紹完了,今天就到這里,下回繼續(xù)……
-----------------------------------------------------
之前的一篇帖子主要分享了遙控坦克DIY的原理,涉及了一些機(jī)械、電子、軟件原理,受到很多朋友的支持和鼓勵(lì),今天再發(fā)一帖主要介紹這個(gè)坦克的組裝過(guò)程,
如果按照之前的順序今天是第11篇文字了,看看今天聊些什么內(nèi)容......
遙控坦克DIY過(guò)程解密(11)
>>>>>>>>>>2013-01-27<<<<<<<<<<
上一回我們已經(jīng)介紹了炮塔的組裝過(guò)程,這一回我們看看車體是如何組裝的。先來(lái)看看車體長(zhǎng)什么樣子,如圖11-01:
092934m2h2vuvvmi83i2p3.jpg (18.14 KB, 下載次數(shù): 225)
下載附件
2016-4-11 16:57 上傳
車體部分的零件要比炮塔部分的零件多些,所以組裝起來(lái)會(huì)更加有趣一些,從上面的圖我們可以發(fā)現(xiàn),車體部分主要有下面幾部分構(gòu)成,“上面板組件”,“履帶傳動(dòng)板組件”,“底盤前鎖緊組件”,“承重輪組件”,“導(dǎo)向輪組件”,“驅(qū)動(dòng)輪組件”以及“底板組件”。我們會(huì)分別看下這幾個(gè)組件的組裝過(guò)程,最后再看看這些個(gè)組件是如何構(gòu)成坦克的車體的。
上面板的主要作用是用來(lái)固定炮塔電機(jī)的,我們使用螺絲和螺母將炮塔電機(jī)固定在坦克的上面板上,請(qǐng)看圖11-02:
092934zy6byt2ubub4ur4r.jpg (15.69 KB, 下載次數(shù): 221)
下載附件
2016-4-11 16:57 上傳
在上圖中我們還能看見(jiàn)上面板組件上還有4跟長(zhǎng)長(zhǎng)的“立柱”,這4跟立柱主要用來(lái)連接上面板組件和底板組件。接下來(lái)看看稱重輪組件,所謂稱重輪組件就是車身兩側(cè)的起到支撐左右的輪子,如圖11-03、11-04:
092935a0pm040mp6c7sme7.jpg (10.48 KB, 下載次數(shù): 185)
下載附件
2016-4-11 16:57 上傳
092935y7j9n9e7et65eqwb.jpg (16.21 KB, 下載次數(shù): 212)
下載附件
2016-4-11 16:57 上傳
有了這排稱重輪坦克才能發(fā)揮履帶車的優(yōu)勢(shì),面對(duì)任何地形如履平地。履帶的轉(zhuǎn)動(dòng)依靠驅(qū)動(dòng)輪的帶動(dòng),我們看看驅(qū)動(dòng)輪是如何安裝的,看圖11-05:
092935d6uddtrh6th6z2vp.jpg (20.45 KB, 下載次數(shù): 263)
下載附件
2016-4-11 16:57 上傳
只要把驅(qū)動(dòng)小齒輪安裝在坦克的馬達(dá)上,它就可以帶動(dòng)坦克履帶前進(jìn)了,相信大家一定能夠明白履帶的驅(qū)動(dòng)原理了。前面我們提到了支撐輪、馬達(dá)和驅(qū)動(dòng)輪,那么這些組件是如何組織在一起的呢,我們需要另一個(gè)組件,我們稱為“履帶傳動(dòng)板組件”,如圖11-06:
092936obfsdsblsysbhss9.jpg (11.34 KB, 下載次數(shù): 218)
下載附件
2016-4-11 16:57 上傳
后面我們會(huì)把坦克支撐輪、馬達(dá)以及驅(qū)動(dòng)輪固定在這個(gè)傳動(dòng)板上,圖中的長(zhǎng)螺絲還有螺母正是固定傳動(dòng)板和馬達(dá)的。我們所采用的電機(jī)就是常見(jiàn)的TT馬達(dá),如圖11-07:
092937zxlgiq7jttsvv3lx.jpg (13.61 KB, 下載次數(shù): 205)
下載附件
2016-4-11 16:57 上傳
接下來(lái)看一下底盤底板組件的安裝,底盤底板組件主要有兩個(gè)功能,一個(gè)是功能是將塔克底盤封起來(lái)讓坦克看上去更加封閉,另一個(gè)功能是固定電池盒,看圖11-08:
092937xxo1y61ookmmjojp.jpg (36.32 KB, 下載次數(shù): 222)
下載附件
2016-4-11 16:57 上傳
當(dāng)我們把這個(gè)底板固定到坦克的底盤之后整個(gè)車身就被封閉起來(lái),電路、電機(jī)還有電池盒全部被裝到坦克的身體里,這樣看上去坦克更加的美觀。最后我們看看以上介紹的底盤組件是如何組裝起來(lái)形成坦克底盤的,看圖11-09:
134212tbemzmjpj9b99bfd.jpg (19.95 KB, 下載次數(shù): 203)
下載附件
2016-4-11 16:57 上傳
上面這張圖較清晰的說(shuō)明了底盤的構(gòu)成。這一回的坦克組裝介紹先進(jìn)行到這里,我們下回繼續(xù)。
---------------------------------------------------
遙控坦克DIY過(guò)程解密(12)
>>>>>>>>>>2013-01-31<<<<<<<<<<
今天進(jìn)行遙控坦克最后的整體裝配,前面已經(jīng)介紹了炮塔的組裝以及坦克底盤的組裝。圖12-01是炮塔,圖12-02是坦克底盤。
134213j56l4ytxf3wzyswx.jpg (17.16 KB, 下載次數(shù): 196)
下載附件
2016-4-11 16:57 上傳
134214l499eyyau41y2xr5.jpg (12.72 KB, 下載次數(shù): 170)
下載附件
2016-4-11 16:57 上傳
最后的裝配主要就是將炮塔和底盤進(jìn)行連接,過(guò)程比較簡(jiǎn)單,只需要一個(gè)零件我們稱為“炮塔限位板”,形如圖12-03:
134215izq45teo4botq55f.jpg (28.64 KB, 下載次數(shù): 189)
下載附件
2016-4-11 16:57 上傳
這個(gè)小零件有兩個(gè)作用,仔細(xì)看零件中間的孔正好可以卡在電機(jī)輸出軸上,從而帶動(dòng)炮塔的旋轉(zhuǎn),它的另一個(gè)作用就如它的名字了,進(jìn)行旋轉(zhuǎn)過(guò)程中的限位控制,我們不會(huì)讓炮塔進(jìn)行360度旋轉(zhuǎn),所以對(duì)其進(jìn)行限位,限位是如何實(shí)現(xiàn)的呢,我們看圖12-04:
134216js20h6ieyee0pee3.jpg (32.56 KB, 下載次數(shù): 196)
下載附件
2016-4-11 16:57 上傳
可以看到坦克底盤的上面板有兩顆螺絲(紅圈處),這兩顆螺絲會(huì)限制住炮塔的旋轉(zhuǎn)角度。
最后我們看看炮塔、限位板以及底盤是如何進(jìn)行連接的,圖12-05、圖12-06:
134216ei3iqlbhl11ulnjb.jpg (43.31 KB, 下載次數(shù): 236)
下載附件
2016-4-11 16:57 上傳
134212my38wmeeee1amweg.jpg (40.81 KB, 下載次數(shù): 198)
下載附件
2016-4-11 16:57 上傳
穿過(guò)炮塔和限位板,使用一顆螺絲直接將炮塔固定在電機(jī)輸出軸就完成了炮塔與底盤的連接,最后再看看組裝完的坦克效果圖12-07:
141148pppxexivsxnyylsv.jpg (58.23 KB, 下載次數(shù): 196)
下載附件
2016-4-11 16:57 上傳
大功告成,坦克拼裝任務(wù)基本結(jié)束了,不過(guò)現(xiàn)在的坦克還不能動(dòng)彈,因?yàn)檫沒(méi)有為它安裝控制電路,欲知詳情咱們下回分解……
經(jīng)過(guò)前面12次“解密”,相信大家對(duì)遙控坦克的原理以及基本結(jié)構(gòu)有了一定認(rèn)識(shí),如果要讓我們的坦克跑起來(lái)還要經(jīng)歷一個(gè)調(diào)試階段,其實(shí)調(diào)試的主要目的就讓坦克根據(jù)我們的操作產(chǎn)生正確的行為。比如我們按前坦克就向前走,我們按做坦克就向左轉(zhuǎn)等等。
首先我們要將坦克的3個(gè)電機(jī)與控制板進(jìn)行連接,如圖13-01:
141149lzs4sl5psvjcwj0p.jpg (96.32 KB, 下載次數(shù): 177)
下載附件
2016-4-11 16:57 上傳
大家可以看到控制板上有6根(3組)插針,中間一組控制炮塔,兩邊2組控制坦克履帶,首先我們把炮塔電機(jī)插到中間的一組插針上,然后把履帶電機(jī)插到兩側(cè)的插針上如圖13-02:
141220s2w020lv04vlzbcz.jpg (29.9 KB, 下載次數(shù): 201)
下載附件
2016-4-11 16:57 上傳
電機(jī)與控制連接后我們開(kāi)始調(diào)試工作,調(diào)試主要就是觀察電機(jī)的旋轉(zhuǎn)方向是否正確,以上面的圖為例,我們描述調(diào)試過(guò)程:
1. 按動(dòng)遙控器上的“上鍵”,如果兩條履帶向下滾動(dòng),我們進(jìn)入步驟3,否則進(jìn)入步驟2;
2. 將旋轉(zhuǎn)方向錯(cuò)誤的電機(jī)的插針交換位置(組內(nèi)交換),使其旋轉(zhuǎn)方向正確,進(jìn)入步驟3;
3. 按動(dòng)遙控器上的“左鍵”,如果左側(cè)履帶向下滾動(dòng),右側(cè)履帶向上滾動(dòng),調(diào)試結(jié)束,否則將左右兩個(gè)電機(jī)接入插針的位置進(jìn)行交換(組間交換),然后回到步驟1;
上面的過(guò)程看起來(lái)可能有點(diǎn)不清晰,我們還是畫(huà)張圖,來(lái)清晰說(shuō)明組內(nèi)交換和組間交換的概念,如圖13-03:
141148lckzngdw56ewlel3.jpg (36.37 KB, 下載次數(shù): 190)
下載附件
2016-4-11 16:57 上傳
直到第三步的條件得到滿足,坦克的調(diào)試工作結(jié)束,對(duì)于炮塔動(dòng)作的調(diào)試比較簡(jiǎn)單,只涉及到組內(nèi)交換只要方向反了把插針交換一下就可以了,這里不進(jìn)行介紹了。坦克調(diào)試結(jié)束后我們就可以遙控他自由馳騁嘍。
最后我們展示一下手柄圖片,目前手柄按鍵是針對(duì)遙控坦克進(jìn)行開(kāi)發(fā)的,上面有7個(gè)按鍵,我們暫時(shí)使用其中的6個(gè),如圖13-04:
212836g4g7ctr4m7oot1tz.jpg (56.91 KB, 下載次數(shù): 182)
下載附件
2016-4-11 16:57 上傳
關(guān)于手柄的更多實(shí)現(xiàn)細(xì)節(jié)我們會(huì)單獨(dú)做一次講解,今天就到這里嘍。
--------------------------------
遙控坦克DIY過(guò)程解密(14)
今天給大家介紹一下遙控坦克的無(wú)線手柄,實(shí)際上這個(gè)手柄不僅僅可以使用在坦克上,他可以應(yīng)用在任何需要無(wú)線遙控的場(chǎng)合,比如小車、機(jī)器人等。當(dāng)然這個(gè)手柄也是可編程的,我們可以根據(jù)自己的需要對(duì)其進(jìn)行編程改變每個(gè)按鍵的功能。我們還是通過(guò)圖片形式與大家分享這個(gè)手柄的DIY過(guò)程,圖14-01是手柄的整體外觀。
212837zci5tmtru59r6mc7.jpg (59.13 KB, 下載次數(shù): 210)
下載附件
2016-4-11 16:57 上傳
手柄的結(jié)構(gòu)就簡(jiǎn)單多了,組裝一個(gè)這樣的手柄大概也就2-3分鐘的時(shí)間,它主要包含上下兩層面板中間是它主控電路,我們進(jìn)去看看他的結(jié)構(gòu),圖14-02:
212838pl2b34jmot3gql43.jpg (56.3 KB, 下載次數(shù): 190)
下載附件
2016-4-11 16:57 上傳
我們使用一節(jié)9V電池為其供電。對(duì)于內(nèi)部的電路來(lái)說(shuō)我們使用上下雙層結(jié)構(gòu),其中一層主要用來(lái)放置按鍵、指示燈、以及開(kāi)關(guān)等電路,另外一層就是無(wú)線手柄的核心電路了,我們看圖14-03、14-04:
212839cgexg8jxmfe4iee4.jpg (67.22 KB, 下載次數(shù): 190)
下載附件
2016-4-11 16:57 上傳
212840t1fibegpobraglpa.jpg (56.46 KB, 下載次數(shù): 185)
下載附件
2016-4-11 16:57 上傳
核心板是基于51單片機(jī)的我們也預(yù)留了編程接口,這樣方便我們對(duì)手柄功能進(jìn)行DIY。我們將兩塊層板對(duì)接后效果如圖14-05:
212835pmzztzf9k7h7y6ky.jpg (78.87 KB, 下載次數(shù): 205)
下載附件
2016-4-11 16:57 上傳
怎么樣結(jié)構(gòu)還算簡(jiǎn)單吧,只要上下對(duì)插,然后通過(guò)四根螺釘與面板固定就大功告成嘍。最后我們看下手柄與坦克主控板的合影如圖14-06:
113529vp2bbk1kjzn8jp2a.jpg (30.09 KB, 下載次數(shù): 203)
下載附件
2016-4-11 16:57 上傳
有了他們我們就可以輕松DIY自己的坦克嘍,好了今天先到這里,我們下回繼續(xù)……
-------------------------------------------------
遙控坦克DIY過(guò)程解密(15)-為手柄編寫(xiě)程序
前面我們已經(jīng)介紹過(guò)子時(shí)DIY的無(wú)線遙控手柄是可編程的,同時(shí)在第7次解密中也介紹過(guò)為手柄編寫(xiě)程序的原理。那么這次“解密”就來(lái)具體看看如何為手柄編寫(xiě)C程序。
看過(guò)前面解密的朋友可能更加了解我們無(wú)線遙控手柄的硬件結(jié)構(gòu),我們主要使用51單片機(jī)和NRF24L01模塊來(lái)實(shí)現(xiàn)這個(gè)遙控手柄。既然是編寫(xiě)C程序我們需要選擇一個(gè)開(kāi)發(fā)環(huán)境,這里我們選擇常見(jiàn)的KEIL作為我們的集成開(kāi)發(fā)環(huán)境,如圖15-01:
113530jtk6e6ev6k6ono6o.jpg (135.6 KB, 下載次數(shù): 200)
下載附件
2016-4-11 16:57 上傳
關(guān)于這個(gè)開(kāi)發(fā)環(huán)境的使用方法在這里就不進(jìn)行介紹了,如果您對(duì)這個(gè)工具的使用不太熟悉可以通過(guò)網(wǎng)絡(luò)搜索這個(gè)工具的使用方法或直接聯(lián)系“子時(shí)”,我們很高興與您探討在編寫(xiě)程序過(guò)程中遇到的問(wèn)題。
編寫(xiě)手柄程序關(guān)鍵的兩個(gè)工作就是處理按鍵的變化和發(fā)送用戶命令,我們先來(lái)看看如何通過(guò)程序來(lái)處理按鍵變化,我們這里實(shí)現(xiàn)一個(gè)按鍵掃描函數(shù)KeyScan,下面就看看KeyScan的源程序,如圖15-02:
113530cz5j3as5e5t9e2t9.jpg (40.2 KB, 下載次數(shù): 204)
下載附件
2016-4-11 16:57 上傳
KeyScan函數(shù)的工作流程,如圖15-03:
113531l5dpxx3nf89o7of8.jpg (51.58 KB, 下載次數(shù): 223)
下載附件
2016-4-11 16:57 上傳
函數(shù)中使用變量KeyState來(lái)記錄當(dāng)前的按鍵狀態(tài),為了判斷按鍵的狀態(tài)變化我們還需要設(shè)置一個(gè)變量來(lái)記錄按鍵的原始狀態(tài)所以定義了局部靜態(tài)變量KeyStateOld,每次進(jìn)行按鍵掃描時(shí)都會(huì)去判斷按鍵狀態(tài)是否有變化,如果按鍵狀態(tài)有變化說(shuō)明用戶在操作手柄那么就根據(jù)新的按鍵狀態(tài)來(lái)發(fā)送對(duì)應(yīng)的命令。我們可以將KeyScan函數(shù)放在主程序中不斷進(jìn)行調(diào)用,來(lái)實(shí)時(shí)監(jiān)控用戶的操作。
處理完用戶的操作后需要將用戶的操作以命令方式發(fā)送出去,命令的發(fā)送比較簡(jiǎn)單我們利用NRF24L01_LIB.LIB庫(kù)來(lái)實(shí)現(xiàn),我們主要使用三個(gè)函數(shù)就可以完成命令的發(fā)送工作,三個(gè)函數(shù)分別是WirelessDevInit、WirelessSetDataBuf、WirelessTransData,下面看一段例子程序,圖15-04:
113528f5lovn5kszvckr95.jpg (100.64 KB, 下載次數(shù): 187)
下載附件
2016-4-11 16:57 上傳
上面是一段例子程序我們只需要在系統(tǒng)初始階段調(diào)用函數(shù)WirelessDevInit、WirelessSetDataBuf對(duì)無(wú)線設(shè)備進(jìn)行初始化操作,當(dāng)需要發(fā)送數(shù)據(jù)時(shí)候調(diào)用函數(shù)WirelessTransData便可以完成無(wú)線數(shù)據(jù)發(fā)送?梢越Y(jié)合上面的按鍵掃描程序?qū)Υa進(jìn)行修改,修改后的代碼形式如圖15-05:
161726bk4v8ss4l128g29k.jpg (30.99 KB, 下載次數(shù): 247)
下載附件
2016-4-11 16:57 上傳
這里介紹的僅是其中的一種為無(wú)線手柄編寫(xiě)程序的方法,當(dāng)然大家可以根據(jù)自己的設(shè)計(jì)編寫(xiě)自己的程序來(lái)實(shí)現(xiàn)不同的手柄行為,比如擴(kuò)展更多的命令,支持更多的組合鍵等等,這里僅僅列舉了一些代碼片段。
代碼中涉及到一些C語(yǔ)言的知識(shí)以及程序設(shè)計(jì)技巧,如果大家閱讀過(guò)程中遇到任何程序設(shè)計(jì)方面的問(wèn)題可以隨時(shí)提出,我們共同討論。程序?qū)懞煤笪覀冞要將程序燒錄到單片機(jī)中,這個(gè)是下一次解密的話題,今天就到這里……
本次解密是針對(duì)遙控坦克作品的最后一次解密,感謝壇友們一直以來(lái)對(duì)【DIY遙控坦克】的支持,希望以后能有更有意思的作品與大家分享。
上次給大家介紹了如何為無(wú)線遙控手柄編寫(xiě)程序,今天為大家介紹如何將寫(xiě)好的程序放到單片機(jī)中,做過(guò)單片機(jī)開(kāi)發(fā)的朋友一定都清楚,我們一般是在PC上編輯、編譯源程序,但是程序是運(yùn)行在目標(biāo)設(shè)備上的,通常我們稱這個(gè)過(guò)程為“交叉編譯”,簡(jiǎn)單來(lái)說(shuō)就是在X86架構(gòu)下編譯出可以在51(或其他)單片機(jī)上執(zhí)行的程序。
一般來(lái)講我們編譯出的可執(zhí)行程序是一個(gè)二進(jìn)制文件,對(duì)于Keil編譯環(huán)境來(lái)說(shuō)他會(huì)生成一個(gè)以.hex為后綴的文件。我們的目的就是把這個(gè)*.hex文件下載(燒錄、寫(xiě)入)到我們的單片機(jī)中,下面看看如何來(lái)操作。
我們已經(jīng)在遙控手柄的電路板上預(yù)留了編程接口,如圖16-01:
161726tg504tuy2hyfhh00.jpg (28.37 KB, 下載次數(shù): 211)
下載附件
2016-4-11 16:57 上傳
我們使用串口方式對(duì)程序進(jìn)行下載,所以還需要一根USB轉(zhuǎn)串口的數(shù)據(jù)線,這種數(shù)據(jù)線比較多,比如圖16-02:
161725kq9mq69zy3si76k1.jpg (140.4 KB, 下載次數(shù): 199)
下載附件
2016-4-11 16:57 上傳
圖16-02是一個(gè)USB轉(zhuǎn)串口的模塊,使用它前需要安裝相關(guān)驅(qū)動(dòng)程序。通過(guò)這個(gè)模塊我們可以對(duì)單片機(jī)進(jìn)行編程,線路的連接比較簡(jiǎn)單USB一端插在我們的PC機(jī)上,另外的3根線對(duì)應(yīng)的是GND、TX、RX(地、發(fā)、收),分別與我們的手柄電路板上的編程接口相連,對(duì)應(yīng)關(guān)系是GND-GND、RX-TX、TX-RX。電路連接完畢后開(kāi)始下載程序,由于我們使用的是STC系列的51單片機(jī)所以我們使用STC-ISP.exe這個(gè)工具對(duì)單片機(jī)進(jìn)行編程,看一下這個(gè)工具的截圖,圖16-03:
操作過(guò)程大概分為5步:
1. 選擇芯片類型,我們使用STC89C52RC;
2. 選擇編譯產(chǎn)生的*.hex,文件;
3. 選擇串口(可以在設(shè)備管理器中查看串口編號(hào));
4. 點(diǎn)擊下載按鈕;
5. 當(dāng)提示框提示為單片機(jī)上電時(shí),打開(kāi)系統(tǒng)電源;
下載結(jié)束后系統(tǒng)會(huì)給出提示信息。
經(jīng)過(guò)上面的操作后我們的程序已經(jīng)下載到單片機(jī)中,為系統(tǒng)上電后我們的程序就可以運(yùn)行了,趕快驗(yàn)證一下自己編寫(xiě)的程序吧。
實(shí)際上為單片機(jī)下載程序的方法都是近似的,包括為坦克下載程序的方法和手柄一端是相同的,唯一不同的是它們所運(yùn)行的程序是不一樣的。
|