我需要從多個藍牙信標的距離進行三角測量,以便我可以進行室內定位。 我儘量給儘可能多的相關細節。這個項目是針對RPi的,但我目前正試圖首先通過我的筆記本電腦進行測試。我已經試過的大部分東西我可以找到有關這個在互聯網上:我們如何在Linux中獲取來自藍牙信標的RSSI值(具體而定)?
我能找到獲得的RSSI值的最佳方式是hcitool rssi <address of beacon>
從這裏Bluetooth LE Signal Strength Linux
爲了測試這一點,我想首先爲我的手機獲取它。它顯示「Not Connected
」。我想我需要先連接,所以我試圖通過多種方式連接我的手機:
一)hcittol cc <address of mobile>
B)gatttool -b <address of mobile> -t random --interactive
C)rfcomm connect 0 <address of mobile> 10
在每種情況下,當我點擊在我的手機對,連接終止。
然後,我將手機與藍牙菜單中的常用方式配對,然後嘗試hcitool rssi <Address of mobile>
,然後最終返回值-8
。
現在,我已經爲我的手機,我現在移動到信標。
然後,我嘗試了我的信標。這一次,我不得不 先做hcitool lescan
獲得可用的信標 的地址,然後使用命令hcitool lecc <address of beacon>
其返回的錯誤Could not create connection: Connection timed out
所以下次,我再次嘗試與其他兩種方式連接連接到信標之一:
rfcomm connect 0 <address of beacon> 10
,當我確定hci0啓動時,它返回了錯誤Can't connect RFCOMM socket: Host is down
。
然後我嘗試了sudo gatttool -b F1:15:A7:E3:17:63 --interactive
之後交互模式打開,我發出命令connect
。這Attempting to connect to <address of beacon>
後給了不同的錯誤, 主要connect error : Connection timed out
和Error: connect error: Connection refused (111)
然後我讀我需要使用-t random
從Bluetooth LE on Raspbian,https://ubuntuforums.org/showthread.php?t=2204808和一個我現在不能找到另一個來源。
所以我進入可sudo gatttool -b F1:15:A7:E3:17:63 -t random --interactive
時,我給了connect
命令,我得到了錯誤Error: connect error: Device or resource busy (16)
,也有時Error: connect error: Input/Output Error
然後我讀,我也許需要通過hciconfig hci0 down
然後hciconfig hci0 up
其中的伎倆重新啓動我的hci0,信標現在已經連接。
但之後,在說出GLib-WARNING **:無效的文件描述符後,它很快斷開連接。
` 我在這裏讀到https://raspberrypi.stackexchange.com/questions/53982/how-to-fix-gatttools-glib-warning-invalid-file-descriptor這是因爲連接不良。我試圖保持信標更接近,但它也一樣。
所以我試圖無論如何至少得到一個rssi值在它連接的短期內。但是,即使當它被如此連接,我做hcitool rssi <address of beacon>
這樣來到了錯誤:
hcitool rssi F1:15:A7:E3:17:63
Get connection info failed: No such file or directory
對此我還沒有找到一個妥善的解決辦法。
我試圖讀取RSSI值的另一種方式,這給了以下內容:
hcidump -R
HCI sniffer - Bluetooth packet analyzer ver 5.37
device: hci0 snap_len: 1500 filter: 0xffffffffffffffff
> 04 0E 04 01 0B 20 00
> 04 0E 04 01 0C 20 00
> 04 0E 04 01 0C 20 00
> 04 0F 04 00 01 0D 20
> 04 0F 04 00 01 16 20
> 04 0F 04 00 01 13 20
這是它得到了斷開連接之前。 我在這裏讀取Obtain RSSI with hcidump,它表示讀取第14個字節。因爲所有這些似乎都是十六進制數字,這意味着每個數字都是1個字節。但是這樣,我每行只有7個數字,我怎麼讀第14個字節?
從信標中獲取距離一直困擾着我很多,並且耗盡了我很多時間。請幫我解決這個問題。如果您可以幫助我找到幫助我這樣做的資源,我將非常感謝您的幫助。