BlueTooth et Arduino, Smartphone, modules HC-05/06 HM-10 et ESP 32

16/2/23

***Pour revenir à la page d’accueil** ICI


Un logiciel de dialogue entre Smartphone et Arduino

Logiciel - 3.6 ko

Logiciel
Dialogue_Arduino_Smartphone_25_06_20

 

Autre article sur l’Arduino  Arduino debugging et autres trucs

Ces modules à moins de 4€ permettent une liaison radio à 2.4 GHz entre un Arduino et tout smartphone (ou tablette) sous Androïd (pour les accros de la Secte Apple, circulez il n’y a rien à voir, car Apple interdit l’utilisation du profil de telecommunication SPP , Serial Port Profile !!!).

En théorie leur utilisation devrait être triviale mais en pratique, vu leur prix, les finitions sont souvent un peu bâclées et les connexions entre broches externes et internes parfois absentes. D’où ce tuto qui s’appuie sur un configuration minimale et commune de 4 broches, Vcc=+5V, la masse, TX et RX.

Aucune hypothèse n’est faite concernant la presence d’éventuelles broches KEY, STATE, EN , bouton poussoir ou autre.

L’ESP 32 est un module plus puissant, comprenant 2 CPU, 32 bits, gestion du Bluetooth en V2, V4, et du WiFi.

Il remplace donc le couple Arduino + HC05/06.

Il se programme comme un Arduino, sous le même IDE.

