Le module Bluetooth
https://www.aranacorp.com/fr/votre-arduino-communique-avec-le-module-hc-05/
https://knowledge.parcours-performance.com/arduino-bluetooth-hc-05-hc-06/
- suivre les instructions pour le module HC05, qui peut être maître ou esclave
Si on prend les pins RX et TX de l'arduino pour connecter RXD et TXD du HC-05, ça rentre en conflit avec la connexion USB entre l'arduino et le PC.
Donc on prend des pins Digital 2 et 3 et on utilise la bibliothèque SoftwareSerial
qui comprend la fonction BTserie
SoftwareSerial
// ARDUINO RC CAR WITH 2 REAR WHEELS MOTORS AND SG90 SERVO STEERING
//char caractereRecu;
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// La connexion hardware serie (Pins 0/RX et 1/TX) est utilisée pour la liason USB-Arduino
// On utilise donc une liaison
#include <SoftwareSerial.h> //Software Serial Port
#define RxD 2 //Pin 2 pour arduino RX (pin0=serial)
#define TxD 3 //Pin 3 pour arduino TX (pin1)
SoftwareSerial BTSerie(RxD,TxD);
void setup()
{
Serial.begin(9600); //Vitesse pour la liason USB-Arduino //57600); //115200 si on veut
delay(500);
Serial.println("Bonjour - Pret pour les commandes AT");
Serial.println("Le HC-05 doit clignoter lentement (2 secondes)");
// Configuration du bluetooth
pinMode(RxD, INPUT); // Configuration de la pin RxD (receive) en entrée
pinMode(TxD, OUTPUT); // Configuration de la pin TxD (transmit) en sortie
//Pour la communication avec le module HC05 à travers le SoftwareSerial depuis l'arduino
//On appuie sur le bouton à côté de la PIN EN au démarrage de l'Arduino
// BTSerie.begin(38400); //Vitesse pour la liaion Arduino-HC05 Bluetooth //57600 / 38400
//Pour la communication avec le module HC05 à travers le bluetooth depuis une appli de smartphone
//On appaire le module depuis l'appli avec le mot-de-passe par défaut : 1234
BTSerie.begin(9600); //Vitesse pour la liaion smartphone-HC05 Bluetooth //57600 / 38400
delay(500);
// Pour le HC05
// BTSerie.print("AT+NAME?"); //Demande le nom du module. Noter le ?
// BTSerie.print("AT+NAME=RCcar-HC-05"); //Définir le nom du module.
BTSerie.print("AT+VERSION?"); //Demande le N° de version. Noter le ?
// BTSerie.print("AT+UART?"); //Demande le nom du module. Noter le ?
// BTSerie.print("AT+UART=57600,0,0"); //Définir le nom du module.
// BTSerie.print("AT+ROLE?"); //Demande le nom du module. Noter le ?
// BTSerie.print("AT+PSWD?"); //Demande le nom du module. Noter le ?
// La console série de l'ordinateur d'où l'on envoie les commandes AT doit être réglée de telle sorte que
// les fins de ligne soient « les deux, NL et CR », ce qui revient à envoyer \r\n à la fin de chaque commande.
BTSerie.print("\r\n"); // sur HC-05, toutes les commandes doivent se terminer par \r\n
// afficher ce que le module bluetooth répond
Serial.print( BTSerie.read() ); // afficher sur console ce qui est lu sur BT
// pour AT+VERSION?, c'est le n° de version puis OK qui s'affiche
pinMode(13,OUTPUT); //left motors forward
pinMode(12,OUTPUT); //left motors reverse
pinMode(11,OUTPUT); //right motors forward
pinMode(10,OUTPUT); //right motors reverse
pinMode(9,OUTPUT); //Led
pinMode(5,OUTPUT); //SG90 steering motor
myservo.attach(5); // attaches the servo on pin 5 to the servo object
// Serial.begin(9600);
}
void loop() {
char caractereRecu;
// Serial.write(blueToothSerial.read());
//On lit caractere par caractere sur la liaion USB-Arduino et on affiche sur la liaison Arduino-HC05
if (Serial.available()) {
caractereRecu = Serial.read();
BTSerie.write(caractereRecu);
// Serial.println("Caractere envoye vers bluetooth : ");
// Serial.println(caractereRecu);
}
//On lit caractere par caractere sur la liaion Arduino-HC05 et on affiche sur la liaison USB-Arduino
if (BTSerie.available()) {
caractereRecu = BTSerie.read();
Serial.print(caractereRecu);
// }
if(caractereRecu == 'F'){ //move forward(all motors rotate in forward direction)
digitalWrite(10,LOW);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
digitalWrite(11,HIGH);
// myservo.write(90); // sets the servo position according to the scaled value
}
else if(caractereRecu == 'B'){ //move reverse (all motors rotate in reverse direction)
digitalWrite(13,LOW);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
digitalWrite(10,HIGH);
// myservo.write(90); // sets the servo position according to the scaled value
}
else if(caractereRecu == 'L'){ //turn right (left side motors rotate in forward direction, right side motors doesn'caractereRecu rotate)
digitalWrite(10,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
digitalWrite(11,HIGH);
// myservo.write(60); // sets the servo position according to the scaled value
}
else if(caractereRecu == 'R'){ //turn left (right side motors rotate in forward direction, left side motors doesn'caractereRecu rotate)
digitalWrite(10,LOW);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
digitalWrite(13,HIGH);
// myservo.write(120); // sets the servo position according to the scaled value
}
else if(caractereRecu == 'S'){ //STOP (all motors stop)
digitalWrite(13,LOW);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
digitalWrite(10,LOW);
// myservo.write(90);
}
delay(100);
}
}
https://knowledge.parcours-performance.com/arduino-bluetooth-hc-05-hc-06/