いよいよパーツを使った電子工作に挑戦します!(上の写真は、LEDと3種類の抵抗器で遊んでみたところです)
Raspberry Piを使った電子工作について知っていることは、「GPIOを使う」ということ。以上です!部品の名前すら分からないところからのスタートです。
電子工作の最初の一歩といえば、Lチカ!……と行きたいところですが、チカチカの前にピカピカさせてみたいと思います!
GPIOって?
GPIO – wikipedia
GPIOはGeneral Purpose Input/Output(汎用入出力)の略語である。
入力として動作した場合は電気回路のほかの部分からのデジタル信号を読み取り、出力として動作した場合は他デバイスの制御や信号の通知を行う。
GPIOとは – e-words
LSIチップや電子機器の備える入出力端子の一種で、設定次第で様々な用途に利用できるもの。「汎用入出力」と訳されることもある。GPIOは特定の用途や信号が決まっておらず、ソフトウェアの指示によって任意の入力あるいは出力に利用することができる。
GPIOについては、以前にも少し調べましたが、相変わらずよく分かりません……。「設定次第で様々な用途に利用できる」とあるので、自由に工作していくためにはGPIOを使用する、というイメージで良さそうですね。
詳しいことは実際に触りながら覚えていくことにします!
今回の工作に使う部品について
名前すら分からない状態からのスタートです。本やウェブサイトの写真と見比べながら、ひとつひとつ調べていきました。
今回使用する部品をご紹介します!
ブレッドボード
ブレッドボード – wikipedia
ブレッドボードとは、電子回路の試作・実験用の基板(土台)のことである。試作、実験、評価などに用いる。
穴にパーツを差し込むと電気信号が流れる仕組みで、はんだ付けをせずに配線ができるのがブレッドボードというパーツです。何度も試すことができるので、初心者にもありがたい部品ですね!
図1の様に、XとYはそれぞれ横一列に、A~EとF~Jはそれぞれ縦一列に内部でつながれています。回路がきちんとつながるように配線していきましょう。
ジャンパーワイヤー
こちらがブレッドボード用のコードです。青色のコードのように先端の金属が出ているものがオス端子、緑色のコードのように差込口になっている四角い方がメス端子です。ブレッドボードに差し込むときはオス端子、Raspberry PiのGPIOに差し込むときはメス端子を使用します。
写真下のコの字型のパーツは、固い素材のジャンパーワイヤーをブレッドボードの穴のサイズに合わせて切って作ったものです。ボード内の配線はこちらを使ったほうがすっきり仕上がります。
抵抗器
抵抗器 – wikipedia
抵抗器(ていこうき、resistor)とは、一定の電気抵抗値を得る目的で使用される電子部品であり受動素子である。通常は「抵抗」と呼ばれることが多い。
抵抗器は、流れてくる電気の量を調整する役割をもつ部品です。写真右下のように折り曲げて使用します。
抵抗の強さを表す単位は「Ω(オーム)」です。中学校のときに「オームの法則」で習いましたね!といっても法則は今回使いません。
抵抗器のカラーコード – wikipedia
カラー抵抗早見表!
抵抗値は、抵抗にプリントされている色の帯で判別します。写真のものは、右から順に、「赤・赤・茶・金」が220Ω、「茶・黒・赤・金」が1kΩ、「茶・黒・オレンジ・金」が10kΩ。似ている色の見分けがむずかしいです……。
LED
今回の主役!LEDです!
こちらは抵抗器と違って、プラスとマイナスの区別があります。針金のような足の部分が少し短い方がマイナスです。小さすぎて分かりにくいですが……真上からよく見ると、マイナス側は少し欠けた形をしています。
Raspberry PiのGPIO端子
Raspberry PiのGPIO端子には40本のピンが並んでいますが、どのピンを何に使えばよいのでしょうか?
公式サイトのModel B+のページに掲載されている回路図が図2です。
※現在この回路図は公開されていません(2019年7月現在)
1~40番までの番号が振られています。回路図に赤字で書かれているのがピンの名前です。
26番までは、Model A、Model Bと同じです。
公式サイトのGPIOのドキュメントでは、Model A、Model Bのピン配列が紹介されています。色分けされていて分かりやすいですね!
Model B+のGPIOは、2~27までの26本が用意されています。順番に並んでいるわけではないので、使用する際は注意する必要がありそうです。
1番と17番は3.3V、2番と4番は5Vの電源です。何も制御せずに電源のみを取りたい場合はこちらをしようします。
図2回路図の右の補足説明にあるように、27番の「ID_SD」と28番の「ID_SC」は使用できないようです。
名前の記載が省略されている8本のピン(6、9、14、20、25、30、34、39)は、「GND」と呼ばれるものです。
GND(接地) – wikipedia
接地(せっち)とは、機器の筐体・電線路の中性点・電子機器の基準電位配線などを電気伝導体で基準電位点に接続すること、またその基準電位点そのものを指す。
アース(英: earth)、グランド(グラウンド)(英: ground)とも呼ばれる。
「アース」と言われると分かりやすいですね!家電に付いている、電気を逃がすためのあのコードです。配線する際はマイナス極側を接続します。電気が流れついて消えていく場所、というようなイメージです。
ちなみに本体と回路図を照らし合わせる向きは、microSDカードの差込口を上にした縦向きです。
目印は裏側にもあります。裏から見ると、1番ピンだけが四角くはんだ付けされているのが特徴です。
配線!
それでは実際に配線をしてみましょう!ブレッドボードに部品を差し込んでいきます。
完成イメージはこちらです!
まずはブレッドボード側の準備から。LEDと抵抗器を配置していきます。
H列の1~4に抵抗器を設置し、それに続くようにF列の4~5にLEDを設置しました。抵抗器は極が無いのでどちら向きでも大丈夫。LEDは、プラス側に抵抗器がつながるように配置します。
F~Jの縦位置は任意の位置で構いませんが、横位置は次の部品とつながるように配置していきましょう。
続いて、Raspberry Pi本体と接続するためのジャンパーワイヤーを用意します。J列1番の緑色のコードが、電源につなぐプラス側です。J列5番の黄色のコードが、GND(グランド)につなぐマイナス側です。
実物はこのようになりました!
ブレッドボードの準備が整いましたので、いよいよRaspberry Pi本体に接続していきます!
マイナス側のジャンパーワイヤーはGNDに接続します。GNDは、6、9、14、20、25、30、34、39の8本のピンのうち、どれかに設置すればOKです。電源よりも先にGNDを接続しておきましょう。
今回はLEDを光らせるだけでいいので、プラス側は直接電源に接続していきます。電流が強すぎるとLEDが壊れてしまう危険があるので、3.3Vの1番のピンを使用します。
ジャンパーワイヤーを接続して、電流が流れると……
無事にLEDが光りました!
GPIOにジャンパーワイヤーが触れた瞬間に光りはじめてしまったので、間違ったところに触れてしまわないように注意が必要ですね。
ピカピカ点滅させてみます!
次はRaspberry Pi側からLEDを制御してみましょう!
ブレッドボードの配線はそのままで、Raspberry PiのGPIOポートのプラス側を、1番の3.3V電源からとなりの3番「GPIO2」に差し替えます。
……あれ? なぜか光っています……デフォルトは通電状態のようですね。
それではコマンドを入力していきましょう!
まずはGPIOポートを使用する準備をしていきます。
echo 2 > /sys/class/gpio/export
「echo」はファイルに書き込むための命令です。「(書き込む値) > (ファイル)」の書式で指定します。今回は「GPIO2」を使用するので「2」を指定します。
ちなみにRaspberry Piでは、仮想ファイルを目視で確認することができました。実際に「/sys/class/gpio/」をエクスプローラから見てみると、「gpio2」という仮想フォルダが作成されているのが分かります。
ちなみに「gpoi2」フォルダの中は、
このようになっています。これらのファイルに書き込みをすることで、GPIOの制御を行っていきます。目で見て確認できると分かりやすいですね!
次は、この「gpio2」が、入力と出力のどちらを行なうかを指定していきます。入出力を設定するのは「direction」です。
echo out > /sys/class/gpio/gpio2/direction
今回は信号を発信する側=出力なので「out」を指定します。
(コマンドを実行するとLEDが消灯しました!個別に制御できるように切り替わったようです)
出力の値は「value」に設定します。
echo 1 > /sys/class/gpio/gpio2/value echo 0 > /sys/class/gpio/gpio2/value
「1」を設定すると電流が流れてLEDが点灯します。消灯させる場合は「0」を設定して電流の流れを止めます。「value」ファイルをテキストエディタで開くと、値が直に書き換えられているのを確認することができます。
echo 2 > /sys/class/gpio/unexport
終了する場合はこちらのコマンドです。「export」の反対で「unexport」ですね。これを実行すると「gpio2」フォルダが消去されます。
ここまでが一連の流れです!Raspberry PiからのLED制御、成功しました!
「export」「direction」「value」「unexport」の4種類の仮想ファイルの値を書き換えるだけなので、シンプルで分かりやすいですね。直接仮想ファイルが見られるので、制御の仕組みも同時に確認することができました。
まとめ
LEDピカピカ、できました!はじめての電子工作成功です!
ブレッドボードの配線はパズルのようで、とっても楽しく遊ぶことができました。LEDが光るという、実行結果が物理的な形で見られることがおもしろいですね!電子工作への興味が高まってきました!
さて、次回(第10回)こそは「Lチカ」に挑戦します!
チカチカ点滅させるということは……プログラムとの連携が必要? どんな言語やツールを使うの? 引き続き、勉強しながら少しずつじっくり進めていきたいと思います!