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.

Schéma légendé d'un module Bluetooth HC-05 : une carte breakout bleue portant un capot radio Bluetooth blindé avec rivets d'angle, une antenne PCB en zigzag, une LED d'état, et un connecteur 6 broches (EN, VCC, GND, TXD, RXD, STATE) en bas pour la liaison série.
Le module transforme une liaison Bluetooth en simple connexion série — croisez TX/RX vers le microcontrôleur et il ressemble à un câble filaire. Télécharger le SVG

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.

  1. Mettez le module hors tension.
  2. Maintenez EN au HAUT (ou maintenez le petit bouton, si votre carte en a un).
  3. Mettez sous tension en maintenant EN.
  4. La LED clignote alors lentement — environ une fois toutes les deux secondes — plutôt que rapidement.
  5. 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

Références