第2回 Raspberry Piとは

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

Raspberry Piの外観

まずは外観から確認します。大きさがわかるように一般的な大きさのポイントカードを置いてみました。

Raspberry Pi Model3 B

この画像のモデルは「Raspberry Pi 3 Model B」というものです。ポイントカードとほぼ同じ大きさです。

さらにこれよりも安くて小さいモデルもあります。

Raspberry Pi Zero W

この画像のモデルは「Raspberry Pi Zero W」というものです。こちらはさらに小さいので、何か普段使いのものを作るときに小型化できそうですよね。

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

でもそれだったら超小型PC、ってことで終わっちゃいますよね。では、他のWindowsPCやMacなどの普通のPCと何が違うのか、Raspberry Piでは何ができるのか、ちょっとその世界の覗いてみます。

 

普通のPCとの大きな違い

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

Raspberrypi startup 2 gpio

この拡張コネクタは「GPIO」と呼ばれています。GPIOって急に言われてもわからないですよね。今は「Raspberry Piの特徴は拡張コネクタで、GPIOって呼ばれている」ぐらいの認識で問題ありません。

今回の記事では、この拡張コネクタ(GPIO)がどんな役割を持っていて、どのようなことができるのか、雰囲気をつかんでいただこうと思います。

 

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

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

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

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

ということです。「電気信号の制御」とは、大きく分けて2つあります。

ひとつはピンの電圧を0Vあるいは3.3Vのどちらかに設定する、つまり出力電圧を制御できることです。

もうひとつは、ピンの電圧の値が0Vか3.3Vなのか読み取る、つまり入力電圧値を読み取ることです。

でも、このようにピンの出力電圧を0Vか3.3Vに設定したり、ピンの電圧を読み取るだけで何ができるのでしょうか。正直、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を点滅させて表現してみることにして、もうちょっと実用性を持たせようと思います。

とはいっても、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にする、というガジェットも作れますよね。アイデア次第でいろいろできそうです。

家電制御といえば、最近はスマートスピーカーで家電を音声で制御したり、外出先からスマホで家の家電を制御できる家電も多く販売されています。

このようなことを実現する無償のソフトウエアもいくつかリリースされています。例えば「Home Assistant」というオープンソースのソフトウエアがあります。

このHome AssistantはRaspberry Pi用のソフトウエアもリリースされていますので、Raspberry Piにインストールすれば、家の中や外出先でスマホから家電を制御することができます。スマホのアプリは「Home Assistant Companion」という名前でiOS用に無償で頒布されています。

上の公式サイトにデモサイトが公開されていますので、ご興味があれば見てみてください。

入力電圧の読み取りに関しては、このような部品もあります。

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

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

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

他にもいろいろなセンサがありますので、アイデアを膨らませてみてください。

各種センサ

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

なんとなくRaspberry Piでできそうなことがわかってきましたでしょうか。このように、センサでいろいろな情報を読み取り、プログラム処理をして、何かを制御する、というツールを手に入れれば、自分で考えたアイデアを実際に形にすることができます。ぜひ一緒に知識を身につけていきましょう!

 

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

今まで「GPIO」って呼んできましたが、このGPIOは General Purpose Input/Output の略です。日本語では「汎用目的の入出力」ということになります。日本語で説明されてもさっぱり、、、という感じですよね。この意味をもう少し噛み砕いてみます。

GPIOの0V/3.3Vの出力電圧制御、入力電圧の読み取りの機能は、何かの特別な用途、っていうより、先ほどのようにアイデア次第でいろいろな目的に使えますよね。色々な目的に使えることを「汎用」と言います。ということで、これらの入出力ピンは「汎用目的の入出力」ということでGPIOと呼ばれています。

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

 

更新履歴

日付 内容
2015.10.9 新規投稿
2019.1.18 Raspberry Pi画像をRaspberry Pi 3 Model BとRaspberry Pi Zero Wに変更
スマートホームのソフトウエアをHome Assistantに変更
一部表現変更
2020.4.23 リンク修正