モノづくりエンジニアのための情報ポータルサイト|エンジニアピット

CAREER LAB電子工作初心者にオススメ! Raspberry Piで「ジュークボックス」を作ってみた!(前編)

電子工作初心者にオススメ! Raspberry Piで「ジュークボックス」を作ってみた!(前編)
DATE2015/03/23
初心者にオススメ! ラズベリーパイで簡単な「ジュークボックス」を作ってみた!(前編)
「Raspberry Pi(ラズベリーパイ)」をご存知ですか。3000円程度で購入できるARMプロセッサや、イーサーネット端子、映像/音声出力などを備えた搭載のシングルボードコンピュータです。

LinuxOSをインストールできひと昔まえのパソコン程度の処理能力を有します。すでに2015年2月時点で全世界で500万台を超える販売台数に達し、人気が過熱している状態となっています。そんな背景もあり、試しに購入した人や「買ったけど…これから何をしよう」という人も少なくないはず!

そこで本記事では、初心者でも簡単に実践できる簡易的な「ジュークボックス」を作ることで、ラズベリーパイの「基礎」と「楽しさ」をお伝えしてみたいと思います!

事前に準備するモノ!

事前に準備するモノ
  • ラズベリーパイ(Raspberry Pi B+)
  • ブレッドボード1個
  • タクトスイッチ1個
  • LED(赤)1個
  • 抵抗(220Ω)1本
  • 抵抗(10KΩ)1本
  • ジャンパーワイヤ(オス・メス)3本
  • ジャンパーワイヤ(オス・オス)1本
  • スピーカー1個(イヤホンでも代用可)
今回の作業で必要となるモノは、起動できる状態のラズベリーパイと、数十円〜数百円程度の電子パーツ類だけです。

これから作っていく「ジュークボックス」は、「スイッチ」を押すことでネットラジオのチャンネルを取得し、スピーカーから音楽を奏でる仕組みにしようと考えています。

そのため、スピーカーに関しては「音」が出るモノであればOKで、イヤホンを接続しても代用することができるでしょう。  

早速、「LEDの点灯」に挑戦!

「ラズベリーパイ」は、手のひらサイズのパソコンと言われていますが、普通のパソコンには無い「GPIO」という入出力ポートが搭載されているのが特徴です。
「GPIO」ポートです
これにより、多彩な電子回路を制御することが可能で、「ロボット」や「ゲーム機」を作ってしまうことも夢ではありません。

そこで、まずはGPIOの簡単な使い方として「LEDの点灯」に挑戦してみましょう!

内容としては、LEDに電流を流して点灯させるだけなのですが、極性があることに注意しなければいけません。
LEDには極性があります
「長い足(+)」から「短い足(-)」へ電流が流れるということを覚えておきましょう。
25番ピンから電流を流してLEDを点灯させ、最後に「GND」へ流れるように…
今回は、25番ピンから電流を流してLEDを点灯させ、最後に「GND」へ流れるようにしています。 (※LEDへ過剰に電流が流れないように、120〜330Ω程度の抵抗を挟んでおきましょう)

次に、ラズベリーパイを起動させてGPIOを制御していきます。制御方法は、ラズベリーパイの「gpioファイル」へ「設定値」を書き換えることで実現できるようになっています。

まず、25番ピンを使えるようにするため、ラズベリーパイのコンソール画面から以下のコマンドを実行します。

$ echo 25 > /sys/class/gpio/export

これで、「gpioフォルダ内」にある「exportファイル」に、設定値「25」を書き込むことで25番ピンが利用できるようになります。
(※もし、権限エラーが表示された場合は「$ sudo su」を実行してみましょう)

次に、25番ピンから電流を出力したいので、設定値「out」を書き込みます。

$ echo out > /sys/class/gpio/gpio25/direction

これで、25番ピンから電流を流す準備が整いました! あとは、25番ピンを「ON(1)」「OFF(0)」するだけで、LEDが点灯・消灯するようになります。

「ON(1)」にするには、valueへ設定値「1」を書き込みます。

$ echo 1 > /sys/class/gpio/gpio25/value

どうですか?
LEDが点灯しましたか?
LEDが点灯しました!
「OFF(0)」にするには、valueへ設定値「0」を書き込みます。

$ echo 0 > /sys/class/gpio/gpio25/value

これで、LEDは消灯します。
(※「ON」「OFF」を繰り返すことで、点灯・消灯を制御できます)

終了する場合は、25番ピンを元に戻す作業を忘れないようにしましょう。

$ echo 25 > /sys/class/gpio/unexport

これで、25番ピンの利用を終了することができます。

簡単なプログラミングを書いてみよう!

初めての「GPIO制御」は、いかがだったでしょうか?もしかしたら「ちょっと面倒くさい…」と感じた方もいるでしょう。

そこで登場するのが「プログラミング」です!

先ほど、複数回コマンドを実行しましたが、それらを1つのファイルに収まるようにプログラミングすれば、1回の実行でLEDを点灯・消灯させることが可能になります。

今回は、ラズベリーパイのコンソール画面からデフォルトで利用できる「シェルスクリプト」を使ってプログラミングをしてみましょう。

ただし、プログラミングと言っても、実は先ほど実行したコマンドを並べるだけでOKです。「led.sh」というファイルを作成して、以下のようなプログラムを書いて保存しましょう。
1 #!/bin/sh
2
3 echo 25 > /sys/class/gpio/export
4 echo out > /sys/class/gpio/gpio25/direction
5 echo 1 > /sys/class/gpio/gpio25/value
6 sleep 3
7 echo 0 > /sys/class/gpio/gpio25/value
8 echo 25 > /sys/class/gpio/unexport
いかがですか?
先ほど実行したコマンドを、ただ並べているだけですね。でも、これでも立派なプログラミングと言えるんです。

ちょっと違うのは、1行目と6行目。1行目は、「シェルスクリプト」を書く場合に必ず明記し、6行目は「3秒間停止する」という意味になっています。

さて、これでプログラムを実行してみましょう!

$ sudo sh led.sh

どうですか?
LEDが点灯し、3秒後に消灯できたでしょうか。

まとめ

今回、学習した主な内容は以下のとおり!
  • ラズベリーパイには、「GPIOポート」が搭載されており電子回路の制御が可能。
  • 「gpioファイル」に、任意の設定値を書き込むことでGPIOを制御できる。
  • 「シェルスクリプト」を使って、複数のコマンドを1つにまとめられる。
基本的な内容ばかりでしたが、ラズベリーパイの「面白さ」を知るにはとても重要なポイントになります。

後編では、今回学んだ基礎をベースにして、いよいよ「ジュークボックス」作りにチャレンジしてみようと思いますので、お楽しみに!

後編へ続く

エンジニアピット キャリアラボ一覧へ戻る