Aqui está o meu caminho para prosseguir com a conexão a um dispositivo Bluetooth HC-05 conectado ao meu arduino. Não é necessário escrever um arquivo como na resposta de Brian, mas a ideia é semelhante. Testei-o com uma configuração de taxa de transmissão 9600 no dispositivo HC-05.
Primeira etapa: parear o dispositivo e fornecer o PIN
Tentei configurar da GUI o emparelhamento, mas não estava funcionando. Aqui está a maneira de prosseguir a linha de comando que funcionou para mim. Primeiro, vamos emparelhar o dispositivo na linha de comando. Corre :
sudo bluetoothctl
Verifique se o dispositivo bluetooth foi iniciado:
# power on
Iniciamos agora o agente que "lembrará o pino" para rfcomm
:
# agent on
Agora, habilitamos o modo de digitalização para encontrar nosso dispositivo e poder emparelhá-lo:
# scan on
Após alguns segundos, o MAC do seu dispositivo deve aparecer. Vamos denotá-lo como depois. Então, você só precisa emparelhar o dispositivo assim:
# pair <MAC>
Você será solicitado a digitar um PIN, por padrão, ele está 1234
no meu dispositivo HC-05. Você pode observar que é possível que você conecte o dispositivo e desconecte-o com uma mensagem como esta:
[CHG] Device 20:16:10:24:29:77 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:16:10:24:29:77 ServicesResolved: yes
[CHG] Device 20:16:10:24:29:77 Paired: yes
Pairing successful
[CHG] Device 20:16:10:24:29:77 ServicesResolved: no
[CHG] Device 20:16:10:24:29:77 Connected: no
mas não é um problema. Você não precisa se conectar, então você pode sair bluetoothctl
digitando Ctrl + D
.
Forneça um arquivo utilizável /dev/rfcomm0
Primeiro, verifique se você não executou nenhum comando rfcomm antes. De fato, mesmo se você fechar Ctrl+C
o programa, ele ainda será executado em segundo plano.
sudo killall rfcomm
Agora você pode executar
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
Observe que, se você tentar escrever na entrada do rfcom, nada aconteceu. Você precisa usar outro programa.
Terceiro e último passo: escreva no /dev/rfcomm0
Existem várias maneiras de escrever no arquivo, mas observe que todas as formas de prosseguir envolvem raiz. Descrevo aqui vários programas que podem fazer isso (para que você possa escolher dependendo da sua necessidade ou do que está instalado no seu sistema, por exemplo). Se você esquecer de executar o programa como root, poderá ter um erro:
stty: /dev/rfcomm0: Device or resource busy
Primeira opção: conectar usando screen
A tela é uma ferramenta muito poderosa. Você pode instalá-lo (é sempre mais útil) usando:
sudo apt-get install screen
e depois corra
sudo screen /dev/rfcomm0
Se você esquecer de executá-lo como root, receberá um erro como o Aleksander:
[screen is terminating]
Para sair, digite "(CTRL + A) +: sair"
Segunda opção: conectar usando minicom
Instale-o
sudo apt-get install minicom
e depois corra
sudo minicom -D /dev/rfcomm0
Se você esquecer de executá-lo como root, você terá um erro como
minicom: cannot open /dev/rfcomm0: Device or resource busy
Para sair, digite "Ctrl + A X".
Terceira opção: miniterm de script python
Faça o download deste script e execute:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
Escreva diretamente no arquivo
Primeiro, execute o seguinte comando (9600 é a taxa de transmissão):
sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Agora você pode escrever neste arquivo como em um arquivo clássico:
sudo su -c "echo 'message' > /dev/rfcomm0"
e, em teoria, ler dele usando
sudo tail -f /dev/rfcomm0
Mas eu não sei, ler não funciona, se algum de vocês tem uma idéia ...