← Hub に戻る Library 基礎知識

I2C の基礎

I2C(アイ・スクエア・シー)は、マイコンとセンサをつなぐ 2本線 の通信方式です。 M5StickC Plus の内蔵 IMU も、ボード内部の I2C でつながっています。

関連: IMU の基礎ミニ① IMU 読み出し

I2C とは?

Chocofon(B):
センサごとにジャンパだらけになるの?
AIチューター:
バイブス受信。I2C なら SDA(データ)と SCL(クロック)の2本+電源/GND で、 複数デバイスを同じバスにぶら下げられます。アドレスで相手を選びます。
覚える4つ
  • SDA — データ線
  • SCL — クロック線(タイミング)
  • アドレス — バス上のデバイス番号(7bit が一般的)
  • マスタ/スレーブ — マイコンがマスタ、センサがスレーブ、という役割分担が多い

ほかのつなぎ方との違い(ざっくり)

I2CSPIUART
線の本数2(+電源)多い(CS など)2(TX/RX)
複数デバイスアドレスで選択CS で選択1対1が多い
速さのイメージ中速・配線少なめ高速向きシンプル
ラボでの例内蔵 IMU(用途次第)Serial Monitor

プルアップって何?

I2C の線は「オープンコレクタ/オープンドレイン」寄りの使い方をします。 そのため、線を High に戻すための プルアップ抵抗 が必要です。

AIチューター:
ブレッドボードで外付けセンサを刺すときは抵抗を忘れがち。 一方、M5 の内蔵 IMU はボード上ですでに配線・プルアップ済みなので、 ミニ①ではジャンパなしで読めました。

M5StickC Plus ではどうなっている?

  • 内蔵 IMU(例: MPU6886)は 内部 I2C 接続
  • アプリからは M5Unified の M5.Imu 経由で読む(I2C アドレスを手打ちしなくてよい)
  • 外に出すときは GROVE など別系統の話になる(ピンは M5StickC ピン配置 を参照)
初心者向けの入口

「I2C を学ぶ」=まず内蔵センサをライブラリで読む → あとでアドレス・波形・外付けへ。 いきなりロジックアナライザは必須ではありません。

つまずきやすいポイント

  • アドレスが違う/配線が SDA・SCL 逆
  • プルアップ不足や電圧レベルの不一致(3.3V/5V)
  • 同じバスに長いジャンパを何本も伸ばしすぎる
  • ライブラリが内部バスを既に初期化しているのに、二重初期化してしまう
Chocofon(B):
内蔵なら配線ミスしようがないの、最高……!
管理人:
入口は内蔵で十分。外付けに進むときはアドレス表を正本に残せ。

関連リンク