Le principe est d’installer sur le smartphone (ou tablette) une application de type dit "Terminal" qui le transforme en un equivalent de l’écran Seriel de l’Arduino (environnement IDE sur PC). Aussi facile que les Serial.print("Toto"), le sketch de l’Arduino exécutera un BT.print(Toto") qui affichera Toto sur le smartphone ( voir les sketches ci dessous pour la programmation).

L’entrée de caractères s’effectue sur le clavier du smartphone, tout comme pour le moniteur elle s’effectue sur le clavier du PC (dans la ligne en haut du moniteur sur PC).

Les differences entre HC05 et 06 seront négligées ici (une affaire de maître/esclave mais on sera toujours en mode esclave) sauf pour le passage en mode commande (ou AT, c’est synonyme) ainsi que les ordres AT autorisés.

Les HC05/06 sont en general livrés programmés pour une liaison à 9600 bits par secondes (bps), et leur mot de passe demandé au démarrage par le smartphone est 1234.

Si nécessaire seulement, ces valeurs peuvent être modifiées en entrant en mode AT.

Voici le schéma de couplage Arduino (Uno, Nano etc) et HC05/06.

Noter qu’en théorie, on devrait passer du 5 V à 3.3V avec un diviseur de tension à 2 resistances sur le TX de l’Arduino, mais les HC05/06 semblent tous tolérer le + 5V, alors restons simple.

HC05/06 de face et de dos.

Essais d’emission/reception

Lancer l’IDE Arduino sur le PC.

Depuis le Play Store, installer l’appli Blue Term + (Michael Jentsch).

**********Modification :Bluetooth Terminal HC05 ok aussi pour HC06 est preferable !************

En bas à droite clic sur les 3 points verticaux ce qui donne :

Preferences/Cocher la cas Local Echo (pour afficher sur l’écran du smartphone le caractère entré).

Fermer Blue Term+.

Enficher un module HC05 ou 06, connecter le cable USB provenant du PC, la LED du module doit clignoter rapidement.

Sur le smartphone, dans Paramètres, lancer BlueTooth.

Quand un mot de passe est demandé, entrer 1234.

Pour plus de details sur l’appairage voir l’annexe.

Lancer Blue Term+, en bas à droite clic sur les 3 points verticaux puis Connect Device.

Le nom du module doit apparaître, ainsi que "Connected :HC05"(ou6) sur le haut de l’écran.

La LED doit maintenant clignoter : 2 flash rapides, 1 s OFF, tant que le module est connecté au smartphone.

En outre un clavier apparaît, et pour un HC05, la LED clignote 1s ON, 1s OFF. Pour un HC06, LED allumée fixe.

Téléverser le sketch :

BlueTooth_Emission-Reception

et ouvrir l’écran Seriel.

L’écran du smartphone doit afficher

Taper un caractère, il doit venir s’afficher sur le PC.

En cas de problème, essayer ces manips :

— vérifier la vitesse en bas du moniteur qui doit être 9600bps, et "Les deux, NL et CR".

— dans Parametres fermer BlueTooth puis le re-ouvrir.

— fermer BlueTerm+ puis le relancer, par exemple si le clavier a disparu.

Sketch

Blue_Tooth_Emission_Reception__25_06_20 - 1.6 ko

Sketch Blue_Tooth_Emission_Reception__25_06_20

Le passage en mode AT n’est pas indispensable si l’on se contente des valeurs par défaut : 9600bps, nom du module "HC05" ou "HC06", mot de passe "1234".

Si par contre on désire modifier une ou plusieurs de ces valeurs, le passage en mode AT est très different selon le type de module.

HC06 en mode AT

Enficher le module et connecter le cable USB.

La LED clignote rapidement et continuera ainsi pendant ce qui suit.

Téléverser le sketch suivant et activer le moniteur.

AT_HC06_en_mode_AT__240119 - 2.5 ko

AT_HC06_en_mode_AT__240119

Listing_des_deux_modes_AT - 1.6 ko

Listing_des_deux_modes_AT

Recherche de la version du module

Un problème avec les HC06 est que selon la version de leur logiciel

-  linvorV1.8 (anciens module)

-  3.0-20170609

le reglage de la fin de ligne sur le moniteur est different.

Pour un module inconnu, il faudra donc commencer par lire sa version, par AT+VERSION, disons avec le reglage

"Pas de fin de ligne"

La vitesse par défaut du module est 9600 bps ( si celle ci a été préalablement modifiée, il FAUT modifier la variable "vitesse" dans le logiciel, et bien sur choisir la même vitesse pour le moniteur).

Tous les caractères tapés en haut du moniteur doivent être en MAJUSCULES ( minuscules tolérées mais pas toujours...).

Entrer AT puis clic sur "Envoyer" (ou "Entrée" au clavier, c’est equivalent)

La réponse du module doit toujours commencer par "OK".

Si la réponse est donc OK, on a eu de la chance, le module est de type "LinvorV1.8"

AT+VERSION doit générer la reception de " OKlinvorV1.8"

Si le module n’a pas répondu OK, changer pour "Les deux NL et CR" dans le moniteur.

Entrer"AT+VERSION", qui doit générer la reception de "VERSION:3.0-20170609"

Noter ici que la vitesse de 115200 bps entraîne des erreurs d’affichages uniquement, donc sans consequences.

On en conclue cependant, si l’on désire imposer une grande vitesse, qu’il est preferable d’effectuer les changements de nom ou code pin à 9600 bps et en dernier lieu de modifier la vitesse.

Revenir de 115200 bps à disons 9600 s’effectue sans problème.

HC06 version Linvor1.8 ( et DX_Smartv2.0)

"Pas de fin de ligne" dans le moniteur.......MAIS à l'utilisation il faudra utiliser le Retour Charriot...

Les seules commandes AT reconnues sont :

AT+VERSION pour la version du logiciel dans le module

AT+NAMEmon_ModuleHC06

force un nouveau nom au module, ici"mon_ModuleHC06".Minuscules et majuscules sont acceptées.

Il n’est pas possible de relire le nom existant

AT+PIN1515

force un nouveau mot de passe au module, ici 1515.

Il n’est pas possible de relire le code existant

AT+BAUD4

force la vitesse 9600bps entre module et smartphone.BAUD1 impose 1200bps,BAUD2 pour 2400bps , 3 = 4800, 4 = 9600, 5 = 19200, 6 = 38400, 7 = 57600, 8 = 115200 .


Du vécu, par Gérard Alquier :
« Je suis tombé sur 4 modules qui ont un logiciel avec une référence différente (réponse à la commande AT+VERSION)
La Référence : DX_Smartv2.0 (au départ, j'ai cru que je m'étais connecté à la télé du salon !!!)
Les commandes et possibilités sont identiques à la version LinvorV1.8

PS : J'ai galéré pendant un certain temps jusqu'à ce que je comprenne.
1 - Que le nouveau débit AT+BAUDx n'était prise en compte qu'après le redémarrage du module (déconnecté reconnecté physiquement)
2 - Que pour transmettre les ordres AT, il fallait "Pas de fin de ligne", mais pour transmettre des données il fallait "Retour Chariot"
3 - Que la réponse sur un IDE Linux était différente d'un IDE Windows !!! (Même version de l(IDE, même matériel connecté). »


HC06 en version 3.0-20170609

"Les deux NL et CR " dans le moniteur

-  AT+NAME renvoie le nom actuel du module, HC06 par defaut

-  AT+NAME=ToTo renomme en ToTo

-  AT+UART renvoie la vitesse actuelle, par ex 9600,0,0

-  AT+UART=38400,0,0 impose la vitesse 38400.

Attention, ne pas oublier ",0,0"

-  AT+PSWD renvoie le code pin actuel (par défaut 1234)

-  AT+PSWD="2222" impose un nouveau mot de passe

HC05 en mode AT

Le plus grand folklore règne dans les connexions pour passer en mode AT !

Si un bouton poussoir existe et qu’il est bien connecté, :

On garde le bouton appuyé avant de connecter le +5V. La LED rouge doit alors clignoter 2s ON, 2s OFF, comparé au mode off line, clignotement rapide(et au mode connecté au smartphone, 2 clignotements puis 1s OFF)

Sinon on soudera directement un fil sur la patte 34, c’est à dire celle du haut à droite puis pour passer en mode AT on connectera ce fil au +3.3 V durant tous ce qui suit.

Enficher le module et connecter le cable USB s’il ne l’est déjà.

La LED clignote 2 s ON, 2 s OFF, et continuera ainsi pendant ce qui suit.

Téléverser le sketch suivant et activer le moniteur.

Logiciel

AT_HC05_en_mode_AT__7_10_18 - 1.6 ko

AT_HC05_en_mode_AT__7_10_18

Noter que les échanges DURANT CE MODE AT entre HC05 et Nano sont à 38400 bps FIXE, imposé.

Dans le moniteur "Les deux, NL et CR" et 38400 bps.

Tous les caractères tapés en haut du moniteur seront en majuscule.

Entrer AT puis clic sur "Envoyer" (ou "Entrée" au clavier, c’est equivalent)

La réponse du module commence toujours par "OK".

AT+VERSION

+VERSION:2.0-20100601, peut varier bien sur

AT+ADDR

+ADDR:2015.12.73861, c’est l’adresse MAC, unique pour tout equipement de telecom.

AT+NAME=HC-05-C, j’attribue ce nom

AT+NAME ?

+NAME :HC-05-C, c’est bien son nom

AT+PASWD ?

+PSWD:1234, le standard des mots de passe

AT+PSWD=1515 , chagé pour 1515

AT+UART ? +UART:9600,0,0, vitesse entre module et Arduino.

On notera au passage l’erreur car ce message devrait être :

9600,1,0 c’est à dire 1 bit de stop et pas de parité.

Si l’on désire modifier cette vitesse pour 19200 bps par exemple :

AT+UART=19200,1,0

Logiciel

AT_HC05_en_mode_AT__7_10_18 - 1.6 ko

AT_HC05_en_mode_AT__7_10_18

ESP 32 Bluetooth V2

Aucune difficulté pou le Bluetooth en V2, par contre en V4 (BT LowEmission) c’est nettement plus complexe !

Logiciel

ESP_32_BlueTooth_to_Serial_Arduino - 1 ko

ESP_32_BlueTooth_to_Serial_Arduino

Renifleur de caractères

Ce renifleur de caractères sur liaison série est utile pour connaitre TOUS les caractères émis par une appli de type Terminal, en particulier les caractères CR(Carriage Return) et LF(Line Feed).

Par exemple :

-  "Bluetooth Terminal HC05" émet CR LF en fin de ligne, mais rien si la ligne est vide.
-  "Bluetooth Terminal-Domolin" émet LF en fin de ligne, même si la ligne est vide.
-  "Blue Terml +" émet caractères par caractères, donc pas de LF mais un CR sur demande.

On voit qu’il n’y a aucun standard pour les caractères CR et LF. Ainsi NL pour New Line est mal défini.

Dans ce logiciel un module Bluetooth Hc05 ou 06 est couplé en D10, D11.

On affiche sur le PC TOUS les caractères émis, y compris CR (13) Carriage Return et LF(10) Line Feed.

Ceux-ci sont filtrés et affichés en toutes lettres.

Logiciel - 1.4 ko

Logiciel
Renifleur_de_caracteres_sur_liaison_serie_181117

Testeur de HC 05/06 à l’oscilloscope et smartphone

Logiciel - 1.1 ko

Logiciel
Testeur_de_HC05_06_a_l_oscilloscope_et_au_smartphone301017

On observe l’activité des broches RX et TX à l’oscilloscope, en utilisant l’afficheur et le clavier d’un smartphone comme récepteur/émetteur.



HC-10 Module Bluetooth BLE (low energy)

Il faut le code 000000 pour l'associer et une appli telle que

Serial Bluetooth Terminal

qui propose le mode BLE

//BT_Bluetooth_BLE_Android
//HM-10 OK mais code d'association 000000 et non 1234 ou 0000 comme mles modules HC05/06, BT V2
//Il faut Serial Bluetooth Terminal comme appli et spécifier BLE
//Le mode par défaut est 9600 bps sinon il faut le changer en passant en mode AT
//On converse entre PC et Sphone avec chaque clavier/écran
#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  BT.begin(9600);
  Serial.println("Bluetooth Ready");
}

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

