Voici ma façon de procéder pour me connecter à un appareil Bluetooth HC-05 branché sur mon Arduino. Il n'a pas besoin d'écrire un fichier comme dans la réponse de Brian, mais l'idée est similaire. Je l'ai testé avec une configuration de débit en bauds 9600 sur l'appareil HC-05.
Première étape: associer l'appareil et fournir le code PIN
J'ai essayé de configurer l'association à partir de l'interface graphique, mais cela ne fonctionnait pas. Voici la façon de procéder en ligne de commande qui a fonctionné pour moi. Tout d'abord, jumelons l'appareil à partir de la ligne de commande. Courir :
sudo bluetoothctl
Assurez-vous que le périphérique Bluetooth est démarré:
# power on
Nous commençons maintenant l'agent qui "se souviendra de la broche" pour rfcomm
:
# agent on
Maintenant, nous activons le mode de numérisation pour trouver notre appareil et pouvoir le coupler:
# scan on
Après quelques secondes, le MAC de votre appareil devrait apparaître. Nous le désignerons comme après. Ensuite, il vous suffit de coupler l'appareil comme ceci:
# pair <MAC>
Il vous sera demandé de taper un code PIN, par défaut, il est 1234
sur mon appareil HC-05. Vous pouvez noter qu'il est possible que votre appareil se connecte puis se déconnecte avec un message comme celui-ci:
[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
mais ce n'est pas un problème. Vous n'avez pas besoin de vous connecter, vous pouvez donc quitter bluetoothctl
en tapant Ctrl + D
.
Fournir un fichier utilisable /dev/rfcomm0
Tout d'abord, assurez-vous que vous n'avez exécuté aucune commande rfcomm auparavant. En effet, même si vous fermez avec Ctrl+C
le programme, il fonctionne toujours en arrière-plan.
sudo killall rfcomm
Maintenant, vous pouvez exécuter
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
Notez que si vous essayez d'écrire sur l'entrée de rfcom, rien ne s'est produit. Vous devez utiliser un autre programme.
Troisième et dernière étape: écrire dans le /dev/rfcomm0
Il existe plusieurs façons d'écrire sur le fichier, mais notez que toutes les façons de procéder impliquent root. Je décris ici plusieurs programmes qui peuvent le faire (pour que vous puissiez choisir en fonction de vos besoins ou de ce qui est installé sur votre système par exemple). Si vous oubliez d'exécuter le programme en tant que root, vous pouvez avoir une erreur:
stty: /dev/rfcomm0: Device or resource busy
Première option: se connecter en utilisant screen
L'écran est un outil très puissant. Vous pouvez l'installer (c'est toujours plus utile) en utilisant:
sudo apt-get install screen
puis exécutez
sudo screen /dev/rfcomm0
Si vous oubliez de l'exécuter en tant que root, vous obtiendrez une erreur comme Aleksander:
[screen is terminating]
Pour le quitter, tapez "(CTRL + A) +: quitter"
Deuxième option: se connecter en utilisant minicom
Installez-le
sudo apt-get install minicom
puis exécutez
sudo minicom -D /dev/rfcomm0
Si vous oubliez de l'exécuter en tant que root, vous aurez une erreur comme
minicom: cannot open /dev/rfcomm0: Device or resource busy
Pour le quitter, tapez "Ctrl + A X".
Troisième option: miniterm de script python
Téléchargez ce script et exécutez:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
Écrivez directement dans le fichier
Exécutez d'abord la commande suivante (9600 est le débit en bauds):
sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Vous pouvez maintenant écrire dans ce fichier comme dans un fichier classique:
sudo su -c "echo 'message' > /dev/rfcomm0"
et en théorie lire à partir de celui-ci en utilisant
sudo tail -f /dev/rfcomm0
Mais je ne sais pas lire ne fonctionne pas, si l'un d'entre vous a une idée ...