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 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
各バスには、センサーやディスプレイモジュールなど、異なるデバイスを接続できます。
実践ステップ
-
I²Cデバイスのスキャン
すべてのI²Cバスをリストアップ: 以下のコマンドを実行し、PandoraにどのようなI²Cチャンネルがあるか確認します。
i2c-1 や i2c-7 のようなチャンネル名が表示されます。
特定のバス上のデバイスをスキャン: I2C Bus 1 をチェックすると仮定します。
r:読み書きモードでスキャンします。y:自動確認(手動で y を入力する必要がありません)。1:I2C Bus 1 をチェックします。
出力は以下のようになります:
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
3c、40、50はデバイスのアドレスです(16進数、例えば0x3C、0x40、0x50)。- これは、I2C Bus 1 上にこれらのアドレスを持つデバイス(センサーやディスプレイの可能性があります)が存在することを意味します。
- デバイスデータの読み取り アドレスが
0x3Cのデバイス(OLEDディスプレイによく見られます)があり、そのレジスタ0x00を読み取りたいと仮定します(具体的な場所はデバイスの仕様書を確認してください)。
y 1:I2C Bus 1 で操作します。0x3C:デバイスのアドレス。0x00:読み取るレジスタ。
戻り値は 0x12(16進数データ)のような値になります。具体的な意味はデバイスの仕様書を調べる必要があります。
3. デバイスデータの書き込み
アドレス 0x3C のデバイスの レジスタ 0x12 に、値 0x05 を設定したいと仮定します。
y 1:I2C Bus 1 で操作します。0x3C:デバイスのアドレス。0x12:書き込むレジスタ。0x05:書き込む値。
同様に、レジスタと値の意味については、デバイスの仕様書を参照して確認してください。
まとめ
- I²C通信は、Pandoraがセンサーやディスプレイなどのデバイスと2本の線(SDAとSCL)を使ってデータを交換する簡単な方法です。
i2c-tools(i2cdetect、i2cget、i2cset)を使用すると、スキャン、読み取り、書き込みが簡単に行えます。- Pandoraには I2C Bus 1 と I2C Bus 7 があり、デバイスアドレスを確認する際は
i2cdetectを使用します。