以前、GPIOでLEDをチカチカさせてみました。
Raspberry PiとRubyでLEDをチカチカさせる
その後、Raspberry PiでGPIOをブラウザからいじれるWebIOPiというものがあると知り試してみました。
WibIOPiに関しては、以下をご覧ください。
https://code.google.com/p/webiopi/
インストールは、以下のような感じです。
sudo su -
cd /usr/local/src
wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz
tar xvzf WebIOPi-0.6.0.tar.gz
cd WebIOPi-0.6.0
./setup.sh
なんかいろいろインストールするのでちょっと時間がかかります。
RaspberryPiを起動したときにWebIOPiも自動起動させるならば、以下も実行します。
update-rc.d webiopi defaults
WebIOPiの起動は以下のとおりです。
sudo /etc/init.d/webiopi start
WebIOPiの停止は以下のとおりです。
sudo /etc/init.d/webiopi stop
デフォルトでは8000番ポートで起動するのでブラウザから接続します。
http://raspberrypi.local:8000/
ログインパスワードが聞かれますが、デフォルトでは
ユーザ名:webiopi
パスワード:raspberry
になります。
で、パスワード認証後の画面は以下のような感じになります。
GPIO Headerをクリックすると以下のような画面が出てきます。
このグレーのINとなっている部分をクリックするとOUTになります。
GPIO 27の横のINをクリックしてOUTにした例です。
そしてピン番号をクリックするとオレンジ色になりOUTの場合はHIGHになります。
13番のピンをクリックした例です。
このとき、以下のようなLEDを光らす回路を接続していたらLEDが光ります。再度クリックして黒に戻すと消えます。
ちょっと実験するには便利な感じです。
TOPページの他の部分をクリックすると以下のような画面が出ます。
GPIO Listは以下のような感じです。
GPIO Headerの表示方法を変更した感じです。
Serial Monitorは以下のような感じです。
こちらは試していないので、どんな動きをするのか不明です。
Device Monitorは以下のような感じです。
こちらも試していないので、どんな動きか不明です。
WebIOPiはAPIをいろいろ用意しています。
REST APIもあり、他のプログラムから利用することもできます。
APIの例です。
とりあえずGPIO27に対しての例で、リクエストURLは以下のような感じです。
現在状態取得
GET http://raspberrypi.local:8000/GPIO/27/value
利用状態をOUTに設定
POST http://raspberrypi.local:8000/GPIO/27/function/out
シグナルをHIGHにする
POST http://raspberrypi.local:8000/GPIO/27/value/1
シグナルをLOWにする
POST http://raspberrypi.local:8000/GPIO/27/value/0
というわけでRubyでいじってみた例です。
require "net/http"
def set_pin_out
req = Net::HTTP::Post.new("/GPIO/27/function/out")
set_req(req)
end
def pin_on
req = Net::HTTP::Post.new("/GPIO/27/value/1")
set_req(req)
end
def pin_off
req = Net::HTTP::Post.new("/GPIO/27/value/0")
set_req(req)
end
def set_req(req)
req.basic_auth "webiopi","raspberry"
Net::HTTP.start("raspberrypi.local", 8000) {|http|
response = http.request(req, "")
raise "NG" unless response.code == '200'
}
end
set_pin_out
10.times do
pin_on
sleep 0.5
pin_off
sleep 0.5
end
RubyでGPIOを直接いじる場合はroot権限がないとダメでしたが、この場合はrootでなくてもGPIOが利用できます。
また別のマシンからもたたくことができるのも便利そうな気がします。