【初めてのLチカ】LEDをRaspberry Pi(ラズパイ)で制御しよう!

「ラズパイを買った!さあ、電子工作ライフの始まりだ!!」と意気込んではみたものの、何から始めればいいのか分からず困っていませんか?

書籍やネットで勉強するのもいいですが、ラズパイの使い方をマスターするには、実際に動かしてみるのが1番です!

そんなわけで、今回この記事では

 

「電子工作を始めようとしても、ラズパイの扱い方が分からないな…」

「どんな風にラズパイの扱いを習得すればいいんだろう?」

という疑問がある方に、初学者に優しい回路として有名なLEDを点灯させる回路を通して

この記事で分かること
  • ラズパイの基本的な操作方法
  • LEDの注意点
  • LEDをラズパイで制御する方法
  • ラズパイでプログラミングする方法

について、分かりやすく解説していきます!

まだ、一度もラズパイで電子工作をしたことがない人を対象とした記事ですので、気楽に読み進めてください!

LEDを知ろう!

LEDとは、電流を流せば光る素子のことです。下図のように、小学校で豆電球を乾電池で点灯させたことがあると思います。イメージとしては同じです。

しかし、LEDを点灯させるのと豆電球を点灯させるのでは、少し方法が変わってきます。豆電球と違って、LEDは乾電池をくっつければ必ず光るわけじゃないんです。

なので、まずLEDと豆電球の違いについて解説していきます。

LEDと豆電球の違い①:決まった方向の電流じゃないと光らない

LEDは、発光ダイオードとも呼ばれ、名前の通りダイオードの一種です。ダイオードというのは、電流を一方向にしか流さない性質をもった素子のことです。

どの電流の向きでも豆電球は光る
足の長い方からの電流のみLEDは光る

豆電球であれば、電流の向き(乾電池の+と-の向き)がどっちを向いていても発光します。しかし、LEDの場合は違います。上図のように、アノード(足の長い方)からカソード(足の短い方)にのみ電流が流れて発光します。反対方向からの電流は流れません。

 

まとめ

LEDは足の長い方から短い方にしか流れない

 

LEDと豆電球の違い②:抵抗を挟まないと危険!!

電子工作でもっとも注意するべきことはショートです。ショートというのは、抵抗など電流を妨げるものがない場合に、電流が過大に流れてしまう現象のことです。ショートが起こると、機器が故障するだけでなく、火傷などの怪我の原因になります。

ショートするダメな回路
抵抗のある良い回路

豆電球は、導線で乾電池につなぐだけで発光します。しかし、LEDでは抵抗をつないで電流を抑制しないとショートしてしまいます。LEDは内部に抵抗がないので、乾電池と直接つなぐと電流が過大に流れてしまうからです。

ショートさせないために、LEDと乾電池の間に抵抗をおきます。すると、抵抗がLEDに流れる電流を抑えてくれるので、ショートすることはありません。

 

まとめ

LEDを光らせるときは必ず抵抗をつなぐ

 

使用する道具一覧

まず、実験で使う道具とその用途について解説します。

  • ラズパイ
  • ジャンパー線
  • LED
  • 抵抗
  • ブレッドボード
  • モニターとHDMIケーブル
  • マウスとキーボード

ラズパイ:

豆電球を光らせたとき、電源として乾電池を使いましたよね?ラズパイは乾電池の代わりに電力を供給する役割を担っています。プログラムで電流のONとOFFが制御できるので、LEDを光らせたり消したりすることも可能です。

ブレッドボード:

ブレッドボードは回路を組むための土台です。詳しい使い方などは以下の記事を参考にしてください。

【電子工作の必需品】ブレッドボードとは?構造と使い方を解説

ジャンパー線:

ジャンパー線は、ラズパイとブレッドボードを繋げる導線です。今回の実験では、ブレッドボードに製作した回路に、ラズパイからの電流を送る役割を担っています。

LED:

LEDは発光素子です。ラズパイからの電流で発光します。色は何色でも問題ありませんが、RGB(フルカラー)LEDは使わないでください。

抵抗:

抵抗はLEDをショートさせないための素子です。電流を抑制します。私は180 Ωの抵抗を使用しますが、150 Ω以上の抵抗であれば問題ないと思います。ただし、抵抗が大きすぎると光が小さくなるので注意が必要です。

モニターとHDMIケーブル:

ラズパイはモニターに接続することで、普通のPCと同じように、作業画面をモニターに映すことができます。その作業画面を見ながらプログラムを書いていくので、モニターがないとラズパイで回路を制御できません。

HDMIケーブルは、ラズパイとモニターを繋ぐケーブルです。モニターはHDMIに対応したテレビでも大丈夫です。

マウスとキーボード:

PCはマウスとキーボードがないと操作できません。ラズパイも同様です。

USBに対応したマウスとキーボードが必要になります。マウスとキーボードは、有線でも無線でも大丈夫です。

実際にLEDを点灯させよう!!

では、早速LEDを点灯してみましょう!!

まず、ブレッドボードに抵抗・LED・ジャンパー線を挿して回路を作ります。ブレッドボードで回路を組んだことがない人は、下図と同じように組めば問題ありません。電流の流れは下図に示すとおりです。

次に、ブレッドボードの回路とラズパイを接続します。

注意
このとき、まだラズパイをコンセントに繋いではいけません。意図しないショートの原因になります。電源を切って配線作業をしましょう!!

ラズパイのGPIOというピンを使います。GPIOについては下の記事を参考にしてください。

Raspberry Pi(ラズパイ)のGPIOピンとは?初心者に向けて丁寧に解説!

このGPIOは各ピンによって役割が異なります。今回は3.3 VピンとGNDを使用します。

