組み込み開発のためのPython · レッスン 215 / 220
GPIOの入出力と安全な試験
GPIOの入力・出力を制御する前に、電気仕様と安全状態を確認します。
GPIOを操作するコードは、誤ったピン番号や起動時の初期状態が機器へ影響する場合があります。プログラムを書く前に、端子の電圧・電流・極性・リセット時の状態を確認します。
ピン番号表記を取り違えない
物理コネクター番号、SoCのGPIO番号、ボードライブラリ上の番号は異なる場合があります。公式ピン配置図を使い、電源ピンや予約済みピンをGPIOとして扱わないようにします。GPIOの最大電流を負荷へ直接供給できるとは限らないため、ドライバー回路の必要性も確認します。
安全な初期状態とクリーンアップ
出力を有効化する前に、低・高のどちらが安全状態か、外付けプル抵抗が必要かを確認します。異常終了やCtrl+Cでもピンを安全状態へ戻す設計にし、実機試験は電流制限や負荷切離しなどの対策を用います。ライブラリのAPIだけでは電気的な安全性は保証されません。
コード例
手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。
from contextlib import contextmanager
@contextmanager
def safe_output(pin):
try:
pin.value(0) # 対象回路でLowが安全と確認できた場合だけ使用
yield pin
finally:
pin.value(0)
# 実機ではボード公式ライブラリと配線条件を確認してください。手を動かす課題
実機操作なしで、起動・正常終了・例外終了の各経路が安全状態へ戻るかをモックでテストしてください。