M5Stack×obnizOSでNeoPixとIMUの同時使用でエラー



  • M5StackのGrove端子にNeoPixを接続してIMUと同時利用しようとすると下記エラーが出ます。それぞれ単独では正常に動作しています。

    <html>
    <head>
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
      <script src="https://unpkg.com/obniz@2.2.0/obniz.js"></script>
      <script src="https://unpkg.com/m5stackjs/m5stack.js"></script>  
    </head>
    <body>
    <script>
    var obniz = new M5Stack("XXXX-XXXX");
    obniz.onconnect = async function () {
      await obniz.m5display.onWait();
      var leds = obniz.wired("WS2812B", {din:21});
      obniz.setupIMU();
      leds.rgbs([[0,255,0]]);
      while(1) {
        let data = await obniz.accelerationWait();
        obniz.m5display.clear();      
        obniz.m5display.print(data.y);    
      }  
    }
    </script>
    </body>
    </html>
    

    0_1567906096545_6042affa-1e6b-44a3-af87-df6ba03da29a-image.png




  • administrators

    @Google-Homer さん

    obnizにおいて、WS2812BはSPIを使って実装していますが、
    IMUはI2Cを使って実装しています

    1つのピンでI2CとSPIの併用ができないため、両方を同時に使おうとするとエラーになってしまいます。

    M5Stack Grayの仕様を見ると、M5Stack GrayのGrove端子はI2Cのみで、SPIの対応はしていないようでした。
    https://docs.m5stack.com/#/en/core/gray

    ESPの機能としてはSPIが使えるため、WS2812Bを動かすことはできますが、M5Stack Grayとしてはサポートしていないようなので、同時に動かすことはできないのではないかと思います。



  • なるほど、そうなんですね。M5StickCではIMUとNeopix同時に動いていたのでStackでも動くのかなと思っていました。



  • 回避方法みつかり、IMUとNeoPix同時利用できました。IMU I2CのPin21とNeoPix SPIのPin21の競合が原因との事でしたので、NeoPix SPIの方をPin21→Pin26に変更しました。Pin21以外でSPI使えるPinについてはM5Stackの中の人に教えてもらいました。その他も自力で試してみたら、NeoPix Pinとして26以外に23/19/18/2/5/17もIMUと同時利用できました。これで出来た事、理屈的に合っているでしょうか?


  • administrators

    @Google-Homer さん

    はい、Grove端子を使うのではなく、別の端子から動かす分には競合しないので、
    そのやり方で動くのは理屈にあっています。

    なお、GPIO23,19,18はSDカードとかぶっているようですので、SDカードと同時に使う場合はお気をつけください。


 

Recent Projects

  • @nak435 かしこまりました。よろしくお願いします。

    read more
  • @Yuki-Sato さん、

    外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    今週末に確認しますので、お待ちください。

    read more
  • @nak435 時間がかかってすいません、

    なんとか3.3vをgndにつないでFlick Largeを動かしたかったのですが、うまく動かすことができなかったです。
    3.3vをgndを繋がずに接続するというのはライブラリで推奨して伝えることは難しいと思ってます。

    Flick LargeでなくFlick Hatの方で、外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    よろしくお願い致します。

    read more
  • @nak435 ありがとうございます。
    接続は3.3vのgnd以外同じでした。
    エラーはそのせいかもしれませんが、しかし電気的にはgndを繋がない場合3.3vとしてうまく供給できないはずなのでそこが不思議です。

    教えていただいたプログラムの部分を修正して試してみたいと思います。
    また少し時間がかかりそうなのですが、早めに試したいと思います。

    引き続きよろしくお願い致します。

    read more