Raspberry PiでGPIOを使う(C言語)
こんにちは.
これまではほぼラズパイを普通のLinux PCのように使う方法について書いてきましたが,今回は少し毛色が違って,GPIOを扱えるようにしたいと思います.
GPIOとは,多目的入出力(General Porpose Input/Output)のことで,これを使用するとデジタル信号の入出力を行うことが出来ます.具体的には,LEDを光らせたり,モータを回したり,センサの信号を拾ったりすることが可能です.
お手持ちのラズパイを見ると,何本も針のようなものが立っていると思いますが,そこがGPIOの端子です.そこにLEDやセンサなどを接続して動かします.
ではそれが使えるよう設定してみましょう.
wiringPiのインストール
まずはwiringPiという,ラズパイでC言語の開発ができる環境をインストールします.
いつものようにMacかWindowsからSSHでラズパイに接続します(以前の記事参照).
コマンド待ち受け画面になったら,下記の順でコマンドを入力します.
sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build
それぞれのコマンドで結構待ち時間が生じることがありますが,我慢します.
これら7個のコマンドを順に実行したら,インストールは完了です.
次に動作を確認します.
gpio -v
gpio readall
以下のような画面が出力されたら成功です.
これでGPIOを使う準備が整いました.
GPIOを使用してLEDを光らせる準備
次回はGPIOを使用してLEDを光らせてみようと思いますが,あらかじめその際に必要なパーツをここに挙げておきます.
LED
高輝度5mm赤色LED 7cd60度 (10個入): LED(発光ダイオード) 秋月電子通商 電子部品 ネット通販
※リンク先がエラーで表示されない場合は、ページを更新すると表示されることがあります
電流を流すと光る素子です.素子とは電子回路用語で1個のパーツを表す言葉で,よく出てくるので覚えておきましょう.
抵抗
カーボン抵抗(炭素皮膜抵抗) 1/4W 1kΩ (100本入): パーツ一般 秋月電子通商 電子部品 ネット通販
※リンク先がエラーで表示されない場合は、ページを更新すると表示されることがあります
回路のある区間に電圧をかける(印可するという)と電流が流れますが,その力を弱めるのが抵抗です.ここで用意する抵抗はそれ単体では何も役立たないのですが,例えばモータや豆電球などは動いたり光ったりすると同時に抵抗としての働きもします.
今回はLEDを使用して光らせるのですが,LEDは抵抗としてほとんど働かないので,とても大きな電流が流れてしまい,回路の中にある素子を破壊してしまいます.
このため,LEDを使用する場合はほとんどの場合抵抗が使用されます.
このあたりの電気理論の話はいずれどこかで軽く触れようと思います.
ブレッドボード
ブレッドボード BB−801: パーツ一般 秋月電子通商 電子部品 ネット通販
回路を作るときは基板にはんだ付けをして作成することが多いのですが,いろんな素子を組み替えたりするのにいちいちはんだ付けをするのは大変です.
そこで,ケーブルや素子のピンを差し込むだけで回路を作ることができるブレッドボードを使うのが便利です.
ジャンパケーブル(オス-オスおよびオス-メス)
ブレッドボード・ジャンパーワイヤ EIC−J−L: パーツ一般 秋月電子通商 電子部品 ネット通販
ブレッドボード・ジャンパーワイヤ(オス−メス) 15cm(赤): パーツ一般 秋月電子通商 電子部品 ネット通販
ブレッドボードとラズパイや,接続穴同士を接続するために使用するケーブルです.これを1セット買っておくとちょっとした試作の時に便利です.
以上です.合計金額800円くらいですね.これだけ買っても良いのですが,送料やショップまでの交通費がもったいない気もします.
というわけで,次回以降に使おうと思っているパーツもついでに書いておきます.
CdSセル(0.5MΩ)GL5516(4個入): パーツ一般 秋月電子通商 電子部品 ネット通販
いわゆる明るさセンサです.この素子に当たる光の強さに応じて抵抗値が変わるというものです.抵抗値が変わると何でセンサなの???という方も多いかもしれません.やっぱり電気理論はどこかで触れたいですね.
PIRセンサ
Parallax PIRセンサー RevB: センサ一般 秋月電子通商 電子部品 ネット通販
人感センサと呼ばれるものです.人が動いたら反応するセンサです.赤外線の変化を感知するので熱を持っているものが動けば反応します.熱を持っていないものなんてまずないので,つまりは何かが動くと反応するって意味ですね.
上記のCdSと合わせて,暗い時に何かが動くと明かりがつくような電燈が身近な利用例です.
赤外線LED
5mm赤外線LED OSI5FU5111C−40 (5個入): LED(発光ダイオード) 秋月電子通商 電子部品 ネット通販
上記でLEDを光らせるために購入したLEDは赤色に光るものでしたが,こちらは赤い光の代わりに赤外線を発するLEDです.光は全て電磁波で,波長が長いほど赤色に近く,波長が短いほど青色に近付くのですが,赤外線は赤よりもより波長が長い電磁波です.そして赤外線は人間の目には見えません.人間の目には見えないので,LEDを光らせる実験には不向きですが,下記のリモコン受信モジュールと併用すると面白いことが出来ます.
リモコン受信モジュール
赤外線リモコン受信モジュールOSRB38C9AA(2個入): センサ一般 秋月電子通商 電子部品 ネット通販
テレビとかに使用されているリモコンの信号を受信するモジュールです.モジュールと言うのは複数の素子を組み合わせてある機能を持たせた部品のことです.
このリモコン受信モジュールは赤外線信号を受信することが出来るので,家庭用のリモコンからの信号を受信してラズパイで読み取って保存し,上記の赤外線LEDから発信させるとかも可能(なはず)です.
ラズパイはインターネットにも繋がりますし,遠隔地からインターネット経由でラズパイに指令を出して,家庭内の家電をコントロールしたり,旅行中毎日一定の時刻にテレビをONにして人がいますよアピールをしたり,と言ったことができます.
まるでIRKitとかPlutoステーションみたいですね.
とりあえず以上のパーツでこの先進める予定ですので,ついてきてくれる方は揃えられても良いかと思います.
※とか言いつつ途中で方針変更して使わなかったらごめんなさい.でも現状は使う気でおりますし,これらの使い方を解説したサイトなどもあると思いますので,無駄にはならないと思います.
参考文献
[1]MCU Gearを使ってみる「Raspberry Pi の超簡単設定2 C言語 wiringPi」(http://mcugear.blogspot.jp/2014/02/raspberry-pi-wiringpi.html)