Pages: [1] 2   Go Down
Author Topic: Bluetooth JY-MCU AT command  (Read 1167 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut à tous,
Je viens de faire l'acquisition d'un module bluetooth pour arduino ( le JY-MCU ).
Je branche donc mon module correctement.
Je branche le RX du module sur la pin 3 de l'arduino et le TX sur la pin 2 de l'arduino

J'ouvre l'exemple de SerialSoftware et remplace les "mauvais" bauds par les bauds correct : 9600.
Ensuite, je connecte le tout à mon pc et upload. Mon GSM capte bien le module bluetooth ( c'est une bonne nouvelle ). Mais je n'arrive à envoyé aucune AT command.
Je visite donc plusieurs post dont celui-ci qui me parait le plus pertinent : http://forum.arduino.cc/index.php?topic=101452.30

Ils ont pareil que moi, à un point près. Ils arrivent à recevoir un "ok" en envoyant "AT". Or moi, en envoyant AT, je n'ai absolument rien.
Je décide donc de regarder si mon Serial.available() reçoit quelque chose, et la réponse est oui
Ensuite, je fais pareil pour mySerial.available() et la réponse est non.

C'est à dire que j'envoie bien au module des informations mais que celui-ci ne me réponds pas   smiley-cry

J'ai pensé à envoyer cette fonction directement :
Code:
mySerial.write("AT+VERSION");
Sans résultat, je n'ai aucune réponse.

Voici donc le code :
Code:
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup() 
{
  pinMode(2,INPUT);
  pinMode(3,OUTPUT);
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
   
  if (Serial.available())
    mySerial.write(Serial.read());
   
    mySerial.write("AT+VERSION");
   
}

Merci à tous smiley-wink
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut à tous,
Je viens de faire l'acquisition d'un module bluetooth pour arduino ( le JY-MCU ).

bonsoir
NB je debute aussi avec ce genre de module  smiley-mr-green
et comme j'ai un peu tatonné :

est tu sur que ce soit bien un HC05 et pas un HC06 ?
voir ça
http://hackaday.com/2013/09/04/modifying-the-hc-05-bluetooth-module-defaults-using-at-commands/
et surtout ça
http://www.mcu-turkey.com/wp-content/uploads/2013/01/HC-Serial-Bluetooth-Products-201104.pdf

et aussi ça (voir 3 notes sur la terminaison des commandes AT)
http://elecfreaks.com/store/download/datasheet/Bluetooth/HC-0305%20serail%20module%20AT%20commamd%20set%20201104%20revised.pdf
« Last Edit: September 10, 2013, 02:15:14 pm by Artouste » Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3019
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Mon GSM capte bien le module bluetooth ( c'est une bonne nouvelle ). Mais je n'arrive à envoyé aucune AT command.
De mémoire, ces trucs là n'acceptent pas les commandes AT lorsqu'ils sont couplés à un autre appareil. Donc avant d'envoyer des commandes s'assurer que le modules n'est associé à aucun appareil.
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Mon GSM capte bien le module bluetooth ( c'est une bonne nouvelle ). Mais je n'arrive à envoyé aucune AT command.
De mémoire, ces trucs là n'acceptent pas les commandes AT lorsqu'ils sont couplés à un autre appareil. Donc avant d'envoyer des commandes s'assurer que le modules n'est associé à aucun appareil.
Bonsoir fdufnews
ça dépend du modèle de   module smiley-mr-green

Certains permettent une manip d'entrée en mode AT même une fois appairé, mais pas tous .

(pour les anciens  smiley-cool c'est un peu comme pour les anciens modems RTC avec l'escape sequence "+++" ,  là en manip "HARD"
mais il faut déjà voir à quoi l'on à faire  smiley-mr-green
voir page 3 de
http://www.mcu-turkey.com/wp-content/uploads/2013/01/HC-Serial-Bluetooth-Products-201104.pdf



« Last Edit: September 10, 2013, 04:20:55 pm by Artouste » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,
C'est bien un HC-05 que j'ai.

J'avais bien lu que pour les commandes, il ne faillait pas l'apparié. Je suppose qu'une détection n'apparie pas l'appareil ...
De toutes façon, j'avais essayé de l'apparié mais je n'avais pas trouvé le code :p. C'est pour ça que je comptais utilisé les commandes AT.

Ce qui m'embête avec ce qui est écris sur le HC-05, c'est qu'il faudrait mettre un HIGH level sur la pin 34. Or chez moi, le tout est plastifié. Il ne faut peut être donc pas y touché?

Je poursuit mes recherches :p. Rahh je rage, j'ai fait le programme android et je bloque là dessus :p

Merci !
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



Ce qui m'embête avec ce qui est écris sur le HC-05, c'est qu'il faudrait mettre un HIGH level sur la pin 34. Or chez moi, le tout est plastifié. Il ne faut peut être donc pas y touché?


Bonjour
D'apres ce que j'ai compris , le pin 34 est ressorti sur le pastillage de sortie sur le pin key
regarde le 1er lien (hackaday)

« Last Edit: September 11, 2013, 03:16:35 am by Artouste » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,
Tu as bien compris, parce que c'est ce que j'ai compris aussi  smiley-mr-green .
Alors, je suis arrivé à entré dans le AT command. On le voit grâce à la led qui clignote avec un temps HIGH de 2s et de LOW de 2s. Avant, elle clignotait très rapidement.

Mais j'ai toujours le même problème, aucune AT commande qui fonctionne ( pas de réponse du module ).
Donc j'ai une questions stupide. Est ce possible que l'on grille une partie du composant en inversant TX et RX. Parce que j'ai essayé pour voir si je me trompais pas :p.

Par contre, cette phrase me perturbe :
Code:
The device then boots in AT command mode with a default 38400bits/s speed and listens for all of the AT command set
Cela signifie que le baud rate est à 38400 et non à 9600 bauds ? L'erreur vient peut être de là non ?
Donc, j'ai essayé un nouveau code
J'ai changé les pin ( RXD est sur 10 et TXD est sur 11, ensuite, le key pin sur le smiley-cool
Code:
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX
String command = ""; // Stores response of bluetooth device
                    // which simply allows \n between each
                    // response.
void setup()  
{
          pinMode(8,OUTPUT);
 // Open serial communications and wait for port to open:
 Serial.begin(38400);
 Serial.println("Type AT commands!");
 // SoftwareSerial "com port" data rate. JY-MCU v1.03 defaults to 9600.
 mySerial.begin(38400);
}

void loop()
{
        digitalWrite(8,HIGH);
 // Read device output if available.
 if (mySerial.available()) {
   while(mySerial.available()) { // While there is more to be read, keep reading.
     command += (char)mySerial.read();
   }
   Serial.println(command);
   command = ""; // No repeats
 }
 
 // Read user input if available.
 if (Serial.available()){
     delay(10); // The DELAY!
     mySerial.write(Serial.read());
 }
          mySerial.write("AT");
}// END loop()


Ce qui me fait le plus peur ici, c'est que la ligne
Code:
mySerial.write("AT");
ne me répond pas. Le problème vient réellement du module.
Tu as quelque chose avec ce code artouste ?

EDIT : j'ai essayé les deux méthode d'entrée plus haut, qui sont fonctionnelle ( avec la led clignotante de 2s ) mais sans réponse
EDIT 2 :
J'ai trouvé un gars qui a eu le même problème : http://forums.hexus.net/pc-hardware-components/280969-commands-not-returning-anything-bluetooth-module-hello-d.html

Mais je ne comprend pas sa solution ( l'anglais, je le comprend, enfin je pense) mais je ne comprend pas ses commandes :s :
Code:
Sorted it, forced it into AT mode by holding pin 34 high (as before), then applying power to the board. Then pushing commands at a baud rate of 38400, 8, n, 1. With commands appended with CR+LF (\r\n).
The part I was missing was in this mode for the AT commands, Rx - Rx and Tx - Tx
« Last Edit: September 11, 2013, 04:42:48 am by renaudyes » Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Ce qui me fait le plus peur ici, c'est que la ligne
Code:
mySerial.write("AT");
ne me répond pas. Le problème vient réellement du module.
Tu as quelque chose avec ce code artouste ?

je n'ai pas de HC05 mais un HC06
mais d'apres ce que j'ai compris, il y a une subtilité sur la terminaison des commandes AT selon les modele
dans ton cas cela devrait etre
Code:
mySerial.write("AT\r\n");
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,
Oui je viens de trouvé cette "subtilité" aussi.
Alors, mon problème vient surement du fait que je n'arrive pas à envoyé de commande.
Comment puis je être sur d'envoyé correctement ce que je veux au module ?

Je pense qu'il faut branché le TXD et RXD au pin 1 et 0 de l'arduino ( respectivement TX et RX ).
Comme le module ne me répondait pas, j'ai décidé de changé son nom. Si son nom change, je suis sur de communiquer avec.
Etape :
- Allumer l'arduino avec le module éteint
- Mettre HIGH la pin 34
- Allumer le module par du 5V
Je suis donc maintenant entré dans le mode 1 des AT command et le baud rate  = 38400 *
- Envoyé le code "at+name=Rename\r\n" (doc du module)
- Attente de 2s
- Eteindre le module **
- Reconnecter le module 2s plus tard sans entré dans les AT mode ( donc un LOW level sur la pin 34)
- Regarder avec mon téléphone si cela change quelque chose
Réponse, non  smiley-sad-blue

*Enter to AT mode:
Way1:
Supply power to module and input high level to PIN34 at the same time,the module will enter to AT mode with the baud rate-38400.
** Si je ne déconnecte pas le module, celui-ci reste dans les AT mode et je ne peux plus le voir via mon bluetooth.
Maintenant, je sais pas si en déconnectant celui-ci perd les données acquérient auparavant ...
EDIT oubli du code :

Code:
void setup(){
  pinMode(8,OUTPUT);
  digitalWrite(8,HIGH);
  Serial.begin(38400);
  delay(1000);
  Serial.println("go");
}
void loop(){
  int count =0;
  if (count=0 || count >20){
  Serial.write("at+name=Rename\r\n");
  count ++ ;
  }
  delay(1000);
}
Ca commence à me gaver ce truc :p
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,
Oui je viens de trouvé cette "subtilité" aussi.
Alors, mon problème vient surement du fait que je n'arrive pas à envoyé de commande.
Comment puis je être sur d'envoyé correctement ce que je veux au module ?

Je pense qu'il faut branché le TXD et RXD au pin 1 et 0 de l'arduino ( respectivement TX et RX ).
Comme le module ne me répondait pas, j'ai décidé de changé son nom. Si son nom change, je suis sur de communiquer avec.
...
Ca commence à me gaver ce truc :p

bonjour
pour l'instant reste dans le simple et basique
des fois tu utilise du softserial, des fois du serial hard, des fois un mix des 2  smiley-mr-green
le TXD (--->) du HC va vers un RX arduino (hard 0---> ou soft choisi)
Le RXD<--- du HC va vers un TX arduino " hard 1<--- ou soft choisi              "

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est la première fois que j'utilisais le softwareSerial.
Et je ne sais pas qu'elle est la différence entre le serial hard ou du soft serial.
Enfin bon, je reste sur les pin RX et TX du arduino pour le moment.

Mais, si j'envoie via le moniteur série at+name=Rename\r\n, est ce que ça l'envoie obligatoirement sur les pin TX et RX de l'arduino ? ( et donc passe par le HC ?)
Et si le HC m'envoie des données via les pin TX et RX de l'arduino, est ce que je reçois sa réponse sur le moniteur série ?

Enfaite, j'utilisais autre chose parce que je ne comprenais pas vraiment comment fonctionnait les TX et RX de l'arduino smiley-wink

Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est la première fois que j'utilisais le softwareSerial.
Et je ne sais pas qu'elle est la différence entre le serial hard ou du soft serial.
Enfin bon, je reste sur les pin RX et TX du arduino pour le moment.

Mais, si j'envoie via le moniteur série at+name=Rename\r\n, est ce que ça l'envoie obligatoirement sur les pin TX et RX de l'arduino ? ( et donc passe par le HC ?)
Et si le HC m'envoie des données via les pin TX et RX de l'arduino, est ce que je reçois sa réponse sur le moniteur série ?

Enfaite, j'utilisais autre chose parce que je ne comprenais pas vraiment comment fonctionnait les TX et RX de l'arduino smiley-wink



essaie déjà de suivre pas à pas ça :
attention à bien comprendre la difference entre serial et softserial
tout semble bien detaillé y compris le câblage
http://www.instructables.com/id/Modify-The-HC-05-Bluetooth-Module-Defaults-Using-A/

j'ai testé la compil ça passe
Code:
/*

AUTHOR: Hazim Bitar (techbitar)
DATE: Aug 29, 2013
LICENSE: Public domain (use at your own risk)
CONTACT: techbitar at gmail dot com (techbitar.com)

*/


#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // RX | TX

void setup()
{
  pinMode(9, OUTPUT);  // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
  digitalWrite(9, HIGH);
  Serial.begin(9600);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
}

void loop()
{

  // Keep reading from HC-05 and send to Arduino Serial Monitor
  if (BTSerial.available())
    Serial.write(BTSerial.read());

  // Keep reading from Arduino Serial Monitor and send to HC-05
  if (Serial.available())
    BTSerial.write(Serial.read());
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,
J'avais bien compris ce que c'est le softSerial. Mais je ne comprenais pas ton soft et hard serial :p.

J'ai compris que l'on créé deux liaisons série. Une pour le bluetooth nommé BTSerial prenant RX à 10 et TX  11 et une sur le moniteur série ( via Serial ).

J'ai compris le fonctionnement du code, ... mais chez moi, aucune réponse du module. Même pas de "ok" via AT. Donc, je penche sur un problème de fonctionnement.
Tu avais compris la phrase ici ? :
Code:
Sorted it, forced it into AT mode by holding pin 34 high (as before), then applying power to the board. Then pushing commands at a baud rate of 38400, 8, n, 1. With commands appended with CR+LF (\r\n).
The part I was missing was in this mode for the AT commands, Rx - Rx and Tx - Tx
Parce que je ne la comprend pas et je me demande si elle ne me serait pas utile.
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


J'ai compris le fonctionnement du code, ... mais chez moi, aucune réponse du module. Même pas de "ok" via AT. Donc, je penche sur un problème de fonctionnement.
Tu avais compris la phrase ici ? :
Code:
Sorted it, forced it into AT mode by holding pin 34 high (as before), then applying power to the board. Then pushing commands at a baud rate of 38400, 8, n, 1. With commands appended with CR+LF (\r\n).
The part I was missing was in this mode for the AT commands, Rx - Rx and Tx - Tx
Parce que je ne la comprend pas et je me demande si elle ne me serait pas utile.

calmos  smiley-mr-green

Déjà avec ce code et sans rien faire d'autre , est ce que tu te retrouve dans la situation blink led 2 secondes= confirmation entrée en mode AT ?
si non, là je ne pourrais plus grand chose
si oui
les commandes PC VERS l'arduino, tu les envoie avec quoi ? le terminal intégré de l'IDE arduino ?
si oui , ce n'est peut etre pas le bon choix ( probleme de  fin de ligne)
utilise un "truc" plus paramétrable comme
https://sites.google.com/site/terminalbpp/    (qui permet de forcer du CR/LF sur CR )

à suivre fin de journée pour moi

« Last Edit: September 11, 2013, 07:03:41 am by Artouste » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 24
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,
Alors, oui, j'ai bien la led qui clignote 2 secondes.

J'ai téléchargé ton programme smiley-wink.
J'arrive à me connecter,... envoyé des commandes ( qui n'obtiennent toujours pas de réponses ).

Dans le code que tu m'as donné et qui compile, je n'ai toujours rien. J'ai branché évidemment suivant le code ( RX du HC sur pin 11 de l'arduino et TX sur 10).

J'ai réessayer tous ce que j'ai fait ce matin, c'est à dire
enregistrer un String contenant la commande AT, comme ça, je ne dois même pas l'appelé via le moniteur série.
String a ="AT"
String b = "AT\r\n",
j'ai ensuite fait le BTSerial.write(a) et BTSerial.write(b) mais toujours sans réponse...


Logged

Pages: [1] 2   Go Up
Jump to: