第2回 Raspberry Piとは

そもそもRaspberry Piってどんなコンピュータなんでしょうか。まずは概要から確認していきます。

Raspberry Piの外観

まずは外観です。大きさがわかるように一般的な大きさのポイントカードを置いてみました。クレジットカードもこのポイントカードとほぼ同じ大きさです。

Raspi compare

かなり小さいですよね。でもRaspberry Piはこの小ささで立派なコンピュータです。OSをインストールして、キーボードやマウス、ディスプレイを接続すれば、普通のデスクトップPCのようにブラウザでネットを見たり、動画を見たり、ドキュメント作成などもできたりします。

でもそれだったらちっちゃなPC、ってことで終わっちゃいますよね。では何が他のPCと違うのか、それで何ができるのか、ちょっとその世界の覗いてみます。

 

普通のPCとの大きな違い

Raspberry Piが普通のPCと異なる一番の大きな点は「拡張コネクタ」があることです。

Raspi GPIO

この拡張コネクタはGPIOとも呼ばれています。GPIOって言われてもわからないですよね。今は「Raspberry Piの特徴は拡張コネクタで、GPIOって呼ばれている」ぐらいの理解で問題ありません。今回の記事では、この拡張コネクタ(GPIO)がどんな役割を持っていて、どのようなことができるのか、雰囲気をつかんでいただこうと思います。

 

拡張コネクタ(GPIO)でできること

この後の説明では「GPIO」って呼ぶことにします。

このGPIOですが、上の画像を見ていただければとわかる通り、多くの金属のピンから構成されています。この金属ピンは、Raspberry Pi 2 Model Bというモデルでは40本あります。これらのピンの役割を一言でいうと、、、

「プログラムでピンの電気信号を制御できる」

ということです。「電気信号の制御」とは、大きく分けて2種類あり、ひとつは指定したピンの電圧を0Vあるいは3.3Vのどちらかに設定する、つまり出力電圧を制御できること、もうひとつは、指定したピンの電圧を0V〜3.3Vの間で読み取る、つまり入力電圧を読み取ることです。出力電圧制御は0Vか3.3Vのどちらか、入力電圧の読み取りは0V〜3.3Vの間の値になります。

でも、出力電圧を0Vとか3.3Vとかにしたり、入力電圧を読み取るだけで何ができるの? あんまり大したことはできないんじゃ? って感じですよね。実はこれができるだけで用途は無限に広がるんです。これから、この制御ができることにより、例えばどんなことができるのか、いくつか例をご紹介します。

まずは出力電圧制御です。

おそらくこのサイトにたどり着く前に、Raspberry Piの電子工作のサイトを見た方でしたら、Raspberry PiでLEDを点滅させる記事を見たことがあると思います。GPIOピンにLEDをつなげは、LEDを接続したピンの出力電圧をプログラムで0Vにしたり、3.3Vにしたり制御することでLEDを点滅させることができます。実際にはLEDは直接つなげることはできず、「抵抗」という電子部品を接続することになります(この辺りは実際に回路を組み立てるときに詳しく説明します)。例えば以下のような感じでLEDを接続して、プログラムでLEDが接続されているGPIOピンの出力電圧を制御することによりLEDを点滅させることが可能となるわけです。

Raspberry Pi + LED

でも、、、LEDを点滅させるだけだと確認したらそれでおしまい、って感じですよね。そこでこの入門シリーズではRaspberry PiにLEDをつなげて、プログラムでネットから天気予報と鉄道運行情報を取得して、その情報をLEDを点滅させて表現してみることにして、ちょっと実用性を持たせようと思います。

ところで、出力電圧を0Vか3.3Vにできると他にどんなことができるんでしょうか。例えば、上の回路でも、もうちょっと工夫をすると、家電のリモコン制御ができます。

家電のリモコンってこんな感じになってますよね。(一部を拡大)

Ir controller

このようにリモコンには赤外線を発生させるLEDが付いています。リモコンで家電を制御する、というのは、この赤外線LEDから赤外線で信号を送って家電を制御することになります。リモコンによってはこの赤外線LEDにカバーが付いていてLEDが直接確認できないものも多いですが、カバーの中にはこのような赤外線LEDが入っています。この赤外線LEDで送る信号ですが、高速で赤外線のON/OFFを繰り返して信号のパターンを送っています。例えば、テレビの電源をONにする信号パターン、OFFにする信号パターンなどをあらかじめ決めておいて、その信号パターンになるように赤外線LEDをON/OFF制御します。

