Go Down

Topic: Connection de modules bluetooth (maitre/esclave) (Read 43778 times) previous topic - next topic

john_lenfr

Comme arduinoreg a indiqué :

J'ai réussi à obtenir quelque chose!  :smiley-mr-green:
merci les amis!


J'esperais qu'il me dise ce qu'il a changé pour que ça fonctionne

Sinon je créerais un nouveau topic

arduinoreg

#31
Jun 12, 2014, 08:53 am Last Edit: Jun 15, 2014, 04:10 pm by arduinoreg Reason: 1
John envoie moi ton programme en MP si tu veux, si j'ai le temps je te dirais ce qui ne va pas?!
Sinon, merci à tous!!!  8)
J'ai réussi à ralentir la vitesse de mon servomoteur grâce à des boucles for et des delay..
Voici une petite video youtube du fonctionnement de mes modules, comme vous pouvez le voir, c'est bien sympa!!  :smiley-mr-green:

http://www.youtube.com/watch?v=jaCfDW3q6Mc

Maintenant mon seul soucis c'est d'améliorer la vitesse de transmission du signal, car y'a un temps de latence on le voit bien  :~
La transmission de données ne peut se faire qu'en 9600 baud? impossible d'aller plus vite avec ces modules bluetooth?

john_lenfr

Ben c'est pas compliqué j'ia utilisé celui que tu as mis là:
http://forum.arduino.cc/index.php?topic=245336.msg1754959#msg1754959

;)

fdufnews


Maintenant mon seul soucis c'est d'améliorer la vitesse de transmission du signal, car y'a un temps de latence on le voit bien  :~
La transmission de données ne peut se faire qu'en 9600 baud? impossible d'aller plus vite avec ces modules bluetooth?

Il faut changer la vitesse de transmission. On peut la pousser jusqu'à 115200.
Une petite recherche sur google avec "HC05 AT commande set" ou "HC06 AT commande set" te retourne une palanquée de doc avec toutes les commandes AT pour ces modules.

john_lenfr

Bon ba je sais pas pourquoi j'arrive à controler mes modules avec Tera Term mais pas avec l'IDE Arduino  :smiley-roll:

Artouste


Bon ba je sais pas pourquoi j'arrive à controler mes modules avec Tera Term mais pas avec l'IDE Arduino  :smiley-roll:

bonjour
si ce sont des HC06, n'oublie pas dans le monitor de l'IDE de selectionner "pas de fin de ligne" à coté de la selection de vitesse

arduinoreg

#36
Jun 12, 2014, 12:37 pm Last Edit: Jun 12, 2014, 01:47 pm by arduinoreg Reason: 1
Ah, ok ça va être super si je peux pousser la vitesse de transmission au max!!! D'accord Artouste !!
Mais j'ai un soucis effectivement sur la réception de caractères......

Voila, quand j'envoie une variable avec le programme maître (à l'aide de BTSerie.print(c);  avec c=25 ) et que je récupère la donnée avec BTSerie.parseInt();   , aucun soucis, ok.
Sauf que lorsque je veux récupérer le caractère qui identifie cette variable par BTSerie.read();  le caractère reçu ne correspond plus, et mieux encore.... cela fait planter la variable qui elle était reçu correctement avant....
Je vous mets la partie du loop qui fait cela ... :

Partie programme esclave :
Code: [Select]
void loop()
{
char typeDeDonnee = BTSerie.read();          <========
int c = BTSerie.parseInt();
Serial.print(typeDeDonnee);                            <========
Serial.print(":");
Serial.println(c);
delay(3000);
}


j'obtiens cela :


Et lorsque j'enlève les deux lignes indiquées aucun problème je reçois sans problème la valeur de c (25)..
Une idée ?

Je vous mets la partie envoie (code maître) :
Code: [Select]
#include <SoftwareSerial.h>  //Software Serial Port  
#define RxD 10  
#define TxD 11  
SoftwareSerial BTSerie(RxD,TxD);  
//=====================================================
void setup()  
{  
Serial.begin(9600);  
 BTSerie.begin(9600);
 delay(500);  
}
//=====================================================
void loop()  
{  
int c = 25;

  BTSerie.print(c);
  delay(3000);
}
   



