version 1.0
V.O. 05 nov 2016
last update 20/10/2017

Le Module BLE HM10 , et test stand alone
Application MikroC avec Survivor clicker2 18F87J50 et Appinventor2
Application MikroC avec PIC12F1840 DIP8 et Appinventor2




Presentation :

module bluetooth HM10 BLE
Renomé : HM10_7EE1
@mac : 00:15:83:00:7E:E1

documents dispo aupres du Fabriacnt

Liaison Module via cordon Prolix PL2303à Teraterm terminal PC
Le module est alimenté par le 3,3V du PIC


La liste des commandes AT disponibles avec ce modele :


recupéré sur le terminal teraterm.,via la commande AT+HELP

La documentation originale Bolutek version pdf:

exemple d'echanges avec terminal:




Modification de la Configuration HM10 :
* la commande AT doit etre suivie de <CR><LF>
* La commande interrogation
? n'existe pas avec ce modele
vitesse 19200 au lieu de 9600 :
AT+BAUD => +BAUD4 avec 4 correspondnat à 9600 (valeur par défaut)
AT+BAUD5
* ATTENTION : modifier aussi la vitesse du terminal pour pouvoir poursuivre !
+BAUD=5 et 5 --> 19200 bds
AT+NAME=HM10_7EE1
+NAME= HM10_7EE1
( nota: 7EEE1 correspondant à la terminaison adresse )

Outil:
BlueToothLE Scanner.APK
dispo sur le Web
Une application sympa pour decouvrir les modules BLE environnants:

images/BLE_Scanner_a.gif images/BLE_Scanner_b.gif images/BLE_Scanner_d_message.gif
on retrouve le HM10
mais aussi, mon pese personne BlueTooth BLE !
des donnees utiles ..pour la suite on peut meme y voir le message envoyé !



Appli MikroC MCU 18F87J50

Hardware :
carte SURVIVOR (ex clicker2) PIC18F87J50 (alimentée en 3,3V)
Liaison module HM10 et PIC18F
UART2 19200,8,N,1

 

images/BLE_CC41_4pins_Schema.gif
Module relié au MCU PIC18F schema du module et connection au PIC


la carte Survivor alimente le module BLE.en 3,3V
Le PIC, via L'UART2, dialogue avec le module BLE à 19200 bds
L'UART1 est connecté soit au cable Prolix 2303 LTTL/USB , soit à un module bluetooth HC05
pour servir d'outil debugging et tracage..

Tracage recupéré sur terminal
Teraterm via cordon Prolific 2303 sur UART1:




SOFTWARE MikroC:

Description:
Au choix , usage Oscillateur interne ou Q=8MHz x PLL => Fosc=48Mhz
Init Hardware : Seule RA1 est utilisé en entree ANALOG
La carte Survivor est equipée de 2 BP et 2 Leds ..donc déja affectées
L'UART2 19200,8,N,1 est affecté au dialogue avec le module HM10 BLE
En option : L'UART1 19200,8,N,1 est affecté au tracage programme et debugging
Un LCD 2x16 car, piloté via I2C1 permet de suivre le deroulement du programme
Les echanges HM10 et PIC se font par interruption RX UART2
pour le test des reponses, en particulier dans la phase
Initialisation module BLE en 7 pas .
La boucle principale est rytmée via le timer3 , calé sur 4 secondes OU
si une venement detecté par RX2 Interrupt apparait.
Lecture des etats BP1,BP2 et entree ANA EA1, puis envoyées au HM10
La reception d'une commande LD1=1 ou LD1=0 ou LD2=1 ou LD2=0
=> action correspondante sur les leds.

* bloqué à ce jour sur la recption des donnees envoyées depuis MCU -> BLE ->appli Appinventor smartphone
alors que :
Pourtant, avec l' appli Android BlueTooth LE Scanner
Unknown Service
0000FFE1-0000-1000-8000-00805F9B34
je vois bien arriver la trame
B1=1,B2=1,EA= 19
emise par le PIC -> HM10_7EE1-> Android=> probleme coté Appinventor2

Source :
BLE_007EE1_Survivor_18F87J50_161105.c
Chargeur :
BLE_007EE1_SURVIVOR_18F87J50.hex


Test avec Google App Inventor 2
maj: 11/2016

Rappel :
Il faut avoir ouvert un compte Google adresse gmail + password
- Installer App Inventor :
Built: September 22 2016 Version: nb151a
Use Companion: 2.39

Probleme d'envoi BLE vers PIC , résolu :( Pourquoi faire simple quand on peut faire compliqué !)





