Réaliser une liaison Bluetooth entre arduino UNO et Raspberry

Bonjour,

J'aimerais comprendre les rudiments nécessaires à faire fonctionner une liaison série Bluetooth entre 1 Arduino UNO et 1 Raspberry (équipé du Bluetooth).

J'ai déja fais beaucoup d'essais, j'arrive enfin (parce que je n'avais pas compris une subtilité pourtant simple avec le baudrate) à communiquer de mon tél portable à mon Arduino via HC-05 en esclave.

Quelques explications rapides justifiant mes choix, je posséde un Raspberry avec un écran tactile et le Bluetooth.

J'ai développé un petit interface Homme_Machine que j'ai mis au point en python (avec Tkinter pour simuler et dessiner des BP et voyants sur mon écran tactile) tout cela marche comme je l'entend en liaison filaire entre mon raspberry et mon arduino (MEGA).

je peux donc afficher graphiquement sur mon écran tactile l'états des entrées et sorties de mon arduino.
Et je peux decider de changer de mode et envoyer à mon arduino des valeurs d'entrées non pas cablées, mais numérique grâce à Tkinter (qui permet des dessiner des boutons cliquable sur un écran).

Ca c'est mon projet.

Je suis au stade ou j'arrive à envoyer de mon tél des ordres à mon arduino (UNO pour ces essais).

J'ai compris comment utiliser le mode AT pour paramétrer le HC-05.

Je cherche beaucoup sur Internet, ca me permet de vérifier tout seul dans mon coin si ce que je trouve marche.

Mais je ne trouve pas toujours d'info fiables, ou je ne les comprend pas.

Ma premiére question concerne le choix de la vitesse de communication entre l'Arduino et le HC-05.

J'ai lu beaucoup qu'il fallait utiliser une liaison serie Rx, Tx entre arduino et HC-05 autre que celle des broches 0 et 1, ca j'ai pigé.

J'ai lu aussi beaucoup qu'il fallait configurer le HC-05 par la commande AT+UART=9600,0,0 (9600 bauds) MAIS QUE d'autres disent plutôt de la configurer à 38400 bauds.

Perso, j'ai constaté que ca marche aussi bien en 9600 qu'en 48400 (pourvu que se soit clairement indiqué à l'arduino).

ALORS:

Quelle vitesse mettre 9600, 48400, autres, et pourquoi SVP?

J'aurais d'autre question car je n'arrive pas a faire marcher mon bazar avec le Raspberry qui voit bien le HC-05 mais ne veut pas s'apairer ou connecter avec.

Si vous utilisez SoftwareSerial pour la liaison avec votre HC-05, la qualité de la communication dépend de la disponibilité de votre Arduino pour traiter les interruptions liées à l'émission ou réception de données.

Plus vous avez un débit (bauds) élevé, plus fréquentes seront les interruptions
Plus vous envoyez ou recevez des données (longueur des messages), plus fréquentes seront les interruptions

Cependant quand vous êtes en train de traiter une interruption, le code n'est plus interruptible, ce qui fait par exemple que SoftwareSerial ne sait pas émettre et recevoir en même temps.

Donc si vous avez de longs messages, des communications fréquentes, en émission et en réception vous avez beaucoup d'interruptions et il arrive un moment où votre pauvre petit arduino ne suit plus et vous perdez des données en émission ou réception.

Plus le débit est élevé, plus le risque est important, mais ça dépend quand même du volume des messages.

➜ il n'y a pas de règles d'or pour le débit à choisir. La pratique montre que 9600 est relativement robuste dans la plupart des cas.

C'est noté, va alors pour 9600.

Dans mon cas, si je lis par les commandes AT+...? j'ai comme paramétres
ROLE:0 (0=esclave, 1=maitre)
CLASS: 1F00 (je ne sais pas ce que c'est)

CMODE: 0 (dans la doc que j'ai trouvé, il y a sans doute une erreur de frappe, il y a 2 explication différentes uniquement pour CMODE = 1

"AT+CMODE=1
Set the module to make pair with the other random Bluetooth module (Not specified address). The
default is this mode.
AT+CMODE=1
Set the module to make pair with the other Bluetooth module (specified address). If set the module
to make pair with random one first, then set the module to make pair with the Bluetooth module has
specified address. Then the module will search the last paired module until the module is found. )"

Je présume, peut-être à tort, que la partie Arduino+HC-05 que j'ai développé pouvant fonctionner sans être connectée avec le raspberry, il vaut mieux que je la mette en SLAVE (ROLE=0).

Je pose toutes ses questions car je apparemment je n'arrive à connecter mon raspberry pi au HC-05 sur mon arduino.

Mais j'avoues, faute de savoir ce que je fais, je clique bêtement sur ce que me propose le menu de l'appli "blueman-manager" présente sur mon raspberry.

Si quelqu'un à un support bien fournit à me suggérer pour que je puisse comprendre (si possible) ce que je dois faire (même en anglais) ca serait cool!

je crois que c'est le COD

sur une documentation que j'ai trouvé, il y a qu'une seul définition.

Je n'ai pas trop l'habitude du bluetooth sur linux et blueman, le système peut-il reconnaitre le profile SPP

Je n’utilise pas BT sur linux (je me sers de Linux pour mes serveurs) - je n’ai jamais essayé de mettre un HC-05 sur un RPi - donc je ne peux pas trop aider là…

Bonjour,

Merci pour vos réponses.

J'ai dû mal exposé le sujet, en fait j'ai 1 raspberry pi equipé déja du BT à la base, et un UNO auquel j'ai adjoint un HC-05.

J'aimerais établir une liaison bidirectionnelle BT entre le Raspberry et l'Uno.

Avec une appli standard piochée sur Google Play, j'arrive à communiquer dans le sens Android ---> Uno.
Ça me permet de confirmer que mon montage marche.

Mais je patauge effectivement avec Linux sur le Raspberry pour paramétrer correctement le "bazar".

Je pense que je ne prend pas le pb du bon côté, je vais voir du côté Python comment coder un truc pour une liaison série BT Raspberry <---> Uno

Et si nécessaire, je reviens vers vous, merci.

si vous faites un truc du genre (je suis sur mon iPhone donc commandes approximatives)

sudo systemctl status bluetooth
ça vous dit que le BT est activé sur le RPi ?

sinon de mémoire on peut activer avec sudo systemctl start bluetooth

ensuite un
sudo bluetoothctl
vous permet de rentrer dans une séquence interactive et faire des trucs du genre

power on
agent on
scan on

et votre HC-05 devrait apparaître dans la liste des périphériques disponibles ➜ notez l'adresse MAC <macaddress> et faites un pair <macaddress>

Vous pouvez alors utiliser l'utilitaire rfcomm pour créer une liaison série :

sudo rfcomm bind /dev/rfcomm0 < macaddress>

Maintenant /dev/rfcomm0 est associé à votre HC-05 en tant que port série. Vous pouvez utiliser ce device pour la communication série SPP avec le HC-05.

minicom -b 9600 -o -D /dev/rfcomm0

Je ne suis pas sûr des commandes, explorez de ce côté là pour assurer le pairing.

C'est une trés bonne piste, effectivement dans mes essais, ça me parle de rfcomm, mais je n'étais pas allé plus loin.

Bonsoir,

J'ai effectué des heures de recherches et d'essais, j'ai lu des tutos 100% bidons, et d'autres (en anglais) qui atteignent des sommets inaccessibles compte tenu de mes NON compétences info et linuxiennes.

J'ai dû mal a renoncer, mais pour l'instant, je met le sujet en veille.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.