4-5 I2C 通信機能

学習目標

本チュートリアルでは、学習者がNVIDIA Jetson Pandoraプラットフォーム上で I²C(Inter-Integrated Circuit) 通信を使用する方法を解説します。I²Cはシンプルな通信方式で、Pandoraボードがセンサーやディスプレイなどのデバイスと「会話」できるようにします。設定、デバイスのスキャン、データの読み書きの方法をステップバイステップで教えます。


I²C通信とは?

I²C(「アイ・スクエア・シー」と読みます)は、Pandoraが他のデバイス(温度センサーやOLEDディスプレイなど)とデータを交換するための方法です。これは小さな郵便屋さんのようなもので、必要なのは2本の線だけです。

  • SDA (Serial Data): データを送るための線。
  • SCL (Serial Clock): 送信のリズム(タイミング)を制御する線。

I²Cは「マスタ・スレーブ(主従)」方式の通信です。

  • マスタ (Master): Pandoraボード。命令を出す役割です。
  • スレーブ (Slave): センサーやディスプレイなど。Pandoraの指示に従うデバイスです。

各スレーブデバイスには独自の**「アドレス」**(住所)があり、Pandoraはこのアドレスを使って通信したいデバイスを見つけます。


準備作業:I²C ツールのインストール

I²Cデバイスを制御するには、i2c-tools が必要です。もしPandoraにまだインストールされていない場合は、以下のコマンドを実行してください。

sudo apt-get update
sudo apt-get install -y i2c-tools

  • sudo:管理者権限が必要です。
  • apt-get update:ソフトウェアリストを更新します。
  • install i2c-tools:I²Cツールをインストールします。


Pandoraの I²C バス情報

Pandoraプラットフォームには2つのI²Cチャンネル(バス)があります。

  • I2C Bus 1
  • I2C Bus 7

各バスには、センサーやディスプレイモジュールなど、異なるデバイスを接続できます。


実践ステップ

  1. I²Cデバイスのスキャン

    すべてのI²Cバスをリストアップ: 以下のコマンドを実行し、PandoraにどのようなI²Cチャンネルがあるか確認します。

sudo i2cdetect -l

i2c-1 i2c-7 のようなチャンネル名が表示されます。
特定のバス上のデバイスをスキャン: I2C Bus 1 をチェックすると仮定します。

sudo i2cdetect -r -y 1

  • r:読み書きモードでスキャンします。
  • y:自動確認(手動で y を入力する必要がありません)。
  • 1:I2C Bus 1 をチェックします。

出力は以下のようになります:

 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

  • 3c4050 はデバイスのアドレスです(16進数、例えば 0x3C0x400x50)。
  • これは、I2C Bus 1 上にこれらのアドレスを持つデバイス(センサーやディスプレイの可能性があります)が存在することを意味します。
  1. デバイスデータの読み取り アドレスが 0x3C のデバイス(OLEDディスプレイによく見られます)があり、そのレジスタ 0x00 を読み取りたいと仮定します(具体的な場所はデバイスの仕様書を確認してください)。

sudo i2cget -y 1 0x3C 0x00

  • y 1:I2C Bus 1 で操作します。
  • 0x3C:デバイスのアドレス。
  • 0x00:読み取るレジスタ。

戻り値は 0x12(16進数データ)のような値になります。具体的な意味はデバイスの仕様書を調べる必要があります。

3. デバイスデータの書き込み

アドレス 0x3C のデバイスの レジスタ 0x12 に、値 0x05 を設定したいと仮定します。

sudo i2cset -y 1 0x3C 0x12 0x05

  • y 1:I2C Bus 1 で操作します。
  • 0x3C:デバイスのアドレス。
  • 0x12:書き込むレジスタ。
  • 0x05:書き込む値。

同様に、レジスタと値の意味については、デバイスの仕様書を参照して確認してください。


まとめ

  • I²C通信は、Pandoraがセンサーやディスプレイなどのデバイスと2本の線(SDAとSCL)を使ってデータを交換する簡単な方法です。
  • i2c-toolsi2cdetecti2cgeti2cset)を使用すると、スキャン、読み取り、書き込みが簡単に行えます。
  • Pandoraには I2C Bus 1I2C Bus 7 があり、デバイスアドレスを確認する際は i2cdetect を使用します。

 

Copyright © 2026 YUAN High-Tech Development Co., Ltd.
All rights reserved.