Projet arduino bluetooth: les modules HC-05

Dans la lignée de mon article pour ajouter du wifi à votre arduino, aujourd'hui nous allons ajouter du bluetooth !

Fini les câbles USB à brancher et débrancher pour communiquer avec notre projet. Fini aussi les projets avec des fils partout! On va enfin pouvoir ranger notre beau montage dans une boite !

Le module HC-05

Les modules HC-05 sont des puces qui agissent comme une passerelle entre le bluetooth et une liaison série. C'est a dire qu'elles se branchent sur les PIN TX/RX de votre arduino, agissent comme la liaison série de votre PC, et transmettent ces données via bluetooth à leur destinataire.

Comme le WIFI, le bluetooth opére sur la bande des 2.4Ghz. c'est un protocole maitre esclave, c'est a dire qu'une fois appairé, l'esclave ne pourra parler qu'a son seul maitre. En revanche le maitre peut se connecter à plusieurs esclaves.

Le branchement

Ce module, comme pour un ESP8266, fonctionne en 3v3. Heureusement, la puce supporte le 5v sur toutes ses broches (y compris VCC!). Le branchement est donc trivial: le VCC sera relié au 5V de l’Arduino et le GND à la masse. On connectera les broche RX/TX sait au bornes 0 et 1 de l'arduino pour 'remplacer' la liasion avec le PC, ou alors sur deux autres broches si on veux ajouter une liaison serie en plus ! Il faudra enfin connecter la broche Key à un pin digital de l'arduino. Cette broche permet de passer le module en mode configuration.

2019-08-12 13-50-28

Le code de base

Pendant notre dévelopement, nous ne pouvons pas brancher directement le module sur les Pins 0 et 1 car ceux-ci sont déjà occupés par la liaison série entre l'arduino et le PC et on risque un conflit. On va donc utiliser les Pins 2 et 3.

Le code suivant est valide pour tout type d'arduino car il utilise SoftwareSerial (fonctionne sur n'importe que pin) Sur certains arduinos, vous pouvez l'adapter pour utiliser Serial2 ou Serial3 si votre modèle le supporte (Leonardo ou Mega par exemple).

#include <SoftwareSerial.h>

int KEY_PIN = 12
SoftwareSerial modulehc(11, 10); // (RX, TX) (pin Rx BT, pin Tx BT)

void setup()
{
    // Ouvre la voie série avec l'ordinateur et celle avec le module
    Serial.begin(9600);
    modulehc.begin(9600);
    
    // Passe en mode commande
    pinMode(KEY_PIN, OUTPUT);
    pinMode(KEY_PIN, LOW);
}

void loop()
{
    if (modulehc.available()) {
        Serial.write(mavoieserie.read());
    }
    if (Serial.available()) {
        modulehc.write(Serial.read());
    }
}

Ce code lit le contenu de l'entree Serie Usb et le transfert vers le module, et inversement. Le module est placé en mode commande a la ligne 14. Remplacer LOW par HIGH pour revenir en mode normal à n'importe quel moment.

Utilisation de mode commande

Comme dit plus haut, le mode commande permet de configurer notre module. Le format est simple: chaque commande commence par les lettres AT+ et fini par un retour a la ligne \n\r.

Pour verrifier que tout va bien, tapez la commande AT+NAME. Normalement, cela affiche le now du module. Souvent le nom par defaut est HC-05. Pour le changer, tapez la commande AT+NAME=MonBlueTooth. Le module doit vous répondre OK.

Voici un petit extrait non exaustif des commandes disponibles:

  • AT -> OK: le module est-il en mode commande?
  • AT+RESET -> OK: Redemarre (soft)
  • AT+VERSION? -> VERSION: -Param- : Quelle est la version du firmware
  • AT+NAME=-Param- : Change le nom du module bluetooth
  • AT+ROLE=-Param- : Change le mode entre master (0) et esclave (1)
  • AT+PSWD=-Param- : Change le mot de passe d'appairage
  • AT+UART=-Param-,-Param2-,-Param3-: Define la liason série (Bauds, bits de stop et parité)

La liste complete est disponible ici: https://www.teachmemicro.com/hc-05-bluetooth-command-list/

Utilisation en dehors du mode commande

En dehors du mode de commande, le module se comporte comme une liaison série normale filaire. C'est a dire que si deux module sont appairés ensemble, tous les caractéres onvoyé sur la broche TX du l'un apparaitront sur la broche RX de l'autre. Pensez bien a passer le KEY_PIN (broche Key) à HIGH pour maintenir le module en dehors du mode commande !

A vous de tester ce nouveau jouet et de retirer tous les fils inutiles de vos projets ! Faites vite avant que votre maison ne se transforme en ce genre de montage:

nicolas-thomas-3GZi6OpSDcY-unsplash