Eu preciso obter distâncias de vários beacons bluetooth para triangulação, para que eu possa fazer o posicionamento interno.
Eu tentei dar tantos detalhes relevantes quanto possível. Este projeto é para um RPi, mas atualmente estou tentando testá-lo através do meu laptop primeiro. Eu tentei a maior parte do que posso encontrar na internet sobre isso:
A melhor maneira que encontrei para obter os valores do rssi foi hcitool rssi <address of beacon>
A partir daqui, link
Para testar isso, tentei obtê-lo para o meu celular primeiro. Mostrou " Not Connected
". Eu pensei que precisava se conectar primeiro, então tentei muitas maneiras de conectar meu celular:
a) hcittol cc <address of mobile>
b) gatttool -b <address of mobile> -t random --interactive
c) rfcomm connect 0 <address of mobile> 10
Em cada caso, quando eu clicou em par no meu celular, a conexão foi encerrada.
Em seguida, eu emparelhei meu celular da maneira usual no menu bluetooth e tentei hcitool rssi <Address of mobile>
, que finalmente retornou um valor -8
.
Agora que eu tinha para o meu celular, agora mudei para beacons.
Depois, tentei o mesmo para meus beacons. Desta vez eu tive que
primeiro faça hcitool lescan
para obter endereços de balizas disponíveis
em seguida, conecte-se a um dos beacons usando o comando hcitool lecc <address of beacon>
, que retornou o erro Could not create connection: Connection timed out
Então, mais uma vez, tentei me conectar com as outras duas maneiras:
rfcomm connect 0 <address of beacon> 10
que retornou o erro Can't connect RFCOMM socket: Host is down
quando posso ter certeza de que hci0 estava ativo.
Então eu tentei com sudo gatttool -b F1:15:A7:E3:17:63 --interactive
após o qual o modo interativo foi aberto e eu dei o comando connect
. Isso deu erros diferentes após Attempting to connect to <address of beacon>
,
principalmente connect error : Connection timed out
e Error: connect error: Connection refused (111)
Depois, eu preciso usar -t random
do link , link e uma outra fonte que não consigo encontrar agora.
Então eu inseri sudo gatttool -b F1:15:A7:E3:17:63 -t random --interactive
, quando eu dei o comando connect
, recebi o erro Error: connect error: Device or resource busy (16)
e também algumas vezes Error: connect error: Input/Output Error
então eu li que talvez precise reiniciar meu hci0 por hciconfig hci0 down
e, em seguida, hciconfig hci0 up
que fez o truque, o beacon agora se conectou.
Mas, rapidamente, ele foi desconectado depois de dizer "GLib-WARNING **: Descritor de arquivo inválido.
Eu li aqui link que isso é porque de conexões pobres. Tentei manter as balizas mais perto, mas fiz o mesmo.
Então eu tentei de qualquer maneira, pelo menos, obter um valor rssi durante a curta duração que está conectado. Mas, mesmo quando foi assim conectado, eu fiz hcitool rssi <address of beacon>
o erro veio assim:
hcitool rssi F1:15:A7:E3:17:63
Get connection info failed: No such file or directory
Para o qual ainda não encontrei uma solução adequada.
Eu tentei outra maneira de ler o valor rssi, que deu o seguinte:
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
Isso foi antes de ser desconectado.
Eu li aqui link que dizia para ler o 14º byte. já que todos esses números pareciam hexadecimais, isso significaria que cada número é de 1 byte. Mas só tenho 7 números por linha, como posso ler o 14º byte?
Distanciar-se dos beacons tem me incomodado muito e gasto muito do meu tempo. Por favor me ajudem nessa questão. Se você puder me ajudar a encontrar um recurso para me ajudar, agradeço a ajuda.