Le shield Bluetooth développé par Seeedstudio présente quelques avantages non négligeables par rapport au module Bluetooth HC-06 :
-
il possède un module Bluetooth HC-05 pouvant fonctionner en maître ou en esclave.
-
il fonctionne sous 3,3 V et le pont diviseur pour abaisser la tension de la broche RX est incorporé.
-
il possède une série de broches permettant de configurer, grâce à deux cavaliers, les lignes RX et TX de la liaison série.
-
il possède un bouton reset.
-
il possède deux connecteurs "Grove" pour connecter un module numérique sur D8 et D9 et un module analogique sur A4 et A5.
LE SHIELD BLUETOOTH SEEEDSTUDIO V2.0

Ce shield utilise également la bibliothèque SoftwareSerial, comme le module Bluetooth HC-06.
Liste du matériel :
-
2 Arduino Uno
-
2 shields Bluetooth
-
1 module bouton poussoir "Grove"
-
1 module led "Grove"
-
2 cordons "Grove"
Exemple :
Nous souhaitons allumer, grâce à une liaison Bluetooth, une led branchée sur une carte Arduino depuis un bouton poussoir branché sur une autre carte Arduino.
Programme 1 :
/* Bluetooth_emetteur est un programme qui envoie l'état d'un bouton poussoir grâce à un module Bluetooth */
#define bouton 8 // affectation des broches
#define RX 2
#define TX 3
boolean etat; // déclaration de la variable etat de type booleén
// Création d'une liaison série
#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(RX,TX);
void setup()
{
Serial.begin(9600); // initialisation liaison série à 9600 bauds
pinMode(bouton,INPUT) ; // la broche bouton est en entrée
Init_Bluetooth(); // configuration du module Bluetooth
}
void loop()
{
etat=digitalRead(bouton); // la variable etat prend la valeur de l'entrée bouton
Serial.print("Le bouton est "); // on écrit dans le moniteur série
if (etat==HIGH) // si etat est au niveau bas (bouton actif)
{
Serial.println("actif"); // on écrit dans le moniteur série et on va à la ligne
}
else
{
Serial.println("inactif");
}
Bluetooth.print(etat); // on envoie sur la liaison Bluetooth la valeur de la variable etat
delay(10);
}
//procédure qui configure le module Bluetooth
void Init_Bluetooth()
{
Bluetooth.begin(9600); // initialisation de la liaison à 9600 bauds
Bluetooth.print("AT"); // test de la communication
delay(400);
Bluetooth.print("AT+DEFAULT"); // remise en configuration d'origine du module
delay(2000);
Bluetooth.print("AT+NAMEMaitre"); // configuration du nom du module
delay(400);
Bluetooth.print("AT+ROLEM"); // configuration du module en maitre
delay(400);
Bluetooth.print("AT+AUTH1");
delay(400);
Bluetooth.print("AT+CLEAR"); // réinitialisation de l'adresse du module
delay(400);
Bluetooth.flush(); // on attend que que toutes les données soient transmises
}
Programme 2 :
/* Bluetooth_récepteur est un programme qui commande une led en fonction d'une consigne envoyée
grâce à une liaison Bluetooth */
#define led 8 // affectation des broches
#define RX 2
#define TX 3
word octet_recu; // mot qui reçoit les trames émises
// Création d'une liaison série
#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(RX,TX);
void setup()
{
pinMode(led,INPUT) ; // la broche led est en sortie
Init_Bluetooth(); // configuration du module Bluetooth
}
void loop()
{
recevoir(); // appel de la procédure recevoir
if (octet_recu==49) // si octet reçu est 1 (49=code ASCII de 1)
{
digitalWrite(led,HIGH);
}
if (octet_recu==48) // si octet reçu est 0 (48=code ASCII de 0)
{
digitalWrite(led,LOW);
}
}
//procédure qui configure le module Bluetooth
void Init_Bluetooth()
{
Bluetooth.begin(9600); // initialisation de la liaison à 9600 bauds
Bluetooth.print("AT"); // test de la communication du module
delay(400);
Bluetooth.print("AT+DEFAULT"); // remise en configuration d'origine du module
delay(2000);
Bluetooth.print("AT+NAMEEsclave"); // configuration du nom du module
delay(400);
Bluetooth.print("AT+PIN1234"); // configuration du code PIN du module
delay(400);
Bluetooth.print("AT+AUTH1");
delay(400);
Bluetooth.print("AT+CLEAR"); // réinitialisation de l'adresse du module
delay(400);
Bluetooth.flush(); // on attend que que toutes les données soient transmises
}
//procédure qui lit les trames
void recevoir()
{
if (Bluetooth.available())
{
octet_recu=Bluetooth.read();
}
}
Commentaires
A la mise sous tension des deux ensembles, les led bleues des modules Bluetooth vont clignoter rapidement pendant l'appairage puis rester allumées lorsque les deux modules seront connectés.