Bluetooth
Les modules Bluetooth permettent à l’Arduino de communiquer sans fil avec un autre appareil (ordinateur, smartphone, …)
Modules HC-05 et HC-06
sources : http://www.martyncurrey.com/hc-05-fc-114-and-hc-06-fc-114-first-look/
Les modules HC-05 (maître ou esclave) et HC-06 (esclave seulement) sont des circuits extrêmement fréquents et bon marché, parfaitement adaptés à une utilisation avec Arduino.
- Mode maître : l’association (ou appairage) avec un autre périphérique doit se faire depuis le module.
- Mode esclave : l’association avec un autre périphérique doit se faire depuis l’autre périphérique.
Câblage
ATTENTION le HC-0x communique sur un niveau logique de 3,3V, alors que l’Arduino UNO fournit des signaux logiques en 5V.
La broche TXD du HC-0x fournit 3,3V à l’Arduino. C’est suffisant pour faire commuter le niveau du port TX de l’Arduino
En revanche, il faut donc réduire la tension sur la broche RXD du HC-0x, à l’aide d’une résistance de 2kΩ en série.
Programmation
Le programme suivant permet à l’Arduino de communiquer avec un appareil Bluetooth, en utilisant le terminal série de l’ordinateur.
Attention : le terminal (moniteur série sur l’IDE Arduino) doit être réglé en mode NL et CR (en bas à droite) :
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); // RX | TX
char c = ' ';
boolean NL = true;
void setup()
{
Serial.begin(9600);
// baud rate du HC-0x : 9600 par défaut
BTSerial.begin(9600);
Serial.println("Arduino avec HC-0x");
}
void loop()
{
// Lecture du module BT et affichage des données sur le moniteur série de l'Ordinateur
if (BTSerial.available())
{
c = BTSerial.read();
Serial.write(c);
}
// Lecture du moniteur série et envoi des données sur le module BT
if (Serial.available())
{
c = Serial.read();
BTSerial.write(c);
// Echo the user input to the main window. The ">" character indicates the user entered text.
if (NL) { Serial.print(">"); NL = false; }
Serial.write(c);
if (c==10) { NL = true; }
}
}
Fonctionnement
Le module HC-0x possède différents modes de fonctionnement, identifiables par le clignotement de sa LED d’état.
Mode commande
Clignotement rapide : ….
Ce mode permet de configurer le module, grâce aux commandes AT (ATtention).
Pour passer en mode commande, il suffit d’appuyer sur le petit bouton du module (s’il y en a un !).
Sinon, on peut aussi obtenir le mode commande en passant la broche KEY à l’état haut (HIGH) et en la maintenant dans cet état pendant toute la durée d’utilisation du mode commande :
const key = 12 // connecter la broche KEY au port 12 de l'Arduino
void setup() {
pinMode(key, OUTPUT);
pinMode(key, LOW);
}
Quelques commandes AT utiles
- Vérification que le mode AT est actif :
>AT OK
- Affichage de la version du firmware (programme interne au module BT) :
>AT+VERSION +VERSION:2.0-20100601 OK
- Obtention/Configuration des paramètres de communication (baud rate, bit de stop, parité)
>AT+UART=9600,0,0 OK
>AT+UART +UART:9600,0,0 OK
- Modification du rôle du module (esclave = 0 / maître = 1)
lecture du mode courant
>AT+ROLE +ROLE:0 OK
>AT+ROLE=1 OK >AT+ROLE +ROLE:1 OK
Mode attente
Clignotement lent : . . . .
Mode connexion
Deux clignotements courts : .. .. ..
Utilisation avec un appareil Android
Utilisation d’un terminal série
Téléverser le programme précédent dans l’Arduino et ouvrir le moniteur série 
- Installer un terminal Bluetooth sur l’appareil Android, par exemple :
- Serial Bluetooth Terminal de Kai Morich
- Bluetooth Serial Monitor de ArduinoGetStarted.com
- Bluetooth Terminal de Qwerty)
- Activer le Bluetooth sur l’appareil Android, et associer le périphérique HC-05 de l’Arduino (il doit être nommé HC-05 et le mot de passe par défaut est 1234)

- Exécuter l’application Bluetooth Terminal et connecter le périphérique

A présent il est possible de communiquer :
MIT App inventor
…
Module nRF8001

Modèle testé : Adafruit nRF8001 Bluefruit LE Breakout
ATTENTION, ce module est à la norme Bluetooth Low Energy ou Bluetooth 4.0. Il n’est (pour l’instant) pas compatible avec App Inventor.
Installation
Bibliothèque Arduino
- Télécharger la bibliothèque Adafruit_BLE_UART
- L’installer comme indiqué dans l’article « Installer une bibliothèque«
- Vérifier qu’elle s’est correctement installée :
Application Android
- Installer l’application Adafruit Bluefruit LE Connect depuis Google Play.
Câblage

Premier essai
Depuis le PC :
- Télécharger le programme Arduino [media-downloader media_id= »441″ texts= »Test_BLE »] (archive ZIP) ;
- Dézipper l’archive dans votre dossier de travail ;
- Ouvrir le croquis Test_BLE.ino ;
- Le téléverser sur l’Arduino
; - Ouvrir le Moniteur Série
. Le message suivant devrait apparaître :
Depuis l’appareil Android :
- Lancer l’application Bluefruit LE
et connecter l’appareil Android au périphérique « UART » (l’Arduino), en mode UART.
- Écrire un message pour l’Arduino : « Bonjour ARDUINO », puis l’envoyer (SEND)
Le message doit apparaitre sur le Moniteur Série :
- Répondre à l’appareil Android en écrivant un message dans le Moniteur série :
Le message doit apparaitre sur l’appareil Android :
Pour en savoir plus …
https://learn.adafruit.com/getting-started-with-the-nrf8001-bluefruit-le-breakout/introduction














Bonjour,
Je me permets de vous contacter car j’ai un problème d’appairage entre mon téléphone Android et le circuit Bluetooth HC08 CC2541.
Aucun code PIN essayé ne fonctionne. L’appareil est bien reconnu par mon téléphone mais l’application Bluetooth terminal ne le trouve pas.
Auriez-vous une piste à m’apporter pour résoudre ce problème ? J’ai déjà essayé avec 6 zéros comme proposé dans plusieurs forum mais rien ne fonctionne.
Je vous remercie d’avance pour la réponse que vous me ferez.
Cordialement
C PESSIN
Bonjour,
En général le code pin pour les modules bluetooth est 0000 ou 1234. Avez vous essayé ces codes ? Sinon c’est vrai que la documentation du HC08 CC2541 indique un code PIN à 000000. La dernière solution c’est d’utiliser la commande AT pour voir le code PIN (cf https://www.instructables.com/id/AT-command-mode-of-HC-05-Bluetooth-module/) Pour vous il faudra envoyer la commande AT+RX via le moniteur série sur la carte Arduino avec le sketch suivant (cf lien ci dessus pour les détails):
#include "SoftwareSerial.h"
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
Serial.begin(9600);
pinMode(9,OUTPUT); digitalWrite(9,HIGH);
Serial.println("Enter AT commands:");
mySerial.begin(38400);
}
void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
en espérant que cela fonctionne…