昨晩Macからネットワークを経由し、ラジコン(組み込みLinuxに繋がったArduino)を操作できました。
ネットワークからArduinoを操作するのに、「Serial Proxy」を使いました。
「Serial Proxy」を使うことで、ストリームからシリアルの制御が可能となります。
Linuxへのインストールは簡単
- Arduino公式サイトのダウンロードページの一番下にある「Serial Proxy」のソース版をダウンロードhttp://www.arduino.cc/en/Main/Software
- make
- serproxy.cfgを設定。comm_baud=9600、serial_device1=/dev/ttyUSB0に設定
- ./serproxy を実行
あとはProcessingのコードをストリーム用に修正。
以下は実際に利用したWiiハンドルからネットワーク越しにラジコンを操作するコードです。
# ハンドル周りに角度変更後の値から±5~10度の遊びを加えると操作しやすくなります(たぶん
import lll.wrj4P5.*;
import lll.Loc.*;
import processing.net.*;
float i = 0.0;
float angle = 0.0;
int kakudo = 0;
int old_kakudo = 0;
Wrj4P5 wii;
LinkedList p = new LinkedList();
Client client;
void setup() {
size(300,300,P3D);
wii=new Wrj4P5(this).connect();
client = new Client(this, “10.0.2.2”, 5331);
smooth();
rectMode(CENTER);
}
void draw() {
if (wii.isConnecting()) return;
stroke(32);
fill(255);
ellipse(width/2, height/2, width/1.6, width/1.6);
translate(width/2,height/2);
rotate( atan2(wii.rimokon.sensed.y , wii.rimokon.sensed.x ) );
fill(0);
rect(0,0,width/2,height/7);
angle = atan2(wii.rimokon.sensed.y , wii.rimokon.sensed.x ) * 180 / PI;
if (angle > 0) {
kakudo = int(angle) -90;
kakudo = 180 – kakudo;
}
if (angle < 0) {
kakudo = int(angle) * -1 -90;
}
kakudo = int(kakudo * 0.1) * 10;
if (kakudo >= 65 && kakudo <= 115) kakudo = 90;
if (kakudo >= 115 && kakudo <= 135) kakudo = 115;
if (kakudo >= 135) kakudo = 135;
if (kakudo >= 45 && kakudo <= 65) kakudo = 65;
if (kakudo <= 45) kakudo = 45;
if (old_kakudo != kakudo){
old_kakudo = kakudo;
client.write(str(kakudo) + “sn”);
println(client.read());
}
}
void buttonPressed(RimokonEvent evt,int rid){
if (evt.wasPressed(evt.TWO)) {
client.write(“255wn”);
}
if (evt.wasPressed(evt.ONE)) {
client.write(“150wn”);
}
}
void buttonReleased(RimokonEvent evt,int rid){
if (evt.wasReleased(evt.TWO)) {
client.write(“0wn”);
}
if (evt.wasReleased(evt.ONE)) {
client.write(“0wn”);
}
}
以上です。
「Serial Proxy」を使うとFlashなどからもArduinoの操作が可能となります。何が出来るか想像するだけでご飯が3杯は食べれます。もっと?
Arduinoを始めてからここまで2週間かかりました。Amazonの商品発送が9/1なので間違いないです。
平日は仕事しながら家で開発してましたので結構疲れました。
次回はラジコンを操作している動画のアップを予定してます。 # Serial Proxyとの通信に不具合があるので調整中です。
おまけ:Processing 1.0.7 を利用することでMacの64bitでもwiiリモコンを操作できました。
#1 by Classiclll on 2009年9月16日 - 10:55 AM
楽しそうなこと、トライされてますね!
はじめまして、wrj4p5の作者です。
Processing 1.0.7 + Mac64bit で動くんですね。(私はまだ試せてません)
情報公開、ありがとうございます!
#2 by o2 on 2009年9月16日 - 1:45 PM
@ Classiclll
はじめまして。infoaliveのo2です。
ライブラリ使わせていただいてます。
Wiiのコントローラーが使えることでラジコンも楽しい操作が出来ました。
また何か発見がありましたら情報を公開していきます。