ラズベリーパイ(Raspberry Pi Zero WH)でPython3 Lチカ(LED点滅)させる方法

赤いケースに入ったRaspberry Pi Zero WHとブレッドボード上で光るLEDを並べた、Python3でLチカする方法のアイキャッチ

ラズベリーパイ(Raspberry Pi Zero WH)のGUI上で、IDLE(アイドル) という開発環境を使って、Python3のプログラムを作ることができます。

この記事では、Python3でLEDを点滅させる「Lチカ」を試します。

Lチカは、LEDをチカチカ点滅させる電子工作の定番です。

シンプルな実験ですが、GPIOの使い方、ブレッドボードの配線、抵抗の役割、Pythonから電子部品を制御する流れがひと通り確認できます。

まある

じゃあ、いよいよLチカをやってみよう。

うさたん

Lチカってなぁに?

まある

LEDをチカチカ点滅させることだよ。
電子工作の最初の一歩としてよく使われるんだ。

目次

今回の制作内容

Raspberry Pi Zero WHのGPIOから信号を出して、ブレッドボード上のLEDを点滅させます。

Raspberry Pi Zero WHにLEDと抵抗を配線し、PythonでLEDをON・OFFして点滅させるまでの流れを3ステップで説明した図

大まかな流れは、次の通りです。

  1. LED、抵抗、ブレッドボードを用意する
  2. Raspberry Pi Zero WHとブレッドボードを配線する
  3. Python3(IDLE)でプログラムを書く
  4. プログラムを保存する
  5. Run Moduleで実行する
  6. LEDが点滅するか確認する

LEDが実際に光ると、プログラムで電子部品を動かしていることが目で見えて、かなり楽しいです。

準備するもの

今回のLチカで使うものは、次の通りです。

  • Raspberry Pi Zero WH
  • microSDカード
  • microUSB電源ケーブル
  • パソコン
  • ブレッドボード
  • ジャンパーワイヤー
  • 抵抗
  • LED

Raspberry Pi Zero WH

Raspberry pi zero WH は、初期設定と環境設定が済んだものを使います。

Raspberry Pi Zero WH本体の写真

初期設定はこちらです。

環境設定はこちらです。

microSDカード

Raspberry PiのOSやプログラムを保存するために、microSDカード を使います。

Team製32GB microSDHCカードの写真

8〜32GB程度のものを目安に使っています。

microUSB電源ケーブル

Raspberry Pi Zero WHの電源用に、microUSB電源ケーブルを使います。

Raspberry Pi Zero WHの電源に使うmicroUSB電源ケーブルの写真

スマホ用のmicroUSB充電ケーブルを使える場合もありますが、電源が弱いと起動が不安定になることがあります。

パソコン

Raspberry Piに接続したり、設定を確認したりするためにパソコンを使います。

Windowsパソコンの写真

この記事では、Raspberry Piの画面をVNC Viewerで表示し、Raspberry Pi上のIDLEでPython3のプログラムを作っています。

ブレッドボード

ブレッドボード は、はんだ付けをしなくても電子部品を差し込んで配線できるボードです。

白いブレッドボードの写真

LEDや抵抗を挿して、ジャンパーワイヤーでRaspberry Piと接続します。

ジャンパーワイヤー

ジャンパーワイヤー は、Raspberry PiのGPIOピンとブレッドボードをつなぐために使います。

赤と黒のジャンパーワイヤーの写真

抵抗

LEDに流れる電流を制限するために、抵抗を使います。

抵抗の写真

LEDをRaspberry Piに直接つなぐと、電流が流れすぎてLEDやRaspberry Piを壊してしまう可能性があります。

必ず抵抗を入れて使います。

LED

LEDは、電流を流すと光る部品です。

赤、黄、白のLEDを並べた写真

今回は赤色LEDを使っていますが、基本的な考え方は他の色でも同じです。

ただし、LEDの色や種類によって順方向電圧が変わるため、厳密には抵抗値の計算も変わります。

回路図

今から組むLチカの簡単な回路図はこちらです。

3.3V側から、抵抗とLEDを直列につなぎ、最後にGNDへ接続します。

Raspberry Pi Zero WHでLEDを点灯させるために3.3V、抵抗、LED、GNDを直列につないだ回路図

GNDは、グラウンドと読みます。

電位の基準になる場所で、乾電池のマイナス側につなぐようなイメージです。

抵抗の計算方法

今回は、330Ωの抵抗を使いました。

ここでは、なぜ抵抗が必要なのか、どのくらいの抵抗を使えばよいのかを確認します。

LEDを使うときは、次の情報を見ます。

  • LEDの順方向電圧 Vf
  • LEDに流したい電流 If
  • Raspberry PiのGPIOに流してよい電流

