💡
Raspberry PiでLチカ(完成)
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