I2C の基礎
I2C(アイ・スクエア・シー)は、マイコンとセンサをつなぐ 2本線 の通信方式です。 M5StickC Plus の内蔵 IMU も、ボード内部の I2C でつながっています。
I2C とは?
Chocofon(B):
センサごとにジャンパだらけになるの?
センサごとにジャンパだらけになるの?
AIチューター:
バイブス受信。I2C なら SDA(データ)と SCL(クロック)の2本+電源/GND で、 複数デバイスを同じバスにぶら下げられます。アドレスで相手を選びます。
バイブス受信。I2C なら SDA(データ)と SCL(クロック)の2本+電源/GND で、 複数デバイスを同じバスにぶら下げられます。アドレスで相手を選びます。
覚える4つ
- SDA — データ線
- SCL — クロック線(タイミング)
- アドレス — バス上のデバイス番号(7bit が一般的)
- マスタ/スレーブ — マイコンがマスタ、センサがスレーブ、という役割分担が多い
ほかのつなぎ方との違い(ざっくり)
| I2C | SPI | UART | |
|---|---|---|---|
| 線の本数 | 2(+電源) | 多い(CS など) | 2(TX/RX) |
| 複数デバイス | アドレスで選択 | CS で選択 | 1対1が多い |
| 速さのイメージ | 中速・配線少なめ | 高速向き | シンプル |
| ラボでの例 | 内蔵 IMU | (用途次第) | Serial Monitor |
プルアップって何?
I2C の線は「オープンコレクタ/オープンドレイン」寄りの使い方をします。 そのため、線を High に戻すための プルアップ抵抗 が必要です。
AIチューター:
ブレッドボードで外付けセンサを刺すときは抵抗を忘れがち。 一方、M5 の内蔵 IMU はボード上ですでに配線・プルアップ済みなので、 ミニ①ではジャンパなしで読めました。
ブレッドボードで外付けセンサを刺すときは抵抗を忘れがち。 一方、M5 の内蔵 IMU はボード上ですでに配線・プルアップ済みなので、 ミニ①ではジャンパなしで読めました。
M5StickC Plus ではどうなっている?
- 内蔵 IMU(例: MPU6886)は 内部 I2C 接続
- アプリからは M5Unified の
M5.Imu経由で読む(I2C アドレスを手打ちしなくてよい) - 外に出すときは GROVE など別系統の話になる(ピンは M5StickC ピン配置 を参照)
初心者向けの入口
「I2C を学ぶ」=まず内蔵センサをライブラリで読む → あとでアドレス・波形・外付けへ。 いきなりロジックアナライザは必須ではありません。
つまずきやすいポイント
- アドレスが違う/配線が SDA・SCL 逆
- プルアップ不足や電圧レベルの不一致(3.3V/5V)
- 同じバスに長いジャンパを何本も伸ばしすぎる
- ライブラリが内部バスを既に初期化しているのに、二重初期化してしまう
Chocofon(B):
内蔵なら配線ミスしようがないの、最高……!
内蔵なら配線ミスしようがないの、最高……!
管理人:
入口は内蔵で十分。外付けに進むときはアドレス表を正本に残せ。
入口は内蔵で十分。外付けに進むときはアドレス表を正本に残せ。
関連リンク
- IMU の基礎 — 加速度・ジャイロ・傾き
- M5StickC ピン配置と比較
- ミニ①:IMU 読み出し