Bluetooth
Les modules Bluetooth permettent à l’Arduino de communiquer avec un appareil Android (pilotage de robot, …)
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) et HC-06 (esclave) (?) sont des circuits extrêmement fréquents et bon marché, parfaitement adaptés à une utilisation avec Arduino.
- Mode maitre : 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
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 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 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…