由3D打印的基于Arduino的Theo Jansen風(fēng)格章魚機(jī)器人
大家好!在這個(gè)項(xiàng)目中,我將向你展示一個(gè)驚人的八足機(jī)器人在章魚的風(fēng)格!它完全由3d打印部件制成,并以Jansen機(jī)制為靈感的酷機(jī)制移動(dòng)。兩個(gè)簡(jiǎn)單的直流電機(jī)為腿提供動(dòng)力,使它們以平穩(wěn)和平衡的方式移動(dòng)。采用簡(jiǎn)單的紅外傳感器電路和控制器對(duì)機(jī)器人進(jìn)行控制。我將通過組裝3D塊一步一步地開始項(xiàng)目,就像一個(gè)拼圖,所以讓我們開始吧!
步驟1:3D零件和硬件
該項(xiàng)目共由79件3D零件組成,但不要害怕,主要零件共55件,厚度約為3毫米。其余24件為夾墊圈3D零件。我用Bamboo Lab A1進(jìn)行了標(biāo)準(zhǔn)的打印,即中等質(zhì)量,所有部件的打印時(shí)間約為6小時(shí)。
我在打印零件時(shí)避免使用單一的顏色,我的目的是為了確保您在組裝時(shí)可以輕松區(qū)分接頭和主要零件。一開始我是用一種顏色打印完成組裝的,后來我意識(shí)到觀眾或讀者很難區(qū)分零件,所以我希望不同顏色的零件能讓你在組裝時(shí)更容易。
在3D部件的組裝過程中,使用了2塊簡(jiǎn)單的直流齒輪電機(jī)作為硬件,通常作為一組車輪出售,在創(chuàng)客中非常受歡迎。從技術(shù)上講,它通常在5至6伏的范圍內(nèi)運(yùn)行,轉(zhuǎn)速約為200至255 RPM。
此外,在裝配過程中總共使用了18個(gè)螺栓和4個(gè)螺母。尺寸如下:
?M3 12MM螺栓8個(gè)(底座、頂部、側(cè)面)
?M3 25MM螺栓4個(gè)(直流電機(jī)用)
?M3螺母4個(gè)(直流電機(jī)用)
?M3 20MM螺栓2個(gè)(軸驅(qū)動(dòng)用)
?M3 16MM螺栓2個(gè)(軸驅(qū)動(dòng)用)
?2個(gè)M2 12MM螺栓(用于軸-mtr)
步驟2:組裝機(jī)箱
在本節(jié)中,我們將首先組裝底盤。首先,使用M3 12MM螺栓將左右側(cè)模型固定在底座模型上。但是,在沒有完全擰緊任何一側(cè)的螺栓的情況下,放置上部模型,并通過擰緊所有螺栓完成組裝。
步驟3:安裝直流減速電機(jī)
在本節(jié)中,我們將安裝直流齒輪電機(jī),首先,在左右兩側(cè)的螺栓輸入端插入4個(gè)M3 25MM螺栓。然后放置命名為ax -mtr的模型。仍然在直流電機(jī)軸上。將直流電機(jī)安裝到機(jī)箱自帶的M3 25MM螺栓上,使用M3螺母緊固。在包含軸傳動(dòng)部件的模型文件中插入帶有長(zhǎng)軸的軸部件。轉(zhuǎn)到電機(jī)(軸-mtr型號(hào)),用M2 12MM螺釘擰緊固定?,F(xiàn)在我們可以進(jìn)行腿部組裝了。
第四步:連接雙腿
這部分總共需要8個(gè)Leg (Leg .stl)部件,每邊4個(gè)。為了連接第一個(gè)腿(即圖片中紫色的那些,第一個(gè)連接到電機(jī)上的),連接模型稱為inks_1。使用STL。這些有一個(gè)較短的軸。如圖所示,將連接部件插入到腿部件中,并使用夾子夾子墊圈。STL固定它們。
接下來是聯(lián)合模型inks_2。STL用于連接第二支腿(即圖像中墨綠色的部分,將與紫色支腿重疊的部分)。這些有一個(gè)較長(zhǎng)的軸。如圖所示,將連接部分插入腿部,并使用夾緊墊圈。STL固定夾子。
最后,在連接部分之后,我們總共有8條腿,現(xiàn)在將紫色腿(靠近電機(jī)并具有較短軸的腿)放在底部,深綠色腿(具有較長(zhǎng)軸的腿)放在頂部(以便它們重疊)。然后放置較長(zhǎng)的主斧。STL型在軸孔上方,軸主較短。STL模型在井孔下方。腿現(xiàn)在準(zhǔn)備插入到底盤!在下一步,我們將組裝腿底盤。
第五步:在底盤上放置和組裝支腿
事實(shí)上,以書面形式解釋這一節(jié)可能有點(diǎn)復(fù)雜,所以我在一些共享圖像中添加了標(biāo)記,以使其更容易。
在底盤的兩側(cè),有兩個(gè)方形安裝孔的軸-主。我們之前附在腿上的STL部件。插入主軸。STL零件進(jìn)入這些孔如圖所示,并插入腿到底盤。與此同時(shí),您應(yīng)該從油墨中插入帶有圓形孔的部分。STL部件中的紫色支腿連接到電機(jī)軸上。墨綠色腿上有圓孔的部分在這個(gè)位置應(yīng)該保持自由,在后面的步驟插入。然后以同樣的方式將第二支腿插入底盤。
將紫色部件(inks_1.stl)附在電機(jī)軸上后,將圓形軸分離器部件插入軸驅(qū)動(dòng)中。STL放入電機(jī)軸上,底部有紫色的部分。從包含軸驅(qū)動(dòng)部件的模型文件中放置短軸軸部件。仍在先前固定的電機(jī)軸上,用M3 20MM螺栓固定。
現(xiàn)在將墨綠色支腿中帶圓形孔的支腿部件放置在短軸軸上,然后將帶中心孔的圓形墊圈放置在軸驅(qū)上,用M3 16MM螺栓固定。STL模型文件。
最后,連接夾子洗滌器。STL部件到軸主的兩端。底盤頂部和底部的STL部件。至此,機(jī)器人的3D部件組裝完成!
步驟6 .電路
現(xiàn)在機(jī)器人的3D部件已經(jīng)完成,我們可以看一下電路。實(shí)際上,你可以用Arduino板和電機(jī)驅(qū)動(dòng)屏蔽來創(chuàng)建電路,但在這個(gè)項(xiàng)目中,我將使用我自己設(shè)計(jì)的二合一電路板。我在以前的項(xiàng)目中使用了這個(gè)電路板,我的追隨者非常欣賞它。
所以我做了一些更新,并在PCBWay項(xiàng)目頁(yè)面上分享了最終版本。該板設(shè)計(jì)簡(jiǎn)單但非常高效,它結(jié)合了電機(jī)驅(qū)動(dòng)器和微控制器,使涉及電機(jī)的項(xiàng)目變得容易。在設(shè)計(jì)PCB原型時(shí),我注意選擇容易找到和可焊接的組件。
該板基本上由三個(gè)主要組件組成,一個(gè)ATmega328P,一個(gè)L293D電機(jī)驅(qū)動(dòng)器,我使用了一個(gè)CH341芯片,便于通過USB編程。只是,CH341 USB芯片似乎有點(diǎn)難以焊接。但使用一個(gè)簡(jiǎn)單的烙鐵,應(yīng)用少量的焊料在PCB上的焊盤上,芯片將被安裝,然后對(duì)準(zhǔn)芯片腿正確,完成與烙鐵的焊接。如果您沒有焊接經(jīng)驗(yàn),您可以使用PCBWay的組裝板服務(wù),他們會(huì)給您發(fā)送一個(gè)即用型板。
在這些圖片中,我分享了一張Bill of Materials的圖片和一張Designator的圖片,上面顯示了部件的位置。
該電路使用紅外遙控器和接收器進(jìn)行無線控制。紅外遙控器和接收器是一個(gè)非常實(shí)用和簡(jiǎn)單的產(chǎn)品,適合機(jī)器人和愛好DIY應(yīng)用。它通常以二合一套裝的形式出售。
通常工具包包括:
?遠(yuǎn)程控制器(約。21個(gè)按鈕)
?38khz 1838B紅外接收模塊
?跨接電纜
此外,還選用了一塊3S 7.4伏鋰離子電池為電路供電。只需將電機(jī)和紅外傳感器按如下方式連接到電路上,然后將電路板和電池插入機(jī)器人。
?電機(jī)A1 =數(shù)字2
?電機(jī)A2 =數(shù)字4
?電機(jī)B1 =數(shù)字11
?電機(jī)B2 =數(shù)字10
?IR引腳=數(shù)字12
現(xiàn)在機(jī)器人的機(jī)構(gòu)和電路都完成了,是時(shí)候給它編程了!
步驟7:源代碼
在轉(zhuǎn)到主源代碼之前,我們需要找出遙控器上的按鈕發(fā)送哪些命令,即HEX值。下載附件中我分享的紅外遙控命令查找器代碼,用Arduino IDE打開。
在這段代碼和主代碼中,我們使用了一個(gè)IR庫(kù),首先我們需要安裝IR庫(kù),并確保您已經(jīng)安裝了2.6.0版本的庫(kù)。但正如您在圖像中看到的那樣,您可以通過使用Arduino IDE庫(kù)工具搜索IRremote來輕松安裝庫(kù)。
然后定義連接紅外接收器的引腳,并將代碼上傳到板上。然后打開串行監(jiān)視器并按下您將在遙控器上使用的按鈕,您將看到屏幕上按鈕的命令。記住要記下這些命令,因?yàn)樗鼈儗⒃谙乱徊街惺褂谩?
如果您已經(jīng)收到了控制器的命令,那么我們可以轉(zhuǎn)到主代碼(Motor_Control_IR_Code)。下載代碼,用Arduino IDE打開,做如下修改:
?更新電機(jī)連接的引腳
?更新紅外接收器傳感器連接的引腳
?更新從遙控器接收到的HEX值
?loop()函數(shù)處理從紅外(IR)遙控器接收的命令,并相應(yīng)地控制電機(jī)。
?紅外信號(hào)檢測(cè):從紅外傳感器讀取和處理命令。
?避免重復(fù)命令:如果連續(xù)收到相同的命令,則忽略該命令,只處理新的命令。
?命令匹配與電機(jī)控制:將接收到的命令與預(yù)定義的HEX值進(jìn)行匹配,并執(zhí)行相應(yīng)的電機(jī)功能:
?FWRD:馬達(dá)向前移動(dòng)
?BKWD:馬達(dá)向后移動(dòng)
?左:電機(jī)左轉(zhuǎn)
?右:馬達(dá)右轉(zhuǎn)
?STOP:電機(jī)停止
?紅外接收機(jī)復(fù)位:紅外接收機(jī)復(fù)位,為下一個(gè)信號(hào)做好準(zhǔn)備。
?錯(cuò)誤處理和定時(shí):當(dāng)傳感器繁忙時(shí),應(yīng)用小延遲,確保穩(wěn)定運(yùn)行。
如果一切準(zhǔn)備就緒,將代碼上傳到板上,如果您使用的是我設(shè)計(jì)的印刷電路板,則需要選擇板作為Arduino UNO.
代碼
#include
#define irPin 12
IRrecv irrecv(irPin);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.print("Command Received: ");
Serial.println(results.value, HEX);
irrecv.resume();
}
}
本文編譯自hackster.io