L'utilisation des commandes AT sur le HC06 est différente du HC05, il est en mode AT tant qu'il n'est connecté à aucun autre appareil Bluetooth, il n'y a que très peu de commandes AT vu qu'il est toujours esclave et elles ne sont pas interprétées lors de retours à la ligne mais lors d'une pause de frappe, il faudra donc paramétrer votre moniteur série ou le logiciel de communication en série (ex: PuTTY) en mode "Pas de fin de ligne" et il faut savoir que, par défaut, le HC06 communique en 9600 et son mot de passe d'origine est 1234. Je vais vous montrer différentes méthodes pour configurer votre module.
Avec RX/TX de l'Arduino
Dans ce cas, on utilise les broches 0 et 1, le HC06 va communiquer directement avec le moniteur série sans passer par du code en utilisant les mêmes pins que l'Arduino quand il communique avec votre PC par la prise USB (téléversement de programmes, entrées/sorties dans le moniteur série...), c'est comme si le module prenait la place de la carte Arduino pour le PC, c'est lui qui reçoit et envoie les données par USB, c'est pour ça qu'on ne peut plus téléverser de programme tant que les broches 0 et 1 sont connectées au module. Le RX du module ira donc sur le RX de la carte et le TX du module sur le TX de la carte.
Ce qu'il vous faut:
- 1x module Bluetooth HC06
- 1x carte Arduino (Uno ou Mega)
- 1x résistance de 1kΩ
- 1x résistance de 2kΩ
Avant de brancher les pins 0 et 1, téléversez un croquis vierge (juste les fonctions setup() et loop() avec rien dedans) car aucun code n'est nécessaire vu qu'on communique directement avec le HC06. Reliez le HC06 à votre carte Arduino en suivant le schéma ci-dessus et branchez votre carte. Allez dans le moniteur série, vérifiez qu'il est bien paramétré comme je l'ai expliqué plus haut. Tapez AT et appuyez ENTREE. Le module doit répondre OK, si c'est le cas, à partir de là vous pouvez utiliser les autres commandes AT du HC06, si ce n'est pas le cas, si la LED ne clignote pas rapidement c'est que vous êtes connecté, il n'est donc pas en mode AT, sinon, il faut essayer avec différentes vitesses de communication, ça a peut-être été modifié.
Avec SoftwareSerial.h
Je trouve cette méthode plus pratique car elle laisse les bornes RX/TX de l'Arduino disponible pour téléverser et permet de présenter ce qui s'affiche dans le moniteur série comme on le souhaite. Notre programme va simuler des bornes RX/TX sur des pins qu'on a choisi sur la carte et les faire communiquer avec celles du module. Le RX de la carte devra être connecté au TX du module et le TX de la carte sur le RX du module, comprennez que RX est le récepteur (l'oreille) et TX le transmetteur (la bouche). Par contre il vous faut remettre le moniteur série à 9600 bauds et qui prends en charge les deux caractères de fin de ligne. Notre programme va envoyer ce que vous écrivez dans le moniteur série à votre HC06, récupérer le retour et l'afficher, il affichera aussi les commandes envoyées..
Ce qu'il vous faut:
- 1x module Bluetooth HC06
- 1x carte Arduino (Uno ou Mega)
- 1x résistance de 1kΩ
- 1x résistance de 2kΩ
Le code:
#include <SoftwareSerial.h>
SoftwareSerial HC06(10, 11); // on configure les pins 10 et 11 comme étant RX et TX d'une communication en série sur l'Arduino Mega
bool reception = false; // true si on est en mode réception et false si on est en mode envoi de commandes
long temps; // cette variable nous sert à pouvoir créer des délais à attendre (timeouts)
String str = ""; // La chaîne de réception
void setup() {
Serial.begin(9600); // On lance la communication avec le moniteur série
HC06.begin(9600); // On lance la communication avec le HC06
temps = millis(); // récupération du nombre de millisecondes écoulées depuis le lancement du programme
}
void loop() {
if (!reception) { // Si on est en mode envoi de commandes
if (Serial.available()) { // Si il y'a des données reçues par le moniteur série (les commandes que vous tapez)
str = Serial.readString(); // On lit la chaîne de caractère
Serial.print(str); // On l'affiche dans le moniteur série
str = str.substring(0, str.length() - 2); // On retire les caractères de fin de ligne (le module ne les prend pas en charge)
HC06.print(str); // On l'envoi au module Bluetooth
str = ""; // On remet la chaîne de réception à zéro
reception = true; // On passe en mode réception
temps = millis(); // On met à jour le temps pour quitter le mode réception au bout d'1sec si rien n'est reçu
}
} else { // Si on est en mode réception
if (HC06.available()) { // Si il y'a des données reçue par le HC06 (la réponse du module)
str = str + (char)HC06.read(); // On lit un caractère de la réponse et on l'ajoute à la chaîne de réception
temps = millis(); // On met le temps à jour pour savoir quand le module s'arrête d'envoyer des données
}
if (millis() - temps > 1000) { // Si ça fait plus d'1 seconde qu'on a rien reçu
if (str.length() > 0) Serial.println(str); // Si la chaîne de réception n'est pas vide, on l'affiche
str = ""; // On remet la chaîne de réception à zéro
temps = millis(); // On met le temps à jour
reception = false; // On passe en mode envoi de commandes
}
}
}
Avec un module USB / série (TTL)
Ces modules permettent à un ordinateur de communiquer directement avec d'autres modules sans passer par une carte programmable par une prise USB. Personnellement j'utilise le YP-05 mais il en existe différents modèles, il faudra le passer en 3.3V pour protéger le RX du module Bluetooth à l'aide de la fiche sur le dessus du module, à gauche c'est 5V et à droite c'est 3.3V, l'idéal serait d'utiliser un diviseur de tension comme pour les montage ci-dessus. Ce coup-ci, on utilisera PuTTY, un logiciel de communication qui supporte différents protocoles, on aurait tout aussi bien pu utiliser le moniteur série de l'IDE Arduino mais c'est pour vous montrer les différentes possibilités. Le module USB communique en série avec le module Bluetooth et le renvoi en TTY par USB ce qui fait que le RX côté USB va sur le TX du HC06 et le TX USB va sur le RX du HC06.
Ce qu'il vous faut:
- 1x module Bluetooth HC06
- 1x module YP-05
À partir de là vous pouvez utiliser le gestionnaire de périphériques de Windows afin de connaître le numéro du port COM qui représente le module.
Et enfin vous pouvez lancer PuTTY et paramétrer votre connexion comme sur l'image ci-dessous. N'oubliez pas que les retours à la ligne ne sont pas pris en compte, il suffit de taper AT pour que le module réponde OK.
Bon, là j'ai tapé deux fois AT ... :D















