Raspberry Piで 一緒に「Lチカ」しましょう (中編)

Raspberry Piで 一緒に「Lチカ」しましょう (中編)

前回に引き続きラズベリーパイの醍醐味と言える簡単な電子回路の制御を行います。ラズベリーパイと電子回路は、メイン基板上に用意されたGPIOポートに電子回路を接続するだけでよく、特別なインターフェイスは必要ありません。前編、中編、後編の三部に分けてもっとも基本的なLEDをチカチカ点滅させる制御、略して「Lチカ」する方法をご紹介します。一緒に「Lチカ」しませんか?

これがいわゆる”Lチカ”の瞬間

 

今回やること

今回はいよいよ、LEDを点灯 させます。前回は物理ピン番号11(BCM17)をLEDのプラス側に接続したので、このGPIOピンに3.3[V]の電圧をかければLEDは点灯することになります。

ラズベリーパイにインストールしたLinuxであるRaspbianのシェルからコマンドを入力しLEDを点灯させてみましょう。

イメージとしてはGPIOのパラメータを示すファイルに値を書き込むことでGPIOの制御が可能です。この時、物理的なピン番号11ではなくBCMの番号つまり 17番を使います のでご注意ください。

テスト環境:

使用機材: Raspberry Pi2 Model B
OSバージョン: Raspbian GNU/Linux 8 (jessie)
※”cat /etc/os-release”コマンドで確認可能

いよいよ記念すべきLED点灯式!!

以下の手順でLEDが点灯/消灯します!! [確認]

(1) /sys/class/gpio の確認

gpioにアクセスするためには /sys/class/gpio のディレクトリのファイルにアクセスすることになります。
まずはディレクトリの中身を確認 してみます。以下の3個のファイルが確認できます。

pi@raspberrypi:/sys/class/gpio $ ls -l /sys/class/gpio
合計 0
-rwxrwx--- 1 root gpio 4096 8月 21 11:09 export
lrwxrwxrwx 1 root gpio 0 8月 21 01:03 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 8月 21 11:09 unexport

(2)[設定] gpio17の有効化

gpioの17番を有効化 します。
既存のexportというファイルにBCM番号”17″を書き込みます。(この例では”/sys/class/gpio”ディレクトリに”cd”コマンドで移動済みです。)

pi@raspberrypi:/sys/class/gpio $ echo "17" > export

(3) [確認]  “gpio17″が追加されたことを確認

“gpio17″というシンボリックリンク(エイリアスのようなもの)が作成され gpio17に対してアクセス可能に なりました。

pi@raspberrypi:/sys/class/gpio $ ls -l
合計 0
-rwxrwx---  1 root gpio 4096  8月 21 11:15 export
lrwxrwxrwx  1 root gpio    0  8月 21 11:15 gpio17 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpio17
lrwxrwxrwx  1 root gpio    0  8月 21 01:03 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
-rwxrwx---  1 root gpio 4096  8月 21 11:09 unexport

(4)[確認]  “gpio17″の内容を確認

出現したgpio17の示すディレクトリ内を確認すると 様々なファイルが存在 しています。
※シンボリック先を確認するためには”-L”オプションが必要です。

pi@raspberrypi:/sys/class/gpio $ ls -lL gpio17
合計 0
-rwxrwx--- 1 root gpio 4096  8月 21 11:15 active_low
drwxr-xr-x 4 root root    0  8月 21 11:28 device
-rwxrwx--- 1 root gpio 4096  8月 21 11:15 direction
-rwxrwx--- 1 root gpio 4096  8月 21 11:15 edge
drwxrwx--- 2 root gpio    0  8月 21 11:15 power
drwxrwx--- 2 root gpio    0  8月 21 11:15 subsystem
-rwxrwx--- 1 root gpio 4096  8月 21 11:15 uevent
-rwxrwx--- 1 root gpio 4096  8月 21 11:15 value

(5)[確認] 設定値の確認

これらのファイルには gpio17に関連した設定値 が入っています。通常のファイルと同様に catコマンドで確認可能 です。

pi@raspberrypi:/sys/class/gpio $ cat gpio17/direction
in
pi@raspberrypi:/sys/class/gpio $ cat gpio17/value
0

(6)[設定] gpio の用途の設定

gpio17の用途を設定 します。gpio17/directionで設定します。上記[5]の様にデフォルトでは “in”、つまり入力の設定となります。
これを”out”に書き換えて出力用に変更します。

pi@raspberrypi:/sys/class/gpio $ echo "out" > gpio17/direction
pi@raspberrypi:/sys/class/gpio $ cat gpio17/direction
out

(7)[設定] LEDの点灯

いよいよ LEDを点灯 させます。手順[5]で確認した通りgpio/valueの値は”0″となっており無効状態です。
“1”をセットする ことで電流が流れLEDが点灯します。

pi@raspberrypi:/sys/class/gpio $ echo "1" > gpio17/value
pi@raspberrypi:/sys/class/gpio $ cat gpio17/value
1

(8)[設定] LEDの消灯

消灯するには元通りに”0″をセット してあげましょう。
※手順の7、8の echo コマンドを繰り返すことで、LEDをチカチカさせることができます。

pi@raspberrypi:/sys/class/gpio $ echo "0" > gpio17/value
pi@raspberrypi:/sys/class/gpio $ cat gpio17/value
0

(9)[設定] gpio の無効化

gpio17を無効化し、gpio17のシンボリックリンクが消えていることを確認

pi@raspberrypi:/sys/class/gpio $ echo 17 > unexport
pi@raspberrypi:/sys/class/gpio $ ls -l
合計 0
-rwxrwx--- 1 root gpio 4096  8月 21 12:05 export
lrwxrwxrwx 1 root gpio    0  8月 21 01:03 gpiochip0 ->
../../devices/platform/soc/3f200000.gpio/gpio/gpi
ochip0
-rwxrwx--- 1 root gpio 4096  8月 21 12:14 unexport

 

補足

gpioに関するファイルの属性ですが私が試した raspbian ではご覧の通り”root”ユーザだけではなく”gpio”のグループもデフォルトでフルアクセスの設定になっています。gpioグループの中にユーザ名 “pi” が属しています。つまり、デフォルトの”pi”ユーザで操作をする限りはsudoなどのコマンドを入力する必要ありませんでした。

もし、個別に追加したユーザもgpioにアクセスしたいのであれば、/etc/groupファイルのgpioの欄に該当のユーザを追加すると扱いやすいですね。

まとめと次回予告

さて、これで無事にLEDを点灯、消灯することができました。ただ、手動で点灯、消灯だけでは物足りないですね。そこで次回は Python と組み合わせてより実践的なものを作りたくなってきませんか。

少なくとも私は作りたくなってきましたので早速作ってみました。

ちなみに「ラズベリーパイ」の「パイ」は「Python(パイソン)」の「パイ」に由来します。

参考資料: The name ‘Raspberry Pi’ 
このコラムを「ラズ」で終わらせない為にも Python で制御しています。

このように Python などプログラムで制御を行うとLEDで時刻を知らせることもできます! LED一つでも夢は広がるんです! ※但し時刻を読みとる側の技術も必要ではあります(汗)

今回までで「ラズ」についての解説が終わりましたので、次回は非常に簡単ではありますがしっかりと「パイ」も解説していきます。それでは、次回もよろしくおねがいします。

記事は、予告なく変更または削除される場合があります。
記載された情報は、執筆・公開された時点のものであり、予告なく変更されている場合があります。
また、社名、製品名、サービス名などは、各社の商標または登録商標の場合があります。