Artouste


Ah, ok ça va être super si je peux pousser la vitesse de transmission au max!!! D'accord Artouste !!


bonjour
là c'est fdufnews qui t'a repondu , pas moi !  :smiley-mr-green:

pour le HC06 , il faut envoyer à la vitesse active initiale (pour l'exemple là 9600)
AT+BAUDx  , ou x prend une valeur de 1 à 8
exemple pour du passage en 19200
AT+BAUD5
le module repond  par OK19200
toujours à la vitesse active initiale (9600)  et bascule ensuite à la nouvelle vitesse de 19200

table des vitesses
1---------1200
2---------2400
3---------4800
4---------9600
5---------19200
6---------38400
7---------57600
8---------115200

fdufnews

Tes erreurs de transmission sont la conséquence de:

  • un protocole mal ficelé

  • un délai dans une boucle de réception de données


Dans une liaison comportant plusieurs caractères, il faut définir un caractère de début de trame, qui permette d'identifier à coup sur le début du message.
On attend de trouver le caractère en question et seulement après on récupère les "morceaux" pour les interpréter.
Et on ne met pas de temporisation qui risque de faire perdre des caractères.

Tu devrais jeter un oeil là-dessus http://forum.arduino.cc/index.php?topic=102540.msg769229#msg769229

john_lenfr



Bon ba je sais pas pourquoi j'arrive à controler mes modules avec Tera Term mais pas avec l'IDE Arduino  :smiley-roll:

bonjour
si ce sont des HC06, n'oublie pas dans le monitor de l'IDE de selectionner "pas de fin de ligne" à coté de la selection de vitesse


Non ce sont des HC05, mais du coup il fallait que je fasse l'inverse, que je mette "les deux, NLet CR" à la place de "pas de fin de ligne"  :smiley-mr-green:

Du coup ça fonctionne nickel!
Merci Artouste ;)

Artouste




Bon ba je sais pas pourquoi j'arrive à controler mes modules avec Tera Term mais pas avec l'IDE Arduino  :smiley-roll:

bonjour
si ce sont des HC06, n'oublie pas dans le monitor de l'IDE de selectionner "pas de fin de ligne" à coté de la selection de vitesse


Non ce sont des HC05, mais du coup il fallait que je fasse l'inverse, que je mette "les deux, NLet CR" à la place de "pas de fin de ligne"  :smiley-mr-green:

Du coup ça fonctionne nickel!
Merci Artouste ;)

ok
C'est sur que la difference sur ce point peut etre deroutante
mais une fois que tu t'es fait avoir une fois  :smiley-mr-green: , ça devient vite un reflexe quasi pavlovien  8)

Artouste


...
Mais j'ai un soucis effectivement sur la réception de caractères......


Regarde le travail de kas (un membre du forum)
en dehors de l'appli android tres agreable
la partie "arduino" est bien documentée
http://forum.arduino.cc/index.php?topic=173246.0

arduinoreg

#42
Jun 12, 2014, 03:38 pm Last Edit: Jun 12, 2014, 03:55 pm by arduinoreg Reason: 1
Pour le HC06 changer sa vitesse à la fin du setup c'est ok
Pour le HC05  il renvoie "ERROR : (0)"  pour la commande  "BTSerie.print("AT+BAUD7\r\n)"    
(je précise je me suis bien mis en 38400 avant d'entrer cette commande AT du HC05)

arduinoreg

#43
Jun 12, 2014, 03:58 pm Last Edit: Jun 12, 2014, 04:13 pm by arduinoreg Reason: 1
Autant pour moi c'est la commande AT+UART=57600,1,2\r\n  pour le HC05.... J'aurais mieux fait de ne me mettre que sur des HC05 plutôt que d'utiliser deux modules différents...

john_lenfr

Oui, en plus tu peux les déclarer soit Master, soit Slave, c'est pour ça que j'ai pris 2 modules HC05 ;)

Go Up