Seul l’ESP32 d’origine embarque les deux Bluetooth : le Classic, qui offre un port série sans fil (profil SPP), et le BLE, économe en énergie. Les ESP32-S3, C3, C6 et H2 ne font que du BLE. Avec la bibliothèque BluetoothSerial, quelques lignes suffisent pour échanger du texte avec un téléphone, à condition que la puce soit la bonne.
Brancher un ESP32 en Bluetooth semble simple jusqu’au premier message d’erreur à la compilation. La cause se trouve presque toujours dans la référence exacte de la puce, car la famille ESP32 ne propose pas le même Bluetooth partout.
Quelle puce, quel Bluetooth ?
La documentation d’Espressif distingue deux modes : le Bluetooth Classic (BR/EDR) et le Bluetooth Low Energy (BLE). Le premier sert aux flux continus comme le port série ou l’audio, le second aux échanges brefs et peu fréquents.
| Puce | Bluetooth Classic | BLE |
|---|---|---|
| ESP32 (WROOM, WROVER) | Oui | Oui |
| ESP32-S3 | Non | Oui |
| ESP32-C3, C6, H2 | Non | Oui |

Avant d’écrire une ligne, lisez donc la référence imprimée sur le module. Une carte vendue comme « ESP32 » dans un kit peut être une S3 ou une C3.
Classic ou BLE ?
Le Classic ressemble à un câble série sans fil : on ouvre un port, on envoie du texte, on lit les réponses. C’est la voie la plus courte pour piloter un robot depuis une application de terminal Bluetooth. Le BLE demande de décrire des services et des caractéristiques, mais il consomme moins.
Le montage minimal en série
Ce premier essai ne demande aucun montage : une carte ESP32 d’origine reliée à l’ordinateur suffit. Dans l’environnement Arduino, la bibliothèque BluetoothSerial de l’extension ESP32 gère le profil SPP. Le programme ci-dessous relaie le texte dans les deux sens entre le moniteur série et le Bluetooth.
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32-xevel");
}
void loop() {
if (SerialBT.available()) Serial.write(SerialBT.read());
if (Serial.available()) SerialBT.write(Serial.read());
}
Le nom passé à begin est celui que le téléphone affichera au moment de la recherche. Choisissez un nom distinctif si plusieurs cartes sont allumées dans la même pièce.
Appairer avec un téléphone
- Téléverser le programme et laisser la carte alimentée.
- Dans les réglages Bluetooth du téléphone, lancer la recherche et choisir le nom donné à la carte.
- Ouvrir une application de terminal série Bluetooth et se connecter à cette carte.
- Taper un texte : il apparaît dans le moniteur série de l’ordinateur, et inversement.
Une fois la liaison fonctionnelle, vous pouvez remplacer la recopie par vos propres commandes : une lettre pour allumer une LED, un chiffre pour régler un moteur. Pour comparer avec le format Nano, la fiche sur l’Arduino Nano et ses cartes voisines présente aussi les versions à puce ESP32.
Pourquoi le programme ne compile pas
Le symptôme classique est un échec de compilation sur le fichier BluetoothSerial.h. Il signale presque toujours une puce sans Bluetooth Classic, comme la S3 ou la C3. Le remède est de passer au BLE avec la bibliothèque dédiée de l’extension ESP32, par exemple en exposant un service de type port série, ou de choisir une carte ESP32 d’origine.
Dans l’IDE, la carte choisie dans le menu des types de carte doit correspondre à la puce réellement soudée. Un mauvais choix produit des erreurs de compilation sans lien apparent avec le Bluetooth.
D’autres sujets de la rubrique Arduino et ESP32 prolongent ces essais : alimentation, capteurs et communication entre cartes.
Questions fréquentes
L’ESP32 a-t-il le Bluetooth ?
Oui pour l’ESP32 d’origine, qui prend en charge le Classic et le BLE. Les ESP32-S3, C3, C6 et H2 ne font que du BLE.
Quelle bibliothèque pour le Bluetooth série ?
BluetoothSerial, fournie avec l’extension ESP32 pour Arduino. Elle implémente le profil SPP, donc le Classic, et ne fonctionne que sur l’ESP32 d’origine.
Existe-t-il une bibliothèque pour le BLE sur Arduino ?
Oui, l’extension ESP32 pour Arduino propose une bibliothèque BLE qui enveloppe la pile d’Espressif dans une interface de style Arduino, avec notamment un exemple de service UART.
Quelle différence entre Classic et BLE ?
Le Classic convient aux flux continus comme le port série ou l’audio, le BLE aux petits échanges espacés avec une consommation réduite.
Pourquoi BluetoothSerial.h est-il introuvable ou refusé ?
La puce sélectionnée n’a pas de Bluetooth Classic. Changez de carte ou passez au BLE.
Avant tout achat, relevez la référence de la puce dans la fiche produit, puis téléversez le programme de relais ci-dessus pour vérifier la liaison. Si elle fonctionne, ajoutez une seule commande à la fois et testez-la au moniteur série avant de brancher un moteur.
Espressif, Bluetooth Architecture, Overview (ESP-IDF Programming Guide) : modes Classic et BLE par puce. Relevé le 10 novembre 2026.
Documentation Arduino-ESP32 d’Espressif, pages Bluetooth et BLE : bibliothèque BluetoothSerial, exemple de relais série, bibliothèque BLE. Relevé le 10 novembre 2026.
Technicien en électronique, encadrant de club robotique — qui écrit ici.