Contrairement au HC06, sur le HC05, le mode AT n'est pas automatique, il faut, soit, relier une tension de 3.3V sur la broche EN/KEY, soit, appuyer sur le petit bouton du module lors de chaque redémarrage sinon on démarre en mode normal. Toutes les commandes (celles envoyées et celles reçues) doivent se terminer par un retour chariot et un passage à la ligne suivante (\r\n), il faut donc paramétrer le moniteur série pour qu'il prenne en compte ces deux caractères en guise de retour à la ligne en sélectionnant "Les deux, NL et CR" ou "Both NL & CR". Le débit de communication en mode AT est de 38400 b/s c'est sa vitesse par défaut, et le mot de passe par défaut est 1234.
Avec RX/TX de l'Arduino
Dans ce cas, on utilise les broches 0 et 1, le HC05 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 HC05
- 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 HC05. Reliez le HC05 à 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 HC05, 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é.
Branchement pour accéder aux commandes AT à l'aide de la broche EN / KEY de votre module:
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). Notre programme va envoyer ce que vous écrivez dans le moniteur série à votre HC05 avec le fameux retour à la ligne (\r\n), récupérer le retour et l'afficher, il affichera aussi les commandes envoyées..
Ce qu'il vous faut:
- 1x module Bluetooth HC05
- 1x carte Arduino (Uno ou Mega)
- 1x résistance de 1kΩ
- 1x résistance de 2kΩ
Le code:
#include <SoftwareSerial.h> // Cette librairie permet de communiquer en série (UART) avec d'autres pins que 0 et 1
SoftwareSerial HC05(2, 3); // On déclare l'objet en lui assignant deux ports de notre choix
String recu_serie = ""; // Chaîne de réception des commandes que vous tapez dans le moniteur série
String recu_hc05 = ""; // Chaîne de réception des réponses du HC05
/*
Cette fonction vérifie si il y'a des données dans le tampon de réception du moniteur série.
Si il y'en a elle les copie dans la chaîne de réception tant que la chaîne ne contient pas de retour à la ligne.
Si un retour à la ligne est présent, on affiche la chaîne sur le moniteur série, on l'envoie au HC05 et on la vide.
*/
void reception_moniteur_serie() {
if (Serial.available() && (recu_serie.indexOf("\r\n") < 0)) {
recu_serie = recu_serie + Serial.readString();
}
if (recu_serie.indexOf("\r\n") >= 0) {
Serial.print(recu_serie);
HC05.print(recu_serie);
recu_serie = "";
}
}
/*
Cette fonction vérifie si il y'a des données dans le tampon de réception du HC05.
Si il y'en a elle les copie dans la chaîne de réception tant que la chaîne ne contient pas de retour à la ligne.
Si un retour à la ligne est présent, on affiche la chaîne sur le moniteur série et on la vide.
*/
void reception_hc05() {
if (HC05.available() && (recu_hc05.indexOf("\r\n") < 0)) {
recu_hc05 = recu_hc05 + HC05.readString();
}
if (recu_hc05.indexOf("\r\n") >= 0) {
Serial.print(recu_hc05);
recu_hc05 = "";
}
}
void setup() {
Serial.begin(9600); // Initialisation du moniteur série (penser à régler le débit sur 9600 baud)
HC05.begin(38400); // Initialisation d'une liaison série avec le HC05 sur les broches 2 et 3
// (2=RX dans le programme vers TX du module, 3: TX dans le programme vers RX du module)
}
void loop() { // on appelle indéfiniment les deux fonctions de reception
reception_hc05();
reception_moniteur_serie();
}
Branchement pour accéder aux commandes AT à l'aide de la broche EN / KEY de votre module:
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. On va utiliser le moniteur série pour communiquer avec le YP-05 qui va communiquer avec le module. 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 HC05 et le TX USB va sur le RX du HC05.
Ce qu'il vous faut:
- 1x module Bluetooth HC05
- 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 sélectionner le bon port COM dans l'IDE Arduino, mettre le débit en 38400 et "Les deux...." pour les retours à la ligne.
J'ai tapé deux fois "AT" et ENTREE, on peut voir qu'il y'a bien des retours à la ligne.
Branchement pour accéder aux commandes AT à l'aide de la broche EN / KEY de votre module:



















