Le HC05 est un module de communication Bluetooth, il peut être maître ou esclave, ce qui signifie qu'il peut, soit, attendre qu'un appareil vienne s'y connecter, soit, choisir un appareil auquel se connecter à l'aide du bon mot de passe. Il possède 6 broches, les 4 du milieu sont les mêmes que sur le HC06 (RX,TX,GND,Vcc) et pour les deux autres, STATE sert à informer de l'état du module (connecté, en attente...) et EN à choisir un mode de fonctionnement (configuration ou utilisation).

Attention à la version du firmware (commande AT+VERSION pour la connaître), si elle commence par 3.0, la recherche de périphériques n'est pas prise en charge, il est nécessaire de connaître l'adresse MAC des périphériques à appairer, en plus beaucoup de copies du HC05 dans le commerce sont buggés. La version 2.0 est plus complète et mieux documentée mais moins facile à trouver.

 

Les broches

EN / KEY Alimenter en 3.3V pour passer en mode AT sans l'aide du bouton
Vcc C'est l'alimentation, elle doit être reliée à un 5V
Gnd La masse doit être reliée à un pin GND
TXD Transmission
RXD Réception (diviseur de tension conseillé, voir ci-dessous)
STATE Permet de connaître l'état du module

 

Attention: la logique du module est en 3.3V, il est fortement recommandé d'utiliser un pont diviseur de tension (deux résistances) entre le TX de l'Arduino et le RXD du module pour ne pas trop l'user car les pins digitaux de l'Arduino sont en 5V et le RX du module en 3.3V..

Les commandes AT

Sur le HC05, les commandes AT se terminent toutes par un retour chariot et un passage à la ligne suivante (\r\n), il vous faut donc configurer le moniteur série pour qu'il prenne en compte les caractères invisibles de fin de ligne (sélectionner "Les deux, NL et CR" / Both NL & CR). En mode AT, le HC05 communique toujours à 38400 baud, il faut donc bien penser à paramétrer la vitesse de communication dans le moniteur.

Sur le HC05, passer en mode configuration est un peu différent, il faut appliquer une tension de 3.3V sur la broche KEY (ou maintenir le petit bouton poussoir présent sur la carte enfoncé) pendant qu'on l'allume pour le forcer à entrer en mode configuration. Le LED doit se mettre à clignoter lentement. Si vous devez faire une recherche de périphériques ou d'autres actions qui nécessitent d'utiliser des commandes qui redémarre le module (ex: AT+INIT), je vous conseille vivement de passer en mode AT par le biais d'un fil qui amène 3.3V sur la broche EN/KEY sinon il faut être réactif à chaque fois que le module redémarre pour rester en mode AT.

Découvrez les différentes méthodes d'utilisation du mode AT sur un module HC05, en cliquant sur ce lien: 

Utilisation des commandes AT sur un HC05

Action Commande AT Réponse du module Information
Tester la connexion AT OK Pour tester la communication avec le module et savoir si il est en mode AT.
 Redémarrage AT+RESET OK Redémarre le module (et quitte le mode AT si vous ne faites rien)
Version AT+VERSION?

+VERSION:2.0-20100601

OK

Obtient la version du firmware du module (la 3.0... ne fait pas de recherche de périphériques)
Rétablir les valeurs usine AT+ORGL

OK

Restaure le module avec toutes ses valeurs par défaut.
Adresse du module AT+ADDR?

+ADDR:1a:2:b3c4d

OK

Obtient l'adresse MAC qui permet au module d'être contacté, pour cet exemple, c'est l'adresse 00:1a:02:0b:3c:4d
Nom du module
AT+NAME?

+NAME:HC05

OK

Obtient le nom du module tel que les autres le voient
AT+NAME=HC05

OK

Modifier le nom du module
Nom d'un module distant

AT+RNAME?001a,02,0b3c4d
ou
AT+RNAME?1a,2,b3c4d

+RNAME:HC06

OK

Retourne le nom d'un module distant associé à une adresse (attention il faut des virgules et pas deux points)
Rôle

AT+ROLE?

+ROLE:1

OK

Obtient le rôle du module (0=esclave, 1=maître, 2=slave-loop) les commandes de recherche ou qui concernent les autres périphériques nécessitent d'être maître.

AT+ROLE=1

OK

Modifier le rôle
Classe

AT+CLASS?

+CLASS:0

OK

Obtient le type de périphérique Bluetooth (ex: 0x1f1f)

AT+CLASS=0

OK

Modifier la classe
Inquire access code (IAC)

AT+IAC?

+IAC:9e8b33

OK

Obtient le code IAC. (défaut 9e8b33) 0x9e8b33 est le General Inquire Access Code, c'est celui qui cherche tous les appareils Bluetooth

AT+IAC=9e8b33

OK

Modifier le code IAC.
Modèle de requête

AT+INQM?

+INQM:1,9,48

OK

Affiche le modèle de requête:
1: Mode (0=standard, 1=rssi)
2: Nb max de périphériques à qui répondre
3: Timeout (1-48 : 1.28s-61.44s)

AT+INQM=1,9,48

OK

Modifie le modèle de requête

Code PIN

AT+PSWD?

+PSWD:1234

OK

Voir le mot de passe d'appairage

AT+PSWD=1234

OK

Modifier le mot de passe

Options série (UART)

AT+UART?

+UART:38400,0,0

