2013-03-03

rubyでarduinoを操作する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
rubyでarduinoを操作したいなぁと思ったわけです。

で調べてみるといくつか方法があるようです。
以下で紹介されています。
http://playground.arduino.cc/interfacing/ruby

ここで紹介されている
arduino_firmata

dino
でLEDを点滅させるLチカを試してみました。


どちらを試すにせよarduinoの環境が必要です。
以下とかを見れば環境構築はできそうな気がします。
http://trac.switch-science.com/wiki/Arduino
http://www.soundscience.co.jp/soundshakit/pa504z2/error.html


まずはarduino_firmataです。

こちらはlinux環境でないと使えない感じです。

arduino側にfirmataというスケッチをアップロードしておいて、PCとUSBで接続しておいてrubyで操作します。
以下のような感じです。

まずは、arduino側にfirmataをアップロードです。
Arduino IDEのサンプルにあるものをアップロードします。
ファイル -> スケッチの例 -> Firmata-> StandardFirmata
を開いてアップロードすればOKです。

とりあえずfirmataが動くかどうかを確認するプログラムが
http://firmata.org/wiki/Main_Page
にあるのでこちらをダウンロードしてLEDが光るかどうかを試してもよいかもしれないです。

ruby側です。

まずは、インストールです。
gem install arduino_firmata

以下のようなプログラムを用意します。
require "rubygems"
require "arduino_firmata"

arduino = ArduinoFirmata.connect "/dev/ttyUSB0"

puts "firmata version #{arduino.version}"

while true
  arduino.digital_write 13, true
  sleep 1
  arduino.digital_write 13, false
  sleep 1
end

これを実行させるとLEDが点滅します。
connectに指定する値はとりあえずarduino接続前に
ls /dev > aaa
なりしておいて、その後に接続して再度
ls /dev > bbb
でdiffをとって増えたものを指定しておけば、よさげです。

参考になるサイトは、以下のとおりです。
http://shokai.github.com/arduino_firmata/
http://shokai.org/blog/archives/6631



お次は、dinoです。

こちらはwindows環境でも利用できるようなのでwindows環境で試しました。

こちらの場合は、arduino側にbootstrapperというスケッチをアップロードしておくようです。
以下のような感じです。


arduino側のスケッチは以下にあるソースをコピーしてarudinoにアップロードします。
https://raw.github.com/austinbv/dino/master/src/du.ino


ruby側です。

まずは、インストールです。
gem install dino

以下のようなプログラムを用意します。
require "rubygems"
require "dino"

txrx = Dino::TxRx.new
txrx.io = "COM3"
board = Dino::Board.new(txrx)
led = Dino::Components::Led.new(pin: 13, board: board)

[:on, :off].cycle do |switch|
  led.send(switch)
  puts switch
  sleep 1
end

これを実行させるとLEDが点滅します。
COM3としている部分を実際利用するシリアルポートに書き換えます。

参考になるサイトは、以下のとおりです。
https://github.com/austinbv/dino
http://tutorials.jumpstartlab.com/projects/arduino/introducing_arduino.html
http://d.hatena.ne.jp/toshiaki-h/20130211/1360570837


どちらもPCと接続してrubyで操作になっていますが、
mrubyとか出てきているので、そのうちrubyスクリプトをマイコンボードにおけば動くみたいなことが近いうちに出てくるのかなぁとか期待しちゃったりしています。

4月に発売予定のenziとかいうボードがそういう感じになるのかもしれないですね。
http://enzi.cc/


前から、なんかarduinoなりを使って何かをやってみたいなぁとは思っているのですが、やることが思いつかない・・・・

コメントを投稿