version 1.2
V.O. 05 nov 2016
last update 02/07/2019
Le Module BLE HM10 , et test stand alone
Application MikroC avec Survivor clicker2 18F87J50 et Appinventor2
Application MikroC avec PIC12F1840 DIP8 et Appinventor2
Test Autre Module BLE plus rescent : V4.06 avec TeraTerm Terminal
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:
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
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
BLOCKS Appinventor2
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
Version avec 12F1840 Dip8 et App Inventor 2
maj: 19/10/2017
Test HORS PIC du module BLE seul, lié au terminal PC
Hardware :
Dialogue direct:
Echanges sur Terminal REALTERM en Half Duplex pour voir les Questions-reponses ( en Vert/Jaune)
Schema : avec sonde DS18B20 et commande Led
Alimentation 3,6V
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 alors utilisé specifiquement pour le suivi/debugging du programme et des echanges avec le module BLE HM10.
L'entree RA0 est l'entrée O.W.S. pore 1 sonde DS18B20
La sortie RA1 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 88% 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 :
Next ... en remplacement, une version 18FL26K22
pour lever les limites de RAM et ROM du PIC12F
Test Module BLE V4.0 avec Terraterm (02/0/2019)
6 pins connectées
9600 bauds et CR+LF en fin de commande
module neuf (config usine ?)
AT
OK
AT+VERSION
+VERSION=Firmware V4.0.0,Bluetooth V4.0 LE
AT+ADDR
+ADDR=00:15:80:91:54:85
AT+PIN
+PIN=000000
AT+BAUD
+BAUD=4
AT+NAMEBLE_5485
+NAME=BLE_5485
OK
AT+NAME
+NAME=BLE_5485
AT+HELP
********************************************************************
* Command Description *
* ---------------------------------------------------------------- *
* AT Check if the command terminal work normally *
* AT+RESET Software reboot *
* AT+VERSION Get firmware, bluetooth, HCI and LMP version *
* AT+HELP List all the commands *
* AT+NAME Get/Set local device name *
* AT+PIN Get/Set pin code for pairing *
* AT+PASS Get/Set pin code for pairing *
* AT+BAUD Get/Set baud rate *
* AT+LADDR Get local bluetooth address *
* AT+ADDR Get local bluetooth address *
* AT+DEFAULT Restore factory default *
* AT+RENEW Restore factory default *
* AT+STATE Get current state *
* AT+PWRM Get/Set power on mode(low power) *
* AT+POWE Get/Set RF transmit power *
* AT+SLEEP Sleep mode *
* AT+ROLE Get/Set current role. *
* AT+PARI Get/Set UART parity bit. *
* AT+STOP Get/Set UART stop bit. *
* AT+START System start working. *
* AT+IMME System wait for command when power on. *
* AT+IBEA Switch iBeacon mode. *
* AT+IBE0 Set iBeacon UUID 0. *
* AT+IBE1 Set iBeacon UUID 1. *
* AT+IBE2 Set iBeacon UUID 2. *
* AT+IBE3 Set iBeacon UUID 3. *
* AT+MARJ Set iBeacon MARJ . *
* AT+MINO Set iBeacon MINO . *
* AT+MEA Set iBeacon MEA . *
* AT+NOTI Notify connection event . *
* AT+UUID Get/Set system SERVER_UUID . *
* AT+CHAR Get/Set system CHAR_UUID . *
* -----------------------------------------------------------------*
* Note: (M) = The command support slave mode only. *
* For more information, please visit http://www.bolutek.com *
* Copyright@2013 www.bolutek.com. All rights reserved. *
********************************************************************
AT+ROLE
+ROLE=0
AT+POWE
+POWE=2
AT+STATE
+STATE=2
OK