Problème bluetooth HC06 avec le serial monitor

Bonjour, j'essaie depuis quelques temps de renommer mon module Bluetooth HC06. Hier j'ai regardé quelques programmes du net qui permettaient de changer le baudrate du HC06... Résultat j'ai bien tapé AT+NAMETen'Bot (c'est Ten'Bot le nom que je veux lui attribuer) sauf que je reçois juste un petit carré dans le serial... mais le nom du module a bel et bien changé. Je ne sais pas s'il faut que je vous joigne quoi que ce soit, n'hesitez pas a demander.

A l'avenir j'aimerai aussi changer le pin avec AT+PIN mais ca ne marche pas (rien dans le serial)

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

joignez tout ce qui est documenté dans les recommandations que vous avez sans nul doute déjà consultées : "Les bonnes pratiques du Forum Francophone”

➜ code, circuit, alim, etc

Bonsoir, voila le programme qui m'a permis de changer le nom du HC06 :

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
 
int ledPin = 13;
int state = 0;
 
void setup() {
	pinMode(ledPin, OUTPUT);
	digitalWrite(ledPin, LOW);
 
    mySerial.begin(9600);
}
 
void loop() 
{
	if(mySerial.available())
	{
		state = mySerial.read();
		if(state == '0')
		{
			digitalWrite(ledPin, LOW);
		}
		else if(state == '1')
		{
			digit`Texte préformaté`alWrite(ledPin, HIGH);
		}
 
	}
}

Je l'utilise avec un arduino mega 2560 (elegoo)
Le module est alimenté en 3,3 V et les pin 10 et 11 sont sur les broches TX et RX du module

Kevin

Bonjour,

Je me rappelle être passé par là, avec mon module HC06 et j'ai pu le configurer sans problème avec un petit script que voici (Assure toi d'être hors connexion pour le paramétrer):

/*Configuration
Arduino     HC06
Tx1     <-  Rx
Rx0     ->  Tx
*/

#include <SoftwareSerial.h>
//                 (Tx, Rx)
SoftwareSerial hc06(2, 3);

void setup() {
  //Initialize Serial Monitor
  Serial.begin(9600);
  Serial.println("ENTER AT Commands:");
  //Initialize Bluetooth Serial Port
  hc06.begin(9600);
}

void loop() {
  //Write data from HC06 to Serial Monitor
  if (hc06.available()) {
    Serial.write(hc06.read());
 }
  
  //Write from Serial Monitor to HC06
  if (Serial.available()) {
   hc06.write(Serial.read());
 }
}

Ensuite, il faut utiliser les commandes AT nécessaires.
Si le problème, peut être utilisé une autre carte Arduino pour le paramétrer.

Qu'entends-tu par changer le PIN ?

Merci pour ta réponse @mathieu1 ! J'essaie ça de suite ! Malheureusement je n'ai pas d'autres cartes pour essayer donc je croise les doigts pour que ça marche :sweat_smile:

Qu'entends-tu par changer le PIN ?

Je ne sais pas ce que tu me demande par là ?

ça m'étonnerait :slight_smile: ça sert juste à allumer ou éteindre la LED en fonction de si on reçoit un 0 ou un 1


sur une MEGA, ne pas prendre SoftwareSerial, vous avez 4 UARTs matérielles, autant les utiliser

Connectez le hc06 sur les pins 18 et 19 de la MEGA (le Tx du module vers le Rx1 et le Rx du module vers le Tx1) et joindre les GND + alimentation adaptée pour votre module.

le code typique:

#define hc06 Serial1 

void setup() {
  Serial.begin(115200);
  hc06.begin(9600); 
}

void loop() {
  if (Serial.available()) hc06.write(Serial.read()); 
  if (hc06.available()) Serial.write(Serial.read()); 
}

Avec cela vous ouvrez le moniteur série à 115200 bauds avec comme fin de ligne CR et LF et tout ce que vous tapez dans le moniteur série va être envoyé vers le HC-06 et tout ce qui provient du HC-06 sera affiché.

Pour tester, tapez une commande connue suivie de return dans le moniteur et vous devriez voir une réponse.

les commandes que vous pouvez essayer

Commande AT Description
ATreturn vérifier la connexion, réponse OK
AT+NAMEzzzzreturn Changer le nom en zzzz. Pas d'espace entre le nom et la commande.
AT+BAUDxreturn changer le débit en bauds, x est le code du débit, pas d'espace entre la commande et le code.
AT+PINxxxxreturn changer le code PIN, xxxx est le code PIN, pas d'espace.
AT+VERSIONreturn afficher les infos de version du firmware

