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 全部完成, 後续其他功能尚待时间研究。
此文若蒙参考采用 请贴上连结 谢谢
参照文件
今天只有研究一些相关的文章与做法,并没进行实作,所以单纯的纪录一下 今日目标 角色移动不穿过其他物件...
现在你的Action已经具备完善的对话流,能针对各式装置进行支援。 测试者们回报的用户体验均十分良...
程序语言的运行过程 在知道如何运行之前,必须先了解程序语言是如何被运行的。 程序语言依照运行方式可分...
如果要把怀旧玩家分种类、我想我会分成以下三种。 玩家、这类型的人以游戏为主、不一定会在乎用什麽方式玩...
[深入浅出MQTT]: v3.1.1与v5 的差异 MQTT v3.1.1 与 v5 完全相容,且提...