いろいろありまして、RaspberryPi を入手したので、Lチカをしてみました。
Lチカ についてはネットで調べると詳しい情報がたくさんあるのですが、折角なので記録しておきます (^^
Ruby のインストール
RaspberryPi の OS は raspbian を使います。
apt-get でインストールしてもいいですが、現時点ではバージョンが 2.1.x でしたので、rbenv を使ってインストールします。
# apt-get update
# apt-get install git
$ cd ~
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ cd .rbenv
$ mkdir plugins
$ cd .plugins
$ git clone git://github.com/sstephenson/ruby-build.git
$ cd ~
$ source .bash_profile
$ rbenv
でヘルプが表示されたら成功です。
次に ruby をインストールするのに必要なモジュールもインストールします。
# apt-get install autoconf
# apt-get install libssl-dev libyaml-dev
# apt-get install bison build-essential
# apt-get install libreadline6-dev
# apt-get install libncurses5-dev
でインストール
$ rbenv install 2.4.2
これはすごく時間かかります。気長に待ちましょう(^^
完了したら
$ rbenv rehash
$ rbenv global 2.4.2
として、全体で使えるようにします。
が、RaspberryPi の GPIO を使う場合は root 権限が必要みたいです。
sudo でも ruby が使えるようにリンクを張っておきます。
# ln -s ~/.rbenv/shims/ruby /usr/bin/ruby
# ln -s ~/.rbenv/shims/irb /usr/bin/irb
LED点灯回路
回路の方を作ります。
#配線をするときは電源を切ってから行いましょう。→ # shutdown -h now
回路図は以下。
今回は GPIO 21番に 100Ω の抵抗と LED を繋ぎます。
#回路図作成には Qt-BSch3V を使用させて頂きました。
GPIO への出力
/sys/class/gpio
が GPIO を操作する時に使うパスみたいです。
手動で信号出力してみる
$ cd /sys/class/gpio
$ echo 21 > export
$ ls
export gpio21 gpiochip0 gpiochip100 gpiochip128 unexport
21 は GPIO の番号です。
export へ GPIO の番号を渡すと gpio21
というリンクができます。#gpio21番へのポートが開いた感じですね。
あとはこれに対して操作します。
$ echo out > gpio21/direction
$ echo 1 > gpio21/value
これで LED が点灯したと思います。
direction に 入力(in) か 出力(out) かを書き出して、value に on(1)/off(0) を書き出します。
消灯する場合は
$ echo 0 > gpio21/value
とすればOKです。
最後は開いたポートを閉じておきます。
$ echo 21 > unexport
ruby で信号出力してみる
GPIO を操作する gem があるので、それをインストールします。
https://github.com/jwhitehorn/pi_piper
$ gem install pi_piper
そしたらコードを書いてみます。
作業フォルダに移動して、
$ cd ~/src
$ vi led_onoff.rb
require "pi_piper"
pin_a = PiPiper::Pin.new(:pin => 21, :direction => :out)
loop do
pin_a.on
sleep 1
pin_a.off
sleep 1
end
実行すると 1秒点灯 - 1秒消灯 を繰り返します。
# ruby led_onoff.rb
以上で Lチカ 完了です。
まとめ
ハードウェアを制御するのってやっぱり緊張します。
出力とLEDの間に抵抗を入れていないサイトもありますが、失敗したら壊れるってのはやっぱり怖いです。
#なので 100Ω 入れました。
V = RI
という公式は知っていますが、実際にいくらになるのかってのがやっぱりよくわからないですね。。。
LEDを光らすためには 10mA 程度必要というお話しを聞いたことがありました。
今回は V = 3.3[V]
で I = 0.01[A]
なので、 R は 3.3 / 0.01 = 330
だと思うのですが、LEDにも光るためには電圧が必要で、だいたい 2V 程度らしく、実際に抵抗にかかる電圧は 3.3 - 2 = 1.3[v]
なので、1.3 / 0.01 = 130
ということのようです。
調べればわかることなのかもしれませんが、LEDを光らすためには 10mA程度の電流を流すことと、その際に 2V程度の電圧降下がある、ということが分からなければ、安全な回路が組めません。
#何に当たればそういうことが書いてあるのかがわからない。。。
そういうところが難しい点なのかなと思います。