⚡ レーン B · 電装 & ESP32作業中
B1 PCA9685 ×2 の準備と I2C
🎯 ゴール: PCA9685 を 2 枚とも ESP32 から見える状態 (0x40 と 0x41 の両方が応答) にし、シャーシへ 2 段重ねで固定する
🧰 使う工具
- ハンダごて + ハンダ
- プラスドライバー #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 側の配線・電源に問題がある」のどちらか。
手順
アドレスを決める (A0 ジャンパ)
- 2 枚の基板の角にある A0〜A5 のパッドを見る。
- board0 (脚+頭): 全部そのまま → 0x40。
- board1 (腕+目): A0 の上下パッドだけをハンダで橋渡し → 0x41。
- 基板の裏にマジックで「0x40 脚」「0x41 腕」と書く。
- すでに A0 が閉じている基板が 1 枚あるなら、それを board1 にする。2 枚とも閉じていたら片方をハンダ吸い取り線で外す。
I2C で基板を呼び分ける番号。PCA9685 は標準で 0x40。基板上の A0 というパッドをハンダで橋渡し (ブリッジ) すると 0x41 になる。2 枚使うときは必ず片方だけ A0 を閉じる。 の理屈: 同じ線に 2 枚つなぐので、名前 (アドレス) が違う必要がある。
両方見えるか確認する
- ESP32 を USB でパソコンにつなぎ、シリアルモニタシリアルモニタ
ESP32 が USB 越しに吐き出す文字ログをパソコンで眺める画面。起動メッセージやエラーはここに出る。速度は 115200。 を開く (115200)。
bash
pio device monitor -b 115200- B3 のファームが入っていれば、起動後に I2C エラー (i2cWriteReadNonStop Error) が出なくなっていることを確認する。8/22 は毎秒 100 回以上出ていた。
- まだ出るなら、
i2cdetect相当のスキャナで 0x40 / 0x41 の両方が見えるかを確認する (管理者に頼めば 1 分で書ける)。片方しか見えない → その基板の VCC/GND/SDA/SCL を導通チェック。
シャーシへ 2 段重ねで固定する
- board0 (0x40) をシャーシ中央の縦向きボス 4 個の上に置く (穴を合わせる)。
- スタンドオフスタンドオフ
基板を浮かせて重ねるための六角の柱。片側がオスねじ、反対側がメスねじ (M-F)。 (M2.5×16 M-F) のオスねじ側を基板の穴に通してボスへねじ込む。六角の肩が基板を押さえる。4 本。 - board1 (0x41) をスタンドオフの上に載せ、M2.5×6 ×4 で固定。M2.5×10 は長すぎて入らない。
- 向きの決まり (2 枚とも同じ): ch0 側を北 (前 = +Y)、サーボプラグ列を右 (+X)、I2C ヘッダは北端。
- 上段の 南端 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 が北・プラグ列が右を向いている
📖 このページの用語解説
- 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 と打つと使える。
もっと詳しく: 用語集 (全項目)
➡️ この作業が終わったら
この作業の後に直接続く作業はありません。ダッシュボードで全体の状況を確認してください。