• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 08/11/2019

Installez la communication Bluetooth avec le module HC05

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Notre robot autonome va fonctionner grâce à une communication basée sur un module Bluetooth, via un dispositif Android. Nous découvrirons quelques éléments d’électronique du module HC05. Nous étudierons également sa connexion avec la carte Uno.

Nous découvrirons également un logiciel de type Terminal sous Android. Il nous permettra de piloter notre robot en mode “bas niveau”.

Nous verrons ensuite le code qui permettra de mettre en liaison notre robot et le dispositif Android.

À la fin de ce chapitre, nous aurons ainsi une première solution de pilotage sans fil.

Le principe du module

Le module HC05 est un module simple d’emploi qui permet d’ajouter la fonctionnalité communication Bluetooth full duplex, c’est-à-dire bidirectionnelle, à vos projets Arduino.

Que devez-vous savoir sur ce module ?

Il est interfaçable avec n’importe quelle plateforme à microcontrôleur. On peut l’envisager dans une grande variété d’applications. On pourrait par exemple l’utiliser pour faire communiquer deux robots autonomes entre eux, dans la problématique émergente de commande de flottes de véhicules. Mais on peut aussi l’utiliser pour faire communiquer le robot autonome avec des dispositifs classiques de notre environnement qui incorporent de la communication Bluetooth, comme un ordinateur portable, un smartphone ou une tablette. C’est dans ce cadre que nous allons l’utiliser. Nous souhaitons piloter le robot par un dispositif Android, smartphone ou tablette. La communication va être faite à 9 600 bauds, ce qui est relativement lent. Il s’agira donc de transmettre des chaînes de caractères à fin de pilotage.

Ci-dessous, une photo du module et un schéma qui fait figurer ses broches qui permettent de le connecter comme périphérique de la carte Arduino :

Le module HC05, de dimensions 37,5 mm x 16,5 mm.
Extrait de https://components101.com/wireless/hc-05-bluetooth-module
Brochage du module
Extrait de https://components101.com/wireless/hc-05-bluetooth-module
Nous allons expliciter chaque broche :
  • Enable/Key : permet de fixer le mode Data, au niveau bas, ou le mode AT command (cf. plus bas), au niveau haut. Par défaut, si la broche n’est pas connectée, le module est en mode Data. L’état de cette broche est aussi contrôlé par le bouton (cf. plus bas) ;

  • Vcc : c’est la tension d’alimentation, à priori 5V ;

  • Ground, la masse ;

  • Tx ( ou TXD) : tout ce qui est reçu par le BLuetooth du module est sorti sur cette broche. C’est donc Transmit Data, vu du côté du module HC05 ;

  • Rx (ou RXD) : tout ce qui est présenté sur cette broche (issu du microcontrôleur) est envoyé par le Bluetooth du module. C’est donc le Receive Data du point de vue du module HC05 ;

  • State : la broche est connectée à la LED embarquée du module et indique l’état de fonctionnement du module avec les caractéristiques décrites ci-dessous.

À propos de la LED

La LED embarquée permet de visualiser l’état de fonctionnement du module. Le signal qui commande cette LED est aussi sorti sur la broche State avec les caractéristiques suivantes :

  • la LED clignote brièvement une fois toutes les 2 secondes : le module est en mode AT command ;

  • clignotement continu  : le module est en mode Data et attend une connexion ;

  • clignote 2 fois en une seconde : le module est en mode Data et la connexion est établie.

Le bouton (button) permet de commuter entre mode Data et AT command.

Les paramètres par défaut du module HCO5

Le module HC05 admet des paramètres par défaut, de manière à ce qu’un débutant qui ne comprend pas toutes les subtilités du module puisse le mettre en œuvre sans grand frais, dans ses modes par défaut. :zorro:

Ainsi, les paramètres par défaut sont les suivants :

  • nom Bluetooth : “HC05”. C’est sous ce nom qu’il apparaît dans l’environnement Android, par exemple, quand un smartphone ou une tablette est dans sa proximité ;

  • mot de passe : 1234 ou 0000 pour l’appariement avec le dispositif Android ;

  • mode Data, par défaut ;

  • paramètres de la liaison : 9 600 bauds, 8 bits de données, pas de bit de parité, un bit de stop.

Interfaçage et code sur la carte Arduino

Maintenant que vous connaissez mieux votre module HC05, il vous faut procéder à son interfaçage sur la carte Arduino. Nous allons vous dire comment faire, et vous donner le code pour que tout fonctionne. What else ?

Procéder à l’interfaçage de votre module à la carte Arduino

Dans la vidéo ci-dessous, vous verrez comment connecter votre module au bâti du robot. Une fois cette étape passée, vous pourrez alors connecter le module au shield. Ne vous inquiétez pas, tout est dans la vidéo. :ninja:

Votre module est maintenant interfacé. Avant d'écrire du code pour exploiter cette liaison Bluetooth, nous allons installer une application Android pour définir une tablette ou un smartphone comme interlocuteur du robot mobile.

Communication entre le module HC05 et l'application Android

