Ev3 是 LEGO® MINDSTORMS® 樂高公司發展的可程式機器人,有原生的專用語法,且可使用java 做控制。
網路上已有幾篇文章,可惜未能從頭解釋到實作,本文希望有相同問題的人看這篇就夠了,補充一些較困難的細節,以下是完整的測試過程。
開發環境設定
Java 語言是一種可以跨平台的語言,原理上需要有一個在該平台上執行java的執行器,而Ev3 (較舊型的還有nxt),使用 java 主要是使用一個可以把ev3啓動成可以執行java的系統,名為 lejos。
安裝的部份如下:
1.windows端 使用j2se的開發(含jdk)
(這裡查官網lejos0.9.0只能使用到jdk1.7的開發)https://download.oracle.com/java/17/latest/jdk-17_windows-x86_bin.exe
安裝好後將jdk開發元件 安裝在 c:\jdk1.7 底下, 另外windows的java執行器(jre )則使用 安裝程式預設的路徑。
設置java 環境變數
控制台->系統->進階系統設定->環境變數
JAVA_HOME=c:\jdk1.7
**2.Ev3端
燒錄lejos for ev3 **
此處下載的列表中lejos 也有舊款 nxt 的安裝軟體,注意到 要下載ev3版。
下載lejos ev3 我的目標是下載 0.9.0 的安裝程式
https://sourceforge.net/projects/ev3.lejos.p/files/0.9.0-beta/leJOS_EV3_0.9.0-beta_win32_setup.exe/download
安裝完成後,在 控制台>系統 發現 環境變數已新增
**
Ev3_HOME=c:\Program Files\leJOS EV3
3.燒製啓動Ev3用的 小張TF/SD卡 分為2個步驟
實做中這裡有奌複雜
測試了很多次都失敗,直接燒錄卡片,Ev3本體並無法用lejos 開機,機器還是使用原來的Ev3系統開機,後來查詢很多網路資料,發現要做2次的燒錄,第一次燒錄成空白卡,第二次將其他啓動軟體拷貝進入;猜測啓動卡本身的磁區要設成 主要啓動磁區。
3.1燒錄卡片第1次:
將 lejos Ev3安裝中附的 Sd500.zip 解壓縮 為sd500.img
,下載 win32 disk imager https://sourceforge.net/projects/win32diskimager/
此時為確保啓動卡沒有問題,先將此空白卡 做 Fat32 的格式化。
再做win32diskimager燒錄,捉取sd500.img製做成 啓動卡 燒錄完成後 原本 32G 的SD卡 變成500M 大小 的空白卡,
3.2寫入卡片第2次:找到lejos的安裝目錄
( c:\Program Files\leJOS EV3 ),接着找到bin目錄,打開ev3sdcard.bat 這個批次檔 做執行
燒錄的內容 會自動選lejosimage.zip
3.3下載EV3 JRE 注意一樣下載1.7版,ejre-7u60-b19-ejre-7u60-fcs-b19-linux-arm-sflt-headless-07_may_2014.tar.gz這個。
http://download.oracle.com/otn/java/ejre/7u60-b19/ejre-7u60-fcs-b19-linux-arm-sflt-headless-07_may_2014.tar.gz
將開機用的其他檔案製作到 卡片中,過程如下,
發現SD卡的名稱在第1次被改為 ”SD500” 此處設為G 磁碟。
燒錄2次的SD卡放入EV3中 再開機,顯示如下:
開機過程顯示載入linux 模組及啓動許多Ev3的元件。
花了很多時間,此時Ev3 已可以用lejos 開機了。
以上 EV3 安裝lejos的部份已全部完成。
再來要設定 pc端 windows 上寫程式的部份
4.下載eclipse mars 版( 執行jdk1.7)
https://www.eclipse.org/downloads/packages/release/mars/2
5.加入 lejos 功能 到 eclipse 上
在Eclipse 選單 “help”->”install newsoftware”->”add”
Name填入lejos,Location填入http://lejos.sourceforge.net/tools/eclipse/plugin/ev3,
最後點擊Ok。
6.將 ev3 機器 接線 連到 windows usb 上
Pc 上出現 “新增硬體” 提示
查詢網路,才知道 要裝一個 RNDIS 的驅動
Google 一下,RNDIS(Remote Network Driver Interface Specification,遠程網絡驅動接口規範)是一個通信協議。
安裝 windows 連到ev3 的驅動程式 driver
如下連結:
http://www.java-online.ch/lego/index.php?inhalt_links=home/nav_home.inc.php&inhalt_mitte=ev3install/usb_windows.inc.php&navUSB=ev3install/usb_windows.inc.php
安裝好以後照著EV3主機上的顯示 10.0.1.1 檢查看有沒有連接到,
使用 ping 指令 : ping 10.0.1.1
有回應Reply 表示Windows 已經可以連到Ev3了 。
7.打開eclipse 新增一個 lejos 專案
新增一個測試文件 檔名是Test.java
選擇lejos -> Ev3 control
Name 的地方填入 Ev3 的ip位址 10.0.1.1
按 Connect
顯示 Connected (已連接)
8.將測試程式上傳
寫一個 測試程式 取名 Test.java 執行檔 做成 Test.jar
上傳 (按 下方 Upload File)
此時顯示 java 測試程式Test 已經上傳成功。
9.執行測試
出現 執行 java 的圖形
10.測試用 程式解析
Test.java
Import lejos.hardware.motor.Motor; //引入 馬達類別
Import lejos.robotics.RegulatedMotor; //引入 馬達類別
public class Test { //建構類別 Test
static RegulatedMotor leftMotor = Motor.B;
//宣告 取名 左馬達 是 B埠 右馬達是 C埠
static RegulatedMotor rightMotor = Motor.C;
public static void main(String[] args) //執行區
{
leftMotor.setSpeed(400); //設定左速度為400
rightMotor.setSpeed(400); //設定右速度為400
for(int i=0;i<10000;i++) //設定迴圈執行一萬次
{
leftMotor.forward(); //左馬達 正轉
rightMotor.forward();//右馬達 正轉
}
}
}
**11.執行結果:
按照java測試程式中所寫的 ,輪型機器人Ev3
設定速度為400,
向前 直走 了一些時間 等 for 迴圈跑完就自動停止了。**
到此 Ev3 使用java 全部完成, 後續其他功能尚待時間研究。
此文若蒙參考採用 請貼上連結 謝謝
參照文件