Rajout d'un slider 0 -256 pour 0 -100%



Problemo pur envoi valeur Slider vers PIC :
B1=1;B2=1;E1= 197 ;V1= 634
IT UART2 -> SL=156;SL=164;
53.4C.3D.31.35.36.3B.53.4C.3D.31.36.34.3B.00.00.00.00.00.00.
B1=1;B2=1;E1= 196 ;V1= 631
Rebond Logiciel ? 2 valeurs de slider recupérées


Rappel:
Possibilité de faire touner l'application en cours d'ecriture sur la cible : Tablette Archos 43it, via une liaison Wifi
grace au MIT Companion 2 : Appli à charger sur votre Android Tablette ou smartPhone Android .
.Possibilité de suivre des variaibles ou résultats dans la fenetre du Blocks Editor
Connect
All compagion
lancer le MIT2 Companion sur le smarphone et scanner le QR code qui apparait sur l'ecran
L'application se charge automatiquement sur le smartphone et se lance .. MAGIC !
On peut ensuite sauvegarder le projet dans un Zip et le rappatrier sur le PC
et de meme compiler en 1 click, le projet en fichier executable *.apk et le rapatrier sur le PC
et le transferer dans le smartPhone


Designer Appinventor 2
rev 16/11/08

images/BLE_18F87J50_Designer_161108.gif


BLOCKS Appinventor2


images/BLE_18F87J50__blocks_161108.gif


Le programme dource Appinventor2

BLE_18F87J50_161108.aia

Tricks :
Il n'est pas explicité qu'une variable texte puisse etre utilisée comme un nombre..mais cela marche !

Mode d'emploi :

TEST REEL de l'application compilée , sur le smartphone
Telecharger l'appli *.apk dans le telephone.. le plus simple est par liaison USB avec le PC
AUTORISER Application Inconnue
Installer l'application sur le Smartphone .. ex: avec ESFiles
BLE_18F87J50_161108.apk
cette appli ne tournera pas avec un autre module HM10 BLE, because adresse figée dans le programme

images/BLE_18F87J50_Running_161106.gif




Version avec 12F1840 Dip8 et App Inventor 2
maj: 19/10/201
7
Test HORS PIC du module BLE seul, lié au terminal PC

Hardware :


images/t_HM10_BLE_direct_Test_with_LTTL_USB_link_terminal_171011.gif images/t_TEST_BLE_HM10_cordon_LTTL_USB_RealTerm_171010.gif images/t_USB_FTDI_LTTL_3_3V_Connector_6_Pins.gif
Montage de Test du module BLE (alim 3,3V) schema connections Cordon LTTL / USB

Dialogue direct:
Echanges sur Terminal REALTERM en Half Duplex pour voir les Questions-reponses ( en Vert/Jaune)

images/t_TEST_BLE_HM10_cResults_on_RealTerm_171010.gif



Alimentation
3,6V

images/t_12F1840_BLE_171016_Schem.gif

L'UART1 par défaut n'est pas utilisé ici, via les registres APFCON , il est derouté sur R4 et RA5 .
L'uart etant affecté au dialogue avec le module BLE HM10, on ne peut pas se servir de l' UART1 TX comme
outil de debugging , car enverrai alors des commandes zarbi au module BLE.
Un UART SOFT sur RA2 est alrs utilisé specifiquement pour le suivi/debugging du programme et des echanges avec le module BLE HM10.
L'entree RA1 est utilisée comme entree Analogique 0 à 1,024V .. usage de +VREF 1,024v interne au PIC au lieu de VCC.
pour recevoir un LM35DZ delivrant 10mV/°C => on a donc une gamme de mesure calibrée à 0 à 102,3°C
Lecture au 1/10em de degre C
La sortie RA0 commande une led ou un relay.
ATTENTION:
l'affection des E/S par programme, perturbe et annule meme toute config prealable sur le meme port A.
Il faut donc RECONFIGURER la sortie RA0 via TRISA.B0=0 apres l'init de l'UART1.
La pin RA3 resete affectée uniquement au RESET / MCLR
Les connections ICSP Data et ICSP Clock doivent etre deconnectées pour le RUN program..


Le programme :

