💡

Raspberry PiでLチカ(完成)

2022/09/14に公開

Raspberry Pi OSのSDカードへの書き込みに始まり、PyenvによるPythonバージョン管理、Pipenvによる仮想環境、開発環境としてVSCodeのインストール、ブレッドボード上でのLEDと抵抗の配置、GPIOとブレッドボードの接続用コード(オス・メス ジャンパーワイヤー)と一式揃ったのでやっとLチカにチャレンジしました。

前提条件

OS

>cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Python開発環境

  • Python3.10.6
  • Pyenv+Pipenvによる仮想環境を作成
  • VSCode

RPi.GPIOのインストール

PythonからGPIOを操作するためのRPi.GPIOモジュールのインストールです。OSのパッケージとしても提供されているようですが今回はPipenvを使用した仮想環境上にインストールします。
RPi.GPIOモジュールをインストールするためにはOSにpython3-rpi.gpioパッケージがインストールされている必要があるようです。

python3-rpi.gpioのインストール状況確認

きっとデフォルトでインストールされていると思いつつ念のための確認、予想通りインストール済でした。

dpkg -l python3-rpi.gpio
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前             バージョン   アーキテクチ 説明
+++-================-============-============-=======================================================
ii  python3-rpi.gpio 0.7.0-0.2+b2 arm64        Module to control Raspberry Pi GPIO channels (Python 3)

RPI.GPIOモジュールインストール

作成済みの仮想環境を使用できるフォルダ(今回は~/src/test_project)でpipコマンドではなくpipenvコマンドでインストールします。

 cd ~/src/test_project/
$ pipenv install rpi.gpio
Installing rpi.gpio...
Adding rpi.gpio to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock (a290a1) out of date, updating to (678f07)...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success! 
Locking [dev-packages] dependencies...
Updated Pipfile.lock (678f07)!
Installing dependencies from Pipfile.lock (678f07)...
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 1/1 — 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

Raspberry Piとブレッドボードの接続

今回Raspberry PiのGPIOは3.3Vを出力させるGPIO番号GPIO17(PIN番号(物理レイアウト番号)11)をブレッドボードのプラスに、GPIO番号GND(PIN番号6)をマイナスに接続

LED表示

表示プログラム(Python)

import RPi.GPIO as GPIO
import time

INT_COUNT = 5 # 点灯回数
INT_PIN_BOARD = 11 # 3.3V出力PIN番号

GPIO.setmode(GPIO.BOARD) # 引数にGPIO.BOARDを指定することでPIN番号指定
GPIO.setup(INT_PIN_BOARD, GPIO.OUT) # PIN番号11を出力モードに設定

for _ in range(INT_COUNT):
    GPIO.output(INT_PIN_BOARD, GPIO.HIGH) # GPIO.HIGHの代わりにTrue でもok
    time.sleep(1)
    GPIO.output(INT_PIN_BOARD, GPIO.LOW) # GPIO.LOWの代わりにFalseでもok
    time.sleep(1)

GPIO.cleanup() # クリーンアップ(後処理)

実行

せっかくVSCodeをインストールしているのでVSCodeでコーディングしてCtrl+F5(デバッグなしで実行)

やっとLED点滅は完了ですがこれからが工作の始まりです。

Discussion