「aibo ers-11x/210で遊ぶ Advent Calendar 2023」の19日目です。
ERS-210のバッテリーについて、Loïc POLLIERさんのレポジトリbattmonを参考に、一から勉強したメモをまとめています。
https://github.com/lpollier/battmon/tree/master
ERS-210のバッテリーの保護回路のGas gage ICから端子2へSBMC, 端子3へSMBDが接続されています。SBMC(クロック)とSBMD(データ)はSMBus通信という2線式インターフェースですが、ほとんどがI2Cと同様に扱うことができるとのことです。
今回はバッテリーのBQ2040とaibo本体の間のSMBus通信を、ESP32を使って監視してみました。スニファー(監視者)というらしいです。
警告
この記事について作者はいかなる責任も負いません。
バッテリーの分解、改造は非常に危険な行為です。
業務外の個人的な検討活動です。
引き出し線の作製
バッテリーと本体の間でSMBus線をプローブできるように、プラグを延長しました。
その引き出し線の途中で端子2と3をプルアップしてESP32へ接続しました。
"I2C sniffer on ESP32"
WhitehawkTailorさんのレポジトリーI2C-snifferを使わせていただきました。ありがとうございます。
https://github.com/WhitehawkTailor/I2C-sniffer
レポジトリにあるmain.cppの名前を変更して拡張子をinoとし、ArduinoIDEからESP32へアップロードしました。
実行結果
- aibo本体にバッテリーを接続した直後の信号
SCL up: 1677 SDA up: 62 SDA down: 72 false start: 1653
1111s
S0001011W+00100001+1S0001011R+00000111+01000101+01010010+01000001+00110010+00110000+00110001+01000010-s
S0001011W+00010110+1S0001011R+11000000+00000010-s
S0001011W+00001000+1S0001011R+01101010+00001011-s
S0001011W+00001001+1S0001011R+00110000+
Start delay
最初の1111sは分かりませんでした。
次のS0001011Wと00100001はaibo本体からの書き込みで、0x0BがBQ2040のデバイス番号、0x21がBQ2040へのデバイス名呼び出し命令であり、続けてaibo本体からは読み出しで、S0001011R+00000111+01000101+01010010+01000001+00110010+00110000+00110001+01000010-s
で、0x0B(BQ2040のデバイス番号)、0x07(デバイス名の長さ), 0x45 (E), 0x52(R), 0x41(A), 0x32(2), 0x30(0), 0x31(1), 0x42(B)、つまりERA-201Bを回答しているようです。
BQ2040のデバイス名や命令は仕様書に書いてありましたので、対応を読んでいると楽しめます。
https://www.ti.com/lit/ds/symlink/bq2040.pdf?ts=1698077054205
デバイス名などはEEPROMの中身を呼び出しているようなので、EEPROMの内容と対比すると良さそうです。
警告をもう一度
今回のAdvent Calenderでバッテリーセルの交換について考察しますが、非常に危険ですので知識と教養を深める目的で調べたことをまとめました。
十分な安全対策を講じなければ、実行することはお勧めできません。
重要なことなので、もう一度書きます。
警告
この記事について作者はいかなる責任も負いません。
バッテリーの分解、改造は非常に危険な行為です。