0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用Parallax激光傳感器制作Arduino激光機器人—第1部分

goodmbby ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-02-24 15:24 ? 次閱讀

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。pYYBAGPzFXCAB8IMAADMtWzXzUA558.jpg

試想一下,您剛搬到一個新地方,需要盡快添置家具,但是手頭沒有卷尺可以進行測量。那么,這款Parallax激光Arduino機器人就會派上用場!

我們在之前的文章《如何制作自己的機器人》 和《如何制作自己的機器人(第2部分)》中描述了如何利用Arduino UNO R3從零開始搭建屬于自己的機器人。在本文中,我們將進一步增加機器人的功能:讓它能夠動起來并且添加激光測距(LRF)功能,以使該設(shè)備能夠檢測物體并測量距離。

激光傳感器會幫我們獲得更準確、更可靠的數(shù)據(jù)。該Arduino機器人的移動方式為自主移動模式。它在移動的過程中能夠檢測到障礙物并主動避開。

該機器人的設(shè)計目標如下:

向前、向后移動;向左和向右旋轉(zhuǎn)90度;向左和向右旋轉(zhuǎn)45度。

基于最佳路徑,通過向不同方向移動避開障礙物。

測量各個方向(前方、左右90度、左右45度)的距離。

基于可用的最長距離,確定朝哪個方向前進(向前、向后、向左或向右)。

傳感器安裝在伺服上,以便機器人可以左右平移以進行多次測量。測量的距離將顯示在一塊小型OLED顯示屏上。我們將使用步進電機實現(xiàn)平穩(wěn)、安靜的運行。

我們會一步一步地討論該Arduino機器人的構(gòu)建過程。第一步是如何安裝底盤、電機和Arduino/電機開發(fā)板。然后,我們利用一個小程序來測試電機,以確保系統(tǒng)連接和軟件安裝都準確無誤。然后,在下一篇文章中,我們會逐步添加其余設(shè)備,并且每一步都通過程序來測試安裝和連接是否正確。通過這種按部就班的方法能夠讓我們更方便地解決制作過程中遇到的任何問題。

硬件

制作該機器人所需的硬件請參見以下硬件明細,這些零部件在許多電商處都可以買到(明細中給出了部分地址)。

Arduino Uno rev 3 (www.adafruit.com/products/50)

適用于Arduino的Adafruit步進電機開發(fā)套件 (www.adafruit.com/products/1438)

步進電機(www.adafruit.com/products/324)

底盤、螺絲和尾輪 Parallax.com

車輪、橡膠輪胎和輪轂 Makeblock.com

伺服裝置和安裝套件(www.parallax.com/product/570-28015)

Parallax激光測距儀(www.parallax.com/product/28044)

OLED顯示屏(www.seeedstudio.com/Grove-OLED-Display-1.12”-p-824.html)