pour les débits vous faites AT+BAUDxreturn

x Vitesse
1 1200bps
2 2400bps
3 4800bps
4 9600bps (défaut)
5 19200bps
6 38400bps
7 57600bps
8 115200bps

mais attention, si vous changez le débit, le code arduino ne fonctionne plus car il attend 9600 bauds.

ça m'étonnerait :slight_smile: ça sert juste à allumer ou éteindre la LED en fonction de si on reçoit un 0 ou un 1

Je sais que ça paraît bizarre (après je suis débutant) mais c'est le seul programme qui m'a permis de changer le code pin du HC06

sur une MEGA, ne pas prendre SoftwareSerial, vous avez 4 UARTs matérielles, autant les utiliser

C'est quoi des UARTs ? Je vais chercher sur Internet mais c'est souvent des explications compliquées... (ou que je comprends pas :sweat_smile:)

Et là je vais téleverser le code que tu m'as donné mais je comprends pas pourquoi il faut mettre 115200 bauds pour le serial

Apres merci aussi pour les commandes AT ça peut servir.
Et désolé ça fait un gros paquet de questions :sweat_smile:

certainement pas celui là

il n'envoie jamais aucune commande au module... répond juste à 0 ou 1 en réception pour changer l'état de la LED...

pour faire simple, un port série "matériel" (géré par un composant sur la carte - Universal Asynchronous Receiver Transmitter)

certainement pas celui là

Oui tu as surement raison j'en ai utilisé une bonne dizaine donc je sais plus trop...

Et du coup ça sert a quoi dans notre cas ?

Et j'ai essayé ton programme avec le Serial a 115200 bauds et "Les deux NL et CR" mais il ne marche pas non plus...

#define hc06 Serial1 

void setup() {
  Serial.begin(115200);
  hc06.begin(9600); 
}

void loop() {
  if (Serial.available()) hc06.write(Serial.read()); 
  if (hc06.available()) Serial.write(Serial.read()); 
}

Je vois que la commande s'envoie (le led interne de la carte clignote) mais il ne renomme pas le module

c'est plus robuste que SoftwareSerial et ça ne met pas à genoux le système d'interruptions de votre MEGA (ce qui crée des soucis si vous recevez beaucoup de messages et que vous avez d'autres usages comme la gestion de bandeaux de leds etc)

est-ce que la commande AT répond OK ? Que dit AT+VERSION ?

Ca ne répond rien, le serial reste vide (toujours avec NL et CR et sous 115200 bauds)
Je ne comprends pas j'ai même essayé d'inverser les pins 18 et 19 toujours rien.

postez une photo de votre module et décrivez les connexions à votre MEGA.

Vous êtes sûr qu'il faut l'alimenter en 3.3V ?

ah - un point important : si le HC-06 est appairé alors il sort du mode commandes AT. Il ne faut pas qu'il soit connecté à un autre module maître pour pouvoir recevoir des commandes AT.

Je doute encore sur ce point là (photo du dos du module ci jointe)

Je savais ceci, je le déconnecte a chaque fois et j'attends que la led se remette a clignoter.

Le fil bleu est relié au pin 18, le violet au pin 19, le blanc au GND et le orange au 5V

c'est correct avec Serial1 sur votre MEGA.

Il semble y avoir des tas de trucs branchés sur votre MEGA - débranchez pour le moment le PCB vert qui est au dessus et branchez directement dans votre MEGA avec rien d'autre de connecté.

Vérifiez aussi que les fils sont "bons" - ces petits fils peuvent se casser à l'intérieur et ça ne se voit pas.

Je ne comprends pas pourquoi cela ne marche pas, mon programme marche sans problème quand j'envoie les informations de commande par le biais du BT en me servant de l'application Appinventor...

il se peut que le firmware soit restreint à sa plus simple expression...

EN doit être mis sur 3v3 sur le module pour le faire entrer en mode programmation (comme un Boot sur STM32) par ailleurs, il n'y a pas besoin d'une carte de développement entre les deux, simplement d'un module UART ou FTDI. les codes postés ici permettent juste d'utiliser le UART présent sur la carte de dev utilisée. c'est bien mais plus chiant a mettre en place.

la liaison USB est un type de communication. les équipements comprennent, eux, en langage Serie, UART, qui est un autre type de communication. il faut donc quelque chose entre deux pour faire la conversion :wink:

D'accord merci @redflag-11, je devrais m'en sortir merci pour tout @J-M-L aussi ! :grinning: