J'utilise donc une mega2560 avec un module bluetooth HC-06 qui ne m'envoie pas de réponse au commande AT. J'ai essayer divers code qui on tous marcher (envoyer un caractère pour allumer ou éteindre une LED par exemple) mais quand j'utilise les commandes AT+NAME elle marche le nom du module change car je vérifie avec mon téléphone mais je reçois rien
voilà le code (il est pas de moi)
#include <SoftwareSerial.h>
SoftwareSerial mySerial(18, 19); // RX, TX
String command = ""; // Stores response of the HC-06 Bluetooth device
void setup() {
// Open serial communications:
Serial.begin(9600);
Serial.println("Type AT commands!");
// The HC-06 defaults to 9600 according to the datasheet.
mySerial.begin(9600);
}
void loop() {
// 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 is necessary to get this working!
mySerial.write(Serial.read());
}
}
#include <SoftwareSerial.h>
SoftwareSerial mySerial(18, 19); // RX, TX
void setup() {
// Open serial communications:
Serial.begin(9600);
Serial.println("Type AT commands!");
// The HC-06 defaults to 9600 according to the datasheet.
mySerial.begin(9600);
}
void loop() {
// Read device output if available.
if (mySerial.available()) {
String command = ""; // Stores response of the HC-06 Bluetooth device
delay(10); // The delay is necessary to get this working!
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()){
mySerial.write(Serial.read());
}
}
command pas remis à zéro et delay(10) inutile la où il était. Ce qui n'est pas le cas de la où il est maintenant.
Voir déjà si ça change quelque chose. Autre détail : normalement il faut piloter le pin key du module qui permet de dire au module si on transmet une donnée série "normale" ou si c'est une commande qu'on lui envoi. C'est pas obligatoire mais ça peut expliquer des choses aussi
Un autre problème potentiel : tu utilises quoi comme caractère de fin de ligne dans le moniteur série ? En bas il y a un menu déroulant pour selectionner si on en mets ou pas. Teste les 4 modes ...
Bonjour
avec le HC06 et pour tester :
pas d'utilisation du pin key
pas de CR/LF en fin de ligne (pas de fin de ligne dans le moniteur serie)
en utilisant un relais serie (sur mega utiliser exemples ---> communications ---->multiserialmega)
et en tapant simplement AT et "touche entrée" le HC06 doit repondre OK.
Artouste : Votre code marche mais le module bluetooth ne me répond toujours pas. J'envoie AT+NAMEXX (pas de fin de ligne dans le serial monitor) le module change bien sont nom en XX mais pas de réponse pour me dire Ok
J'ai brancher la PIN LED du module et quand le module reçois la commande la LED se bloque un court instant puis re-clignote en attente d'appareillage.
Limitations The library has the following known limitations: Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
D'ailleurs pouquoi diable utiliser software serial alors que t'as une mega avec de vrais UART à dispo ??
Sur MEGA tu as d'autre de dispo, utilisable de la même manière que le Serial "normal" relié au PC. Il s'appelle juste Serial1, Serial2 et Serial3. Comparé à softwareSerial ce sont de "vrai" port série (avec un buffer de mémoire entre autre)
Sur MEGA tu as d'autre de dispo, utilisable de la même manière que le Serial "normal" relié au PC. Il s'appelle juste Serial1, Serial2 et Serial3. Comparé à softwareSerial ce sont de "vrai" port série (avec un buffer de mémoire entre autre)
bonjour
C'est que j'ai indiqué plus haut , pour la mega il y a un exemple dans communication ----> multiserialmega
attention
le HC06 à un set de commande AT reduit
pour les miens , à la commande AT+NAMExxxxx (où xxxxx est le nom donné) , la reponse est OKsetname
@Batto
il n'y a pas de pin key sur les HC06 (en tous cas sur les miens
C'est wakeup il a pas le même nom suivant l'assembleur ... Après je pense qu'il y a une R de pull up ou pull down, et que par défaut il accepte donc les commandes at. Mais normalement si on pilote ce pin on peut alors éviter toute mauvaise interprétation de la part du module d'un message qu'on voudrait en fait transmettre au travers du BT
B@tto:
C'est wakeup il a pas le même nom suivant l'assembleur ... Après je pense qu'il y a une R de pull up ou pull down, et que par défaut il accepte donc les commandes at. Mais normalement si on pilote ce pin on peut alors éviter toute mauvaise interprétation de la part du module d'un message qu'on voudrait en fait transmettre au travers du BT
j'ai bien "galeré" au debut avec les differences HC05 HC06
en fait avec le HC06 les commandes AT ne sont possibles qu'hors connection
une fois appairé/connecté (led fixe) les commandes AT ne sont plus interprétées, alors qu'avec un HC05 c'est possibles en gerant le pin key.
Ce qui est un peu logique dans la mesure ou le HC05 peut etre maitre ou esclave, alors que le HC06 n'est qu'esclave
Bon alors j'ai essayer l'exemple est la plus rien ne marche donc je c'est pas qu'est ce qui se passe. Je pense que je vais commander un module hC-05 ou essayer de reprogrammer mon HC-06 en HC-05.
J'ai pas l'habitude avec arduino faut que je m'y face j'ai travailler que avec des PIC jusqu'à présent et en C.
Flamby:
Bon alors j'ai essayer l'exemple est la plus rien ne marche donc je c'est pas qu'est ce qui se passe. Je pense que je vais commander un module hC-05 ou essayer de reprogrammer mon HC-06 en HC-05.
J'ai pas l'habitude avec arduino faut que je m'y face j'ai travailler que avec des PIC jusqu'à présent et en C.
tu ne pourra pas transformer un HC06 en HC05
PIC ou ATMEL c'est la meme chose là, tu discute en serial.
Attention avec le HC06 , ses reponses peuvent etre "laconique"
la premiere chose à faire est de faire une passerelle serial
un point aussi à prendre en compte , verifier que tu n'a pas modifié la vitesse serie
déjà hors arduino ou pic , le HC06 simplement alimenté se connecte t'il avec ton telephone (led fixe) ?
Oui oui comme je disait dans mon premier post j'allumais et éteignais une LED en envoyant un caractère ("a" pour allumer et "e" pour éteindre) depuis un terminal bluetooth sur mon téléphone et Arduino me répondais LED on ou LED off suivant l'action.
Pour la vitesse je n'y ai pas toucher et je pense que si je l'aurait toucher le module ne prendrais pas en compte la commande AT+NAMExxxx
Pour les PIC j'utilisait en cours miKroC, donc faut que je m'habitue à arduino
J'utilise donc une mega2560 avec un module bluetooth HC-06 qui ne m'envoie pas de réponse au commande AT. J'ai essayer divers code qui on tous marcher (envoyer un caractère pour allumer ou éteindre une LED par exemple) mais quand j'utilise les commandes AT+NAME elle marche le nom du module change car je vérifie avec mon téléphone mais je reçois rien
voilà le code (il est pas de moi)
#include <SoftwareSerial.h>
SoftwareSerial mySerial(18, 19); // RX, TX
String command = ""; // Stores response of the HC-06 Bluetooth device
void setup() {
// Open serial communications:
Serial.begin(9600);
Serial.println("Type AT commands!");
// The HC-06 defaults to 9600 according to the datasheet.
mySerial.begin(9600);
}
void loop() {
// Read device output if available.
if (mySerial.available()) {
while(mySerial.available()) { // While there is more to be read, keep reading.
command += (char)mySerial.read();
}