On trouve l'application "Bluetooth Electronics" de Keuwlsoft dans le play store. Son chargement sur tablette ou smartphone ne pose pas de problème. Nous recommandons de l'installer plutôt sur tablette pour la taille de l'écran. Le principe général de l'application est le suivant : on construit des "panels" avec des objets graphiques prédéfinis dans l'application : des boutons, des interrupteurs, des zones graphiques, des jauges, etc. qui figurent dans une bibliothèque. À chaque objet graphique correspond un ou des codes ASCII qui sont envoyés/réceptionnés par la tablette via le Bluetooth.

Une fois le panel construit, il faut écrire le code Arduino correspondant. Côté Arduino, il s'agit de décrire par le code les actions du robot qui correspondent aux caractères ASCII envoyés en Bluetooth par la tablette, par l'intermédiaire du panel exécuté.

Mais il faut également, avant d'exécuter un tel panel, établir la communication entre la tablette et le module HC05. La première action consiste à appairer les deux appareils. Il faut commuter la liaison Bluetooth de la tablette ou du smartphone et lancer la détection dans l'application Bluetooth Electronics des appareils à proximité.  Quand il a détecté l'appareil libellé HC05, il faut actionner le bouton "Pair" et entrer le code 1234 ou 0000. Quand l'appariement est effectué, on peut connecter par le bouton "Connect".

Nous allons à présent, dans la vidéo ci-dessous, construire un panel élémentaire qui implémente un simple interrupteur. À chaque changement d'état de l'interrupteur quand il est manipulé par l'utilisateur de la tablette, est envoyé un caractère correspondant, 0 ou 1, selon la position de l'interrupteur. Côté Arduino, il s'agit de réceptionner ce caractère ASCII, de le décoder et de piloter la LED en fonction du 0 ou 1 réceptionné.

Pilotage de la LED de la carte Arduino par la tablette

En tant que première application qui met en œuvre le dispositif Android, smartphone ou tablette, nous donnons ci-dessous le code qui permet d'allumer ou d'éteindre la LED de la carte Arduino par un interrupteur (ou switch) graphique déposé sur un panel de l'application Bluetooth Electronics.

Le code qui suit est le code implémenté dans la carte Uno :

/* utilisation d'un module Bluetooth HC-05
* et d'une liaison série avec le PC
* de plus nous pilotons la led
* en envoyant 1 depuis le terminal Android sur le module bluetooth on allume la led
* en envoyant 0, on éteint la led
*
* cablage du module Bluetooth
* module -> arduino
* VCC –> +5V
* GND –> GND
* TXD –> Pin 4 RX des digital IO
* RXD –> Pin 5 TX des digital IO
*
*/
/* nous utilisons une liaison série virtuelle pour le module bluetooth */
#include <SoftwareSerial.h> // Software Serial Port
#define RxD 4 // Pin 4 pour la réception dans l'arduino
#define TxD 5 // Pin 5 pour l'émission de l'arduino
SoftwareSerial BTSerie(RxD,TxD);
void setup() {
// initialisation de la liaison série avec le PC à la vitesse de 9600 bauds
Serial.begin(9600);
// Configuration du module bluetooth à 9600 bauds, la vitesse du module par défaut
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
BTSerie.begin(9600);
// configuration de la broche de la led en sortie
pinMode(13, OUTPUT);
}
// dans la boucle principale nous faisons le relai entre le PC et le module bluetooth : les caractères envoyés depuis le terminal Android sont recopiés sur le mode terminal du PC pour visualisation.
void loop() {
char recvChar;
//On lit caractere par caractere sur le BTSerie et on affiche sur le Terminal Serie
if (BTSerie.available()) {
recvChar = BTSerie.read();
Serial.write(recvChar); // cette ligne n'est pas indispensable, mais elle peut aider au debugage pour vérifier que le module Android envoie correctement les caractères 0 et 1
// teste du caractère reçu
if (recvChar=='1'){ // s'il est à 1 on allume la led
digitalWrite(13,HIGH);
}
if (recvChar=='0'){ // s'il est a 0 on eteint la led
digitalWrite(13,LOW);
}
}
// dans ce programme cette partie est facultative.
//On lit caractere par caractere sur le terminal Serie et on affiche sur le BTSerie
if (Serial.available()) {
recvChar = Serial.read();
BTSerie.write(recvChar);
}
}

Le code est commenté et à priori, vous devriez être capable de comprendre ce qu’il se passe. Vous constatez que le code exploite aussi le mode terminal de la carte Arduino pour envoyer les caractères échangés entre le module HC05 et le dispositif Android sur la liaison filaire, et les afficher dans le mode terminal de l'application Arduino PC.

En résumé

Nous disposons à présent d'une nouvelle corde à notre arc. Nous sommes capables d'envoyer des caractères ASCII depuis le dispositif Android vers la carte Arduino par Bluetooth. Il nous reste à étudier plus avant les différents panels à construire pour exploiter pleinement les composants du robot. Ainsi, nos aurons à notre disposition la capacité de commander le robot à distance par le dispositif Android.

Exemple de certificat de réussite
Exemple de certificat de réussite