Le module Bluetooth HC-05 présente 6 broches pour permettre d’établir la connexion.
Avant de téléverser le programme et voir le fonctionnement, on doit configurer chaque module bluetooth soit comme Slave ou Master .
Nous utilisons les broches 2 et 3 pour la communication série avec Arduino UNO et la broche Key/EN doit être alimenter à 3V à l’allumage du module.
Pour la configuration nous utilisons la librairie SoftwareSerial.h ;elle permet de créer un port série autre que celui utilsé par le port USB.
Le code suivant permet de modifier les paramètres du module HC-05 (nom, le code PIN, la vitesse de communication(baudrate), etc.) et de trouver des informations comme le numéro de version du firmware.
Nous utilisons la librairie SoftwareSerial.h qui permet de créer un port série autre que celui utilisé par le port USB.
#include <SoftwareSerial.h>
#define rxPin 2
#define txPin 3
#define baudrate 38400
String msg;
SoftwareSerial hc05(rxPin ,txPin);
void setup()
{ pinMode(rxPin,INPUT);
pinMode(txPin,OUTPUT);
Serial.begin(9600);
Serial.println(« ENTER AT Commands: »);
hc05.begin(baudrate);
}
void loop()
{ readSerialPort();
if(msg!= » ») hc05.println(msg);
if (hc05.available()>0)
{
Serial.write(hc05.read());
}
}
void readSerialPort(){
msg= » »;
while (Serial.available())
{
delay(10);
if (Serial.available() >0)
{
char c = Serial.read(); //gets one byte from serial buffer
msg += c; //makes the string readString
}
}
}
Note :Lorsque le module est en mode configuration, la LED s’allume deux secondes toutes les deux secondes.
Certaines commandes AT nécessaires:
Si vous tapez dans le moniteur série AT+<command> (assurez vous que l’option de fin de ligne affiche « Nouvelle ligne » et que le baudrate est réglé à 9600.) vous obtenez la valeur enregistré dans le module
(ex: AT+PSWD pour connaitre le code PIN du module).
la première étape c’est de changer le nom en tapant AT+NAME=HC05-Slave et choisir les paramètres de communication et le mot de passe que vous voulez.
Il faudra vous assurer qu’ils sont les mêmes que pour le module maître( le mot de passe je veux dire ).
Pour le mode maître, vous devez modifier le role du module et choisir les même paramètres de communication que pour le module esclave
Ci-dessous le schéma et le programme ,pour soit transmettre un message d’un côté a un autre (partie 1),ou rajouter un bouton du côté du maître et une LED de l’autre côté (partie2).
Lorsque les modules sont configurés, vous débranchez la pin Key ou EN,
Quelques fonctions :
#include <SoftwareSerial.h>
SoftwareSerial ArduinoMaster(2,3);
String msg;
void setup()
{
Serial.begin(9600);
ArduinoMaster.begin(9600);
}
void loop(){
readSerialPort();
// Send answer to master
if(msg!= » »)
{
Serial.print(« Master sent : » );
Serial.println(msg);
ArduinoMaster.print(msg);
msg= » »;
}
}
void readSerialPort()
{
while (ArduinoMaster.available()) {
delay(10);
if (ArduinoMaster.available() >0) {
char c = ArduinoMaster.read(); //gets one byte from serial buffer
msg += c; //makes the string readString
}
}
ArduinoMaster.flush();
}
#include <SoftwareSerial.h>
SoftwareSerial ArduinoSlave(2,3);
String answer;
String msg;
void setup()
{
Serial.begin(9600);
Serial.println(« ENTER Commands: »);
ArduinoSlave.begin(9600);
}
void loop()
{
//Read command from monitor
readSerialPort();
//Read answer from slave
while (ArduinoSlave.available()) {
delay(10);
if (ArduinoSlave.available() >0) {
char c = ArduinoSlave.read(); //gets one byte from serial buffer
answer += c; //makes the string readString
}
}
//Send data to slave
if(msg!= » »){
Serial.print(« Master sent : « );
Serial.println(msg);
ArduinoSlave.print(msg);
msg= » »;
}
#include <SoftwareSerial.h>
#define ledPin 8
int dataFromMaster = 0;
SoftwareSerial ArduinoMaster(2,3);
void setup()
{
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
ArduinoMaster.begin(9600);
}
void loop()
{
if(ArduinoMaster.available() > 0)
{
dataFromMaster = ArduinoMaster.read();
ArduinoMaster.println(dataFromMaster);
}
if (dataFromMaster == ‘0’)
{
digitalWrite(ledPin, HIGH); // LED ON
}
else if (dataFromMaster == ‘1’)
{
digitalWrite(ledPin, LOW); // LED OFF
}
}
#include <SoftwareSerial.h>
SoftwareSerial ArduinoSlave(2,3);
#define masterSwitchPin 9
void setup()
{
pinMode(masterSwitchPin, INPUT);
digitalWrite(masterSwitchPin,LOW);
Serial.begin(9600);
ArduinoSlave.begin(9600);
}
void loop()
{
int masterSwitchValue = digitalRead(masterSwitchPin);
if (masterSwitchValue == HIGH)
{
ArduinoSlave.write(‘1’);
}
else
{
ArduinoSlave.write(‘0’);
}
}