Init Oscillateur interne à 16MHz
Modif affectation des Pins pour usage UART1 sur RA5 RX et RA4 TX
Re-init RA0 comme sortie relay
Init UART SOFTWARE sur RA3 TX ( RA5 RX ! mais non utilisée)
Init Module BLE HM10
La led verte du module BLE doit clignoter ...
Le module doit etre auparavant appariré manuellement avec le Phone Android où sera installé l'application *.apk
Lancer l'appli Android..
On doit voir un signal RSSI evoluer
On dispose alors de 40 secondes pour designer , dans l'application Android, quel est le client BLE à connecter..
si pas de connection, l'appli MikroC redemarre sur un software Reset.
Connecter (coté Appli Android)
La led verte du module BLE passe en feu fixe
Le Bouton Connecter passe en vert "Connected" et la led ,à gauche du bP, passe en Vert
La zone reception Android , affiche la trame émise par le PIC 12F1840
En dessous, les valeurs recupéres sont affichées :
A gauche J , l'indice en cours 0 à 65535 et boucle ..
A droite, La Temperature Ambiante en cours, affichée en 1/10em de degres
La commande du relais se fait par le BP "Cde Toogle Led1" .. La led à coté renseigne sur l'etat du relais
qui est retransmis par le PIC .. Rouge=OFF Vert = ON.. ce qui explique le delai entre la commande et le retour d'etat led.
En fait on ne verifie pas l'etat reel des contacts ..car pas assez d'entree sur ce PIC DIP8 pins
Un Slider envoie une donnée de 0 à 255 vers le PIC ..MAIS non exploité, because pas assez de RAM .. le but etant une cde PWM

Projet MikroC :

Avec l'usage de la lib MikroC Software UART
projet NON evolutif because usage de 98% de RAM et 80% de ROM

12F1840_EA2_Uart_RA4_RA5_UART_soft_RA1_BLE_171019.zip
source c :
_12F1840_EA2_UART1_UART_Soft_BLE_171019.c

// Used RAM (bytes): 238 (99%) Free RAM (bytes): 2 (1%)
// Used ROM (program words): 3276 (80%) Free ROM (program words): 820 (20%)


Avec l'usage d'une fonction en ASM sous MikroC , pour gerer l'UART3 TX , gain de 22% en ROM et 12% en RAM !
// Project Linked Successfully 12F1840_EA2_Uart_RA4_RA5_UART_soft_RA1_BLE_1710.mcppi
/ Used RAM (bytes): 209 (87%)
Free RAM (bytes): 31 (13%)
// Used ROM (program words): 2278 (56%) Free ROM (program words): 1818 (44%)

UART3_ASM.inc pour gerer uniquement la Transmission TX -> Ecran
et le source adapté en consequence
_
12F1840_EA2_UART1_UART_Soft_BLE_171020.c
Le point delicat est l'ajustement du delay de la duréee du bit Start ( 52µS at 16MHz pour 19200 bauds)
Le caractere à envoyer est situé à une adresse FIXE absolue .. pour ne pas se melancger les pinceaux avec les choix du compilateur C ...ici 0x0020
Il ne faut pas oublier d'initialiser la Pin TX choisie en Sortie .. celle ci est definie par ailleur en DUR , dans la fonction UART3_Write.. (LATA.B2))

Sequence d'init module BLE HM10 Questions/ Reponses moduyle BLE




Appinventor 2 Application :

Designer L'appli sur Startrail7 Android version 5.1


Cette appli, contrairement à la precedente devrait permettre le choix d'un autre module BLE , à choisir dans une liste
mais je n'en ai qu' un seul ..donc pas testé !.


Le projet AIA2
:
BLE_12F1840_171018.aia
L'Appli Compilée:
BLE_12F1840_171018.apk

Ecran Blocks :

images/t_blocks_171018.gif Source:_12F1840_EA2_UART1_UART_Soft_BLE_171020.c
Init UART3 TX sur RA2
Init module BLE HM10 :
AT
AT+RESET
AT+VERSION
AT+PIN123456
AT+NAMEHM10_7EE1
AT+ADDR
AT+UUID
AT+POWE
Init OK
AT+START
40 sec pour se Connecter / Android Apli.
9
8
7
Connection BLE OK.
I am Alive j= 1
I am Alive j= 2
I am Alive j= 3
I am Alive j= 4
I am Alive j= 5
I am Alive j= 6
I am Alive j= 7
I am Alive j= 8
Relay1_ON
LD1=1
I am Alive j= 9
I am Alive j= 10
I am Alive j= 11
I am Alive j= 12
I am Alive j= 13
Relay1_OFF
LD1=0
I am Alive j= 14
Blocs Appli Inventor Debugging Display ,suite connection BLE OK


Next ... en remplacement, une version 18FL26K22
pour lever les limites de RAM et ROM du PIC12F


paulfjujo@free.fr


common/GIF/LTC1286p.jpg



Retour à l'index general