Annexe Appairage

Avant d’appairer un module c’est à dire de le faire reconnaître et autoriser par un smartphone, il est recommandé de lui donner un nom sinon ils s’appellent tous HC-05 ou HC-06. Heureusement le numéro MAC à 12 chiffres hexadécimaux ( 98 :D3:31 :FD:25:31 par exemple) est unique, mais peu maniable.

Donc une fois renommé (en mode AT comme expliqué ci dessus) disons "Mon HC06", alimenter le module en +5V et ouvrir Paramètres/Bluetooth sur le smartphone.

— "Activé" OFF puis ON

— En bas de l’écran doit apparaître le N° MAC à 12 chiffres puis 10 s après environ le nom "Mon HC06".

— Taper sur ce nom. Un écran propose : "Associer Mon HC06 , entrer le mot de passe "soit 1234 sauf si on l’a modifié en mode AT.

— "Mon HC06" rejoint alors le haut de la liste de tous les périphériques Bluetooth.

— Lancer une appli terminal comme celle ci dessus.

— "Mon HC06" apparaît sur la liste, il suffit de taper sur ce nom pour se connecter : la led du module change de rythme ( fixe pour HC06, rythme plus lent sur HC05).

Une excellente source sur le Bluetooth :

http://www.martyncurrey.com/arduino...

Autres sources intéressantes, en français

http://eskimon.fr/2498-arduino-anne...

https://feroce-lapin.blogspot.com/2...


  Autres docs sur HC05/06  :  doc 1          doc 2


Forum