***Pour revenir à la page d’accueil** ICI
Un logiciel de dialogue entre Smartphone et Arduino
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.
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.
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.
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.
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.
"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é). »
"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
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
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
Aucune difficulté pou le Bluetooth en V2, par contre en V4 (BT LowEmission) c’est nettement plus complexe !
Logiciel
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.
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 TerminalAvant 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
Bonjour,
Merci pour ces explications cela m’a bien débloqué sur l’envoi des données depuis l’arduino vers le smartphone.
Nebtreak
Sympa Netbreak d’avoir pris le temps pour ce petit mot...
C’est toujours encourageant pour l’amateur que je suis.
Amicalement
Bonjour captulipe
sur mes 757325 lecteurs/consulteur ? à ce jour ( cela doit faire environ 14 ans que ce site existe) tu es le premier a t’intéresser à des rubriques bien différentes : programmation Arduino et mécanique quantique.
Ou pour être plus precis, le premier , je l’espère, à prendre la peine de l’écrire !
Tu dis "J’ai parfois du mal à suivre votre logique " là tu m’inquiètes, n’étant pas originaire de la Blanche Albion...