この赤外線LEDは電子部品として一般販売されています。

赤外線LED(秋月電子通商)

これを先ほどのLEDの代わりにRaspberry Piに接続して、

RaspberryPi IR LED

プログラムでうまい具合に赤外線リモコンの信号パターンを発生させればRaspberry Piで家電のリモコン制御ができるわけです。

上の例では、3.3Vという電圧でLEDを制御するだけですが、もうちょっと高い電圧も制御できたらいいですよね。100Vとか。そういうでも大丈夫です。3.3Vの信号があれば、もっと高い電圧も制御できます。例えば

ソリッドステートリレ−(秋月電子通商)

という部品があります。これは、小さい入力電圧(3V〜8V)のON/OFFで、100VのON/OFFを制御できるものです。詳しい接続方法は省略しますが、これを使えば、Raspberry PiのGPIOピンの出力電圧を制御して、リモコンがない100Vの家電製品のON/OFF制御もできるようになります。

このように、プログラムで出力電圧を制御できるピンを手に入れると、いろいろなことができるようになりますよね。

次に、入力電圧の読み取りができるとどんなことができるようになるのか、ちょっと例をご紹介します。

基本的なところですと、GPIOピンにスイッチをつけて、スイッチのON/OFF状態を読み取ることができます。例えば

Raspberry Pi with Switch

このような感じでスイッチを接続すると、スイッチに接続したGPIOピンは、スイッチを押された時が3.3V、離された時が0Vと成ります。つまりスイッチが接続されたGPIOピンの電圧を調べると、スイッチが押されているのか離されているのかがわかります。

このスイッチと先ほどの赤外線LEDをつければリモコンが作れますよね。ただのリモコンですと面白くありませんので、例えばスイッチを1回押しただけで、テレビとエアコンとライトをONにする信号パターンを連続で発生させて、一度ボタンを押すだけで3つの家電をONにする、というガジェットも作れますよね。アイデア次第でいろいろできそうです。

家電制御といえば、最近はホームオートメーションが流行ってきています。スマホから家電を制御したり、外出先から家の家電を制御したり、ということもできたりします。ホームオートメーションを実現する無償のソフトウエアもいくつかリリースされています。例えば「OpenHAB」という無償ソフトウエアがあります。このOpenHABの管理ソフトウエアをRaspberry Piにインストールすれば(家電を制御する回路とその制御するところは自分で作る必要がありますが)、スマホから家電を制御することができます。スマホのアプリは「OpenHAB」という名前でiOS/Android用に無償で頒布されています。上のOpenHAB公式サイトのトップページにデモの動画がありますので、興味があれば観てみてください。音が出ますのでご注意ください。

また、こんな部品もあります。

温度センサ(秋月電子通商)

この部品は、温度(気温)に応じた電圧を出力するものです。この出力電圧をRaspberry PiのGPIOピンにつなげて、その電圧を読み取れば、今の気温がわかります。(なお、Raspberry PiのGPIOはアナログで電圧値を読み取ることはできませんので、実際には電圧値をデジタルデータに変換して読み取る必要があります)

ここまでの部品を組み合わせただけでも、気温が一定以上になったら、エアコンをつける、とかいうこともできますよね。さらにここでご紹介した温度センサ以外にも、湿度センサ、気圧センサ、光センサなどいろいろな状態を調べるセンサがあります。なんかいつも秋月電子通商さんのサイトの紹介ばかりですみませんが、他にもいろいろなセンサがありますので、アイデアを膨らませてみてください。

各種センサ

なお、このGPIOピンを制御するソフトウエアもいろいろ選択肢があります。Raspberry PiはいろいろのOSをサポートしていますが、Linux系のOSが主です。Linuxであれば多くのソフトウエアが無償で提供されていますので、GPIOピンを制御するための言語も、C言語、Python、PHP、Rubyなど、一通り使えます。

なんとなくRaspberry Piでできそうなことがわかってきましたでしょうか。

 

で、結局GPIOって何の意味なの?

今まで「GPIO」って呼んできましたが、このGPIOは General Purpose Input/Output の略です。日本語では「汎用目的の入出力」ということになります。

この0V/3.3Vの出力電圧制御、入力電圧の読み取りの機能は、特別な何かの用途、っていうより、使い方によっていろいろな目的に(汎用的に)使える、ということで、汎用目的の入出力、GPIOと呼ばれています。

「GPIO」はRaspberry Pi特有の用語ではなく、他の製品も使われる一般的な用語ですので、ぜひ覚えておいてください。

« »