構(gòu)建一款由藍(lán)牙控制器控制的機械臂
Bracc.ino是一個簡單的關(guān)節(jié)臂,由6個伺服馬達(dá)組成,通過Arduino手柄通過藍(lán)牙控制。它是作為一個學(xué)校項目誕生的,它的目的是模擬一個工業(yè)機器人。經(jīng)過不同的嘗試,我們可以找到正確的方法,我們可以移動一個機器人。
為了創(chuàng)建最終的原型,我們使用了不同的生產(chǎn)方法,比如使用激光切割機制作結(jié)構(gòu),使用3D打印機制作別針、夾具和底座。
手臂的運動由Arduino板控制。我們可以通過AT兩個板之間的藍(lán)牙通信來發(fā)送關(guān)于要做哪個動作的信息。我們決定使用HC-05傳感器來做這件事。
藍(lán)牙通信
藍(lán)牙通信包括通過無線電頻率發(fā)送和接收信息。它可以AT不需要電線的情況下發(fā)送數(shù)據(jù)。所以我們決定想辦法為我們的機械臂制作一個手柄。我們發(fā)現(xiàn)使用Arduino是可以實現(xiàn)的。使用藍(lán)牙模塊HC-05,我們可以通過一個設(shè)備接收數(shù)據(jù),但通過對傳感器進(jìn)行編程,我們也可以將數(shù)據(jù)發(fā)送到另一個HC-05。因此,我們找到了一種編程和改變模塊配置的方法。發(fā)送數(shù)據(jù)給另一方的模塊稱為MASTER,而接收方則稱為SLAVE。所以這兩種構(gòu)型有點不同,但是有一些共同點。基本上主要的觀點是:
將兩個Arduino與HC-05傳感器連接,用5V為EN引腳(或密鑰)供電。然后上傳一個空草圖并打開串行通信。為了簡化程序,我們可以同時連接兩個板,使用兩個不同的Arduino IDE窗口。
現(xiàn)ATAT串行監(jiān)視器上寫一些字,我們可以改變藍(lán)牙配置。
?寫“AT”,直到回復(fù)為“OK”。
?+ UART = 38400。它設(shè)置波特率,對于藍(lán)牙是38400波特。
?AT+角色= 0。將HC-05設(shè)置為從機模式。
?AT+ CMODE = 0。它只用于連接配對設(shè)備
?+ PSWD = 1234。設(shè)置密碼。對于主傳感器使用相同的方法也是很重要的。
主配置:串行監(jiān)控序列
?寫“AT”,直到回復(fù)為“OK”。
?+ UART = 38400。它設(shè)置波特率,對于藍(lán)牙是38400波特。
?AT= 1 +的作用。將HC-05設(shè)置為主模式。
?AT+ RMAAD。清除先前配對的設(shè)備。
?AT+重置。復(fù)位模塊。
?AT+ CMODE = 0。
?At + inqm = 0,5,9。
?AT+ INIT。
?AT+ INQ。最后三個命令幫助我們搜索從模塊。最后一個命令返回模塊附近設(shè)備的地址。
?現(xiàn)在我們要復(fù)制正確的地址。如果我們有多個,我們可以控制右邊的設(shè)備粘貼地址AT“AT+RNAME=”之后。用逗號代替冒號是很重要的。
?找到正確的設(shè)備,寫入“AT+PAIR=”9”
?AT+BIND=<address>
?AT+CMODE=1.
?AT+LINK=<address>
?如果我們收到“OK”的回復(fù),我們已經(jīng)成功配對了兩個藍(lán)牙模塊。
結(jié)構(gòu)描述
學(xué)校給了我們很多機會學(xué)習(xí)如何使用激光切割和3D打印技術(shù)。所以我們能夠創(chuàng)建一個手臂結(jié)構(gòu),開始AT3D軟件上繪制它,比如“SolidWorks”。然后,出于美觀的考慮,我們選擇使用激光切割機生產(chǎn)結(jié)構(gòu)部分,使用3D打印機生產(chǎn)夾具和底座。此外,操縱桿是由3d打印機創(chuàng)建的。
手柄
伺服
手臂的關(guān)節(jié)是用伺服馬達(dá)移動的。它們很容易使用,有Arduino庫,我們可以很容易地控制電機的角度。但對于結(jié)構(gòu)的升力,我們必須使用一些不同的伺服,具有更高的失速扭矩。伺服MG996R,幫助我們抬起所有的手臂。此外,這種伺服是數(shù)字型的,也就是說,他們比普通的更準(zhǔn)確。我們還必須使用庫而不是普通的庫。前一個有更多的功能,幫助我們模擬一個更流暢的運動。它還具有控制伺服速度和以異步方式移動它們的功能。
爪
機械臂工具現(xiàn)AT是一個簡單的抓手,可以懸掛小物體并移動它們。它是由我們設(shè)計并通過3d打印機實現(xiàn)的。SG90伺服電機旋轉(zhuǎn)一個齒輪,帶動另一個齒輪打開或關(guān)閉爪。
基地軸承
另一個有用的部件是基礎(chǔ)軸承。它就像一個assial滾珠軸承,但它是完全3D打印的。它有兩個環(huán),里面有一些滾子,它們有特定的形狀,可以滑動而不會出現(xiàn)問題。主要功能是幫助底座旋轉(zhuǎn),避免AT木盤上爬行。
命令塊-基礎(chǔ)
AT手臂下面有一個塊,里面有機器人的所有電路和電池。它包含Arduino板,PCB和充電電池。這個底座可以從地面拆卸,并且可以模塊化安裝到其他設(shè)備上。
電路:手臂
手臂電路由藍(lán)牙線路與HC-05組成,并將每個伺服連接到GND, 6V和PWM引腳。伺服有不同的電源線,因為他們有更高的扭矩與更高的供應(yīng)。
電路:手柄
操縱桿電路由相同的藍(lán)牙線路組成,加上兩個操縱桿,兩個按鈕和一個LCD。
操縱桿由兩個微調(diào)器組成,每個微調(diào)器的數(shù)值由模擬輸入管腳讀取。按鈕也是如此,但我們必須使用數(shù)字引腳來讀取它是高(按下)還是低(未按下)。
液晶顯示器,我們連接到I2C模塊,減少連接的數(shù)量,打印我們是如何移動的伺服和他們的角度。
印刷電路板
針對飛線和電路不清晰的問題,我們想畫一個PCB電路,像屏蔽一樣連接到Arduino板上。我們使用“EasyDA”網(wǎng)站繪制它們,并通過JLC網(wǎng)站訂購零件。這樣,電路更清晰,更小,使用起來更舒適。
代碼功能
對于編程,我們使用Arduino IDE軟件,它使用了一種非常簡單的編程語言。我們有兩個不同的代碼,一個用于Arduino的操縱桿,另一個用于手臂運動。
為了便于理解,代碼的主要功能和動作AT后續(xù)的流程圖中進(jìn)行了說明。
手柄
為了發(fā)送命令,我們創(chuàng)建了一個代碼列表,由不同的字母組成,這意味著不同的事情。每個代碼都與一個字母或數(shù)字相匹配,通過藍(lán)牙通信發(fā)送到手臂上。
AT這兩個代碼中都有一個“限制()”空白,用于控制伺服角度。如果值大于最大值或小于最小值,則角度返回到限制值。最大值和最小值是AT第一次裝配時測試伺服電機時設(shè)置的,它們可以很容易地改變,修改代碼開頭的變量。
手臂
AT代碼開始時,藍(lán)牙模塊搜索數(shù)據(jù),如果收到信息,則修改接收字母中的“reads”變量,對應(yīng)一個動作。
此外,這個代碼有一個控制伺服角度的“限制空白”。
AT代碼的末尾有一個moveAll() void。我們選擇使用這個函數(shù),而不是ATif函數(shù)中更新伺服角度,因為這樣每次循環(huán)開始/結(jié)束時,伺服角度都會更新,電機保持張力。
手臂有兩種模式;正向模式是一個一個移動電機,逆模式是移動所有的伺服,從一個點坐標(biāo)開始計算角度。
點保存功能
一個有趣的功能是點保存方法。它可以保存手臂位置并按順序回放。AT正態(tài)模式下,代碼記憶所有伺服器的角度值,而AT逆態(tài)模式下,代碼記憶一個點的坐標(biāo)。
操縱桿ATLCD上打印保存的點,并AT達(dá)到最大點數(shù)時發(fā)出警報(實際上是五個,最后加上home點),當(dāng)它重置內(nèi)存時。
逆運動學(xué)模式
該方法采用基于逆運動學(xué)的算法求出所有伺服角度,而不是直接求出。這個計算從坐標(biāo)位置(x,y)和夾持點的方向開始。對于這個計算,我們使用幾何方法。事實上,它是基于三角形的構(gòu)造與余弦和正弦函數(shù),我們可以計算出所有的角度,并將這個值轉(zhuǎn)化為伺服角度。
1- G點的平移
首先我們要把G點平移到G'點來簡化逆計算。G點的y也要向上平移93,因為原點與第一個關(guān)節(jié)重合。
2-直線和斜率
現(xiàn)AT我們可以計算從直角原點到G點的直線的斜率m。
3-圓交叉
然后我們可以畫一個圓心為G'的圓,半徑等于連桿3的長度。我們知道圓的方程,所以我們可以求直線的交點,ATB點。
對這兩個方程進(jìn)行化簡,可以用二次解的方法求出Xb方程。我們可以通過對圓和直線方程的化簡和集合來求出a b c的值。
現(xiàn)AT解二階方程我們要取離原點最近的次值。我們用Yb值代替直線方程中的Xb。
然后用畢達(dá)哥拉斯公式計算原點b的線長。
4-三角形角
現(xiàn)AT我們可以畫一個三角形,我們知道三角形的三條邊,分別是“r”的長度,連桿1的長度和連桿2的長度。知道了這三條邊,我們就可以用SSS(邊對邊)公式求出角度值。
5-Deltoid角度
然后我們要找到最后一個角,畫出三角線就能找到最后一個角。
三角線由兩條相等的三角形組成,我們知道這兩條三角形的兩條邊(連桿2和連桿3)和鄰角“delta”。計算對角線長度,我們可以計算A角我們就完成了第二個關(guān)節(jié)角。
6 .尋找關(guān)節(jié)角
為了AT一個伺服值中平移角度,我們必須減去和我們的角度。
?對于Θ1,我們將斜率的角度加上c^。
?對于Θ2,我們添加“a^”角和a^角,并減去90°,以找到垂直于link1和link2之間的角度。
?Θ3等于90°與角的相減。
?Θ4是角度和“伽馬”角之和的減法,等于270°。
7-Servo轉(zhuǎn)換
現(xiàn)AT我們必須直接ATservo2和4上寫角度Θ2和Θ4,而對于伺服1和3,我們必須減去計算的角度為180°,因為伺服的方向相反。
使用該算法,我們可以改變x, y和握把角度值來移動手臂。所以手臂創(chuàng)造了一個垂直的直角平面,但是現(xiàn)AT還沒有一個三維坐標(biāo)空間,所以Z軸是基礎(chǔ)伺服的旋轉(zhuǎn)。
本文編譯自hackster.io