今回使用する赤い3mmのLEDでは、データシートや商品情報から次の値を確認します。

Vf = 2.1V
If = 30mA = 0.030A

ただし、Raspberry Pi Zero WHのGPIOピン1本に流していい電流は8mAまでなので、0.008A(下図の②)の電流が流れる回路を考えます。

8mA = 0.008A

Raspberry PiのGPIOは3.3Vです。

LEDに2.1Vかかるとすると、抵抗にかかる電圧は次のようになります。

3.3V - 2.1V(①) = 1.2V(③)

1.2Vが、抵抗Rにかかることが分かります。

circuit-diagram

この ② ③の値を使って計算します。

オームの法則は、次の式です。

V(電圧) = I(電流) × R(抵抗)

抵抗を求める場合は、次のように変形します。

R(抵抗) = V(電圧) ÷ I(電流)

今回の値を入れると、こうなります。

R = 1.2[V] ÷ 0.008[A]
  = 150[Ω]

つまり、150Ωより大きい抵抗を使う必要があることが分かります。

今回は手元に330Ωの抵抗があったので、この抵抗を使うことにしました。

330Ωなら150Ωより大きいため、LEDに流れる電流をさらに抑えられます。

うさたん

オームの法則?

まある

今は「LEDには抵抗を入れる」「抵抗値は電圧と電流から考える」くらいで大丈夫だよ。

配線方法

では、実際に配線していきます。

Raspberry Pi Zero WHのGPIO23から抵抗を通してLEDの長い足へつなぎ、LEDの短い足をGNDへつなぐLチカ配線図

今回の配線は、次のようにします。

GPIO23(ピン16) → 抵抗 → LEDの長い足(+) → LEDの短い足(-) → GND(ピン6)

GPIO23をHIGHにすると、LEDが点灯します。

GPIO23をLOWにすると、LEDが消灯します。

LEDの向きに注意する

LEDには向きがあります。

長い足がプラス側、短い足がマイナス側です。

  • 長い足:アノード(+)
  • 短い足:カソード(-)

今回の配線では、LEDの長い足を抵抗側へつなぎ、短い足をGND側へつなぎます。

向きが逆だと、LEDが光りません。

Raspberry Piとブレッドボードをつなぐ

Raspberry Pi Zero WHのGPIO23(ピン番号16)と、ブレッドボード上の抵抗をつなぎます。

抵抗の先にLEDをつなぎ、LEDの短い足からRaspberry PiのGND(ピン番号6)へ戻します。

Raspberry PiのGPIOについては、準備する機材の記事内の「GPIOピンとは」でも紹介しています。

写真で見ると、このような配線になります。

Raspberry Pi Zero WHのGPIOにジャンパーワイヤーを接続してブレッドボード上のLED回路につないだ写真
Raspberry Pi Zero WHとブレッドボードを使ってLEDを点灯させるための配線をした写真

配線するときは、電源を切った状態で作業します。

線を挿し間違えたまま電源を入れると、LEDが光らないだけでなく、部品を壊してしまう可能性もあります。

Python3でプログラムを作成する

配線ができたら、Python3のプログラムを作ります。

ここでは、Raspberry PiのGUI上で Python 3(IDLE) を使います。

Raspberry Piを起動し、メニューから次の順番で選択します。

[プログラミング] → [Python 3(IDLE)]
Raspberry Pi OSのメニューからPython 3(IDLE)を起動している画面

「Python X.X.X Shell」ウィンドウが表示されます。

メニューから次の順番で新しいファイルを開きます。

[File] → [New File]

新しいエディタ画面に、次のプログラムを入力します。

#モジュールを読み込む
import RPi.GPIO as GPIO
import time

# GPIO番号の指定モードを設定
# BCM: GPIO番号で指定
# BOARD: 物理ピン番号で指定
GPIO.setmode(GPIO.BCM)

# GPIO23を出力として使う
GPIO.setup(23, GPIO.OUT)

try:
    while True:    #無限ループ
        # GPIO23をHIGHにしてLEDをON
        GPIO.output(23, GPIO.HIGH)
        time.sleep(0.5)

        # GPIO23をLOWにしてLEDをOFF
        GPIO.output(23, GPIO.LOW)
        time.sleep(0.5)

# キーボードからCtrl+C割込みが入ったら
except KeyboardInterrupt:
    pass #何もせずに次の行へ

# GPIOの設定をリセット
GPIO.cleanup() 

このプログラムでは、GPIO23を出力に設定し、0.5秒ごとにHIGHとLOWを切り替えています。

つまり、LEDが0.5秒ごとに点灯・消灯をくり返します。

