arduinoでfirmata
とりあえずVirtualBoxのLinux上で、ruby+arduinoの動作は確認できている。
しかし、いちいちarduino側のプログラムを更新していくと、ホストPC上のRubyの更新もあって、管理が煩雑すぎるなぁ…。と思って検討する中にfirmataが良さそうだ。
基本的な通信プログラムと、IO周りを全て面倒見てくれて、Rubyから自分のポートのようにアクセスすれば、arduino上のポートにアクセスできるミドルウェアだ。
じゃあ、Linux上のarduio-IDEでStandardFirmataを書き込んでみようとしたら、なぜかエラーを吐きまくる。
avrdude: stk500v2_ReceiveMessage(): timeout
が繰り返し出力されて、上手くいかない。
随分調べたけれども、stk500v2ではなくwiringを使えとか…。書き込みにAVRISP mkIIではなくAVRISPを使えだとか…。ボーレートを変更しろとか…。
どれもダメだった。
ここで、止まっていても埒が明かないので、HOSTのMac側で書き込むことにする。
こちらからの書き込みは問題なく完了した。
arduio_firmataのインストール
動作テストをしなければ、始まらないので、Linux上でテストする。
$ sudo gem install arduino_firmata
とこれだけですね。
Fetching: args_parser-0.1.4.gem (100%)
Fetching: event_emitter-0.2.2.gem (100%)
Fetching: arduino_firmata-0.2.3.gem (100%)
Successfully installed args_parser-0.1.4
Successfully installed event_emitter-0.2.2
Successfully installed arduino_firmata-0.2.3
3 gems installed
Installing ri documentation for args_parser-0.1.4...
Installing ri documentation for event_emitter-0.2.2...
Installing ri documentation for arduino_firmata-0.2.3...
Installing RDoc documentation for args_parser-0.1.4...
Installing RDoc documentation for event_emitter-0.2.2...
Installing RDoc documentation for arduino_firmata-0.2.3...
無事完了です。
さて動作テストを行なってみる。
$ arduino_firmata analog_read 1
Resource temporarily unavailable
ふむ。上手くいかない。
ちなみに各バージョンは
ruby -v #=> ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
arduino_firmata -v #=> ArduinoFirmata v0.2.3
怪しいなぁ。
しゃあない。これはVirtualBoxからUSB接続するという荒業のせいかもしれない。ということで、HostのMac上で再度テストして見ることに。
$ sudo gem install arduino_firmata
Building native extensions. This could take a while...
ERROR: Error installing arduino_firmata:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/serialport-1.1.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/serialport-1.1.0/ext/native/gem_make.out
ありゃりゃ。こんどはgemで失敗している。
ということで、Xcode -> Preferences -> Downloadsから入れる必要あり。
早速いれて、再度gemからinstallを実行する。
$ sudo gem install arduino_firmata
Building native extensions. This could take a while...
Successfully installed serialport-1.1.0
Fetching: args_parser-0.1.4.gem (100%)
Successfully installed args_parser-0.1.4
Fetching: event_emitter-0.2.2.gem (100%)
Successfully installed event_emitter-0.2.2
Fetching: arduino_firmata-0.2.3.gem (100%)
Successfully installed arduino_firmata-0.2.3
Installing ri documentation for serialport-1.1.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Installing ri documentation for args_parser-0.1.4
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Installing ri documentation for event_emitter-0.2.2
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Installing ri documentation for arduino_firmata-0.2.3
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Done installing documentation for serialport, args_parser, event_emitter, arduino_firmata (1 sec).
4 gems installed
今度は、問題なくインストール終了。
さて、arduinoをMac側に認識させて、テストしてみる。
$ arduino_firmata analog_read 1
295
うまくいった。
これで、ruby上で操作ができるようになりそうだ。
さて、問題はLinux上で動作できるかだけれども…。
引き続き、Tryしてみよう…。
一向に進まぬ開発に、ちょっと気が遠くなってきたど…。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。