Le module Bluetooth HC-05 transforme une simple carte Arduino en interface sans fil fiable, idéale pour piloter des projets à distance, transmettre des données de capteurs ou dialoguer avec une application mobile. En quelques branchements et quelques lignes de code, une liaison série Bluetooth remplace un câble USB, tout en conservant la même logique de programmation.
Ce tutoriel réunit les bonnes pratiques matérielles, les commandes AT utiles et des schémas de connexion concrets pour organiser une communication stable, sécurisée et adaptée à votre environnement. Les bases se mettent vite en place, puis des réglages plus fins ouvrent la voie à des projets plus ambitieux et mieux structurés.
| Élément clé | Synthèse |
| Objectif | Permettre une communication sans fil simple entre un Arduino et un appareil Bluetooth 📱. |
| Module utilisé | HC-05, facile à configurer et compatible avec la plupart des microcontrôleurs. |
| Connexion | Branchement TX/RX croisés + alimentation 5V via Arduino. |
| Usage typique | Envoi/réception de données pour piloter ou surveiller un montage à distance. |
| Avantage | Solution stable, économique et idéale pour débuter en communication sans fil. |
Comprendre le HC-05 et la communication Bluetooth avec Arduino
Le module HC-05 repose sur la technologie Bluetooth 2.0 + EDR. Il communique avec Arduino via une liaison UART (TX/RX) et émule un port série sans fil. Pour le programmeur, cette liaison se gère comme une simple communication série classique, ce qui simplifie fortement l’intégration.
Le HC-05 prend en charge les profils SPP (Serial Port Profile) et HID. Dans la majorité des projets Arduino, le profil SPP suffit largement, puisqu’il établit un lien série virtuel entre le microcontrôleur et un smartphone, un PC ou un autre microcontrôleur. Le module fonctionne en modes Maître ou Esclave, avec une configuration par commandes AT envoyées sur la liaison série.

Résumé technique du module Bluetooth HC-05
Voici une synthèse des caractéristiques techniques utiles lorsqu’on prépare un montage avec Arduino, afin de calibrer la portée, la consommation et les débits nécessaires.
| Caractéristique | Valeur / Détail |
|---|---|
| Version Bluetooth | 2.0 + EDR (Enhanced Data Rate) |
| Fréquence | 2.4 GHz bande ISM |
| Modulation radio | GFSK |
| Puissance d’émission | 4 dBm (Class 2) |
| Sensibilité de réception | -80 à -85 dBm |
| Portée typique | 10 m en intérieur, plus en champ libre (20 à 30 m LOS) |
| Débit de données théorique | Jusqu’à 3 Mbps (EDR), ~1 Mbps en pratique |
| Interface vers Arduino | UART (TX, RX, GND, VCC, EN, STATE suivant modules) |
| Débit série par défaut | 9600 bps |
| Plage de tension | 3,3 à 5 V (selon carte breakout) |
| Consommation typique | 40 à 50 mA en fonctionnement, <2,5 mA en veille |
| Dimensions | 26,9 x 13 x 2,2 mm (module nu, hors breakout) |
| Plage de température | -20 à +75 °C |
| Chipset | CSR BC417 avec 8 Mbit de flash |
| Antenne | PCB intégrée |
| Modes de fonctionnement | Maître, Esclave |
| Sécurité | Authentification + chiffrement, code par défaut 1234 |
| Configuration | Commandes AT via liaison série |
« Le HC-05 reste basé sur Bluetooth 2.0 EDR. Aucune évolution majeure n’est rapportée à l’horizon 2026, il continue donc de servir de référence dans de nombreux tutoriels Arduino pour la communication série sans fil. »
Câblage du HC-05 avec Arduino : schémas et bonnes pratiques
La fiabilité d’une liaison Bluetooth commence par un câblage propre entre Arduino et le module HC-05. Les erreurs les plus fréquentes concernent la gestion des niveaux logiques, l’alimentation et le partage du port série matériel avec l’USB utilisé par l’IDE Arduino.
Une architecture claire, des masses correctement reliées et un soin particulier apporté au TX/RX évitent des heures de débogage. Plusieurs variantes de câblage existent selon la carte : Arduino Uno, Mega, Nano ou cartes orientées projets avancés.
Branchement standard HC-05 sur Arduino Uno / Nano
Sur un Uno ou Nano, le port série matériel Serial est relié à l’USB. Utiliser ce même port pour le HC-05 crée des conflits lors du téléversement du sketch. Une approche classique consiste à employer un port série logiciel via la bibliothèque SoftwareSerial.
- VCC du HC-05 sur +5 V de l’Arduino (si breakout prévu pour 5 V)
- GND du HC-05 sur GND Arduino
- TXD du HC-05 sur la broche RX logicielle (ex. D10)
- RXD du HC-05 via diviseur de tension vers la broche TX logicielle (ex. D11)
- EN/KEY selon besoin pour le mode AT étendu
Le diviseur de tension sur la ligne RX du HC-05 (par exemple 1 kΩ / 2 kΩ) protège l’entrée 3,3 V du module d’un signal 5 V provenant de l’Arduino. De nombreux breakouts intègrent déjà une adaptation de niveau, mais une vérification reste prudente.
Pour les projets nécessitant une liaison série stable à haut débit, privilégiez l’utilisation du port série matériel (Serial1, Serial2…) d’une carte comme Arduino Mega. Le HC-05 gagne en fiabilité à 115200 bps lorsque le port série n’est pas géré par SoftwareSerial.

