はじめに
この記事はleJOSの開発環境が整っていることが前提にしています。
詳しくはこちらの記事を参考にして下さい。
【leJOS】mindstorm-EV3をJavaでプログラミングしよう【環境構築前編】
【leJOS】mindstorm-EV3をJavaでプログラミングしよう【環境構築後編】
##概要
leJOSでは、PC側で作成したプログラムをEV3本体にデプロイして実行するという開発方法が一般的ですが、実はWiFi経由でプログラムをデプロイすることなくリモートコントロールすることが可能です。
ちなみにPythonからev3devをリモートコントロールする方法も前に解説しています。
【ev3dev】RPyCプロトコルでPythonによる遠隔操作プログラムを作ろう
今回はleJOSを使ってJavaでこれを実現します。
サンプルプログラム
###モーターをリモートコントロール
LモーターをEV3本体のAポートに接続し、下記のプログラムをPC側で実行させて下さい。
デプロイする必要はありません。IPアドレスはそれぞれの環境に合わせて下さい。
ビープ音を鳴らしLモーターを180度回転させるプログラムです。
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import lejos.hardware.Sound;
import lejos.remote.ev3.RMIRegulatedMotor;
import lejos.remote.ev3.RemoteEV3;
public class RemoteEv3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
RemoteEV3 ev3 = null;
RMIRegulatedMotor m = null;
try {
//EV3に接続、引数にEV3のIPアドレス
ev3 = new RemoteEV3("192.168.2.91");
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//初期化
ev3.setDefault();
//モーターのインスタンス作成(ポートAにLargeモーターを接続する)
m = ev3.createRegulatedMotor("A",'L');
//ビープ音を鳴らす
Sound.beep();
//モーターを180度回転
try {
m.rotate(180);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
###解説
リモートコントロールにはRemoteEV3クラスを作ります。
引数にEV3のIPアドレスを渡してインスタンスを生成します。
ev3 = new RemoteEV3("192.168.2.91");
モーターにアクセスするにはcreateRegulatedMotorメソッドを利用します。
第一引数にString型で接続ポート、第二引数にchar型でモーターの種類('L'もしくは'M')を指定します。
m = ev3.createRegulatedMotor("A",'L');
##参考
http://www.lejos.org/ev3/docs/lejos/remote/ev3/RMIEV3.html
https://yoshio3.com/tag/lejos/
##まとめ
EV3を簡単にリモートコントロール出来ることが分かりました。
JavaFXなどと組み合わせたらGUIツールを開発することもできそうですね。