Composant · Communication
HC-05 Bluetooth Module
Le HC-05 ajoute une série Bluetooth à un robot — appairez-le à votre téléphone pour le piloter ou diffuser des données, sur les broches TX/RX d'un lien filaire.
Présentation
Le HC-05 est la façon la plus simple de rendre un robot sans fil. C’est un module Bluetooth qui se comporte comme un câble série sans câble : votre microcontrôleur lit et écrit des octets sur ses broches TX/RX exactement comme sur USB, mais l’autre bout est un téléphone ou portable appairé en Bluetooth. Envoyez un F depuis une appli téléphone et votre robot avance — pas de Wi-Fi, pas de réseau, pas de comptes.
Fonctionnement
Le HC-05 implémente le profil port série (SPP) Bluetooth. Une fois appairé, tout ce que le module reçoit par radio apparaît sur sa broche TX, et tout ce que vous envoyez à sa broche RX part par radio vers l’appareil appairé. Votre code utilise simplement le port série — Serial.read() / Serial.print() — et la liaison sans fil est invisible. La configuration (nom, vitesse, rôle maître/esclave) se fait avec des commandes AT dans un mode commande séparé, mais pour la plupart des robots les défauts conviennent.
Quand l’utiliser
Prenez un HC-05 quand vous voulez commander ou surveiller un robot sans câble :
- Robots pilotés au téléphone — une appli Bluetooth envoie des ordres de conduite que le robot lit en série et convertit en commande moteur.
- Télémétrie live — diffusez valeurs de capteurs ou odométrie vers un portable pendant que le robot roule.
- Réglage sans fil — ajustez des paramètres à la volée au lieu de reflasher.
Si le robot utilise déjà un ESP32, inutile d’ajouter un HC-05 — l’ESP32 a Bluetooth et Wi-Fi intégrés. Le HC-05 est le module qui donne à un Arduino Uno la même astuce sans fil.
Câblage et pièges
- Croisez les lignes série : TX module → RX carte, RX module → TX carte. L’inverser est la cause n°1 des « ça ne se connecte pas ».
- Divisez la broche RX à 3,3 V depuis une carte 5 V comme l’Uno.
- Libérez le port série matériel pendant l’envoi de code, ou utilisez une paire en série logicielle — le module et le programmateur USB ne peuvent pas partager l’unique UART matériel de l’Uno.
- Appairez d’abord (PIN généralement 1234/0000) ; la LED embarquée montre l’état de connexion.
Brochage
| Broche | Nom | Rôle |
|---|---|---|
| 1 | EN / KEY |
Maintenue au HAUT à la mise sous tension pour entrer en mode commande AT |
| 2 | VCC |
3,6–6 V. Le breakout régule à 3,3 V en interne |
| 3 | GND |
Masse |
| 4 | TXD |
Le module émet. Va vers le RX du microcontrôleur |
| 5 | RXD |
Le module reçoit. Logique 3,3 V — divisez un signal 5 V |
| 6 | STATE |
HAUT quand un appareil est connecté. Vraiment utile, généralement ignorée |
La broche STATE mérite mieux. Un robot qui la lit sait quand son téléphone est sorti
de portée, ce qui fait la différence entre s’arrêter sûrement et foncer dans un mur en
attendant une commande qui n’arrivera jamais.
Le câbler à un Arduino
Les deux erreurs ici expliquent la plupart des rapports « ça ne veut pas se connecter ».
| HC-05 | Arduino Uno | Note |
|---|---|---|
| VCC | 5 V | Le régulateur embarqué s’en charge |
| GND | GND | |
| TXD | Broche 10 (RX SoftwareSerial) | TX module → RX carte. Croisez-les |
| RXD | Broche 11 via diviseur (TX SoftwareSerial) | TX carte → RX module, via diviseur 2:1 |
| EN | Laissée en l’air | Seulement pour le mode AT |
| STATE | Toute broche numérique | Vérification de connexion optionnelle |
Croisez les lignes série
TX parle, RX écoute. Deux appareils qui parlent tous deux sur le fil connecté n’obtiennent rien, et il n’y a pas d’erreur — le module s’appaire bien, la LED passe fixe, et aucune donnée ne bouge. TX module vers RX carte. RX module vers TX carte.
Divisez la ligne RX
RXD est une entrée 3,3 V et un Arduino Uno sort 5 V. Deux résistances :
Arduino TX ──── 1 kΩ ──┬── HC-05 RXD
│
2 kΩ
│
GND
TXD n’exige pas de diviseur dans l’autre sens — la sortie 3,3 V du module franchit le seuil
haut 3,0 V de l’Uno.
N’utilisez pas les broches 0 et 1
L’Uno a un UART matériel et le programmateur USB le possède déjà. Y câbler le module
fait échouer les envois tant qu’il est connecté, envoie la sortie du moniteur série vers le module, et
rend le débogage impossible. Utilisez SoftwareSerial sur deux autres broches.
Code minimal fonctionnel
#include <SoftwareSerial.h>
SoftwareSerial bt(10, 11); // RX (from module TX), TX (to module RX)
const int STATE_PIN = 8;
void setup() {
Serial.begin(115200); // USB, for debugging
bt.begin(9600); // HC-05 default in data mode
pinMode(STATE_PIN, INPUT);
}
void loop() {
// Lose the link, stop the robot. Do this before reading commands.
if (digitalRead(STATE_PIN) == LOW) { stopMotors(); }
if (bt.available()) {
char c = bt.read();
switch (c) {
case 'F': driveForward(); break;
case 'B': driveBackward(); break;
case 'L': turnLeft(); break;
case 'R': turnRight(); break;
case 'S': stopMotors(); break;
}
Serial.print("cmd: "); Serial.println(c); // echo to USB for debugging
}
}
La vérification de connexion en haut de boucle est la partie que la plupart des tutoriels omettent, et c’est celle qui arrête un emballement. La portée Bluetooth est d’environ 10 m et les murs la réduisent fortement ; un robot qui continue d’exécuter sa dernière commande après la perte de liaison continuera jusqu’à heurter quelque chose.
Mode commande AT
Changer le nom, la vitesse ou le PIN du module exige le mode AT, et y entrer a une séquence précise que rien sur le module ne rend évidente.
- Mettez le module hors tension.
- Maintenez
ENau HAUT (ou maintenez le petit bouton, si votre carte en a un). - Mettez sous tension en maintenant
EN. - La LED clignote alors lentement — environ une fois toutes les deux secondes — plutôt que rapidement.
- Parlez-lui à 38400 bauds, pas 9600, avec saut de ligne et retour chariot.
AT -> OK
AT+NAME=LineBot -> OK set the name shown when pairing
AT+PSWD="1234" -> OK set the pairing PIN (quotes on newer firmware)
AT+UART=115200,0,0 -> OK data-mode baud rate
AT+ROLE=0 -> OK 0 = slave (normal), 1 = master
AT+ADDR? -> +ADDR the module's own address
Deux pièges : le mode AT est toujours à 38400 quelle que soit la vitesse du mode données réglée, et le rythme de clignotement de la LED est la seule indication fiable. Clignotement rapide signifie mode données et vos commandes AT seront simplement émises par radio vers ce qui est appairé.
HC-05 ou HC-06 ?
Ils semblent identiques et sont vendus indifféremment, et il y a une vraie différence.
| HC-05 | HC-06 | |
|---|---|---|
| Rôle | Maître ou esclave | Esclave seul |
| Peut initier une connexion | Oui | Non |
| Mode AT | Via broche EN, 38400 |
À tout moment non appairé, à la vitesse données |
| Prix | Un peu plus | Un peu moins |
Si le module n’a jamais qu’à accepter une connexion d’un téléphone, un HC-06 suffit. Si vous voulez un jour que deux robots se parlent, ou qu’un robot se connecte à un module plutôt que d’attendre d’être connecté, il faut le rôle maître du HC-05.
Dépannage
| Symptôme | Cause probable | Solution |
|---|---|---|
| S’appaire, mais aucune donnée | TX/RX non croisés | TX module → RX carte, RX module → TX carte |
| Caractères illisibles | Vitesses différentes | Les deux bouts à 9600, ou réglez les deux pareil |
| Envois échouant connecté | Module sur broches 0/1 | Passez à des broches SoftwareSerial |
| Commandes AT sans effet | Pas vraiment en mode AT | Maintenez EN pendant la mise sous tension ; vérifiez le clignotement lent |
| Mode AT sans réponse | Vitesse du mode données utilisée | Le mode AT est à 38400, toujours |
| Ne s’appaire pas | Mauvais PIN | Essayez 1234 puis 0000 |
| Coupe à quelques mètres | Portée classe 2 plus murs | Normal ; utilisez la broche STATE pour la sécurité |
| Le robot continue après déconnexion | Pas de vérification de liaison | Lisez STATE et arrêtez sur BAS |
| Marche sur USB, pas sur batterie | Alimentation qui s’affaisse | Les rafales d’émission radio exigent un 5 V rigide |
HC-05 ou ESP32 ?
Si vous choisissez les composants plutôt que d’utiliser ce que vous avez, c’est la vraie décision.
| HC-05 + Arduino | ESP32 | |
|---|---|---|
| Sans fil | Bluetooth classique SPP | Wi-Fi et Bluetooth, intégrés |
| Matériel supplémentaire | Un module, un diviseur, deux broches | Aucun |
| Interface de commande | Un flux d’octets série | Une page web servie par le robot lui-même |
| Portée | ~10 m | ~50 m en Wi-Fi, ou partout avec un réseau |
| Appli téléphone requise | Oui — un terminal Bluetooth générique | Non — tout navigateur |
| Valeur pédagogique | Protocoles série, la liaison la plus simple | Réseau, un sujet plus vaste |
Le HC-05 est la bonne réponse quand vous avez déjà un Arduino et voulez le chemin le plus court vers un robot sans fil. C’est vraiment simple : un octet dedans, un octet dehors, aucun concept réseau. Pour une nouvelle construction où le sans-fil est exigé, un ESP32 fait plus pour moins cher sans pièces supplémentaires — et un robot qui sert sa propre page de commande n’exige aucune appli installée sur le téléphone de quiconque.
Explorer le graphe
Utilisé dans ces réalisations
Projets, parcours d'apprentissage et simulateurs qui intègrent le composant HC-05 Bluetooth Module.
Comparer
Alternatives
Questions
FAQ : HC-05 Bluetooth Module
Qu'est-ce qu'un HC-05 ?
Le HC-05 est un module Bluetooth qui transforme une connexion sans fil en simple liaison série (UART). Pour votre microcontrôleur, il ressemble exactement à un câble série filaire — vous lisez et écrivez des octets sur TX/RX — sauf que l'autre bout est votre téléphone ou PC en Bluetooth. C'est la façon la plus simple de commander un robot sans fil.
Comment connecter un HC-05 à un Arduino ?
Alimentez VCC et GND, puis croisez les lignes série — TX module vers RX Arduino, RX module vers TX Arduino. Comme la broche RX du HC-05 est en 3,3 V, abaissez le TX 5 V de l'Arduino avec un diviseur de tension. Ensuite tout ce que vous affichez en série part sans fil vers le téléphone appairé, et inversement.
Quelle est la portée du HC-05 ?
Environ 10 mètres en vue directe — c'est un appareil Bluetooth classe 2. Murs et interférences réduisent cela. C'est largement assez pour conduire un robot dans une pièce depuis votre téléphone, mais pour commander à longue portée on passerait au Wi-Fi ou à une radio dédiée.
Comment appairer des modules HC-05 ?
Pour appairer avec un téléphone, alimentez le module, ouvrez les réglages Bluetooth du téléphone, sélectionnez le HC-05, et saisissez le PIN (généralement 1234 ou 0000). Pour appairer deux HC-05 entre eux, réglez l'un en maître et l'autre en esclave avec des commandes AT et liez-les par adresse.
Comment programmer le HC-05 ?
Le HC-05 a deux modes. En mode données, il fait simplement transiter les octets série. Pour changer son nom, sa vitesse ou son rôle maître/esclave, passez-le en mode commande AT — maintenez la broche EN/KEY au haut à la mise sous tension — et envoyez des commandes AT en série.
Pour aller plus loin