Gestion de l’alimentation et de la consommation
Le HC-05 consomme en général entre 40 et 50 mA en activité, avec des pointes lors de l’appairage. Sur un Arduino Uno alimenté en USB, cette consommation reste acceptable, mais sur un projet sur batterie ou une alimentation déjà chargée, ce courant influence l’autonomie.
ArduinoArduino et domotique : automatiser sa maison pour pas cherLes modes veille et sommeil réduisent la consommation en dessous de 2,5 mA, voire sous le milliampère. Ces états se gèrent via des signaux sur la broche EN ou par commandes AT, selon le breakout. En usage intensif, réduire le temps de connexion active améliore l’autonomie de l’ensemble du montage.
Portée réelle du HC-05 et facteurs d’environnement
La fiche technique annonce environ 10 m en espace classique, avec une portée supérieure en line of sight (LOS) dégagée. Sur le terrain, des utilisateurs mesurent souvent des distances proches de 20 à 30 m en vue directe, voire plus selon les conditions radio et le type de module.
La liaison repose sur une puissance de transmission d’environ 4 dBm et une sensibilité autour de -85 dBm. L’affaiblissement radio à 2,4 GHz dépend fortement des obstacles, des murs, des matériaux isolants et de la présence d’autres réseaux Wi-Fi ou Bluetooth saturant le spectre.

