【Intel Edison】開發板製作簡易的4軸機器手臂

[步驟四] 軟體程式說明

程式說明:

(1) 使用 Arduino Libraris : Server Class (已經存在 Arduino 原生 Libaries)

(2) 利用 Intel Edison 提供的 PWM 腳位(3,5,6,9)來控制4個不同的伺服機(Servo),分別可控制機器手臂不同的功能單元:旋轉底座、上升臂、下降臂、及夾具。

完整程式如下:

/*

 * 以 Intel Edision 控制簡易型4軸機器手臂

 *

 * Made by JimLi @ RealPlus Technology

 *

 */

#include <Servo.h>

const int Servo_No = 4; // Robot Arm total servo no is 4 (機器手臂共4個Servo)

Servo myservo[Servo_No] ; // Declare servo (宣告Servo物件)

 

int servopin[Servo_No] = {3,5,6,9}; // Declare Intel Edison available servos (Intel Edison 只提供4個PWM)

//

// 初始化的程序

//

int tim = 100;

void setup()

{

  for(int i=0; i<Servo_No; i++) {   

    myservo[i].attach(servopin[i]); // Attach Servos (連結Servo)

    myservo[i].write(0); // Initial all servo angle to 0 (起始所有Servo位址為0)

    delay(tim);

  }

}

//

// 重覆執行的程序

//

void loop()

{

  int pos;

  //底座Servo

  for (pos = 10; pos < 170; pos=pos+10 ) { // Shift position

        myservo[0].write(pos);

        delay(tim); // Delay for servo movement (延遲適當時間讓Servo穩定)

  }

  //右臂Servo

  for (pos = 10; pos < 150; pos=pos+10 ) { // Shift position

        myservo[1].write(pos);

        delay(tim); // Delay for servo movement (延遲適當時間讓Servo穩定)

  }

  //夾子Servo

  for (pos = 1; pos <= 14; pos++ ) { // Shift position

        myservo[3].write(pos);

        delay(tim); // Delay for servo movement (延遲適當時間讓Servo穩定)

  }

  //左臂Servo

  for (pos = 10; pos < 150; pos=pos+10 ) { // Shift position

        myservo[2].write(pos);

        delay(tim); // Delay for servo movement (延遲適當時間讓Servo穩定)

  }

  //夾子Servo

  for (pos = 12; pos >= 1; pos-- ) { // Shift position

        myservo[3].write(pos);

        delay(tim); // Delay for servo movement (延遲適當時間讓Servo穩定)

  }

}

[步驟五] 執行結果

請上 Youtube 連結收看~

https://youtu.be/EIJlZAq_o-g

四、結語

雖然 Intel Edision 開發板功能很強,但也很複雜,因為它整合了雙頻 Wi-Fi (abgn),BT4.0等;創客們在上面有很大的發揮的空間,舉凡 BLE、iBeacon、VideoCam,不需另外的硬體擴充。對於沒有經驗的初學者,只要有耐心克服一些開發環境上碰到的問題,利用它所提供的 Arduino 環境,也能在很短的時間內,完成簡易的專案。

以下是個人在研究 Intel Edison 時,整理出來與軟體開發環境上,所碰到的一些問題解決之歷程:

1. 以筆者的經驗,原來預估可在短時間內完成本篇機器手臂的控制,但是,卻發生因為 Arduino 環境變更,造成程式無法載入到 Edison 的問題,並花費了不少時間來解決 :

● 如果發生 Arduino 軟體載入問題,務必將 Window 環境中
C:\Users\<name>\AppData\Roaming\Arduino15的目錄刪除,再重新安裝Arduino。 (參考Intel網站資料:https://communities.intel.com/thread/78666'、https://communities.intel.com/thread/78296

2. 在 Arduino 延伸板上執行的程式,基本上是一個在 Linux 多工環境中的 Process (sketch/sketch.elf  dev/pts/0),如下圖。如果要終止程式,必須在 Linux 環境中執行 Linux 的指令 #Kill pid,殺掉相對應的 Process。

【Intel Edison】開發板製作簡易的4軸機器手臂

3. Intel Edision Yocto 的 Linux,其目前最新版本是 ww25.5,但會有在 Adruino 板上的 Micro USB 拔除之後,已經載入的程式會停止執行之問題。解決方法是需將 Yocto Linux 的版本降低為 WW18.15 (參考 Intel 網站資料: https://communities.intel.com/thread/78242)。

4. 如果要在 Linux 環境欲使用 Python 語言撰寫 Servo 控制程式或其他裝置控制程式,可以使用 Library “mraa”。(參考 Intel 網站資料:https://communities.intel.com/thread/60294https://github.com/intel-iot-devkit/mraa)。但要注意的是, Library mraa 中所定義的腳位與 Arduino 延伸板的腳位定義不同。 腳位定義可參考下表 (參考 Intel 網站資料:https://github.com/intel-iot-devkit/mraa/blob/master/docs/edison.md)。

【Intel Edison】開發板製作簡易的4軸機器手臂

使用 Facebook 留言

發表回應

謹慎發言,尊重彼此。按此展開留言規則