LoginSignup
8
16

More than 5 years have passed since last update.

今更ですが、RaspberryPi に Ruby をインストールして Lチカ してみる。

Last updated at Posted at 2017-11-25

いろいろありまして、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

回路図は以下。

LED_Test.png

今回は 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
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程度の電圧降下がある、ということが分からなければ、安全な回路が組めません。
#何に当たればそういうことが書いてあるのかがわからない。。。
そういうところが難しい点なのかなと思います。

8
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
16