上図のように、乾電池の+に相当する3.3 Vピンと、乾電池の-に相当するGND(グランドと読みます)に接続します。

注意
LEDは一方向にしか電流を流さないダイオードの一種です。必ずアノード(足が長い方)が3.3 Vピンと繋がるようにしましょう。アノードがGNDと繋がっている場合は点灯しません。

ラズパイをコンセントに繋いで電源を入れましょう。3.3 Vピンから電流が流れてLEDが光ると思います。

LEDの光をプログラムで制御しよう

さっきの実験でLEDを点灯することができました。しかし、ただ光らせただけでは乾電池に豆電球くっつけたのと同じです。

今回の単元では、もっとラズパイらしく、LEDをプログラムで制御する方法を紹介します。

事前準備

実験の事前準備は以下の3つのステップです。

STEP.1
下準備
さっきとほぼ同じ回路なので、ブレッドボードは崩さなくてOK。ブレッドボードとラズパイを繋ぐジャンパー線は外しておきましょう。

STEP.2
ラズパイの電源を入れる
ラズパイをHDMIケーブルでモニターと繋ぎます。次に、ラズパイをコンセントに繋いで電源をONにしましょう。
STEP.3
回路を組む
しばらく待ってラズパイが完全に起動したら、下図のようにラズパイとブレッドボードをジャンパー線で繋ぎましょう。

今回使用する回路は上図の通りです。さっきの回路との違いは一点だけで、電源と繋がる赤いジャンパー線がGPIO14と繋がっている点です。 

プログラムを書こう

次にプログラムを書きます。

GPIOピンは、プログラムで電流のON/OFFを切り替えることができます。LEDは電流が流れているときにだけ点灯するので、ON/OFFを切り替えることで点滅させることができます。プログラムの書き方を学び、LEDを制御することが実験の最終目標となります。

まず、ラズパイが完全に起動すると上図の画面になると思います。そうしたら、①の矢印をクリックします。出てきたメニューの中からを探し、をクリックしましょう。下図のような画面がでてきます。

では、プログラミングをしてみましょう。言語はPythonを使いますが、プログラミングに心得のない初心者であっても分かるように、解説をいれますので安心してください。早速プログラムを見てみましょう。

Python
import RPi.GPIO as GPIO
import time

LED=14
wait = 1

GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT)

while True:
    GPIO.output(LED, GPIO.HIGH)
    time.sleep(wait)
    GPIO.output(LED, GPIO.LOW)
    time.sleep(wait)

それではプログラムを解説していきます。プログラムは書いた順番に実行されますので、上から解説していきます。

1~2行目
import RPi.GPIO as GPIO
import time

上記は、ライブラリをインポートするプログラムです。簡単に言うと、難しい処理を簡単にする道具を用意したということです。

1行目はGPIOピンを操作できるようにする道具を用意するプログラムで、2行目は点滅させる道具を用意するプログラムです。

4~5行目
LED = 14 
wait = 1

1行目のプログラムにある14の数字は、GPIOの番号を表しています。今回使用するGPIOのピンはGPIO14なので、14と書いています。

2行目のプログラムにある1の数字は、点滅の時間間隔を表しています。1というのは1秒の間隔で点滅するということです。この値を2にすれば2秒間隔で点滅しますし、0.5にすれば0.5秒間隔で点滅します。

7~8行目
GPIO.setmode(GPIO.BCM) 
GPIO.setup(LED, GPIO.OUT)

1行目は、「今後はGPIO番号で指示する」と宣言するプログラムです。ピン番号で指示したい場合は、BCMをBOARDと書き直せばOKです。

2行目は、GPIO14を出力モードに設定するプログラムです。これでGPIO14から電流が流れるようになりました。

10~14行目
while True:
    GPIO.output(LED, GPIO.HIGH)
    time.sleep(wait)
    GPIO.output(LED, GPIO.LOW)
    time.sleep(wait)

1行目は、無限ループをつくるプログラムです。2~5行目のプログラムを永遠に繰り返します。

2行目は、GPIO14から電流を流すプログラムです。このプログラムによってLEDが点灯します。

3行目は、今の状態を1秒間維持するプログラムです。LEDが1秒間点灯します。

4行目は、GPIOから流れる電流を切るプログラムです。このプログラムによってLEDが消灯します。

5行目は、3行目と同じプログラムです。今の状態を維持するので、LEDが1秒間消灯します。1行目で無限ループを作っているので、1秒後に2行目のプログラムが再び実行されます。つまり、永遠に1秒間隔で点滅することになります。

これらのプログラムを書き写すと下図のようになります。

以上がプログラムの説明です。分かりやすくするために簡潔にまとめましたが、その分はぐらかしたところも多いです。ちゃんと自分でプログラミングができるようになりたい人はPythonをしっかり学習しましょう。

プログラムを実行しよう

それではプログラムを実行してLEDを点滅させましょう。

下図に示す実行ボタンを押しましょう。

するとファイルに名前をつけるように指示されます。下図のように名前をつけましょう。

注意
ファイルの名前は自由ですが、最後は必ず『.py』にしましょう。これは拡張子と呼ばれるのもで、『.py』でないとPCがPythonで書かれたプログラムだと認識できません。

名前をつけたらプログラムが処理されてLEDが点滅したはずです。

点滅を止めるときはキーボードで『Ctrl+C』でプログラムが止まります。

まとめ

お疲れ様でした!!見事にPythonでLEDの制御に成功しましたね!!

LEDを光らせるだけでも色々工夫ができます。ランダムな間隔で点滅させたり、LEDの数を増やしても勉強になると思います。

プログラミングさえできれば、ラズパイでどんな複雑な制御もできるようになります。逆に、プログラミングができないと制御が全くできません。

さっきのプログラムが自分で書けないようなら、Pythonの勉強から始めるといいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です