10
本文作者: 吳攀 | 2015-11-30 19:59 |
編者注:本項(xiàng)目來(lái)自Instructables,作者Smudger_WTH利用3D打印和基于Arduino的機(jī)器人程序開(kāi)發(fā)一個(gè)能夠行走,也能夠變成機(jī)器小車(chē)的“變形金剛”;其通過(guò)安卓手機(jī)的藍(lán)牙連接進(jìn)行控制。作者為其起名為蜘蛛機(jī)器人(Spiderbot),下面我們就來(lái)看看這只變形蜘蛛是怎么煉成的。
電子組件:
Arduino Nano
12個(gè)EMAX ES08MA II舵機(jī)
Adafruit 16信道12位PWM/伺服驅(qū)動(dòng)
藍(lán)牙HC-05模組
電機(jī)驅(qū)動(dòng)L293D
4個(gè)300RPM 6V N20直流電機(jī)(帶橡膠輪胎)
Hobbywing UBEC-8A2-6S 電子調(diào)速器(UBEC)
Wild Scorpion 7.4V 2200mAh LiPo電池和對(duì)應(yīng)的電池接頭
6cm x 9.5cm PCB板
2個(gè)LED燈
線材等
結(jié)構(gòu)材料:
50枚M2 x 10mm圓頭螺絲
30枚M1.2 x 6mm沉頭自攻螺釘
少量扎帶
3D打印組件
本項(xiàng)目的大部分結(jié)構(gòu)部件都是利用3D打印技術(shù)制作完成的,具體的文件點(diǎn)擊 3D_Print_Parts_STL.rar下載,其中包含8個(gè)獨(dú)立的文件,打印數(shù)量如下:
base.stl 基板x1
cover.stl 蓋板x1
coxa.stl 髖板x2
coxa_mirror.stl 髖板固定x2
femur.stl 股板x4
motorMount.stl 電機(jī)安裝板x4
tibia.stl 脛板x2
tibia_mirror.stl 脛板固定x2
使用M1.2 x 6mm的螺絲將4個(gè)股板做好,并將舵機(jī)臂安裝到基板上。
使用M2螺絲將舵機(jī)安裝到髖板和脛板上。
將帶輪子的N20直流電機(jī)安裝到脛板上,這里使用M2螺絲和電機(jī)安裝板進(jìn)行固定。
注意電機(jī)和舵機(jī)的方向。
電子組件的連接圖如下,我們需要為這些連接制作一塊PCB板。
PCB板的設(shè)計(jì)(下載PDF文件或PCB文件),其尺寸為6cm x 9.5cm。
制作成功的PCB。
安裝各個(gè)部件,這里安裝了6條線:2條5V、2條接地、Arduino Rx<->HC-05 Tx和Arduino Tx<->HC-05 Rx。
安裝開(kāi)關(guān)。
將兩個(gè)LED分別串聯(lián)一個(gè)電阻后并聯(lián)起來(lái),它們將作為機(jī)器人的兩只眼睛。
最后,將電子調(diào)速器(UBEC)連接到6V輸出,并將UBEC的輸出連接到16信道伺服驅(qū)動(dòng)。
將舵機(jī)連接到板上。舵機(jī)有三條線,其中棕色是地線,紅色接V+,黃色是PWM。
為了和后面的程序匹配,這里選擇的連接方式是:
左前腿舵機(jī)是0,1,2;
右前腿舵機(jī)是4,5,6;
左后腿舵機(jī)是8,9,10;
右后腿舵機(jī)是12,13,14;
另外,接口3,11,15空接;接口7用于LED的PWM調(diào)制。
然后將控制4個(gè)輪子的4個(gè)電機(jī)和PCB上的電機(jī)焊接起來(lái),一共8個(gè)接口。
這里的代碼需要用到Adafruit_PWMServoDriver舵機(jī)驅(qū)動(dòng)庫(kù),其安裝方法點(diǎn)擊這里查看。
庫(kù)安裝完成后,就可以開(kāi)始編譯代碼了。另外注意一點(diǎn):在使用USB為Arduino Nano寫(xiě)入代碼時(shí),注意不要將其它供電組件連接到Arduino上。點(diǎn)擊spiderbot_servo.rar下載代碼。
代碼上傳完成后,接好斷開(kāi)的線就可以打開(kāi)電源了。
設(shè)備啟動(dòng)時(shí),所有的舵機(jī)都會(huì)回歸到“0”位點(diǎn),最后會(huì)呈現(xiàn)下圖的模樣:髖板與基板成45度角,股板與髖板成30度角,而脛板豎直略向外。如果樣子不同,那就需要進(jìn)行適當(dāng)?shù)恼{(diào)整,調(diào)整過(guò)程中不需要斷電。另外,你也可以通過(guò)調(diào)節(jié)Arduino代碼中的偏移值對(duì)其進(jìn)行校準(zhǔn)。
接下來(lái)在底面固定電池。
你可以在Arduino代碼的主循環(huán)函數(shù)中單獨(dú)調(diào)用單個(gè)函數(shù)來(lái)對(duì)機(jī)器人進(jìn)行調(diào)試。
void loop() {
//去掉函數(shù)前面的雙斜杠即可單獨(dú)調(diào)用該函數(shù)
//forward();
//backward();
//left();
//right();
//vehicle();
}
如果運(yùn)動(dòng)方式不對(duì),進(jìn)行相應(yīng)的調(diào)節(jié)即可。在汽車(chē)模式下,機(jī)器人的腿應(yīng)該像下圖一樣折疊起來(lái)。注意折疊起來(lái)之后不要對(duì)舵機(jī)的運(yùn)動(dòng)構(gòu)成阻礙,一旦你聽(tīng)到異常響亮的噪聲,很可能是舵機(jī)負(fù)載過(guò)大,這時(shí)應(yīng)該切斷電源。
至于機(jī)器人的步態(tài)(creep gait),看起來(lái)有些奇怪,但機(jī)器人運(yùn)動(dòng)學(xué)不是本項(xiàng)目的主題,詳情你可以點(diǎn)擊這里了解。簡(jiǎn)單來(lái)說(shuō),就是在一只腳抬起的時(shí)候,另外三只腳必須在地面以保持平衡和穩(wěn)定。你也可以在Arduino代碼中對(duì)步態(tài)進(jìn)行調(diào)節(jié),讓它看起來(lái)更優(yōu)雅一點(diǎn)。
最后你也可以修改代碼中mleft()和mright()函數(shù)中的參數(shù)修改汽車(chē)模式下機(jī)器人左轉(zhuǎn)右轉(zhuǎn)的角度。
本項(xiàng)目的安卓程序是作者自己編寫(xiě)的,界面比較簡(jiǎn)單,只有左下角的運(yùn)動(dòng)控制和右下角的變形按鈕。另外需要注意的一點(diǎn)是,如果你沒(méi)有進(jìn)行修改,該藍(lán)牙設(shè)備的初始名字應(yīng)該是HC-05,初始密碼是1234.
本安卓程序的源代碼在這里下載,編譯好的APK文件則可點(diǎn)擊這里下載。
將LED穿過(guò)蓋板上的孔,蓋緊蓋板就完成了,接下來(lái)開(kāi)始試玩,跑起來(lái)還真夠奇葩的!
視頻:
2015-2016賽季全球創(chuàng)客馬拉松深圳大學(xué)站已經(jīng)開(kāi)始接受報(bào)名啦!關(guān)注“硬創(chuàng)邦”(微信號(hào):leiphone_bang),回復(fù)“深大”即可參與報(bào)名!而且,雷鋒網(wǎng)在未來(lái)三個(gè)月內(nèi)選一個(gè)合適的時(shí)間,在北上深選擇一個(gè)地點(diǎn),舉辦創(chuàng)馬“火星救援”專(zhuān)場(chǎng)!詳情可點(diǎn)擊此處了解。
此外還可加入全球創(chuàng)客馬拉松主群(群號(hào):259592983),參與我們的互動(dòng)討論~
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。