Facteurs influençant la portée du Bluetooth HC-05
- Ligne de vue : une liaison dégagée entre Arduino et smartphone augmente sensiblement la distance utile.
- Obstacles : murs porteurs, cloisons métalliques, vitrages spéciaux réduisent fortement le signal.
- Classe de module : le HC-05 classique fonctionne en Class 2, d’autres modules Class 1 offrent une portée plus large.
- Environnement intérieur / extérieur : un jardin ouvert offre souvent une meilleure portée qu’un appartement dense en réseaux.
- Orientation de l’antenne PCB : la position du module et l’intégration dans le boîtier influencent aussi la réception.
Pour un projet domotique Arduino, positionner le module HC-05 à distance des alimentations à découpage et des câbles secteur bruyants améliore la stabilité de la liaison. Un simple déplacement de quelques centimètres limite parfois des déconnexions aléatoires.
Configurer le HC-05 en mode AT : nom, code PIN, rôle maître / esclave
La configuration du HC-05 s’effectue via des commandes AT envoyées sur la liaison série. En mode AT, le module ne communique plus avec un appareil externe, il accepte des instructions textuelles : changement de nom, code d’appairage, vitesse série, rôle maître ou esclave, etc.
Les paramètres d’usine typiques incluent un nom « HC-05 », un code d’appairage « 1234 » et une vitesse par défaut de 9600 bps. Adapter ces valeurs renforce la sécurité et offre une meilleure intégration dans un environnement déjà saturé d’appareils Bluetooth.
Accéder au mode AT sur un module HC-05
Plusieurs variantes de cartes HC-05 existent, avec des méthodes légèrement différentes. Le scénario le plus courant se déroule ainsi :
- Mettre le module hors tension.
- Maintenir appuyé le bouton KEY (ou relier la broche EN/KEY au niveau haut).
- Rétablir l’alimentation tout en gardant le bouton enfoncé.
- Relâcher le bouton : la LED clignote lentement, signe du mode AT.
Ensuite, une liaison série entre Arduino et le module permet d’envoyer les commandes AT via le moniteur série de l’IDE, ou via un convertisseur USB-série dédié.
Commandes AT fréquentes pour personnaliser le HC-05
Une fois en mode AT, plusieurs commandes se révèlent utiles pour structurer la configuration :
- AT : vérifie la communication (réponse « OK »).
- AT+NAME=MonProjetBT : définit un nom explicite.
- AT+PSWD=5678 : configure un nouveau code d’appairage.
- AT+ROLE=0 : passe en mode Esclave (0) ou Maître (1).
- AT+UART=9600,0,0 : fixe la vitesse, la parité et le nombre de bits de stop.
- AT+ADDR? : affiche l’adresse Bluetooth du module.
« Un HC-05 configuré avec un nom unique et un code PIN personnalisé évite les confusions dans un atelier rempli de modules similaires. Cette étape réduit aussi le risque de connexion indésirable lors de tests en parallèle. »
Communication série Arduino & HC-05 : principes et exemple de code
Le HC-05 fonctionne comme un pont série sans fil. Sur Arduino, on envoie et on reçoit des données via Serial (ou un port SoftwareSerial) exactement comme si un câble USB était branché. Cette approche simplifie les premiers tests : un simple écho des caractères reçus valide la liaison.
Pour un Uno, l’usage de SoftwareSerial reste courant. Sur un Mega, l’utilisation de Serial1 ou Serial2 améliore la stabilité, notamment à des débits supérieurs comme 115200 bps.
Exemple de code Arduino pour chat série avec le HC-05
Voici une base de sketch orientée expérimentation. Elle permet d’envoyer des messages depuis le moniteur série du PC vers un smartphone connecté au HC-05, et inversement.
#include <SoftwareSerial.h>
// RX, TX pour le HC-05
SoftwareSerial btSerial(10, 11); // RX, TX
void setup() {
Serial.begin(9600); // Moniteur série PC
btSerial.begin(9600); // HC-05 (vitesse par défaut)
Serial.println("Interface série Bluetooth HC-05 prête.");
}
void loop() {
// Données reçues depuis le Bluetooth vers PC
if (btSerial.available()) {
char c = btSerial.read();
Serial.write(c);
}
// Données envoyées depuis le PC vers Bluetooth
if (Serial.available()) {
char c = Serial.read();
btSerial.write(c);
}
}
Ce code illustre la logique d’un pont série. D’un côté, le HC-05 dialogue avec un smartphone ou un autre module. De l’autre, l’Arduino relaie les caractères vers le moniteur série. Cette structure constitue une base solide avant d’ajouter une logique applicative plus avancée.
Pour des échanges binaires structurés ou pour de gros volumes de données, mieux vaut définir un protocole simple (délimiteurs, checksums, trames JSON, etc.). La liaison série demeure robuste si les messages restent clairement encodés et que la vitesse correspond à la capacité du module et de la carte.
Créer une application mobile ou PC pour piloter Arduino via HC-05
Une fois la liaison série fonctionnelle, l’étape suivante consiste à utiliser un terminal Bluetooth ou une application sur mesure pour envoyer des commandes. Sur Android, de nombreuses applications de type « Serial Bluetooth » permettent de tester rapidement l’envoi de caractères, de commandes ou de trames JSON.
Sur PC, un adaptateur Bluetooth crée un port COM virtuel. N’importe quel terminal série (PuTTY, Tera Term, screen, etc.) se connecte alors au HC-05 comme à un port série physique. Cette approche convient bien pour un prototype ou pour un outil de diagnostic.
Exemple de protocole simple de commandes
Structurer des commandes lisibles clarifie le code Arduino et rend l’application mobile plus claire. Certains formats restent très faciles à parser :
- LED:ON, LED:OFF pour contrôler des sorties.
- SET:SPEED:120 pour ajuster une consigne.
- REQ:TEMP pour demander une valeur de capteur.
Sur Arduino, un parser lit une ligne complète, découpe les segments autour du caractère « : » et déclenche les actions correspondantes. Une fois cette couche en place, la liaison Bluetooth devient un canal de commandes clair et extensible.
Déboguer la liaison Bluetooth HC-05 / Arduino
Une liaison Bluetooth semble parfois silencieuse alors que tout paraît branché correctement. Un plan de test méthodique réduit le temps passé à chercher l’origine d’un blocage : vitesse série, polarité des broches, mode AT, appairage, etc.
Les erreurs récurrentes incluent un baudrate incorrect, l’inversion TX / RX, une absence de masse commune, un module resté en mode AT alors que l’on attend une connexion classique, ou un conflit avec le port série USB d’Arduino.
Étapes de vérification utiles
- Tester le module seul sur un adaptateur USB-série avec un terminal PC.
- Confirmer la vitesse série en mode AT avec AT+UART?.
- Contrôler l’état de la LED du HC-05 (clignotement rapide en attente de connexion, plus lent une fois appairé).
- Observer les messages du moniteur série pour vérifier l’echo des caractères.
- Limiter les longueurs de câbles et éloigner le module des sources de bruit électromagnétique.
« Une liaison série correctement initialisée des deux côtés – même vitesse, même format, même protocole – reste la base d’un projet Bluetooth stable. La majorité des problèmes se résolvent en alignant ces paramètres et en vérifiant quelques points matériels simples. »
Comparaison HC-05, HC-06 et modules Bluetooth plus récents
Dans de nombreux projets Arduino, le choix se porte sur HC-05 ou HC-06. Le HC-05 se distingue par la possibilité de fonctionner en Maître ou Esclave, tandis que le HC-06 agit seulement en Esclave. Ce détail influence beaucoup l’architecture d’un réseau de modules.
À côté de ces modules, d’autres solutions adoptent le BLE (Bluetooth Low Energy), davantage tourné vers les appareils mobiles récents et une consommation plus faible. La compatibilité et le profil de communication diffèrent pourtant du classique SPP utilisé par le HC-05.
| Module | Rôle | Profil principal | Usage typique |
|---|---|---|---|
| HC-05 | Maître ou Esclave | SPP (série) | Liaison série générique entre Arduino, PC, Android |
| HC-06 | Esclave uniquement | SPP | Projets simples avec un seul maître (smartphone ou PC) |
| Module BLE (ex. HM-10) | Selon firmware | BLE (GATT) | Intégration avec smartphones récents, faible consommation |
Les modules BLE n’utilisent pas toujours le profil SPP. Une application Android prévue pour HC-05 n’est pas automatiquement compatible avec un module BLE. Le choix du module influe sur la stratégie logicielle côté mobile autant que sur le câblage côté Arduino.
Aller plus loin : projets Arduino avancés avec le HC-05
Une fois les bases maîtrisées, la liaison Bluetooth devient un simple canal de données parmi d’autres. Elle s’intègre alors dans des projets Arduino avancés mêlant capteurs, actionneurs, stockage local et interactions temps réel.
ArduinoPiloter un relais 230 V avec Arduino en sécurité : 5 erreurs à éviterPar exemple, un projet peux combiner une centrale de mesure (capteurs de température, hygrométrie, lumière), une interface locale sur écran TFT, un enregistrement sur carte SD et une liaison HC-05 pour piloter ou consulter les mesures depuis un smartphone. Dans d’autres cas, deux Arduino communiquent entre eux en Bluetooth pour synchroniser des robots mobiles.
Optimiser le protocole et la structure du code
Dans les projets plus complets, la structure du sketch joue un rôle central. Séparer clairement la couche de communication (réception / envoi de trames) de la couche « métier » (logique de contrôle, calculs, décisions) facilite l’évolution du projet. Un jour, la liaison Bluetooth pourra être remplacée par un autre médium sans refondre toute la logique.
En parallèle, exploiter des bibliothèques ou techniques de communication série avancée permet de gérer les erreurs, les reconnexions et la mise à jour éventuelle de paramètres à distance. Le lien sans fil devient alors un véritable canal de configuration et de diagnostic pour l’ensemble du système.
Approfondir la communication série et le pilotage sans fil
Le HC-05 s’intègre directement dans l’écosystème série d’Arduino. Comprendre en détail la communication série Arduino apporte une meilleure maîtrise de la gestion des buffers, des interruptions et du temps réel. Cette compréhension rend ensuite la couche Bluetooth beaucoup plus claire.
Pour ceux qui travaillent déjà avec d’autres modules, un détour par des exemples de codes dédiés, comme ceux orientés Arduino HC-06, aide à mesurer les similitudes et les différences entre les variantes HC. Le passage de HC-06 à HC-05 se fait alors sans surprise, en particulier pour les commandes AT et la gestion des rôles maître / esclave.





