前回に引き続きラズベリーパイの醍醐味と言える簡単な電子回路の制御を行います。ラズベリーパイと電子回路は、メイン基板上に用意された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
Pythonを使って、Lチカで時刻を報せてみましょう!
本記事は、日本サード・パーティ株式会社(JTP)にて、執筆しています。
JTPは約30年に渡り、様々なベンダーのサポートを行う企業です。 設計、構築、開発、運用、ヘルプデスク、トレーニングなど、ITのライフサイクルを通して技術サービスを提供しています。
中でも、JTP の IT教育サービスでは、クラウド、Hadoop関連技術など、OSS の最新技術 トレーニングを数多く実施しています。
JTPでは、経験豊富なエンジニア、講師陣により、多くの技術記事を公開しております。
▼JTPの情報メディア「JTP Technology Port」はこちらから!