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? |
|
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 |
|
Restaure le module avec toutes ses valeurs par défaut. |
| Adresse du module | AT+ADDR? |
|
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? |
|
Obtient le nom du module tel que les autres le voient |
AT+NAME=HC05 |
|
Modifier le nom du module | |
| Nom d'un module distant |
|
|
Retourne le nom d'un module distant associé à une adresse (attention il faut des virgules et pas deux points) |
| Rôle |
|
|
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. |
|
|
|
Modifier le rôle | |
| Classe |
|
|
Obtient le type de périphérique Bluetooth (ex: 0x1f1f) |
|
|
|
Modifier la classe | |
| Inquire access code (IAC) |
|
|
Obtient le code IAC. (défaut 9e8b33) 0x9e8b33 est le General Inquire Access Code, c'est celui qui cherche tous les appareils Bluetooth |
|
|
|
Modifier le code IAC. | |
| Modèle de requête |
|
|
Affiche le modèle de requête: |
|
|
|
Modifie le modèle de requête |
|
| Code PIN |
|
|
Voir le mot de passe d'appairage |
|
|
|
Modifier le mot de passe |
|
| Options série (UART) |
|
|
Options pour la communication en série (UART) avec le module: |
|
|
|
Modifier les options UART |
|
| Mode de connexion |
|
+CMOD:0OK |
Affiche le mode de connexion: |
|
|
OK |
Changer le mode de connection |
|
| Adresse Bluetooth liée |
|
+BIND:1a:2:b3c4dOK |
Obtient l'adresse liée au module |
|
|
OK |
Définit l'adresse liée au module (attention à mettre des virgules) |
|
| Supprimer un périphérique authentifié |
|
OK |
Supprime un périphérique, il devra se re-authentifier. |
| Supprime tous les périphériques authentifiés |
|
OK |
Pour remettre à zéro la liste des périphériques authentifiés, ils devront se re-authentifier |
| Recherche un périphérique authentifié |
|
OK / FAIL |
Essaye de trouver le périphérique authentifié avec cette adresse |
| Nombre d'authentifiés |
|
+ADCN:0OK |
Affiche le nombre de périphériques authentifiés |
| Dernier périphérique authentifié |
|
+MRAD:1a:2:b3c4dOK |
Affiche l'adresse du dernier périphérique authentifié |
| Etat de travail |
|
+STATE:INITIALIZEDOK |
Obtient l'état de travail du module, valeurs possibles: |
| Initialiser |
|
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 |
|
+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: |
| Oublier les périphériques |
|
OK |
Supprime la liste des périphériques trouvés |
| Demander un appairage |
|
OK / FAIL |
Demande un appairage à un périphérique Bluetooth |
| Se connecter à un périphérique |
|
OK |
Se connecter à un autre périphérique Bluetooth |
| Se déconnecter |
|
+DISC:SUCCESSOK |
Se déconnecter du périphérique, retours possibles: |
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.







