Header Ads

RubyスクリプトによるUSBバスパワーリレーモジュール制御

どうも、とらです(๑´∀`)  家にころがってたLinuxマシン(CentOS 5)を使ってUSBバスパワーのリレーモジュールを制御したいので、

・cuコマンドによるリレーの動作確認
・シリアル通信用Rubyライブラリserialportの導入
・Rubyスクリプトによるリレーの動作確認

を行いました。以下その時のメモです。



まずは準備として数年放置していたLinuxマシンなのでアップデートデートします。
# yum update 

cuコマンドによるリレーの動作確認

CentOSにはcuコマンドはuucpパッケージ に含まれているのでインストールします。
# yum install uucp


cuコマンドによる動作確認を行います。
# cu -l /dev/ttyACM1

Connected.
ver
00000005
>relay on 0
>relay on 1
>relay on 2
>relay on 3
>relay off 0
>relay off 1
>relay off 2
>relay off 3

>~.

Disconnected.

すべてのリレーをOnにしてOffにできました。



シリアル通信用Rubyライブラリserialportの導入

古いRubyは消して最新のものを入れて作業を進めます。

Rubyバージョンチェック
# ruby -v
ruby 1.8.5 (2006-08-25) [i386-linux]

古いバージョンを削除して最新バージョンのRubyを新規インストール
# yum remove ruby
# yum -y install gcc zlib-devel openssl-devel sqlite sqlite-devel
# wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.gz
# tar -zxvf ruby-2.1.0.tar.gz
# cd ruby-2.1.0
# ./configure
# make
# make install
# ln -s /usr/local/bin/ruby /usr/bin/ruby
# ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [i686-linux]

# gem install rubygems-update
# update_rubygems
# gem update
rake's executable "rake" conflicts with /usr/local/bin/rake
Overwrite the executable? [yN]  y
rdoc's executable "rdoc" conflicts with /usr/local/bin/rdoc
Overwrite the executable? [yN]  y
rdoc's executable "ri" conflicts with /usr/local/bin/ri
Overwrite the executable? [yN]  y

# gem install ruby-serialport
Building native extensions.  This could take a while...
ERROR:  Error installing ruby-serialport:
ERROR: Failed to build gem native extension.

ここで失敗したのですが、原因はライブラリが新しくなっていたからのようでした。
(旧)ruby-serialport
(新)serialport

# gem install serialport
Fetching: serialport-1.3.0.gem (100%)
Building native extensions.  This could take a while...
Successfully installed serialport-1.3.0
Parsing documentation for serialport-1.3.0
Installing ri documentation for serialport-1.3.0
Done installing documentation for serialport after 0 seconds
1 gem installed


Rubyスクリプトによるリレーの動作確認

# vi relay1_on.rb

#!/usr/bin/ruby
require 'rubygems'
require 'serialport'
sp = SerialPort.new "/dev/ttyACM0", 9600
sp.write "relay on 1\r"
sp.close


# vi relay1_off.rb

#!/usr/bin/ruby
require 'rubygems'
require 'serialport'
sp = SerialPort.new "/dev/ttyACM0", 9600
sp.write "relay off 1\r"
sp.close


# chmod +x *.rb

# ./relay1_on.rb
# ./relay1_off.rb


以上で リレーのOn/OffがRubyスクリプトからできることが確認できました。

それではまた〜(๑´ڡ`๑)  → 次回へ



0 件のコメント:

Powered by Blogger.