紅色包裝紙/盒(https://www.seeedstudio.com/Grove-Red-Wrapper-1*2(4-PCS-pack)-p-2585.html

聚合物電池3型(11.1V)和連接器(https://www.hobbyking.com/hobbyking/store/__18203)

195 x 195 x 3mm亞克力板(https://www.jaycar.com.au/clear-acrylic-sheet/p/HM9509)

軟件

Arduino IDE

Adafruit Motor Shield Library

LCD Display9696 Library.zip

工具

圓銼

Dremel 電動工具

電烙鐵

迷你鋼鋸

安裝電機、輪子和亞克力底座

Parallax底盤由高強度鋁制成。該部件是專門為伺服系統(tǒng)而不是步進電機設(shè)計的,因此我們需要做一些修改。

首先,要將電機安裝到機箱上,我們得在機箱的兩側(cè)開口。請用Dremel電動工具按照電機的安裝尺寸精確切割機箱。

我們使用的步進電機型號為NEMA 17,其分辨率為200步/轉(zhuǎn)。其供電規(guī)格為12V 350mA。

要將電機裝入底盤內(nèi),我們需要尺寸為6.5cm x 4.5cm的亞克力板,如圖1所示。請用鋼鋸將亞克力板切割成所需尺寸,然后用Dremel電動工具鉆孔。用M2x10mm的螺釘將電機裝在亞克力安裝板上,兩個電機需要8顆螺釘。然后,將制作完畢的亞克力板和電機安裝到底盤內(nèi)。

poYBAGPzFXGARJqmAAB1iq6hxDM598.jpg

圖1.將步進電機安裝在6.5×4.5cm亞克力板上

要固定Arduino和OLED顯示屏,我們需要切割一塊15cmx8cm的亞克力底座(圖2)。請用4個墊片和螺絲安裝亞克力底座,然后用附帶的銷釘安裝尾輪。

pYYBAGPzFXOAIASMAABXQtvGApQ003.jpg

圖2.機箱、尾輪和15×8亞克力板底座

poYBAGPzFXSAJY-rAAC4HG5dEQs866.jpg

圖3.輪子和軸連接器

pYYBAGPzFXaAcd6bAACMrXC2ve8505.jpg

圖4.安裝在底盤上的步進電機和尾輪

我們需要用圖3中所示的軸連接器安裝輪子。但是,我們必須做一個小修改。軸孔的直徑為4mm,而步進電機軸的直徑為5mm。因此,我們需要將連接器的孔擴大到5mm。請使用圓銼或Dremel工具擴孔。擴孔時一定要小心操作!

pYYBAGPzFXiANBnFAAB0c3gmIB8564.jpg

圖5.安裝在底盤上的亞克力底座

請將電機線纜從頂部的孔穿出,然后用雙面膠帶將電池粘在機箱下方。對于該項目來說,鋰聚合物電池是理想解決方案。其供電規(guī)格為11.1V 800mAh?1000mAh,這使得系統(tǒng)續(xù)航可超過1小時,而且還可以充電。但是該電池需要專門的充電器。如果您是航空模型或遙控車愛好者,那么您肯定知道這種電池。我們也可以用6或8節(jié)AA電池(9-12V)代替。

poYBAGPzFXmALH96AACsKz5fIsQ786.jpg

圖6.用雙面膠將電池粘在底盤上

將電機電纜連至電機開發(fā)板

Adafruit 電機開發(fā)板規(guī)格 – Adafruit

與Arduino高分辨率專用計時器相連的兩個5V Hobby伺服器接口

4個H橋:搭載TB6612芯片組,每個橋可提供1.2A電流(峰值為3A,持續(xù)20ms),具有熱關(guān)斷保護功能,以及內(nèi)部反沖保護二極管??蔀殡姍C提供4.5VDC至13.5VDC供電。

可連接最多4個雙向直流電機,具有單獨8位速度選擇功能。

可連接最多2個單線圈、雙線圈、交叉步進或微步進電機(單極或雙極)。

經(jīng)測試與Arduino UNO、Leonardo、ADK/Mega R3、Diecimila和Duemilanove兼容。兼容Due,配有3.3v邏輯跳線。兼容Mega/ADK R2及更早版本,具有2個跳線。

5v3.3v邏輯電平(跳線可配置)。

該電機開發(fā)板能同時運行2個步進電機和2個伺服器。該步進電機開發(fā)板的一個很大優(yōu)勢在于它不占用任何Arduino引腳,因為它通過I2C連接。唯一需要引腳的是伺服器。我們只需按照說明連接電機電纜即可。

要了解步進電機的基本知識及其與Arduino UNO R3的連接,請參考《Arduino與零件和傳感器——步進電機第1部分》。

poYBAGPzFXuAKH6EAACoL_GDGtQ556.jpg

圖7.將電機連至電機開發(fā)板

poYBAGPzFXyAC_8XAAC4fzS2WIg319.jpg

圖8.亞克力底座上的Arduino和電機開發(fā)板

現(xiàn)在,我們只需要根據(jù)下圖安裝輪子和電池接頭即可。

pYYBAGPzFX6AR57QAAEOAAIuq0Y561.jpg

圖9.步進電機電纜連至電機開發(fā)板

安裝軟件并上傳代碼

現(xiàn)在,我們可以運行第一段代碼了!首先,我們需要從Arduino網(wǎng)站下載并安裝Arduino IDE,從Adafruit網(wǎng)站上下載并安裝電機開發(fā)板庫。安裝成功后,請將以下源代碼復制到Arduino中。

//*******************************************************************************************************************************************

#include 

#include 

#include "utility/Adafruit_MS_PWMServoDriver.h"

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

Adafruit_StepperMotor *myMotor1 = AFMS.getStepper(200, 1);

Adafruit_StepperMotor *myMotor2 = AFMS.getStepper(200, 2);

void setup()

{  Serial.begin(9600);           // set up Serial library at 9600 bps

 Serial.println("Stepper test!");

 AFMS.begin();  // create with the default frequency 1.6KHz  

 myMotor1->setSpeed(100);  // 100 rpm   

 myMotor2->setSpeed(100);  // 100 rpm   

 }

void loop()

{

Motor(50,3);                    // turn Left for 50 steps

delay(1000);

Motor(100,4);                   // turn Right for 100 steps

delay(1000);

Motor(50,3);                    // turn Left for 50 steps (back to original position)

delay(1000);

Motor(400,1);                   // move Forward for 400 steps

delay(1000);

Motor(400,2);                   // move Backward for 400 steps

delay(1000);

}

//******************************************* *************************************

void Motor(int x,int y)

{   int i = 0;

 for ( i; (i < x); i ++)

 { if (y == 1)   // move forward

{ myMotor1->step(1, FORWARD, SINGLE);

 myMotor2->step(1, BACKWARD, SINGLE);}

  if (y == 2)   // move backward

 {myMotor1->step(1, BACKWARD, SINGLE);

 myMotor2->step(1, FORWARD, SINGLE);}

 if (y == 3)    // move left

  { myMotor1->step(1, FORWARD, SINGLE);

 myMotor2->step(1, FORWARD, SINGLE);}

 if (y == 4)    // move right

  { myMotor1->step(1, BACKWARD, SINGLE);

 myMotor2->step(1, BACKWARD, SINGLE);}}

}

//********************************************************************************************************************************************

這段代碼非常簡單。其目的是讓機器人能夠向左旋轉(zhuǎn)90度以及向右旋轉(zhuǎn)90度。該程序還能讓機器人返回到起始位置:向前移動400步,然后向后移動回到起始位置。在程序循環(huán)中,我們運行Motor函數(shù),該函數(shù)具有2個參數(shù)。第一個參數(shù)表明電機必須旋轉(zhuǎn)多少步,第二個參數(shù)表明電機移動方向(向前、向后、向左和向右)。

程序運行后,該Arduino機器人應該會像上述視頻顯示的那樣移動。

在下一篇文章中,我們將繼續(xù)添加其他系統(tǒng)部件,比如伺服器和激光測距儀(LRF),并編寫一個程序,讓機器人能夠自主移動。因此,敬請關(guān)注我的下一篇文章!

pYYBAGPzFWyADVB1AAAGS83r-qY435.jpg

Purnomo Nuhalim

來自墨爾本的Purnomo是一名退休人員,也是電子發(fā)燒友。目前,他正使用Arduino和Raspberry Pi從事各種開放式硬件項目的研發(fā)。除了電子學,他還對航空建模和天文學充滿熱情。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器人
    +關(guān)注

    關(guān)注

    211

    文章

    28632

    瀏覽量

    208097
  • OLED
    +關(guān)注

    關(guān)注

    119

    文章

    6219

    瀏覽量

    224667
  • 激光傳感器
    +關(guān)注

    關(guān)注

    2

    文章

    152

    瀏覽量

    21446
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187659
收藏 人收藏

    評論

    相關(guān)推薦

    機器人設(shè)計與實現(xiàn)》——低成本DIY機器人,一本機器人制作的經(jīng)典入門書

    基礎(chǔ)、機器人本體、電子控制設(shè)備、傳感器與導航和機器人電源系統(tǒng)等。《機器人設(shè)計與實現(xiàn)》是按照搭積木的方法指導機器人愛好者如何設(shè)計、
    發(fā)表于 08-01 18:21

    智能機器人對于傳感器的需求

    `  智能機器人的外部傳感器大致可分為力學傳感器,觸覺傳感器,接近傳感器,視覺傳感器,滑覺
    發(fā)表于 01-20 14:56

    請教利用樹莓派制作六足機器人的問題

    本人新手,最近在準備制作一個六足機器人,如果利用舵機控制+遙控手柄套件的話,可以很容易就實現(xiàn)簡單的功能。為了能讓六足機器人實現(xiàn)更加復雜的功
    發(fā)表于 11-10 15:33

    自律型機器人制作入門.基于Arduino

    [size=0.83em]自律型機器人制作入門.基于Arduino.jpg(101.91 KB, 下載次數(shù): 0)下載附件[color=rgb(153, 153, 153) !important
    發(fā)表于 06-23 11:18

    用于機器人或無人機的低成本激光導航傳感器設(shè)計

    摘要——許多室內(nèi)機器人或無人機系統(tǒng),使用激光測距傳感器作為他們的主要導航傳感器,用來畫圖、定位和避障。這種系統(tǒng)的成本和耗電都是個問題,這對于低成本高效率的場合而言,是個障礙。本文,描述
    發(fā)表于 06-21 10:08

    機器人產(chǎn)品傳感器越多,就越能有效避障?

      激光雷達作為自動駕駛和機器人等領(lǐng)域中的重要傳感器,一直扮演著“眼睛”的角色,360°掃描周圍環(huán)境,構(gòu)建厘米級別高精度地圖,為后續(xù)避障導航做輔助。  但如果僅使用激光雷達作為唯一的避
    發(fā)表于 08-27 15:44

    機器人傳感器的類別和應用原理

    一般機器人系統(tǒng)由機械手、環(huán)境、任務和控制四個互相作用的部分組成。我們稱一般安裝在機器人機械手上的傳感器為內(nèi)
    發(fā)表于 11-08 15:55

    博智慧達激光焊縫跟蹤成功與金紅鷹機器人完成通訊

    相機和激光焊縫跟蹤傳感器及其控制裝置等。博智慧達的智能激光焊縫跟蹤系統(tǒng)可以和各種焊接機器人通訊,從而提高焊接質(zhì)量。焊縫跟蹤:激光焊縫跟蹤系統(tǒng)
    發(fā)表于 04-13 10:30

    激光焊縫跟蹤傳感器協(xié)助川崎機器人對汽車車架焊接尋位引導糾偏

    激光焊縫跟蹤傳感器協(xié)助川崎機器人對汽車車架焊接尋位引導糾偏機器人在焊接車架過程中由于工裝夾具及來料位置不準會出現(xiàn)與原先機器人的示教位置產(chǎn)生偏
    發(fā)表于 12-02 09:37

    LDS激光測距傳感器

    比較全的傳感器產(chǎn)品介紹 激光測距傳感器獲取距離信息。當激光投射到障礙物上時,會在傳感器里形成光斑。同時,圖像
    發(fā)表于 09-14 07:44

    機器人傳感器分類方法

    一般機器人系統(tǒng)由機械手、環(huán)境、任務和控制四個互相作用的部分組成。我們稱一般安裝在機器人機械手上的傳感器為內(nèi)
    發(fā)表于 09-16 08:45

    使用Arduino和PAJ7620手勢傳感器制作手勢控制機器人

    使用Arduino和PAJ7620手勢傳感器制作手勢控制機器人,簡單程序即可實現(xiàn)。小小的傳感器可以識別各種手勢。它采用內(nèi)置的空間
    發(fā)表于 09-27 06:17

    光纖激光機器人切割焊接技術(shù)

    光纖激光機器人切割焊接技術(shù) 1 系統(tǒng)的特點   激光機器人切割焊接系統(tǒng)是在上海團結(jié)普瑞瑪激光設(shè)備有限公司承接的國家863重點研究
    發(fā)表于 04-30 10:35 ?2735次閱讀

    利用Parallax激光傳感器制作Arduino激光機器人2部分

    2部分中,我們將添加機器人工作所需的其他系統(tǒng)部件,比如伺服激光測距儀(LRF),并編寫一個程序,讓
    的頭像 發(fā)表于 02-24 09:43 ?1100次閱讀
    <b class='flag-5'>利用</b><b class='flag-5'>Parallax</b><b class='flag-5'>激光</b><b class='flag-5'>傳感器</b><b class='flag-5'>制作</b><b class='flag-5'>Arduino</b><b class='flag-5'>激光機器人</b>—<b class='flag-5'>第</b>2<b class='flag-5'>部分</b>

    什么是激光機器人激光機器人具有哪些特點?

    激光機器人是指搭載激光器機器人,利用激光器所輸出的高能量激光束進行各種加工或處理操作。
    發(fā)表于 06-05 09:08 ?804次閱讀