Raspberry Pi PR

【ラズパイ】Raspberrypi5でGPIOを使う方法【gpiozero Lチカ】

記事内に商品プロモーションを含む場合があります

はじめに


Raspberrypi5でGPIOを使う方法を解説します。

LEDと抵抗をGPIOにつなぎ、LEDの点灯・消灯(Lチカ)を行う方法です。言語は「Python」、ライブラリには公式ドキュメントでも紹介されている「gpiozero」を使用します。

これまで、GPIOのライブラリとして「RPi.gpio」を紹介してきましたが、2024年3月現在、Pi5ではRPi.gpioが使えない状態が続いています。
そのため、今回は現時点で使用可能な「gpiozero」を使う方法を解説します。

gpiozero公式リファレンス: https://gpiozero.readthedocs.io/en/latest/

環境

この記事で使用する環境は以下の通りです。

環境 バージョンなど 備考
RaspberryPi 最新の「5」を使用します
RaspberryPi OS Debian version 12 (bookworm) 64bit版です
言語 Python 3.11.2
ライブラリ gpiozero

RaspberryPi 5との接続

RaspberryPi 5とLEDを以下のように接続します。抵抗は直結防止のためなので、1kΩでなくてもOKです。

Pi5とLEDを接続した実際のボードの画像
接続のイラストの図
ピン番号 RaspberryPi Pico 側 回路側
33 GP12 LED アノード ( 足の長い方)
6 GND 抵抗

ピンアサイン

pi5のピンアサインの画像

RaspberryPi 公式のGitHubより引用

使用する部品

この記事で使用する部品は以下の通りです。

RaspberryPi 5

RaspberryPi 5本体です。技適や流通経路が不安な方は、日本の老舗店マルツオンライン(楽天)のページが安心です(現在は4GB版のみの販売)。

※ どの購入先でも、本体に電源やケーブルは含まれていないので注意してください

RaspberryPi 5 用電源

スマホ用(PD対応品)も使用できますが、仕様によってはUSBの出力電流が制限されたり、電源が落ちたりすることもあります。5V5A対応品の使用がおすすめです。

公式品は少々値段が高いので、私は以下から購入・使用しています。

サーボモータ(ラジコンサーボ) SG90

冒頭でも紹介した、RaspberryPiシリーズで使えるサーボモータ(ラジコンサーボ)です。 人気のため、コピー品も多いようです。私は以下の正規販売元のページから購入しました。

¥820 (2023/08/25 06:08時点 | Amazon調べ)

ブレッドボード(ハーフサイズ)

サンハヤト製のブレッドボードです。今回は簡単な回路なので小さいサイズのものを使っています。

サンハヤト
¥529 (2024/03/25 23:40時点 | Amazon調べ)

LED

一般的な砲弾型のLEDでOKです。以下のようなセットで買っておくと、購入の手間がはぶけます。

抵抗

お手持ちのものでOKです。ない方は一度セットで揃えてしまうと送料と時間が節約できます。

プログラム概要

今回のプログラムの概要は以下の通りです。

  • LEDオブジェクトの作成
  • LEDをオン/オフする

実行結果

後述するプログラムの実行結果は以下の通りです。実行すると1秒ごとにLEDが点灯・消灯を繰り返します。

プログラムを実行してLEDが点灯している画像
LED点灯
プログラムを実行してLEDが消灯している画像
LED消灯

全体コード

全体コードは以下の通りです。詳細な内容は後述する「コードのポイント」で解説します。

from gpiozero import LED
from time import sleep

# ledのオブジェクトを生成します
led = LED(13)

# 点灯と消灯を繰り返します
while True:

    # led点灯
    led.on()
    sleep(1)

    # led点灯
    led.off()
    sleep(1)

実行方法

上述した全体コードを保存したディレクトリで、以下のコマンドを実行します。

sudo python gpiozero_led.py

コードのポイント

pLEDオブジェクトの生成

LEDを操作するためのオブジェクトを生成します。

gpiozeroでは、RPi.GPIOなど他のライブラリと違い「ピン」ではなく、「モノ(部品)」に着目したプログラムの名称(構造)となっています。

そのため、プログラム上でも使用する部品に合わせて、LED型のオブジェクトに使用するピンの名称(GP13などの数字部分)を指定します。

led = LED(13)

LEDのオン/オフ

on/off関数により、LEDを点灯/消灯させます。

# 点灯と消灯を繰り返します
while True:

    # led点灯
    led.on()
    sleep(1)

    # led点灯
    led.off()
    sleep(1)

まとめ

Raspberrypi5でGPIOを使う方法を解説しました。RaspberryPi 5になっても1~4と同じピン配置なのはありがたいですね。

ライブラリについては、慣れ親しんだ「RPi.gpio」が使えないのはつらい状態ですが、「gpiozero」もシンプルで分かりやすく、使いやすいライブラリです。

このブログでもPi5と合わせて、gpiozeroのいろいろな使い方を解説していくので、ぜひご覧ください。参考になればうれしいです。

お知らせ

今月号のInterfaceは『仕事のChatGPT』!

今週号の日経Interfaceは「仕事のChatGPT」。
イントロとして、ChatGPTをはじめとした大規模言語モデル(LLM)の現在や、エンジニア向け生成AIの活用法。その後の内容で、ChatGPTを使ったPythonでゲームの作り方や生成AIを使ったシステムの製作例が学べます。

全ての内容はここでは紹介しきれないので、詳細は以下のAmazonページをご覧ください。

5月25日発売です。

CQ出版
¥1,430 (2024/04/25 12:53時点 | Amazon調べ)

質問・要望 大歓迎です

「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。

使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

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

Index