Python3のサンプルコードと、GPIO23を出力に設定してLEDをON、0.5秒待つ、LEDをOFF、0.5秒待つ流れを説明した図

プログラムのポイント

大事なところだけ、順番に見ていきます。

import RPi.GPIO as GPIO
import time

RPi.GPIO は、Raspberry PiのGPIOをPythonから操作するためのライブラリです。

time は、待ち時間を作るために使います。

GPIO.setmode(GPIO.BCM)

GPIO番号をBCM方式で指定する設定です。

この記事では、GPIO23という番号で指定します。

GPIO.setup(23, GPIO.OUT)

GPIO23を出力として使う設定です。

GPIO.output(23, GPIO.HIGH)

GPIO23をHIGHにして、LEDを点灯させます。

time.sleep(0.5)

0.5秒待ちます。

GPIO.output(23, GPIO.LOW)

GPIO23をLOWにして、LEDを消灯します。

GPIO.cleanup()

最後にGPIOの設定をリセットします。

プログラムを止めたあとにGPIOの状態が残らないよう、後片付けとして入れておきます。

エンコーディング宣言について

Pythonのファイルに日本語コメントを書く場合、以前は次のようなエンコーディング宣言を書くことがありました。

# coding: utf-8

ただし、Python 3ではデフォルトの文字コードがUTF-8です。

UTF-8を使うだけなら、基本的にはエンコーディング宣言を書かなくても大丈夫です。

ファイルを保存する

プログラムを書いたら、メニューから次の順番で保存します。

[File] → [Save As]

ファイル名は、たとえば次のようにします。

led01.py

Python3でプログラムを実行する

保存できたら、プログラムを実行します。

Python3(IDLE)を起動し、新しいファイルを開き、led01.pyとして保存して、Run ModuleでLED点滅プログラムを実行する手順をまとめた図

プログラムを書いたウィンドウのメニューから、次の順番でクリックします。

[Run] → [Run Module]

「Python X.X.X Shell」ウィンドウに RESTART と表示され、プログラムが実行されます。

Python 3 Shellでプログラムを実行してRESTARTと表示されている画面

うまくいけば、LEDが0.5秒ごとに点滅します。

プログラムを止める

プログラムを止めるときは、キーボードで次のキーを押します。

Ctrl + C

Ctrl + C を押すと、KeyboardInterrupt が発生し、プログラムが終了します。

最後に GPIO.cleanup() が実行され、GPIOの設定がリセットされます。

動画で確認する

こちらが、実際にLEDを点滅させている動画です。こちらが、実際に動いている動画です。

うさたん

すごい、光った!

まある

やったね。自分で書いたプログラムで部品が動くと、かなり感動するよ。

うまく光らないときに確認したいこと

LEDが光らない場合は、プログラムだけでなく、配線や部品の向きも確認します。

LEDの向きは合っているか

LEDは向きが逆だと光りません。

長い足がプラス側、短い足がマイナス側です。

今回の回路では、長い足を抵抗側、短い足をGND側へつなぎます。

GPIO番号を間違えていないか

この記事では、GPIO23を使っています。

物理ピン番号では16番です。

Pythonのプログラムでは、次のようにBCM指定をしています。

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

物理ピン番号の16ではなく、GPIO番号の23を使っている点に注意します。

GNDにつながっているか

LEDの短い足側は、GNDへつなぎます。

この記事では、物理ピン番号6のGNDを使っています。

抵抗を入れているか

LEDには必ず抵抗を入れます。

抵抗なしで直接つなぐと、LEDやRaspberry Piを壊してしまう可能性があります。

実行しているファイルは合っているか

IDLEで別のファイルを開いている場合、思っているプログラムと違うファイルを実行していることがあります。

保存したファイル名や、実行しているウィンドウを確認します。

まとめ

Raspberry Pi Zero WHで、Python3を使ってLEDを点滅させるLチカを試しました。

今回行った流れは、次の通りです。

  1. ブレッドボードにLEDと抵抗を配置する
  2. GPIO23から抵抗を通してLEDの長い足へつなぐ
  3. LEDの短い足をGNDへつなぐ
  4. Python3(IDLE)でプログラムを書く
  5. led01.py として保存する
  6. Run Moduleで実行する
  7. LEDが0.5秒ごとに点滅することを確認する

Lチカはシンプルですが、Raspberry Piの電子工作の基本がぎゅっと詰まっています。

GPIOから信号を出して、LEDが実際に光ると、プログラムと電子部品がつながった感じがして楽しいです。

次は、Scratchを使ってLEDを点滅させてみます。

スマホからLEDを操作する記事はこちらです。

ラズベリーパイで使う電子部品はこちらにまとめています。

ラズベリーパイで電子工作を始めるための機材はこちらです。

制作ノート全体はこちらです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次