M5StackにM5StickCのHATを繋ぐのを試してみた。
M5StickC用の拡張パーツで、ENV-HATというのを入手して使っていたのだが、これをM5Stack(Gray)につないで動かしたくなった。
M5Stackの内蔵の磁気センサーのかわりにENV-HATの磁気センサーを繋げて、M5Stackの9軸センサーのうち6軸だけ使って残りの3軸の磁気センサーをENV-HATのセンサーを使うというのを試そうと思ったからだ。
あと、M5Stack用にも似たような環境センサーユニット(M5STACK-ENV-UNIT)というGrove接続の拡張パーツが売っているのだが、同じような製品を重複して購入するのはちょっと勿体ないからというのもある。
HATはピン配置が違うので、そのままM5Stackに挿すことはできない。
なので、簡単な変換基板を手づくりで作った。
自分の手元にあるM5Stack(Gray初期型)で、ENT-HATの磁気センサーのBMM150を動かすことができた。気温等のセンサーについては あとで試してみる予定だ。
—
M5Stack Gray初期型でなければならないのには理由がある。
まず、M5Stackは、M5StickCとではI2Cのバスの外部への出し方が違っている。
M5シリーズに使われているESP32プロセッサには複数のI2Cバスがある。
MStackは、I2Cバスで内蔵されているジャイロセンサー等のIMUセンサーと同一のI2Cバスが外部拡張のピンに出てきている。
M5StickCは、IMUのI2Cバスと、GroveポートのI2Cバスと、内蔵IMUのバスとが全部別になっている。
そういう理由で、M5Stackの場合には、I2Cバスにつなげた部品のI2Cアドレスがぶつからないように注意する必要がある。
そして、M5Stackは、出荷時期により搭載されているセンサーが異なるので、注意する必要がある。
・M5Stack BasicタイプはIMU無し。
・M5Stack Gray初期型はIMUにMPU9250という部品が搭載されているが、Grayのその後のモデルはSH200QやMPU6886と磁気センサーBMM150が搭載されている。
・M5GoとかM5Stack Fireも、出荷時期でセンサー部品が異なっている。
なので、可能性としてはM5StackにENV-HATを接続して動かそうとすると、I2Cがアドレスがぶつかってしまって動かないM5Stack本体に当たる可能性があるということだ。