OK

Options pour la communication en série (UART) avec le module:
1: Débit (Bauds)
2: Bit de stop
3: Parité

AT+UART=115200,1,2

OK

Modifier les options UART

Mode de connexion

AT+CMODE?

+CMOD:0
OK

Affiche le mode de connexion:
0: Définir une adresse autorisée
1: Toutes adresses autorisées
2: Slave-loop

AT+CMODE=1

OK

Changer le mode de connection

Adresse Bluetooth liée

AT+BIND?

+BIND:1a:2:b3c4d
OK

Obtient l'adresse liée au module

AT+BIND=1a,2,b3c4d

OK

Définit l'adresse liée au module (attention à mettre des virgules)

Supprimer un périphérique authentifié

AT+PMSAD=001a,02,0b3c4d

OK

Supprime un périphérique, il devra se re-authentifier.

Supprime tous les périphériques authentifiés

AT+RMAAD

OK

Pour remettre à zéro la liste des périphériques authentifiés, ils devront se re-authentifier

Recherche un périphérique authentifié

AT+FSAD=1a,2,b3c4d

OK / FAIL

Essaye de trouver le périphérique authentifié avec cette adresse

Nombre d'authentifiés

AT+ADCN?

+ADCN:0
OK

Affiche le nombre de périphériques authentifiés

Dernier périphérique authentifié

AT+MRAD?

+MRAD:1a:2:b3c4d
OK

Affiche l'adresse du dernier périphérique authentifié

Etat de travail

AT+STATE?

+STATE:INITIALIZED
OK

Obtient l'état de travail du module, valeurs possibles:
INITIALIZED,
READY,
PAIRABLE,
PAIRED,
INQUIRING,
CONNECTING,
CONNECTED,
DISCONNECTED

Initialiser

AT+INIT

OK / FAIL

Initialise la librairie du profile SPP (sors du mode AT si vous ne vous ne l'activez pas)

Recherche de périphériques Bluetooth

AT+INQ

+INQ:14:3:61CF3,1F00,FFCE
+INQ:14:3:61CF3,1F00,FFCB
+INQ:14:3:61CF3,1F00,FFCE
...
OK

 Recherche des périphériques Bluetooth et retourne:
1: L'adresse du périphérique
2: La classe du périphérique
3: La force du signal RSSI

Oublier les périphériques

AT+INQC

OK

Supprime la liste des périphériques trouvés

Demander un appairage

AT+PAIR=1A:2:B3C4D,20

OK / FAIL

Demande un appairage à un périphérique Bluetooth

Se connecter à un périphérique

AT+LINK=1a,2,b3c4d

OK

Se connecter à un autre périphérique Bluetooth

Se déconnecter

AT+DISC

+DISC:SUCCESS
OK

Se déconnecter du périphérique, retours possibles:
SUCCESS,
LINK_LOSS,
NO_SLC,
TIMEOUT,
ERROR

 

Grille des débits: 

1 - 1200 2 - 2400 3 - 4800 4 - 9600
5 - 19200 6 - 38400 7 - 57600 8 - 115200
9 - 230400 A - 460800 B - 921600 C - 1382400


Débit par défaut en mode AT: 38400

 

Recherche de périphériques

La partie la plus intéressante du HC05 c'est de pouvoir trouver les périphériques Bluetooth aux alentours (valable uniquement pour le firmware 2.0, pour le 3.0 il sera nécessaire de connaître l'adresse des périphériques que l'on souhaite appairer). Pour faire une recherche, il ne suffit pas d'appeler la commande AT+INQ pour effectuer une recherche, il faut initialiser et paramétrer certaines choses avant.

AT+INIT Initialisation de la librairie du profile SPP
AT+RMAAD Supprime toutes les associations de périphériques pour ce module
AT+CMODE=0 On configure pour ne se connecter qu'au périphérique spécifié et pas à tous
AT+CLASS=0 On ne choisi aucun type de périphérique à rechercher
AT+ROLE=1 Il faut absolument être en mode maître pour faire une recherche
AT+IAC=9e8b33 Utiliser le GIAC (General Inquire Access Code) qui cherche tous les types d'appareils Bluetooth
AT+INQM=1,9,20 Configuration de la recherche, mode RSSI, on cherche 9 adresses et le timeout est de 20
AT+INQ Vous aurez 9 résultats, si ça ne capte qu'un périphérique, il y aura 9 fois la même adresse.

+INQ:14:3:61CF3,1F00,FFCE
+INQ:14:3:61CF3,1F00,FFCB
+INQ:14:3:61CF3,1F00,FFCE
...
OK

 

Appairage et connexion

Une fois qu'on connais les adresses des périphériques à proximité, on peut afficher leur nom pour trouver celui qui nous interesse. Après, il faudra s'y appairer et enfin s'y connecter (approcher les deux périphériques au maximum). C'est au moment de la commande AT+PAIR que le mot de passe est vérifié.

AT+RNAME?14,3,61CF3 Retourne le nom du périphérique distant
AT+CMODE=0 N'accepter de se connecter qu'à un périphérique spécifique
AT+BIND=14,3,61CF3 Essaye de contacter le périphérique à l'adresse donnée
AT+PAIR=14,3,61CF3,10 S'appairer au périphérique distant (le dernier paramètre, "10", est un timeout)
AT+LINK=14,3,61CF3 Lancer la communication

 

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.