vendredi 4 mars 2016

Bluetooth et Arduino: le module HC-06

Grâce au module HC-06, il est très facile d'établir une communication bluetooth avec un microcontrôleur.  Il devient alors possible, par exemple,  de contrôler votre robot grâce à un téléphone ou une tablette.

Dans ce petit tutoriel, je vous explique comment contrôler deux LEDs (branchées à une carte Arduino Uno) au moyen d'une tablette Android.

(Notez que d'autres tutoriels expliquent comment utiliser le HC-06 avec un Raspberry Pi, un STM32 Nucleo un MPLAB Xpress Evaluation Board ou un MSP430 Launchpad).



Connexions

Mon module HC-06 comporte 4 pins:  VCC et GND pour l'alimentation, TXD et RXD pour la communication des données avec l'Arduino.

C'est clairement indiqué au verso de mon breakout: l'alimentation doit se situer entre 3,6 V et 6 V (5 V feront donc parfaitement l'affaire) et le niveau logique utilisé pour la communication est de 3,3 V.  Si vous utilisez un Arduino Uno, dont le niveau logique est de 5 V, vous devrez donc vous assurer d'abaisser la tension émise par l'Arduino (par sa sortie Tx) avant qu'elle ne soit reçue par le module HC-06 (par son entrée RXD).  Pour ce faire, j'ai utilisé un circuit intégré 4050, qui est spécialement conçu pour ce genre de tâche, mais un simple diviseur de tension fera tout aussi bien l'affaire.   Si vous utilisez un microcontrôleur dont le niveau logique est 3,3 V (Arduino Due, msp430 Launchpad, Nucleo, etc), cette précaution est évidemment superflue.

Donc:
  • Vcc du HC-06 --- 5 V de l'Arduino
  • GND du HC-06 --- GND de l'Arduino
  • TXD du HC-06 --- Rx de l'Arduino
  • RXD du HC-06 --- 4050 --- Tx de l'Arduino
Voici le circuit complet:

Aussitôt que votre HC-06 est alimenté, une LED rouge située sur le breakout se met à clignoter (elle cessera de clignoter lorsque le HC-06 aura établi une communication avec votre téléphone/tablette/ordinateur).    

Programmation de l'Arduino

Le module HC-06 est un convertisseur UART/Bluetooth:  si vous savez déjà comment interagir avec le moniteur série de l'IDE Arduino, alors vous savez comment interagir avec le HC-06!

Vous voulez envoyer un message par bluetooth à partir de l'Arduino?  Vous utilisez Serial.println. Vous voulez lire les messages qui proviennent à l'Arduino? Vous utilisez Serial.read.

Dans le sketch ci-dessous, la LED verte s'allume si le message "a" est reçu, la LED rouge s'allume si on reçoit le message "b", les deux LEDs s'allument si on reçoit le message "c", les deux LEDs s'éteignent si on reçoit le message "d", et chaque LED change d'état si on reçoit le message "e".

Petite précaution:  j'ai remarqué que le terminal bluetooth que j'ai utilisé sur ma tablette Android envoyait chaque message de façon répétitive, c'est pourquoi j'ai ajouté une condition pour réagir uniquement quand le signal reçu est différent du signal précédent.


Établir le lien avec le téléphone/tablette/ordinateur

Ici j'ai utilisé une tablette Android, mais la démarche est à peu près identique sur tous les systèmes d'exploitation.  Vous vous assurez que bluetooth est activé. Votre appareil affiche une liste des périphériques bluetooth qu'il détecte:  HC-06 devrait apparaître dans cette liste.  Lorsque vous sélectionnez HC-06, on vous demande de taper un code:  par défaut, c'est "1234" (si ce mot de passe ne vous plaît pas, il est possible de le modifier).




Votre HC-06 devrait alors apparaît dans la liste des "Périphériques associés", et la LED rouge du module HC-06 cesse de clignoter (elle demeure allumée).

Utilisation

Sur votre téléphone/tablette/ordinateur, vous devez installer un logiciel qui vous permettra d'envoyer et recevoir des messages via bluetooth.  Pour Android, il existe un grand nombre de logiciels gratuits intitulés "Bluetooth Terminal".  J'ai utilisé celui qui a été réalisé par AFLAK Omar.  Je ne dis pas que c'est forcément le meilleur, c'est le seul que j'ai essayé et il a bien fonctionné.

Vous indiquez d'abord, parmi les périphériques bluetooth associés, celui avec lequel vous désirez communiquer (HC-06, bien sûr).


Une fois la connexion établie, vous envoyez le message (a, b, c, d ou e), en utilisant le bouton "send".


L'Arduino allume ou éteint les LEDs en concordance avec votre message, et il vous retourne un message expliquant ce qu'il a fait.


Pas plus compliqué que ça!


Yves Pelletier   (TwitterFacebook)

1 commentaire:

  1. Bonjour,
    J'adore ce tuto mais il y as t'il un moyen pour que j'envois des données arduino sur un portable comme ci dessus mais rentrer par une sonde as une entrée analogique et qui plus est qur un programme apinventor ?

    RépondreSupprimer