M5StickCとラズパイ4とのBLE(Bluetooth Low Energy)通信を試してみた。 | そう備忘録

M5StickCとラズパイ4とのBLE(Bluetooth Low Energy)通信を試してみた。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

12件のフィードバック

  1. A Reader from China より:

    nice work, decent blog.

  2. fumi より:

    いつも楽しく拝見させていただいています。今回、souichirouさんの記事で、工場の各工程にM5STACKとBME280センサーとダストセンサーを置いて、1台のラズパイでpygameでモニター表示させようと試行錯誤しております。そこで、質問なのですが、見通しの良いところは確かにBLE通信できております。少し障害物などがあるとBLE通信が届かなく、困っています。なので、M5STACKとラズパイの間にもう一台M5STACKを入れて、ゲートウェイとして通信を安定させたいと思いますが、追加のM5STACKに送受信するコードが分かりません。教えて頂けないでしょうか?よろしくお願いいたします。

    • souichirou より:

      fumi さん
      コメントありがとうございます。
      M5Stackをゲートウェイとして使った事は無いのでやってみないと分からない所ですが、
      以下のサイトのコードが参考になるかも知れません。
      https://ambidata.io/samples/m5stack/ble_gw/

      リンク先のコードはM5Stackでスキャンした後、データが見つかった際に(23~28行目)ambientで送信していますが
      ここで再びアドバタイジングするコードになるかと思います。
      上手くいくかどうかはちょっと分かりません。
      ラズパイをもう一台購入してBLEを受信できる位置に設置する方が確実かも知れません。

      • fumi より:

        早々な対応をありがとうございます。
        ゲートウェイのコードの件、何となくイメージが出来ましたので、早速試してみたいと思います。
        また、成功・失敗がありましたら、御報告させていただこうかなと思います。
        pythonやC++等、全くのド素人だった私は、souichirouさんの記事を元に、見よう見まねで少しは
        出来るようになりました。本当に感謝いたします。
        このBLEが成功すれば、この先はシグナルタワーの光源を取得して、CSV・グラフ表示したいと思って
        おります。また、今後とも御教示願います。

  3. fumi より:

    いつも、拝見させていただきています。説明が長くなり申し訳ありません。以前からM5STACKからBLEにてラズパイにデータを送信していたのですが、最近作成したプログラムの中で温湿度センサーをM5STACKに接続し、プログラムはほぼコピペでプログラムを流した時に、データがラズパイ側に送信されず困っております。ラズパイ側のBLUETOOTHCTLでSCAN ONした時に、以前作成した物は「ManufacturerData」として受信できますが、RSSI:-59やTxPower:3等の電波?しか表示されません。また、value[0:4]の内容も正常なら数字4桁でIF文で判別できますが、valueの0桁目からBlepub-01が入っている?みたいです。プログラムは、ほぼ参考にさせていただいていますので、間違いないかと思いますが、他に注意しなければならない点があれば教えて頂けないでしょうか?ちなみに以前作成したプログラムも新たにコンパイルし書き込みなおすと送信できないことが確認できています。よろしくお願いします。

    • souichirou より:

      fumi さん
      おはようございます。
      今、M5Stick-C と RaspberryPi4B で試してみましたがこちらの環境では問題なく動作するようです。
      ※M5Stackでは試していません

      状況からしてBLEでアドバタイジングする前に何らかのエラーになってしまっているのでは無いでしょうか。
      BME280から正しく温湿度を取得出来ていない(接触不良、壊れた)等の理由です。
      1ステップごとにprint文を入れて状況を確認してみたらいかがでしょうか。

      またM5Stack ATOM LiteでもBLEを使っていますが、基本的に同じコーディングです。
      https://www.souichi.club/m5stack/m5stack-optical-sensor/

      • 匿名 より:

        返信ありがとうございます。昨日一日悩みましたが、解決しました。souichirouさんのプログラムを参考に非接触温度センサーと気温湿度センサーの値を取得しようとした時に、データの長さが問題だったようで、0cを0aに修正したら送信できました。長さは0c以内なら問題ないと思いこんでおりましたので、大変勉強になりました。ありがとうございま

  4. p3ishnm2 より:

    ピンポイントで欲しい情報が載ってて本当に助かりました!
    私の場合deepsleepさせる必要はなく,センサの値を連続的に取得・送信したかったので,センサ値の取得とBLEDevice::createServer()以降の処理をloop()内に収めました。それでも問題なく動いています!

    • souichirou より:

      p3ishnm2さん
      deepsleepすると毎回setup()が動いてしまいますからね。
      loop()内でdelayを使えば等間隔で値が取得できると思います。
      記事にも追記しておきます。
      コメントありがとうございます😁

  1. 2022年11月14日

    […] 本当は、Raspberry Piなどで温度を獲得するようなことができないかなと思っているのですが、Xiaomiの温湿度計のBLEデータをラズパイで取得。スマートホームプラットフォーム(Home Assistant, Homebridge, ESPHome)の紹介なども。 – Qiitaこことか、M5StickCとラズパイ4とのBLE(Bluetooth Low Energy)通信を試してみた。 | そう備…ここなんかを見てやってみたのですが、私には少々荷が重いようです。 […]

質問やコメントや励ましの言葉などを残す

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。