組み込み開発のためのPython · レッスン 214 / 220

I2C・SPIとホスト側Pythonの境界

ホストPCのPythonからGPIO用I2C/SPIを操作するときの役割分担と注意点を理解します。

標準Pythonだけで、どのPCからもI2CやSPIへ直接アクセスできるわけではありません。対象OS・ボード・ドライバー・ライブラリの対応を確認し、バスの電気条件を先に設計します。

ホスト機器とバス設定を対応させる

Linuxシングルボードコンピューターでは、カーネルドライバーやデバイスファイルを通じてバスへアクセスする構成があります。ライブラリごとに必要な権限やカーネル設定が異なるため、対象ボードの公式手順を使います。SPIのモード、クロック、チップセレクト、I2Cのアドレス形式と速度は、周辺ICの仕様に合わせます。

電圧・プルアップ・バス共有を守る

I2CはSDA/SCLのプルアップ、アドレス重複、バス容量を確認し、SPIは信号線と選択線の接続を確認します。複数の電源系統がある場合、電源を切った機器へ信号だけが入力されないかも調べます。最初の実験は読み取りなど影響の小さい操作から始め、根拠なくレジスタへ書き込まないでください。

コード例

手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。

from pathlib import Path

# Linux環境で、ボードとカーネル設定を確認する例です。
for device in (Path("/dev/i2c-1"), Path("/dev/spidev0.0")):
    print(f"{device}: {'利用可能' if device.exists() else '未検出'}")
# 存在確認だけでは、電圧・配線・デバイス応答の正常性は保証されません。

手を動かす課題

使用するボードの公式資料からI2CまたはSPIの有効化手順、使用ピン、対応電圧、利用ライブラリを記録してください。

参考資料

「7. シリアル通信とハードウェア接続」の章一覧へ