Skip to content
⚡ レーン B · 電装 & ESP32作業中📦 使うパーツ一覧

B1 PCA9685 ×2 の準備と I2C

🎯 ゴール: PCA9685 を 2 枚とも ESP32 から見える状態 (0x40 と 0x41 の両方が応答) にし、シャーシへ 2 段重ねで固定する

⏱ 目安約 60 分
📶 難しさ★★★☆
🔗 前提の作業なし (すぐ始められる)
🧰 使う工具
  • ハンダごて + ハンダ
  • プラスドライバー #1
  • テスター (導通)
  • パソコン (PlatformIO 入り) + USB ケーブル
📦 使う部品
  • PCA9685 ×2
  • M2.5×16 M-F スタンドオフ ×4
  • M2.5×6 なべ ×4
  • ジャンパ線 (SDA/SCL/VCC/GND) ×2 組
  • ESP32 DevKitC
⚠️ 8/22 の実機で起きていたこと (これを直す)

ESP32 は起動するのに、I2C エラーが毎秒 100 回以上出続けていた。スキャナで調べると 0x41 しか見つからず、0x40 が無応答。ファームは 2 枚 (0x40 = 脚+頭、0x41 = 腕+目) を前提にしている。つまり「A0 を閉じた基板 1 枚しかつながっていない」か「0x40 側の配線・電源に問題がある」のどちらか。

手順

board1 だけ A0 パッドをハンダで橋渡し。board0 は何もしない
board1 だけ A0 パッドをハンダで橋渡し。board0 は何もしない

アドレスを決める (A0 ジャンパ)

  1. 2 枚の基板の角にある A0〜A5 のパッドを見る。
  2. board0 (脚+頭): 全部そのまま → 0x40
  3. board1 (腕+目): A0 の上下パッドだけをハンダで橋渡し → 0x41
  4. 基板の裏にマジックで「0x40 脚」「0x41 腕」と書く。
  5. すでに A0 が閉じている基板が 1 枚あるなら、それを board1 にする。2 枚とも閉じていたら片方をハンダ吸い取り線で外す。
I2C アドレス / A0 ジャンパI2C アドレス / A0 ジャンパ
I2C で基板を呼び分ける番号。PCA9685 は標準で 0x40。基板上の A0 というパッドをハンダで橋渡し (ブリッジ) すると 0x41 になる。2 枚使うときは必ず片方だけ A0 を閉じる。
の理屈: 同じ線に 2 枚つなぐので、名前 (アドレス) が違う必要がある。
SDA/SCL/VCC/GND の 4 本を 2 枚へ並列に。V+ には何もつながない
SDA/SCL/VCC/GND の 4 本を 2 枚へ並列に。V+ には何もつながない

ESP32 と 2 枚を I2C でつなぐ

ESP32→ PCA9685 (2 枚とも)
GPIO21SDA
GPIO22SCL
3V3VCC
GNDGND
  • 4 本を 両方の基板へ。ESP32 → board0 → board1 と数珠つなぎでも、ESP32 から 2 本ずつ出しても同じ。
  • I2C ヘッダは 北端 (ch0 側) のピンだけを使う (南端に直立ピンを立てない。頭のシェルに当たる)。
  • V+ 端子台には何もつながない (サーボ電源は別経路。B2)。
ESP32 の使うピン一覧。番号は基板の印字で確認する
ESP32 の使うピン一覧。番号は基板の印字で確認する

両方見えるか確認する

  1. ESP32 を USB でパソコンにつなぎ、シリアルモニタシリアルモニタ
    ESP32 が USB 越しに吐き出す文字ログをパソコンで眺める画面。起動メッセージやエラーはここに出る。速度は 115200。
    を開く (115200)。
