利用Parallax雷射感測器製作Arduino雷射機器人—第2部分

点击此处阅读本文的第1部分 >

arduino robot

 

在第1部分中,我們製作了一塊客製化的壓克力板底座,把NEMA 17步進馬達安裝到了底盤上。然後,我們將Arduino Uno 3和馬達研發板也連到壓克力底座上,並安裝了馬達研發板程式館。在第2部分中,我們將添加機器人工作所需的其他系統零件,比如伺服器和雷射測距儀(LRF),並編寫一個程式,讓機器人能夠自主行動。

有關如何利用Arduino UNO R3從零開始搭建輪式機器人的資訊,請參考我們在之前的文章《如何製作自己的機器人》《如何製作自己的機器人(第2部分)》。在本文中,我們將進一步增加機器人的功能:讓該機器人動起來並為其增加雷射測距(LRF)功能,以使該裝置能夠檢測物體並測量距離。

該機器人的設計目標如下:

  • 向前、向後行動;向左和向右旋轉90度;向左和向右旋轉45度。
  • 避開障礙物時根據最佳可用路徑朝不同的方向行動。
  • 測量各個方向(前方、左右90度、左右45度)的距離。
  • 根據可用的最長距離,確定朝哪個方向前進(向前、向後、向左或向右)。

硬體

製作此機器人所需的硬體請參見以下硬體明細,這些零零件在許多電商網站都可以買到(明細中給出了部分位址)。

 

軟體

工具

  • 圓銼
  • Dremel 電動工具
  • 電烙鐵
  • 迷你鋼鋸

安裝並測試伺服器

下一步是安裝用於平移的伺服器。首先,請用螺釘將兩塊小板擰到伺服基座上,然後用螺釘將其固定到壓克力底座上,如圖1和圖2所示。請用2個螺釘將鋁制安裝架安裝到伺服器的頂部。

arduino robot

圖1. 用兩小板將伺服器固定到壓克力底座上

 

arduino robot

圖2. 將鋁制安裝架安裝到伺服器上

如圖3所示,將伺服器的連接器連至馬達研發板。馬達研發板上有2個伺服器連接器,分別標記為“servo1”和“servo2”。本次連接請使用servo1連接器(外側的那個)。請注意,切勿接反。

arduino robot

圖3. 伺服與馬達研發板的連接

現在,我們可以運行程式了,請將以下代碼上傳到Arduino。無需安裝新程式館,系統所需的程式館(Servo.h)都已包含在Arduino IDE程式中。伺服器應使用Digital引腳10(servo 1),或者如果伺服器連接到馬達研發板的servo 2,那麼應使用引腳11。

 

代碼很簡單,它負責讓機器人從左向右進行掃描並返回原始位置。

伺服器的工作原理請參見以下視訊:

安裝雷射測距儀 (LRF)

雷射測距儀產品文件 – Parallax

Parallax雷射測距儀(LRF)模組是一款利用雷射技術計算儀器到目標物體的距離的測量儀器。該裝置根據光學三角測量法(雷射、相機和物體質心之間的簡單三角函數)來計算儀器到目標物體的距離。其最佳測量範圍為6–48英寸(15–122公分),測量精度誤差<5%(平均3%)。

硬體安裝很簡單。只需在壓克力板上鑽兩個與LRF位置相匹配的孔,然後用塑膠墊片和螺釘將LRF固定到鋁底盤上即可(請參見圖5)。

arduino robot

圖4. 將LRF電纜連至馬達研發板

 

arduino robot

圖5. 安裝在鋁制安裝架上的LRF

由於LRF的最佳測量值上限為122公分,我們需要將鋁制安裝架稍微向前彎曲,以使該範圍始終小於120公分(圖6)。

arduino robot

圖6. 向前彎曲鋁制安裝架,使雷射到地的距離小於120公分

請完全按照圖7將電纜連接器連至LRF。GND接地,VCC接5V,SOUT接引腳8,SIN接引腳9。

 

arduino robot

圖7. LRF與馬達研發板的連接

我們已經完成了LRF的安裝和連接,現在就來上傳代碼吧!同樣,無需安裝程式館。我們要用的SoftwareSerial.h已經包含在Arduino IDE中。

下面的代碼源自範例代碼,我們只是進行了一些修改,將距離資料從字串轉換為整數。其作用是測量感測器到前方物體的距離並列印結果。我們用序列監視器顯示結果。

 

序列監視器顯示的結果如下所示。所有尺寸的單位均為毫米。

arduino robot

安裝OLED顯示幕

首先,我們將OLED塑膠盒安裝到壓克力底座中(請參見圖9),然後再將OLED顯示幕附帶的線纜一端連至顯示幕。要將顯示幕連至馬達研發板,請將線纜另外一端jst連接器上的線纜剪下,然後將紅導線焊至5V,將黑導線焊至Ground,將黃導線焊至SDA引腳,將綠導線焊至SCL引腳。請確保OLED顯示幕的背面朝外。

arduino robot

圖8 . OLED與馬達研發板之間的連接

將OLED固定在底座上並連接電纜後,我們就可以運行部分軟體了。

首先,請確保已經安裝了SeeedOLED.h 程式館。然後,將以下代碼上傳到Arduino。該代碼使用了名為oled1的函數,稍後的最終編碼也會使用該函數。其基本功能就是顯示100到109的數位。

 

程式正常運行時,顯示幕應該會顯示以下視訊中的內容:

安裝最終代碼

現在,我們已經完成了所有硬體的安裝並測試了各個裝置。讓我們把所有軟硬體結合起來,構建一個可以自主行動的智慧雷射機器人吧。最終程式會執行以下功能:

  • 測量前方距離:
    • 如果距離超過70公分,機器人將向前行動500步(大約50公分);
    • 如果距離大於40公分小於70公分,機器人將向前行動200步(20公分);
    • 如果距離小於40公分,機器人會向左掃描90度,向左掃描45度,向右掃描45度,向右掃描90度;
  • 測量每個方向的距離,然後計算哪個方向的測量距離最長;
  • 轉向距離最長的那個方向;
  • 返回第一步。

請複製以下代碼並將其上傳到Arduino:

 

 

arduino robot

圖9. OLED顯示幕安裝在壓克力底座上的最終效果

結論

在之前的文章《如何製作自己的機器人》《如何製作自己的機器人(第2部分)》中,我們用步進馬達製作了一款簡單的輪式機器人。這次,我們對其進行了功能改進:為機器人增加了雷射測距儀(LRF)功能,並且安裝了輪子,讓機器人能夠自由行動。我一直想製作一款能夠進行測量的裝置。在本例中,憑藉雷射感測器,我們的機器人不僅能夠檢測並避開物體,同時還能獲取更準確的距離資料。雷射機器人還有許多其他應用場景。您也可以利用該雷射感測器設計自己喜歡的有趣項目。

接下來,我們會做一些更炫酷的事情,敬請期待!