Arduino et HC_05 - modifié 12 mars 2022
Article mis en ligne le 14 janvier 2022
dernière modification le 15 mars 2022

par Rémi

Pour un futur projet, j’ai besoin d’un peu de connexion entre mon (futur) appareil et mon smartphone.
En une première approximation, j’ai opté pour un module Bluetooth HC-05 car on peut ’facilement’ reparamétrer l’identifiant et le code pin.

Comment faire pour reprogrammer ça :

  • disposer un Arduino (nano chez moi)
  • le module HC-05
  • des câbles de connexions

=> les connexions :

    • Broche 9 du nano vers broche EN du module
    • Broche 10 du nano vers broche Tx du module
    • Broche 11 du nano vers broche Rtx du module
    • Broche 5V du nano vers broche VCC du module
    • Broche GND du nano vers broche GND du module
      => Le code dans le nano :
      #include <SoftwareSerial.h>

      SoftwareSerial BTSerial(10, 11); // RX | TX

      void setup()
      {
       pinMode(9, OUTPUT);  // C'est celle ci qui permet de passer en AT mode
       digitalWrite(9, HIGH);
       Serial.begin(38400);   // vitesse de communication
       Serial.println("Enter AT commands:");
       BTSerial.begin(38400);  // vitesse de communication par défaut en mode AT du module HC-05
      }

      void loop()
      {
        if (BTSerial.available())
         Serial.write(BTSerial.read());

        if (Serial.available())
         BTSerial.write(Serial.read());
      }

      Rien de plus simple.
      Une fois le code en place, et avant de connecter le module au 5v, appuyer sur le bouton du module. Rester appuyer, connecter le 5v, garder le bouton appuyé 3 secondes.

Dans la console Arduino, paramétrer la vitesse à 38400 avec ’NL, CR’ comme retour chariot.
Les commandes AT sont trouvable ici
Exemple : pour modifier le nom du module, taper

AT+NAME="nouveau-nom"

le mot de passe, la commande est AT+PSWD.
Et pour connaître le nom donné ou le mot de passe mis, ce sont les même commandes, mais avec un point d’interrogation derrière :

AT+NAME?

Connecter et communiquer avec le smartphone :
même montage sauf le câble sur la broche 9.
Le code suivant peut être utilisé côté Arduino :

#include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
#define baudrate 115200

String msg;

SoftwareSerial hc05(rxPin ,txPin);

void setup(){
 pinMode(rxPin,INPUT);
 pinMode(txPin,OUTPUT);
 
 Serial.begin(baudrate);
 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
  }
}
}

Pour tester côté android par exemple, j’ai utilisé ’Bluetooth Terminal HC05’
Cela fonctionne (testé à l’instant). Donc revoyez vous schéma si vous ne recevez aucune donnée (dans un sens ou dans un sens). Et entre autre, vérifiez le baudrate de votre module. J’avais mis 115200 pour le mien lors de la séance de commande AT.

Reste à faire une simple application android pour communiquer pour mon projet.