Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
Flashから使う

Flashとの連携

Arduinoは、Flashと連携することもでき、ActionScriptから制御することもできます。ここでは、フリーのFlash開発環境である、FlashDevelopを利用して、ActionScriptを使ってArduinoを制御するための設定方法を記述します。FlashDevelopのインストール方法や一般的な設定は、FlashDevelopのページを参照してください。

Arduino Unoを対象にしています。他のボードでは異なる可能性があるので注意してください。

連携のしくみ

Arduinoは、シリアル通信をサポートしていますが、FlashPlayerでは、シリアル通信を行うことができません。しかし、FlashPlayerでは、ソケット通信は行うことができます。このため、ArduinoとFlashPlayerとの間に、シリアル通信とソケット通信とを相互変換するプロキシサーバを設置します。

また、Arduino上には、ActionScriptとの通信を行うプログラム、ActionScript側には、Arduinoと通信するプログラム(ソケットライブラリ)が必要です。これらは、さまざまな種類があるようですが、今回は以下の組み合わせを利用します。

  1. Arduino上のプログラム:Firmata + StandardFirmata_2_2_forUNO_0_3
  2. プロキシサーバ:serproxy
  3. ソケットライブラリ:as3glue

Firmataは、Arduinoと他のコンピュータとの通信を行うための汎用のプロトコルです。MIDIプロトコルを基にしているようです。StandarFirmata_2_2_forUNO_0_3は、Firmataプロトコル上に実装された、制御用のプロトコルです。as3glueは、StandardFirmata_2_2_forUN_0_3とFirmataの両方に対応するプロトコルスタックを実装したプログラムです。

上記を利用することで、ActionScriptからArduinoを制御することができるようになります。以下に、ActionScriptからArduinoを制御する際の概念図を示します。

ソフトウェアのダウンロード

Firmataは、Arduinoソフトウェアに標準で付属しています。serproxyと、as3glueは、http://code.google.com/p/as3glue/downloads/list から、arduino_as3glue_bundle_v16.zip をダウンロードします。この中に、serproxyとas3glueとが含まれています。

インストールと設定

FirmataとStandardFirmata_2_2_forUNO_0_3

インストール

Arduinoソフトウェアに標準で付属している以下のスケッチを、ArduinoソフトウェアからArduinoにアップロードします(Arduino 0022の場合です)。Arduino UNOではない場合は、StandardFirmataでいいと思います。このプログラムをインストールすると、Firmataプロトコルを実装したFirmataライブラリも同時にインストールされます。

File > Examples > Firmata > StandardFirmata_2_2_forUNO_0_3

設定

設定は特にありません。

serproxy

インストール

arduino_as3glue_bundle_v16.zip を適当な場所に展開します。その中に、serproxyというフォルダがあります。インストーラはないので、その中の serproxy.exe を直接使います。

設定

serproxy フォルダにある、serproxy.cfg を自分の環境に合わせて設定します。具体的には、comm_ports と、net_portXの設定を行います。

comm_ports には、Arduinoが接続されているシリアルポート番号を設定します。シリアルポートの確認は、Arduinoの、Tools > Serial Port で確認できます。

また、net_portXには、serproxyがFlashからの接続を受け付けるソケットのポート番号を設定します。このとき、最後のXは、シリアルポートの番号部分に変更します。たとえば、COM5にArduinoが接続されている場合は、net_port5を設定します。以下にCOM5を使う時の例を示します。

comm_ports=5
net_port5=5335

ポート番号の最後の一桁はシリアルポートにしておいたほうが、他のプロキシサーバを利用するときに便利かもしれません。

COM10より大きい番号が割り当てられている場合には、serproxyは対応していないようなので、tinkerproxy等を利用してください。

as3glue

インストール

arduino_as3glue_bundle_v16.zipを展開した中にある、source配下のnetフォルダを適当な場所にコピーします。

設定

FlashDevelopで、クラスパスを設定します。プロジェクトクラスパスを設定するには、FlashDevelopで、プロジェクト > プロジェクト設定 > クラスパスを選択します。英語表示の場合は、Project > Properties... > Classpaths です。ここで設定するのは、net フォルダを置いたフォルダです。たとえば、c:\tmepにnetフォルダを置いた場合は、c:\temp を設定します。c:\temp\net ではありません。

動作確認

ArduinoをPCに接続しFirmataをダウンロードし、serporxyを起動した後、以下のサンプルコードを動作させると、Arduinoの13番ピンに接続されたLEDが点滅します。なお、18行目にある以下のコードの第2引数は、先ほど設定したserproxyのポート番号なので、適切に変更してください。

arduino = new Arduino("127.0.0.1", 5335);
		

サンプルコード

package {
        import flash.display.Sprite;
        import flash.events.TimerEvent; 
        import flash.utils.Timer; 
        import net.eriksjodin.arduino.Arduino;
        
        public class Main extends Sprite { 
                private var arduino:Arduino;
                private var pin:int;
                private var timerEvent:Timer;
                
                public function Main() {
                        timerEvent = new Timer(200);
                        timerEvent.addEventListener(TimerEvent.TIMER, onTick); 
                        timerEvent.start();
                        
                        pin = 13;
                        arduino = new Arduino("127.0.0.1", 5335);
                        arduino.setPinMode(pin, Arduino.OUTPUT);
                }
                
                public function onTick(event:TimerEvent):void { 
                        if ((timerEvent.currentCount % 2) == 0) {
                                arduino.writeDigitalPin(pin, Arduino.HIGH);
                        } else {
                                arduino.writeDigitalPin(pin, Arduino.LOW);
                        }
                } 
        }
}

バージョン

Arduino 0022



メニューを表示するためにJavaScriptを有効にしてください。

Arduinoで遊ぶページ
Copyright © 2011 garretlab all rights reserved.
inserted by FC2 system