bash
pio device monitor -b 115200
  1. B3 のファームが入っていれば、起動後に I2C エラー (i2cWriteReadNonStop Error) が出なくなっていることを確認する。8/22 は毎秒 100 回以上出ていた。
  2. まだ出るなら、i2cdetect 相当のスキャナで 0x40 / 0x41 の両方が見えるかを確認する (管理者に頼めば 1 分で書ける)。片方しか見えない → その基板の VCC/GND/SDA/SCL を導通チェック。
下段 board0 はスタンドオフの肩で押さえ、上段 board1 を M2.5×6 で固定
下段 board0 はスタンドオフの肩で押さえ、上段 board1 を M2.5×6 で固定

シャーシへ 2 段重ねで固定する

  1. board0 (0x40) をシャーシ中央の縦向きボス 4 個の上に置く (穴を合わせる)。
  2. スタンドオフスタンドオフ
    基板を浮かせて重ねるための六角の柱。片側がオスねじ、反対側がメスねじ (M-F)。
    (M2.5×16 M-F) のオスねじ側を基板の穴に通してボスへねじ込む。六角の肩が基板を押さえる。4 本。
  3. board1 (0x41) をスタンドオフの上に載せ、M2.5×6 ×4 で固定。M2.5×10 は長すぎて入らない。
  4. 向きの決まり (2 枚とも同じ): ch0 側を北 (前 = +Y)、サーボプラグ列を右 (+X)、I2C ヘッダは北端。
  5. 上段の 南端 4ch (11〜15) には後でもプラグを挿さない (頭のシェルと干渉)。
💡 ESP32 本体の置き場所

ESP32 は当面 両面テープ / マジックテープで仮止め。頭の中に恒久固定できる場所が無いことが設計で確定しており、置き場所はユーザー判断待ち。歩行実験は頭シェル無しで行うので問題ない。

✅ 完了チェック (この端末に保存されます)

  • board1 の A0 だけをハンダで閉じた (board0 は開放)
  • 基板に 0x40 / 0x41 を書いた
  • SDA/SCL/VCC/GND を 2 枚へ配線した (V+ は未接続)
  • シリアルモニタで I2C エラーが出ない
  • 0x40 と 0x41 の両方が応答する
  • board0 をスタンドオフでボスへ固定した
  • board1 を M2.5×6 で上段に固定した
  • 2 枚とも ch0 が北・プラグ列が右を向いている

0 / 8 完了

📖 このページの用語解説

PCA9685
16 個のサーボ信号を同時に出せる基板。ESP32 からは I2C という 2 本線で命令を受け取る。このプロジェクトでは 2 枚 (board0: 脚+頭, board1: 腕+目) 使う。
I2C (アイ・スクエアド・シー)
SDA (データ) と SCL (クロック) の 2 本線で複数の基板をつなぐ通信方式。同じ線に複数の基板をぶら下げ、各基板の「アドレス」で呼び分ける。
I2C アドレス / A0 ジャンパ
I2C で基板を呼び分ける番号。PCA9685 は標準で 0x40。基板上の A0 というパッドをハンダで橋渡し (ブリッジ) すると 0x41 になる。2 枚使うときは必ず片方だけ A0 を閉じる。
ESP32 (DevKitC)
このロボットの頭脳になる小さなコンピュータ基板。Wi-Fi 内蔵。USB でパソコンとつなぎ、プログラム (ファームウェア) を書き込む。
シリアルモニタ
ESP32 が USB 越しに吐き出す文字ログをパソコンで眺める画面。起動メッセージやエラーはここに出る。速度は 115200。
スタンドオフ
基板を浮かせて重ねるための六角の柱。片側がオスねじ、反対側がメスねじ (M-F)。
PlatformIO (pio)
ファームウェアをビルド (コンパイル) して書き込むためのツール。ターミナルで pio run と打つと使える。

もっと詳しく: 用語集 (全項目)

➡️ この作業が終わったら

この作業の後に直接続く作業はありません。ダッシュボードで全体の状況を確認してください。

⬅ ダッシュボードへ戻る