Ce projet va vous montrer comment faire communiquer en Bluetooth deux Arduino en utilisant un HC05 et un HC06 chacun pourra envoyer du texte à l'autre par leur moniteur série (il faudra deux fenêtres de l'IDE Arduino et sélectionner la carte adéquat pour chacune). Nous allons utiliser une Arduino Uno côté maître donc avec le HC05 et une Arduino Mega côté esclave (HC06) mais n'importe quelle carte Arduino fait l'affaire, il faut juste se renseigner sur les broches utilisables dans ce contexte, vous verrez qu'il y a une différence entre les deux Arduino, l'un autorise RX/TX sur les pins 2 et 3 et le Mega lui ne l'autorise pas on utilise donc les 10 et 11. Je vais essayer de détailler au mieux la configuration des deux modules ainsi que le code contenu sur chaque carte Arduino. Nous utiliserons la librairie SoftwareSerial pour connecter les modules aux cartes afin de pouvoir profiter dans les deux cas d'un moniteur série.
L'esclave (HC06)
Ce qu'il vous faut:
- 1x module Bluetooth HC06
- 1x carte Arduino
- 1x résistance de 1kΩ
- 1x résistance de 2kΩ
Pour commencer nous allons configurer le module HC06, nous allons changer son nom, son mot de passe et sa vitesse. Pour savoir comment le connecter à votre carte Arduino en utilisant la librairie SoftwareSerial, consultez l'article Utilisation des commandes AT sur un HC06 et allez dans la section Avec SoftwareSerial.h. Suivez la marche à suivre jusqu'à obtenir un OK en envoyant AT et à partir de là on peut configurer notre module. Attention, regardez bien les branchements, vu qu'on utilise une Arduino Mega, on doit utiliser les pins 10 et 11 car les 2 et 3 ne peuvent pas servir de RX/TX sur ce modèle. pour connaître les pins autorisés, rendez vous dans la section UART (en série ou Serial). Entrez les commandes ci-dessous:
| Commande à taper: | Réponse du module: | Description: |
AT+NAMEHC06_MEGA |
OKsetname |
On change le nom Bluetooth du module en "HC06_MEGA" |
AT+PIN5678 |
OKsetPIN |
On modifie le mot de passe en 5678 |
AT+BAUD4 |
OK9600 |
On met le débit en 9600 bauds (celui par défaut) |
Téléversez ce code source pour que les deux modules aient la même façon de discuter (avec des retours à la ligne):
#include <SoftwareSerial.h>
SoftwareSerial HC06(10, 11);
long temps;
String recu_serie = "";
String recu_hc06 = "";
void reception_moniteur_serie() {
if (Serial.available() && (recu_serie.indexOf("\r\n") < 0)) {
recu_serie = recu_serie + (char)Serial.read();
}
if (recu_serie.indexOf("\r\n") >= 0) {
Serial.print(recu_serie);
HC06.print(recu_serie);
recu_serie = "";
}
}
void reception_hc06() {
if (HC06.available() && (recu_hc06.indexOf("\r\n") < 0)) {
recu_hc06 = recu_hc06 + (char)HC06.read();
}
if (recu_hc06.indexOf("\r\n") >= 0) {
Serial.print(recu_hc06);
recu_hc06 = "";
}
}
void setup() {
Serial.begin(9600);
HC06.begin(9600);
}
void loop() {
reception_hc06();
reception_moniteur_serie();
}
Le maître (HC05)
Ce qu'il vous faut:
- 1x module Bluetooth HC05
- 1x carte Arduino
- 1x résistance de 1kΩ
- 1x résistance de 2kΩ
Pour configurer le module HC05, il va falloir rentrer un certain nombre de commandes en mode AT, pour savoir comment faire, consultez la page Utilisation des commandes AT sur un HC05 et allez dans la section Avec SoftwareSerial.h. On relie temporairement la broche EN / KEY du module et le 3.3V de l'Arduino pour fixer le mode AT. Nous allons paramétrer le maître pour qu'il soit compatible avec l'esclave, rechercher le module HC06 et s'y connecter avec les commandes suivantes:
| Commande à taper: | Réponse du module: | Description: |
AT+INIT |
OK |
Initialisation de la librairie du profile SPP |
AT+RMAAD |
OK |
Supprimer toutes les associations en cours |
AT+CMODE=0 |
OK |
On ne se connecte qu'à un seul périphérique |
AT+CLASS=0 |
OK |
On ne choisi aucun type de périphérique à rechercher |
AT+ROLE=1 |
OK |
On passe en mode maître |
AT+IAC=9e8b33 |
OK |
On recherche tout type d'appareil Bluetooth |
AT+INQM=1,9,20 |
OK |
Mode RSSI, trouver 9 adresses et timeout 20 |
AT+INQ |
+INQ:14:3:61CF3,1F00,FFD3...+INQ:14:3:61CF3,1F00,FFD5OK |
On recherche les périphériques à proximité |
Notez bien l'adresse du périphérique trouvé c'est elle qui permet de le contacter: 14:3:61CF3. On peut maintenant tester pour voir si le nom est bien celui de notre HC06 et s'y connecter:
| Commande à taper: | Réponse du module: | Description: |
AT+PSWD=5678 |
OK |
On utilise le même mot de passe que le HC06 |
AT+UART=9600,0,0 |
OK |
On modifie les options UART pour être au même débit. |
AT+RNAME?14,3,61CF3 |
+RNAME:HC06_MEGA |
On vérifie que le nom du périphérique est le bon |
AT+CMODE=1 |
OK |
Tous les périphériques sont autorisés |
AT+BIND=14,3,61CF3 |
OK |
On essaye d'accéder à l'adresse |
AT+PAIR=14,3,61CF3,10 |
OK |
On essaye de s'appairer (FAIL si mot de passe différent) |
AT+LINK=14,3,61CF3 |
OK |
Et enfin on se connecte au périphérique |
| Enlever le fil qui relie la broche EN/KEY et le 3.3V sinon au redémarrage il sera en mode AT et pas utilisation. | ||
A partir de là nos deux périphériques sont en communication si le HC05 clignote deux fois rapidement toutes les secondes et si le HC06 est allumé en continu c'est réussi.
Maintenant que vos deux modules se parlent, vous n'avez qu'à modifier la ligne:
HC05.begin(38400);
enHC05.begin(9600);
Affichage du résultat:
| Esclave (HC06) | ![]() |
| Maître (HC05) | ![]() |
| Esclave (HC06) | ![]() |











