質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • Linux

    3780questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Raspberry Pi

    807questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

  • Bluetooth

    233questions

    Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

  • Debian

    119questions

    Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Bluetooth LEでRSSI値を取得したい

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 3,432

hamar1

score 16

お世話になります。
Bluetooth LEモジュールで苦戦しておりますので、助けて頂けると幸いです。

前提・実現したいこと

LINUX OS(debian)でbluetooth low energyのモジュールとのコネクションを確立し、RSSI値を取得したい。

発生している問題・エラーメッセージ

下記1,2の手順で実行しておりますが、1または2でエラーが発生し、RSSI値を取得できていません。
1は通る時がありますが、安定性がなく、2に関しては常に通っていないです。BDADDRはhcitool lescanで取得しています。
1.hcitool lecc [BDADDR]
2.hcitool rssi [BDADDR]

hcitool lecc [BDADDR]

connection timed out


hcitool rssi [BDADDR]

input output error

試したこと

bluetoothctlでの取得も試みましたが、コネクションを確立した状態でのRSSI値が取得できませんでした。

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

RSSIに関してですが、btmon を走らせて、hcitool lescan すると(btmon の出力として)確認できます。

:: 実行例:
sudo btmon &
sudo hcitool lescan

::表示例:: 

...
11:22:33:44:55:66 (unknown)
> HCI Event: LE Meta Event (0x3e) plen 12                                                                                                                                   [hci0] 26.501285
      LE Advertising Report (0x02)
        Num reports: 1
        Event type: Scan response - SCAN_RSP (0x04)
        Address type: Public (0x00)
        Address: 11:22:33:44:55:66 (AAAA )
        Data length: 0
        RSSI: -82 dBm (0xae)
77:66:55:44:33:22 (unknown)
      LE Advertising Report (0x02)
        Num reports: 1
        Event type: Scan response - SCAN_RSP (0x04)
        Address type: Public (0x00)
        Address: 77:66:55:44:33:22 (ABCD Technologies, Inc.)
        Data length: 0
        RSSI: -94 dBm (0xa2)
...

::環境::
Raspberry Pi 3 model B
Raspbian: 2017-01-11-raspbian-jessie.img

あと、BLEのCharacteristicsの読み書きは、gatttoolを使います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/06 20:07

    >mt08様
    再び回答いただきありがとうございます。
    アドバタイズ状態のBLEモジュールのRSSI値の取得は上記で成功いたしました。

    また、モジュールによってはアドバタイズ時とペアリング時で通信強度が変化すると聞いており、ペアリング時のRSSI値も取得し、記録したいと考えています。
    gatttoolのhelpを見ましたが、rssiの情報がどこに格納されているのかが分かっておりません。
    もしよろしければこちらもお答えいただけるとありがたいです。
    よろしくお願いします。

    gatttoolで読み書き等をする件に関しては調べて進めたく思います。

    キャンセル

  • 2017/02/07 08:38

    hamar1さん、

    シェルのコマンドでは、これ以上、どうするかわかりませんが、
    以前、Raspberry Pi 3へ、Noble(https://github.com/sandeepmistry/noble node.jsのBLEセントラルのジュール) を導入して使用したことがありますが、比較的簡単にいろいろできたと思います。

    (私はどちらかというと、Peripheral(Nordic nrf51)側の方をCで実装してたので、こちらはその動作確認程度でしか使ってないので、詳しいことは説明できませんが、有名なモジュールなので、ネット検索してみてください。)

    RSSIだと、`peripheral.updateRssi([callback(error, rssi)]);`を発行して、コールバックで、値が取得できたと思います。

    キャンセル

  • 2017/02/08 17:50

    mt08様
    ありがとうございます。
    接続ができていないのはPeripheral側がモジュールのみで何もアプリケーションが乗っていないからかもしれないです…。(接続時にno serviceとの通知やinput/output errorが生じています)

    shellを使っていたのはshellコマンドばかりググったら出てきたからになります。
    Nobleを導入してみたく思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3780questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Raspberry Pi

    807questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

  • Bluetooth

    233questions

    Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

  • Debian

    119questions

    Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。