とんちゃん の ぐだぐだえびでい

バックエンドエンジニアのとんちゃんが、ぐだぐだな毎日で培った技術情報を綴るブログです。

raspberry pi(raspbian)でGPIOに出力してみる

これは何?

GPIOの出力をいかようにして扱うかを調べたログとなります。

GPIOとは

汎用入出力(General Purpose Input/Output)のこと。
Raspberry Piでは、本体についている26本ないし33本のピンのことを指します。

linux ~everything is file~

linuxは万物がファイルなので、GPIOもファイルとして扱えます。

扱い方

Sometimes it can be simple. | Meltwater's Raspberry Pi Hardwareより引用

f:id:tong_chang:20160426203154p:plain

上記図は、ラズパイのGPIOのピン配列と、BCM番号が書いてあります(詳細はこちら:RPi.GPIOの基本的な使い方 | まめりうむ)
基本的に、ファイルの入出力にて制御を行います。 PWM以外のGPIOピンは、3V3の電流をオンオフしているみたいです(GPIO - Raspberry Pi公式ドキュメントを日本語訳)

ピンのアクティベート

/sys/class/gpio/にGPIOを制御するディレクトリがあります。

$ ls /sys/class/gpio/
export  gpiochip0  unexport

まず、ピンをアクティベートします。例として、BCM GPIO25(22番ピン)を有効にしてみます。

$ sudo echo 25 > /sys/class/gpio/export

すると、/sys/class/gpio/配下に、gpio25というディレクトリができます。

$ ls /sys/class/gpio/
export  gpio25  gpiochip0  unexport
$ ls /sys/class/gpio/gpio25/
active_low  direction  edge  power  subsystem  uevent  value

GPIOを通して何がしかに出力する

このgpio25配下にある、directionに、'out'と吐きます

$ sudo echo out > /sys/class/gpio/gpio25/direction

これで出力モードになりました!!
ので、valueに1を吐きます

$ sudo echo 1 > /sys/class/gpio/gpio25/value

LEDが点灯しました!!

\ぺかーん!/ f:id:tong_chang:20160426203400g:plain

ちなみに、valueに0を吐くと消えます

$ sudo echo 0 > /sys/class/gpio/gpio25/value

使った後はお片づけ

もう25番ピンは使わない!!という時が訪れたら、ピンのアクティベートを解除します

$ sudo echo 25 > /sys/class/gpio/unexport
$ ls /sys/class/gpio/
export  gpiochip0  unexport

これで元に戻ります!

次回は入力をやりまっすー!