読者です 読者をやめる 読者になる 読者になる

Raspberry Pi買ったのでシェルからLチカ

f:id:koki-h:20150913143726j:plain
何年も前から欲しい欲しいと言って買ってなかったRaspberry Piをとうとう購入した。
日経BPのラズパイマガジンとケースのセットで8000円位だったか。
とりあえずOS入れて無線LANの設定やらなんやらを済ませ、SSHでログインしてLチカを試した。
Pythonのライブラリを使えば簡単そうなのだけどなんとなく嫌で以下のサイトを参考にシェルからGPIOを制御する方法を試してみた。tool-lab.com

簡単にまとめると

  • GPIOの各ピンは /sys/class/gpio/ 配下の /sys/class/gpio/gpio*/value (*はピン番号)という仮想ファイルに0または1の値を書き込むことによってOFF(0)、ON(1)を切り替えることができる
  • 上記のファイルは最初は存在していないので以下の方法で作成する必要がある。(OSをシャットダウンすると消えてしまうのでOSを起動するたびに毎回作る。)
$ echo 18 > /sys/class/gpio/export #18番ピン用の仮想ファイルが作成される
  • ファイルを作成するだけでは使用可能にならないので次に入出力を設定する必要がある。(こちらもOSをシャットダウンすると消えてしまうのでOSを起動するたびに毎回設定する。)
$ echo out > /sys/class/gpio/gpio18/direction #18番ピンが出力に設定される
  • あとはechoコマンドを使うなどして0/1を書き込めばOK
$ echo 1 > /sys/class/gpio/gpio18/value #ON
$ echo 0 > /sys/class/gpio/gpio18/value #OFF

上記を応用してrubyでLチカをした

10.times do
  `echo 0 > /sys/class/gpio/gpio18/value`
  sleep 0.5
  `echo 1 > /sys/class/gpio/gpio18/value`
  sleep 0.5
 end

上記をもっと簡単にできるようにしたWiringPiというツールもあるらしいが、また今度調べる。

ちなみにRaspberry PiのGPIOから線を引き出す際には以下の様な延長基板が便利。

私はスイッチサイエンスのキットを購入したがハンダ付けを間違えてブレッドボード側のピンを裏表逆にしてしまった。
私のようなおっちょこちょいの人は完成品の方を購入したほうがいいかもしれない。