一、制作基于Arduino的自平衡踏板車
制作時(shí)間:前后約3星期
制作難度:★★★★☆
GEEK指數(shù):★★★☆☆
雙向電梯
1 自平衡踏板車1.0版本
1.1 先展示一些小細(xì)節(jié)
1.2 元件
1.3 工具
1.4 固定框和馬達(dá)
1.5 電路
1.6 代碼
2 改進(jìn)版自平衡踏板車(2.0版本)
2.1 建造細(xì)節(jié)
2.2 元件
2.3 工具
2.4 固定框和馬達(dá)
2.5 電路
2.6 代碼
2.7 DIYer簽到處
1 自平衡踏板車1.0版本
前段時(shí)間,我看到有人DIY了一只平衡滑板,覺得自己也可以做一個(gè)類似的平衡平臺(tái)來測試一下技術(shù)。所以我專門去購買了兒童踏板車的一些后端部件(里面有馬達(dá)和驅(qū)動(dòng)輪),還有XenonJohn建議的電子元件。
我們可以用和平衡滑板相同的方法在平衡組件上搭一塊站立臺(tái)板,但輪子要分得更開,臺(tái)板還要旋轉(zhuǎn)90度。
兒童踏板車的后端部件非常小,但速度夠快,易于測試。
另外,注意不要有太大的沖撞!比如我們就只少了腿上幾塊皮,還在墻上戳了個(gè)小洞洞。
1.1 先展示一些小細(xì)節(jié)
現(xiàn)在,我們成功買到了兒童踏板車一些后端部件(馬達(dá)和驅(qū)動(dòng)輪)和XenonJohn推薦的的電子元件,還弄到了一些三夾板、平面金屬板和鋼管。
我們將所有東西焊在一起,做出一塊可供站立的區(qū)域,還有前方凸出的握把。馬達(dá)要用螺絲釘固定在兩側(cè),電路則固定在前面。再把電池式手電筒拆成兩半,裝到一只馬達(dá)上面當(dāng)做電池盒用,這樣電工們就得換個(gè)新的手電筒了。
我們又找了一塊舊的膠合板制作站立臺(tái)板,現(xiàn)在它看上去稍微有點(diǎn)踏板車的雛形了。
我顛來倒去幾次,終于搞對了馬達(dá)的極性。過程盡管艱難,但馬達(dá)第一次跑起來效果就很不錯(cuò)。馬達(dá)的額定電壓是24V,我們用的電池只有18V,所以需要調(diào)整一下力矩和功率值,調(diào)整之后效果顯著,馬達(dá)跑得很好。
1.2 元件
這次DIY,你需要用到以下元件(網(wǎng)購較方便):
○ Arduino UNO——看看手邊有沒有,沒有可以網(wǎng)購
○ Sabertooth 2x52馬達(dá)控制器
○ 5自由度的加速度計(jì)
○ 2只從兒童踏板車上拆下來的后端部件,或者分別購買馬達(dá)和驅(qū)動(dòng)輪
○ 電池——密封鉛酸電池物美價(jià)廉,動(dòng)力鉆也可以買得很便宜。如果鋰電池是你的菜,鋰電池也不錯(cuò)。
○ 用于加速度計(jì)的屏蔽多芯電纜,用于馬達(dá)的大功率電纜
○ 安全操作開關(guān)
○ 控制轉(zhuǎn)彎的撥動(dòng)開關(guān)
○ 調(diào)整平衡位置的撥動(dòng)開關(guān)
○ Arduino直流接口
○ 匹配Arduino的DIL管腳
○ 雙面膠
○ 螺絲釘
1.3 工具
除了正常工具之外,最好請有焊接機(jī)的人幫你焊接固定框。
需要用到的其他工具:
● 鉆子和鉆頭
● 烙鐵和焊錫
● 剪線鉗和剝皮鉗
● 熱縮材料和熱氣槍
1.4 固定框和馬達(dá)
為了制作固定框,我們在每一側(cè)都用了幾塊三夾板、兩片金屬盤,把踏板車的馬達(dá)部件固定住。
切割兩塊三夾板,寬度適合雙腳踩踏就行。
再在金屬板上鉆幾個(gè)洞,好匹配踏板車驅(qū)動(dòng)輪部件上的螺栓孔,再把金屬盤焊接到三夾板搭建的臺(tái)板上面。
我們還在前端裝了一根立桿,在立桿上焊了T型把手,方便雙手握把。又在直立的把手和第二塊三夾板上之間加了一塊三角板加強(qiáng)固定。
現(xiàn)在可以把輪子擰上去了。
1.5 電路
你可以看到,這兒并沒有很多電子元件,只有Arduino、IMU(慣性測量單元)、馬達(dá)驅(qū)動(dòng)和一堆開關(guān)。
開關(guān)和IMU的接線都必須是屏蔽線,除非IMU非??拷麬rduino。IMU應(yīng)該盡量裝在臺(tái)板的中央或前面,比如我們就把IMU固定在了前端的盒子里。
從圖中你可以看到,我們其實(shí)把所有東西都固定在了那個(gè)盒子里,騎踏板車的時(shí)候只能操作切斷開關(guān),左右駕駛和傾斜控制。
另外,電池被安裝在了馬達(dá)的頂部。
1.6 代碼
代碼和XenonJohns寫的基本上一樣,只是額外調(diào)整了功率值和力矩值,因?yàn)槲覀冊谟?8V的電池跑24V的馬達(dá)。
在代碼的開始處,我們定義了2個(gè)負(fù)責(zé)調(diào)節(jié)功率和力矩的變量。
2 改進(jìn)版自平衡踏板車(2.0版本)
在制作了第一版自平衡踏板車作為測試平臺(tái)之后,我們覺得它還挺酷的,所以決定再制作一版。
這次我們需要添加一些小特色:
1.2只14.4V的鋰電池 2.馬達(dá)和車輪組件的固定框 3.高度可調(diào)節(jié)的把手 4.性能優(yōu)異的CNC(電腦數(shù)控)平臺(tái) 5.花紋鋼板
所以,這一版的制作材料基本和上一版的踏板車完全相同。
2.1 建造細(xì)節(jié)
首先,我們對第一個(gè)裝置中存在的爭論點(diǎn)進(jìn)行了討論,在這個(gè)版本中達(dá)成了一致。
最大的問題是兒童踏板車的后端部件是廉價(jià)的壓盤,超重時(shí)會(huì)彎曲變形。所以我們用激光切割了一塊金屬盤來代替固定框固定馬達(dá)和輪子。固定框用25mm的鋼管制成,還進(jìn)行了增強(qiáng),好讓它支撐更多重量。
前把手做成了高度可調(diào)節(jié)的,這樣小矮個(gè)也可以騎了。
由于市面上沒有比較便宜的、用我們現(xiàn)在用的這種電池的手電筒,只好自己做了個(gè)電池盒。
然后加上了花紋鋼板,看起來更專業(yè)一點(diǎn)。
2.2 元件
除了電池之外,其他的元件都和上一版相同。
你需要用到:
● Arduino UNO——看看手邊有沒有,沒有可以網(wǎng)購
● Sabertooth 2x52馬達(dá)控制器
● 5自由度的加速度計(jì)
● 2個(gè)從兒童踏板車上拆下來的后端部件,或者分別購買馬達(dá)和輪子
● 電池——密封鉛酸電池物美價(jià)廉,動(dòng)力鉆也可以買得很便宜。如果鋰電池是你的菜,鋰電池也不錯(cuò)。
● 用于加速度計(jì)的屏蔽多芯電纜,用于馬達(dá)的大功率電纜
● 安全操作開關(guān)
● 控制轉(zhuǎn)彎的撥動(dòng)開關(guān)
● 調(diào)整平衡位置的撥動(dòng)開關(guān)
● Arduino直流接口
● 匹配Arduino的DIL管腳
● 雙面膠
● 螺絲釘
2.3 工具
除了正常工具之外,最好請有焊接機(jī)的人幫你焊接固定框。
需要用到的其他工具:
● 鉆子和鉆頭
● 烙鐵和焊錫
● 剪線鉗和剝皮鉗
● 熱縮材料和熱氣槍
2.4 固定框和馬達(dá)
固定框做得非常牢固。我們?yōu)椤拜喿?馬達(dá)”的組件使用了25mm的RHS方管和激光切割的金屬盤,所以它不會(huì)再像上一個(gè)固定框那樣扭曲了。
前把手做成可調(diào)節(jié)式,我們還在頂部加了漂亮的握把。
2.5 電路
就像你在電路圖中看到的那樣,這次的電路非常簡單,和我們制作的前一個(gè)版本完全一樣。
開關(guān)和IMU的接線都必須是屏蔽線,除非IMU非常靠近Arduino。IMU應(yīng)該盡量裝在臺(tái)板的中央或前面,比如我們就把IMU固定在了前端的盒子里。
從圖中你可以看到,我們其實(shí)把所有東西都固定在了那個(gè)盒子里,騎踏板車的時(shí)候只能操作切斷開關(guān),左右駕駛和傾斜控制。
另外,電池被安裝在了馬達(dá)的頂部。
2.6 代碼
二、制作基于Arduino的自動(dòng)避障機(jī)器龜
制作時(shí)間:一天
制作難度:★★★☆☆
GEEK指數(shù):★★★☆☆
在本教程中我將一步步地教你如何利用板載Arduino UNO微控制器制作自動(dòng)避讓機(jī)器人烏龜Duino(TurtleDuino)。我用五金里買的材料,以及網(wǎng)上買的電子器件設(shè)計(jì)了這個(gè)烏龜Duino。
雙向電梯
1 準(zhǔn)備材料
2 切割底座
3 烏龜?shù)牟弊?/p>
4 制作烏龜?shù)哪X袋
5 制作烏龜?shù)哪X袋,第2部分
6 布線
7 Arduino設(shè)計(jì)和莫霍克發(fā)型
8 DIYer簽到處
1 準(zhǔn)備材料
購物清單:
Arduino UNO(Sparkfun.com)
2個(gè)大型連續(xù)轉(zhuǎn)動(dòng)伺服電機(jī)(sparkfun ROB-09347)
1個(gè)中型180度轉(zhuǎn)動(dòng)伺服電機(jī)(sparkfun ROB-10333)
面包板(sparkfun PRD-09567)
跳線(sparkfun PRD-11026)
SPST撥動(dòng)開關(guān)(sparkfun COM-09276)
22號(hào)安裝線(sparkfun PRD-08023)
伺服電器擴(kuò)展(sparkfun ROB-08738)
Arduino的9伏電池插口(sparkfun PRY-09518)
9伏電池倉(可選)
9伏電池
4節(jié)AA電池
分離長插頭(sparkfun PRT-10158)
舊的遙控汽車輪子
2個(gè)大型伺服電機(jī)支架
五金店采購:
1/2英寸(1.27厘米)45度PVC管(烏龜?shù)牟弊樱ㄔ?a target="_blank">電氣區(qū))
1/2英寸(1.27厘米)PVC單孔導(dǎo)管扣帶,或者導(dǎo)管夾(用于支撐烏龜?shù)牟弊樱ㄔ趨^(qū))
2英寸(5.08厘米)進(jìn)線口帽(烏龜?shù)募讱ぃㄔ陔姎鈪^(qū))
1英寸(2.54厘米)進(jìn)線口帽(烏龜?shù)哪X袋)(在電氣區(qū))
液態(tài)電工膠布(在電氣區(qū))
熱熔膠槍套件(在工具區(qū))
焊接套件(在工具區(qū))
五金部分:
3/8英寸(0.95厘米)×6×24英寸(61厘米)手工板(用于制作烏龜?shù)牡鬃?/p>
#6-32×1英寸(2.54厘米)機(jī)械螺釘(大約20顆)
#6平墊圈(小包裝)
#6×1/2英寸(1.27厘米)金屬板螺釘(用于將脖子的角架、前輪,和甲殼連接在底座上)
#4×1/2英寸(1.27厘米)金屬板螺釘(用于將伺服電機(jī)和arduino連接在底座上)(小包裝)
#6螺母(小包裝)、4個(gè)#6-32×2英寸(5.08厘米)長螺栓(用于將腦袋連接在脖子上,和將ping伺服電機(jī)連接在腦袋上)
90度角角板
2英寸(5.08厘米)油漆刷(用于繪制超酷的莫霍克發(fā)型)(在油漆區(qū))
2 切割底座
在這一步中我們要切割底座、安裝后部的伺服電機(jī)、前輪和后輪,以及4節(jié)AA電池的電池倉。
將烏龜外殼的底部零件取下并拆開,然后將外殼放在一塊1/2英寸(1.27厘米)×6×4英尺(1.22米)白楊木上,用3英寸(7.62厘米)鉛筆(之所以是3英寸鉛筆,是因?yàn)榭臻g比較狹窄)將甲殼的內(nèi)徑勾勒出來。在甲殼前面留出大約2英寸(5.08厘米)的底座,然后將勾勒出來的部分切割下來。(參見圖片)
現(xiàn)在,讓我們用兩個(gè)伺服電機(jī),或者你自己做的電機(jī),用#4金屬板螺釘(一定要用適合連續(xù)轉(zhuǎn)動(dòng)的螺釘)將后部伺服電機(jī)安裝在底座背部靠近外側(cè)邊緣的位置,這樣一來,露在外面的就只有伺服電機(jī)的轉(zhuǎn)軸了。
在底座的2個(gè)伺服電機(jī)之間鉆一個(gè)1/4英寸(0.635厘米)的通孔,這個(gè)孔是用來穿電機(jī)和4節(jié)AA電池的電池倉的正負(fù)極導(dǎo)線,將它們連接在面包板上。我用2個(gè)小型樂高零件將前輪安裝上去,并用#6×1/2英寸(1.27厘米)金屬板螺釘將它們擰在了底座上。我用熱熔膠將后輪固定在伺服電機(jī)長長的圓形機(jī)臂上,然后用螺釘將它們固定在伺服電機(jī)轉(zhuǎn)軸上。
最后擰上4節(jié)AA電池的電池倉的螺釘。[忘了將導(dǎo)線穿過1/4英寸(0.635厘米)的孔)]。
3 烏龜?shù)牟弊?/p>
現(xiàn)在我們要將脖子連接在底座上了。拿起1/2英寸(1.27厘米)45度PVC管,將較寬的一頭切掉。將PVC管角架用螺釘固定在底座前面的中間,讓角架大約距離前邊緣有兩英寸(5.08厘米)距離。
參見圖片,將管子的另一頭以某一角度切割,然后像圖片中那樣,在管子的上半部分末端鉆一個(gè)3/16英寸(0.48厘米)的孔(這些孔將被用于將90度角角板安裝在脖子上,來支撐烏龜?shù)哪X袋。這個(gè)孔必須對準(zhǔn)了以后再鉆,從脖子的左側(cè)一直到右側(cè)。)
4 制作烏龜?shù)哪X袋
對我來說,制作腦袋是整個(gè)項(xiàng)目中最難的一步了。
所以請跟我一起來挑戰(zhàn)難關(guān),我會(huì)盡可能讓你順利通過的。
拿起1英寸(2.54厘米)的進(jìn)線口帽,將內(nèi)部的零件都取出并拆掉。將ping傳感器的圓柱體面對面地放在腦袋上,然后勾勒出圓柱體的輪廓,這樣你就知道要在腦袋前面如何切割了。參見圖片。(我建議你使用dremel工具)
在你為ping傳感器切割好開口之后,將它放進(jìn)腦袋里,從腦袋前面伸出1/8英寸(0.3厘米)的長度。在腦袋的前面兩側(cè)各鉆一個(gè)3/16英寸(0.48厘米)的孔,位置就在ping傳感器的安裝孔上方。接著,將ping傳感器通過兩個(gè)小的扣環(huán)安裝在腦袋上。參見圖片了解細(xì)節(jié)。
然后,將伺服電機(jī)放進(jìn)腦袋里,從內(nèi)側(cè)將腦袋頂部安裝孔的位置標(biāo)記下來。用3/16鉆頭將兩個(gè)伺服電機(jī)安裝孔鉆好,然后用2個(gè)6-32×2英寸(5.08厘米)螺栓和2個(gè)6-32螺母將伺服電機(jī)安裝好。
5 制作烏龜?shù)哪X袋,第2部分
拿出90度角角板,用伺服電機(jī)附帶的兩顆螺釘和兩個(gè)套管將伺服電機(jī)的中型機(jī)臂安裝好。參見圖片了解細(xì)節(jié)。將機(jī)臂用螺釘安裝在伺服電機(jī)上。將ping傳感器和伺服電機(jī)的導(dǎo)線穿過烏龜?shù)牟弊?,連接到面包板上。
但是,首先要將伺服電機(jī)的擴(kuò)展件安裝在伺服電機(jī)和ping傳感器上,讓它們能夠接到面包板?,F(xiàn)在,將角板安裝在機(jī)臂上,然后用一對6-32×2英寸(5.08厘米)螺栓和螺母將它安裝在烏龜?shù)牟弊由稀?/p>
6 布線
首先將面包板背面的粘合劑剝掉,將它放在底座的后部,位于后部伺服電機(jī)的上方。測量并切割一條比arduino長1/8英寸(0.32厘米)的木板。這塊板將會(huì)用#4×1/2英寸(1.27厘米)的金屬板螺釘固定在烏龜腦袋支架的頂部。
將Arduino板用#4×1/2英寸(1.27厘米)金屬板螺釘固定在這塊板上?,F(xiàn)在,就該排線了,用分離插頭的管腳將兩個(gè)后部伺服電機(jī)、ping伺服電機(jī)和ping傳感器和面包板接起來(從插頭管腳中去除4個(gè)3管腳的部分,連接伺服電機(jī))。
用安裝線將后部電機(jī)的電源(4節(jié)AA電池的電池倉)負(fù)極(黑色)和正極(紅色)連接在面包板的軌道上,黑色連藍(lán)色軌道,紅色則連面包板的紅色軌道。
將左右伺服電機(jī)的紅色引線接在紅色軌道上,而黑色引線接在面包板的藍(lán)色軌道上。
左邊電機(jī)的白色引線接在Arduino的11號(hào)D管腳上
右邊電機(jī)的白色引線接在Arduino的10好D管腳上
Ping電機(jī):棕色是負(fù)極(接地)
橙色是正極(電源)
黃色是信號(hào)線
將棕色引線接在面包板的藍(lán)色軌道上,橙色引線接在面包板的紅色軌道上。
黃線則接在Arduino的6號(hào)D管腳上。
Ping傳感器:將ping傳感器上標(biāo)有GRN的管腳接在Arduino的GRN端。
將ping傳感器上標(biāo)有5v的管腳接在Arduino的5v端。
最后將標(biāo)有SIG的管腳接在Arduino的7號(hào)D管腳上。
安裝9伏電池和電池倉。
現(xiàn)在,拿出SPST撥動(dòng)開關(guān),在每頭焊接一條8英寸(20.32厘米)的引線。拿出9伏插口,將紅線剪掉一般,然后將開關(guān)的一條引線焊接在插口的一頭,開關(guān)的另一條引線焊接在插口的另一頭。
在甲殼后部較低的位置鉆一個(gè)1/4英尺(0.635厘米)的孔,安裝開關(guān)。
7 Arduino設(shè)計(jì)和莫霍克發(fā)型
莫霍克發(fā)型:拿出3英寸(7.62厘米)油漆刷和強(qiáng)力膠,將膠水大量涂抹在刷子末端1/4英寸(0.635厘米)的范圍內(nèi)。兩邊都浸泡好膠水(記得戴手套)然后等待20分鐘讓它晾干。在干了以后,剪下1/2英寸(1.27厘米)的刷毛,拿去用PVC接合劑或者任何其他的塑料膠水將它粘在腦袋上。
將Arduino插入計(jì)算機(jī)中,下載下面的設(shè)計(jì)程序。好了,恭喜你已經(jīng)完成了烏龜Duino的制作。
烏龜Duino自動(dòng)避讓機(jī)器人 代碼部分
// 烏龜Duino自動(dòng)避讓機(jī)器人By:RobDavinci
#include //include Servo library
const int RBackward = 180;
const int LForward = RBackward;
const int LBackward = RForward;
const int RNeutral = 90;
const int LNeutral = 90; //電機(jī)速度常數(shù)
const int pingPin = 7;
const int irPin = 0; //銳利的紅外傳感器管腳
const int dangerThresh = 10; //障礙物的閾值(單位厘米)
int leftDistance, rightDistance; //兩側(cè)距離
Servo panMotor;
Servo leftMotor;
Servo rightMotor; //聲明電機(jī)
long duration; //接收PING)))信號(hào)所需的時(shí)間
void setup()
{
rightMotor.attach(11);
leftMotor.attach(10);
panMotor.attach(6); //將電機(jī)安裝在適當(dāng)管腳上
panMotor.write(90); //將PING)))焊盤設(shè)為中央
}
void loop()
{
int distanceFwd = ping();
if (distanceFwd》dangerThresh) //如果無障礙
{
leftMotor.write(LForward);
rightMotor.write(RForward); //前進(jìn)
}
else //如果有障礙
{
leftMotor.write(LNeutral);
rightMotor.write(RNeutral);
panMotor.write(0);
delay(500);
rightDistance = ping(); //掃描右側(cè)
delay(500);
panMotor.write(180);
delay(700);
leftDistance = ping(); //掃描左側(cè)
delay(500);
panMotor.write(90); //回到中央
delay(100);
compareDistance();
}
}
void compareDistance()
{
if (leftDistance》rightDistance) //如果左側(cè)障礙較少
{
leftMotor.write(LBackward);
rightMotor.write(RForward); //向左轉(zhuǎn)
delay(2000);
}
else if (rightDistance》leftDistance) //如果右側(cè)障礙較少
{
leftMotor.write(LForward);
rightMotor.write(RBackward); //向右轉(zhuǎn)
delay(2000);
}
else //如果障礙同樣多
{
leftMotor.write(LForward);
rightMotor.write(RBackward); //轉(zhuǎn)180度
delay(2000);
}
}
long ping()
{
//發(fā)出PING)))信號(hào)脈沖
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
//獲取接收回聲所需的時(shí)間
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
//將持續(xù)時(shí)間轉(zhuǎn)換為距離
return duration / 29 / 2;
}
在DIY制作Arduino機(jī)器人過程中,小編希望這篇教程讓你能體驗(yàn)到和我一樣的快樂。
-
開源硬件
+關(guān)注
關(guān)注
8文章
210瀏覽量
29866 -
Arduino
+關(guān)注
關(guān)注
188文章
6472瀏覽量
187361 -
智能硬件
+關(guān)注
關(guān)注
205文章
2348瀏覽量
107706
發(fā)布評論請先 登錄
相關(guān)推薦
評論