どうも、エンジニアの上原です。

当社には有志のエンジニアが集まって夜な夜な、仕事とは関係ないTechなことをする部活動のGTGT(ギトギト)部というのがあります。

だいたい、「今こんな技術が熱い!」とか外部の勉強会のフィードバック、ハッカソンなどを実施したりするのですが、「自由研究の秋」ということで、何か普段とは違う物作りしたくなるのがエンジニアです。

そんな訳で、この度 GTGT部スピンオフ企画で 電子工作してみることにしました。

今回は取り敢えず定番の「Raspberry Pi」を購入して電子工作における”Hello World”的なポジションのLチカ(LED点灯)までやってみました。

raspberry piを手に入れて満面の笑みのエンジニア上原
raspberry piを手に入れて満面の笑みのエンジニア上原

普通に作っても面白くないので、WEBエンジニアらしく WEB系の言語「PHP」で操作してみようと思います。

①OSインストール、初期セットアップ

今回のOSは定番の「Raspbian」を利用、このあたりの手順を参考に簡単にインストールできます。

②LEDランプ等の配線

まず、LEDランプやケーブルは初心者向けキットなどを用意して
このあたりの情報を参考に初期設定、配線を行います。

配線図
配線図
こんな感じ
こんな感じ

③プログラミング

今回、入出力に使っているGPIO(汎用入出力)を操作する便利なライブラリを作ってくれている人がいるのでそれを利用します。
色々あるんですが、今回はcomposerから利用できるphp-gpioを利用しようと思います。
詳細はこちら

READMEにしたがってインストールを行います。

# Linuxカーネルのモジュール、phpをインストール
$ sudo modprobe w1-gpio
$ sudo apt-get install apache2 php5

# composerを利用してphp-gpioをインストール
$ sudo apt-get install git
$ wget http://getcomposer.org/composer.phar
$ php composer.phar create-project --stability='dev' ronanguilloux/php-gpio projectPath

後はサンプルコードに従ってコードを書きます。

取り敢えずGPIOの配線をpin25にさして、ON/OFFを3秒おきに10回繰り返します。

$ cd projectPath
$ vi gpiotest.php

setup($pin, “out”);

// ON/OFFを繰り返す
for ($i = 0; $i < 10; $i++) {
print “Turning on LED $pin” . PHP_EOL;
$gpio->output($pin, 1);
print “Sleeping” . PHP_EOL;
sleep(3);

print “Turning off LED $pin” . PHP_EOL;
$gpio->output($pin, 0);
print “Sleeping” . PHP_EOL;
sleep(3);
}

print “Unexporting all pins…” . PHP_EOL;
$gpio->unexportAll();

よし、これで準備完了。
いざ点灯式!!
先ほどのプログラムを実行じゃ!!

$ sudo php gpiotest.php
LED_on

光った。光ったよ!母さん!

あとついでに、INPUT(入力)ボタンも試して、今回はおなか一杯になったので終了

rasp2

ネットワークつなぐと色々と面白いことが出来そうですね。

お気づきの通り、apacheもついでにインストールしておいたので
次回は「WEB経由で色々遊んでみたシリーズ」をお話したいと思います。