V.O. 21 juillet 2015
rev 27/04/2024
GSM2 click Application avec Clicker2 PIC18F87J50
-Montage de test
-Presentation
-1er Essai
envoi SMS
-Problemes
rencontrés
-Details
software (MikroC)
-modif
harware sur GSM2-Click
-3em solution
-4em solution
retenue (Hardware + Softw )
-Mixage
Applications GSM2 et GPS Ublox
-Tests rev.
2024
Montages de test :
last update : 25/06/2016
En version
déportée pour test direct avec
Terminal VBRAY..
Etude des commandes AT et reponses du GSM2-click
En version definitive, le
GSM2-click est monté sur l'emplacement Mikrobus#1
Présentation du module
GSM
Le module Micro-click , emplacement mikrobus #1:
![]() |
![]() |
![]() |
GSM2-Click MikroE-1684 | Antenne 932-MIKROE-275 | insertion SIM |
Ne pas oublier de commander aussi
l'antenne : GSM ANTENNA WITH SMA RA CONNECTOR
Interlaison PIC 18F87J50
et GSM2-click via le MikroBus
Carte GSM2:
Puce QUECTEL M95
M95A-02-NCH-STD
M95AR01A21
S2-W0953-MQ009
SN: MP24414N3008263
IMEI: 863071014743659
CE 2200
Schema de la carte GSM2-click
HISTORIQUE & Notes :
Carte SIM :
Usage d'une carte SIM de chez Fremobile.fr, ayant deja un
abonnement FAI freebox
La carte SIM coute 10
L'abonnement normal de 2 est gratuit si abonné freebox.
Free envoi par courier la carte SIM + les instructions :
Il faut initilaliser / activer la carte SIM sur
le site de free.fr
1er test , envoi d'un SMS sur le nouveau numero de ligne 07.XX.XX.XX.XX..
=> message sur repondeur.. (la carte SIM n'etant pas encore
sur le GSM2.
donc, la ligne est bien activée.
nota: je n'ai pas de telephone "Libre de fournisseur"
pour pouvoir le faire ...en mode vocal
1er test d'envoi commande AT
Le module GSM2-click dialogue avec le PIC via son UART2 à 19200,N,8,1
J'utilise aussi l'UART1, comme outil de debugging, relié au
terminal RS232 Vbray..
Tracage du programme par copie de la commande et du retour de l'UART2
(= GSM2)
Attention: niveaux logiques en 3,3V (interface 2TR
avec VBRAY OK à 19200 bauds!)
PAS DE REPONSE à la commande AT<CR>
en fait, l'interruption UART2 (GSM2) était basée sur
acceptation l'apparition d'un caractere CR en fin de trame
or le GSM2 renvoi : 79 75 13 10
un LF est rajouté et se retouvait donc en debut de la trame
suivante
en position 0 dans le buffer. Le test de OK etant fait sur les 2
premier caractere.. NEVER SUCCES!,
j'ai donc fait le test reception de trame entiere sur l'apparition
de LF (au lieu de CR.
pour bien retrouver 'O' en buffer[0] et 'K' en buffer[1].
réponse sur cde AT .. résolu.
Ensuite, ne pas oublier d'envoyer le code PIN , ici "1234"
par défaut.
Quelques commandes AT tres utiles :
ATE0<CR> : Cette commande permet de désactiver la commande
écho (ATE1 la réactive).
Cela demande donc au modem de ne pas répéter systématiquement
les commandes qui lui sont envoyées.
AT+CMGF=1<CR> : Cette commande permet de régler le format
de message pour l'envoi de SMS.
Par défaut, le modem est en mode PDU (AT+CMGF=0). C'est-à-dire
que l'envoi de message se fait
en hexadécimal.
AT+CMGF=1 permet de passer en mode texte, ce qui simplifie les
manipulations de SMS.
Numero de telephone au format international 145
AT+CMGS="+336XXXXXXXX"<CR> :
Cette commande permet de commencer la rédaction d'un SMS
. On précise en argument le numéro de téléphone choisi. En
retour on obtient le caractère d'invite
de commande « > » qui nous invite à rentrer le texte du SMS.
Texte du SMS<CTRL+Z><CR> : Cette fin de commande
permet alors de préciser le texte et de
valider l'envoi du SMS par un CTRL+Z et un retour chariot.
<CTRL+Z> : Combinaison des touches CTRL et Z. Sa valeur
hexa est 0x1A
Documentation
commandes AT
Je recommande fortement , suite à des multiples déboires, de
commencer à explorerl a Carte GSM2-click
avec un terminal RS232 (comme Terminal
VBRAY par exemple) , afin de tester toutes les
commandes ATpossibles
et de les modifier si besoin est.
Le module GSM2-click N'EST PAS installé sur le mikrobus #1 ,
mais il y est relié partiellement via des straps (fils) male-femelle
SAUF la partie UART qui est reliée directement au terminal RS232
, via l'interface 2 TR ( 3,3V levels <->RS232 levels)
L'init du module GSM2 est donc faite par le programme PIC, mais
le controle par le terminal VBRAY.
Fichier de config des touches terminal :GSM2_click.tmf
exemple de dialogue direct : Quecktel_dialogue_150818a.txt
Notes:
RED LED = Etat NETLIGHT (Led rouge)
Off The module is not running.
64ms On/ 800ms Off Le module n'est pas Synchronisé au Reseau.
64ms On/ 2000ms Off Le module est Synchronisé au Reseau..
64ms On/ 600ms Off Transmission de donnee GPRS apres connection
PPP.
YELLO LED = STATus du module GSM (Led Jaune)
domme l'etat d'initialisation du module GSM, elle doit etre et
rester allumée si l(init POWER est OK
Signal RING :
relié à l'entree RG3 , niveau HAUT au repos.
Lorsqu'un SMS arrive, le signal RI passe à l'etat BAS pendant
120mS, puis revient à l'état HAUT,
Non exploité , avec l'affectation des
pins de liaison MikroBus , car va sur une entree NON
interruptible.
Je pense qu'il aurait été preferable de l'aiguiller sur RB0.. =>
traitement IT RB0 .etc
afin de ne pas bloquer le programme sur un test permanent.
1er Envoi SMS Successfull :
il faut rajouter le + devant l'indicatif international
En reception SMS, il affiche bien +336.......5
on trouve sur le web ,beaucoup de contradiction à ce sujet.. ou
alors la norme n'est pas rigoureuse.
Le numero de telephone doit AUSSI etre entre guillemet !
UART2_Write_CText("AT+CMGS=\"+336123456789\"\r\n");
33 indicatif FRANCE, suivi du numero national de 10 chiffres - 1
soit 9 digits, le 0 du 06 étant éliminé
Exemple d'echange (récupéré via UART1)
Reception SMS et Envoi SMS avec mon
telephone mobile .. OK ..
MAIS ...
up to date 06/01/2016
Software MikroC:
Source : GSM2_click_18F87J50
chargeur :GSM2_click_18F87J50
doc: GSM2_Click_Quecktel_dialogue_w_PIC_1510.doc
Zip avec *.h : GSM2_click_18F87J50_clicker2_UART1_150924.zip
Contenu
du projet
Problemes :
Une grosse partie des problemes
est due à l'alimentation Cliker2 via le
port USB en 5V
qui génere en local ,l'alim 3,3V. Celle ci ne peut pas fournir
les accoups de courant demandés
par la carte GSM2 => reset intempestifs..
MikroE n'est pas tres objectif sur ce point là.. mikroE
preconise le rajout d'une batterie
pour que celle ci lisse l'appel de courant.. c'est UNE SOLUTION
au probleme.
Fil de discussion forum MikroE , à ce
sujet
Choix pour l'alimentation:
- soit on alimente via le port mini-USB +
battery ( lorsqu'on est en mode programmation/modification/test)
![]() |
![]() |
la batterie est chargée via la connection USB | la batterie seule alimente les modules, SANS USB |
- soit on pourrait alimenter via le port USB mini et un bloc
alim secteur 5V 2A ( 1A un peu trop juste !)
- autre possibilité , ci dessous, lorsqu'on rajoute le MIKROE-938 Terminal
Connect shield
Verif avec alimentation externe en 5V
Alim
230V AC/ 5V DC lineaire Transfo 230/9V uA7805K.. (sortie
reglable 5 à 12V limitée à 1Amp, reglée à 5V.)
test avec USB NON connecté et Batterie NON connectée.
Alim raccordée sur les bornes Vsys +5V
et 0V du connector Shield
![]() |
![]() |
Alimentation 5V sur VSys bornier | Bornierconnector Shield placé sous le clicker2 |
Amperemetre FI515 en serie avec alim
Sans echange avec GSM2 ...37mA
pic > 220mA à l'init Power du GSM2
Variable pendant l'init GSM2 pas 1 à 12 .. de 50 à 150 mA
puis retour à 37 mA .. pendant l' acquisition ADC et display
UART1
sans echange avec GSM2
> 130mA pendant l'envoi d'un SMS
puis retour à 37 mA ...
>100 mA pendant la reception d'un SMS
![]() |
![]() |
la mesure du courant delivré à Clicker2+GSM2 | le dialogque PIC <-> GSM2 correspondaant |
Le pic d'intensité maxi reel doit etre bien au delà de 220mA ..
Le driver USB MikroE servant à la programmatuion du PIC via
MikroE Bootloader est limité à 100mA maxi
Question à MikroE ..augmenter ce maxi .. reponse : pas possible
.. j'en doute fortement !
Mesure à l'oscilloscope , préferable pour mesurer ce PIC maxi
de courant :
on peut passer de 16mA à plus de 400mA !
Remise en cause de la partie Reception
UART2 et interruption .
La fin de message etait basée sur la detection du caractere LF (terminaison
CR LF),
MAIS ! le GSM renvoi une trame comportant plusieurs CR LF , et
donc message tronqué
L'IT UART2 est toujours declenchée sur l'apparition d'un LF,
MAIS la comm. n'est pas fermée pour autant
et le buffer continue à se remplir , pendant un temps minimum de
plusieurs secondes
Le contenu du buffer , arrivé à terme, est alors inspecté et
visualisé, et des que recupéré,
RAZ du buffer, RAZ du drapeau IT et reautorisation nouveau
remplissage si LF reçu.
On ne perd ainsi, aucun caractere.
La fin de message 'OK' en temoigne.
=> Reception SMS OK et fiable.
Des qu'un SMS est reçu, analysé et exploité, la zone de
memoire SMS INBOX est razée ,de sorte
à ne conserver aucun message reçu et donc celui qui arrive est
toujour en position #1.
On peut donc le lire soit via "REC UNREAD" soit en
précisant son index (numero) ,inutile dans ce cas là.
Un stockage des messages recus pourrait etre envisagé si besoin..
Les fonctionalites :
Init activation Power GSM
Delay imperatif de 5 sec mini!
Init du GSM faite en 12 etapes ... Etapes à reduire
depuis le stockage profil #0
18:55:10.218> Set PIN code(AT+CPIN=1234)
18:55:12.718> +CPIN: READY
18:55:12.718> OK
18:55:12.718> Call Ready
18:55:12.781> Last Step: 1
18:55:12.781> Send Msg type as text mode (AT+CMGF=1)
18:55:15.281> OK
18:55:15.281> Last Step: 2
18:55:15.343> Never go in SLEEP mode(AT+QSCLK=0)
18:55:17.859> OK
18:55:17.859> Last Step: 3
18:55:17.859> Software Version (AT+CGMR)
18:55:20.421> Revision: M95AR01A21
18:55:20.421> OK
18:55:20.421> Last Step: 4
18:55:20.421> IMEI Serial number (AT+CGSN)
18:55:22.921> 863071014743659
18:55:22.921> OK
18:55:22.984> Last Step: 5
18:55:22.984> Format de Reponse via libellé
(ATV1)
18:55:25.484> OK
18:55:25.484> Last Step: 6
18:55:25.546> Select SM (AT+CPMS="SM","SM","SM"
18:55:28.046> +CPMS: 0,60,0,60,0,60
18:55:28.046> OK
18:55:28.046> Last Step: 7
18:55:28.109> Renvoi SMS sur terminal (AT+CNMI=2,1)
18:55:30.609> OK
18:55:30.609> Last Step: 8
18:55:30.609> Test si enregistré sur le reseau
(AT+CREG?1)
18:55:33.109> +CREG: 0,5
18:55:33.109> OK
18:55:33.171> Last Step: 9
18:55:33.171> Lecture de date et heure (AT+CCLK?)
18:55:35.671> +CCLK: "15/10/03,18:59:47+04"
18:55:35.671> OK
18:55:35.734> Last Step: 10
18:55:35.734> Savet profile (AT&W)
18:55:38.234> OK
18:55:38.234> Last Step: 11
18:55:38.234> List all msg from inbox (AT+CMGL=ALL)
18:55:40.796> OK
18:55:40.796> Last Step: 12
18:55:40.796> Phase d'init en 12 pas / 12 .. OK
Declaration d'une table de numero de telephone (ici
2 actives)
Possibilite de stocker les numero de tel dans la SIM, avec appel
par pseudo nom
exemple de cde :
verif : lecture emplacement botin #1
Envoi SMS automatique , sur seuil de detection :
Envoi sous 4 conditions reunies, d'une collecte de données
- 1 seule envoi par tranche de 5
minutes
- Seuil voie Ana RA1 > 512 points
- Seuil mesure Ana. RA2 temperature < 20°C
- Dialogue PIC <-> GSM2 activé ou Non
- Init Power GSM2 ..STAT=1=led jaune=OK
Gestion des requetes via SMS :
Possibilité d'activer ou non l'envoi automatique
Cde "Survey On"
Cde "Survey Off"
La reponse est renvoyée au demandeur ( 1 des 2 telephones!)
exemple:
17:22:39.953> Read message NON LUS (AT+CMGL="REC
UNREAD")
17:22:43.515> +CMGL: 1,"REC UNREAD","+33612345678","","2015/10/04
17:17:34+08"
17:22:43.515> Survey On
17:22:43.515> OK
17:22:43.515>
17:22:43.593> Dialogue SMS retablit
17:22:43.593> Efface tous les SMS reçus (AT+QMGDA="DEL
INBOX")
17:22:46.078> OK
Envoi d'une collecte de donnée sur Demande :
- sur reception d'un SMS "Data On Demand
la collecte de données est envoyé au numero emetteur de demande
1 voie ANA (Potar 0 à 3,3V) + 1 voie ANA LM35DZ (0 à 330°C) +
2 entrees TOR (BP1, BP2)
exemple:
14:48:07.781> Read message NON LUS (AT+CMGL="REC UNREAD")
14:48:11.343> +CMGL: 1,"REC UNREAD","+33612345678","","2015/10/05
14:47:55+08"
14:48:11.343> Data On Demand
14:48:11.343> OK
14:48:11.343> Envoi Datas demandées
14:48:11.343> Contenu du SMS à envoyer
14:48:11.406> GSM2 PIC18F87J50:
14:48:11.406> BP1 = 1 BP2 = 1
14:48:11.406> EA1= 128
14:48:11.406> Temp= 22.56°C
14:48:11.406> End.
14:48:11.406> Compose Numero (AT+CMGS=+33612345678)
14:48:14.468> > OK pour envoi Msg txt
14:48:17.046> Efface tous les SMS reçus (AT+QMGDA="DEL
INBOX")
14:48:19.546> +CMGS: 123
14:48:19.546> OK
Mise à la date et Heure du GSM2
L'heure n'est pas maintenue si on coupe l'alimentation Clicker2
par defaut elle se retouve à "04/01/01,00:00:30+04"
Le telephone envoi une requete specifique pour Mise à jour:
ex: MAH=15/10/05,14:48
exemple de lecture SMS coté GSM:
14:47:23.406> +CMGL: 1,"REC UNREAD","+33612345678","","2015/10/05
14:47:08+08"
14:47:23.468> MAH=15/10/05,14:48
14:47:23.468>
14:47:23.468> OK
tiens je m'apercois que le decalage horaire est de +08 ?
en effet +04 heure fuseau Greenwich + 1 H decalage Horiare été
=> 2x 4 quart d'heure= 8
Commande de 2 sorties (ici des Leds) et renvoi compte-rendu
d'etat :
Cdes Led1 On,Led1 Off, Led2 On,Led2 Off
exemple:
19:21:21.125> Read message NON LUS (AT+CMGL="REC
UNREAD")
19:21:24.687> +CMGL: 1,"REC UNREAD","+33612345678","","2015/10/05
19:21:06+08"
19:21:24.687> Cde Led1 Off
19:21:24.687> OK
19:21:24.687> Retour cde Leds
19:21:24.687> Contenu du SMS à envoyer
19:21:24.687> Retour Led1= 0 Led2= 1
19:21:24.765> Compose Numero (AT+CMGS="+33612345678"
19:21:27.750> > OK pour envoi Msg txt
19:21:30.312> +CMGS: 130
19:21:30.312> OK
Commande Debug / Normal
via clavier terminal UART1
Le fichier Macro Vbray Terminal : GSM2_click.tmf
UART1 = terminal RS232 VBRAY sur PC
il est utilisé ici comme outil de debugging, et controle des
échanges PIC <-> GSM
En envoyant la commande "Debug" depuis le clavier
terminal VBray, on passe en mode debug
le terminal n'affiche plus le message de collecte de donnée
toutes les 3 secondes.L'ecran reste vide.
Ce qui permet l'envoi de commandes AT directement dans le GSM2 et
voir l'echange resultant.
Les touches de fonctions sont programmes sur certaines commandes
AT
pour revenir au mode Normal = display les trames de collecte
datas toutes les 3 secondes.
L'indice , entete de message,varie de 0 à 59 .. soit 60x 3
secondes .. sert à bloquer un envoi automatique de SMS
si < 180 seondes écoulées depuis le precedent envoi.
On peut envisager un fonctionnement en Aveugle ..sans terminal /
UART1 ..
mais j'aime bien avoir un outil sous la main en cas de probleme..et
on a de la place dans ce PIC evolué!
La Version tout en un (seul fichier) du
programme
Source MikroC : GSM2_click_18F87J50_Uart1_Uart2_UART1_151006w.c
Chargeur : GSM2_18F87J50_UART1_UART2_1510.hex
Version avec 1 fichier par fonction ou
interface
![]() |
![]() |
Project Manager | Edit Project (config bits) |
Rajout d'un LCD 2x16
pour info minimum locales (pas de PC !)
Usage du bus I2C1 pour un afficheur LCD 2119 et futur rajout de 8E
et 8S( extension)
rajout fichier include .. pas de probleme particulier , car deja testé ICI.
Mise en pause du GSM pour reduire la conso
globale
Sujet de discussion ICI
23/10/2015
avec
Montage GSM2-Click déporté
1ere solution :Test avec detection via interruption "RI"
:
- impose de ne plus installer directement le GSM2-click sur le
support MikroBus
afin de pouvoir connecter la pin RB0 au lieu de RG3 sur l'info
"RI" Ring du GSM
Si on met en veille le GSM2 , on ne transmet plus le SMS reçu à
l'UART2 !
Il n'est donc plus possible de surveiller la reception de "+CTMI"
via l'IT UART2.
Par contre , le signe RI passe de 1 à 0 pendant 60 à 120mS ..
Si on surveille cet etat en mode pooling, on ne peut plus faire
autre chose .
D'ou la liaison "RI" sur l'entree PIC RB0 ,
interruptible.
L'IT RB0 va reveiller le GSM2 et sera donc ensuite , pret à
recevoir un SMS et le traiter.
La difficulté a été de Reveiller le GSM2 .. avec une commande
NON DOCUMENTEE par Quectel
AT+QCLCK=2 au lieu de 1 !
On detecte donc l'arrivée d'un SMS , soit par le contenu "+CTMI"
, soit par le signal "RI" ring.
Un SMS specifique libellé "Sommeil" met le GSM2 en
mode sommeil .. la conso globale passe alors de 48mA à 28mA
L'Envoi d'un Autre SMS (contenu quelconque ou) "Reveil"
generera l'apparition de l'IT RING.
Le traitement de l'IT replace le module en etat actif AT+QCCLK=0
, pret à recevoir un SMS de commande.
La consommation remonte à 48mA .. (Sans echange Quectel)
Dans les 2 cas de figure, le programme principal continue à
tourner .. Acquisition Analogique + etat E/S
surveillance de seuil ..etc ...
![]() |
![]() |
Vue d'ensemble du prototype | Mesure de courant aux bornes de l'interrupteur (ouvert)alim 5V |
Programme source : 18F87J50_GSM2_...c
Chargeur : 18F87J50_GSM2_.....hex
Test et Suivi d'Echange d'info : Test_echanges_GSM2_151020.txt
2em solution : on laisse le GSM2-click sur
son support MikroBus #1
La tache de fond : acquisitions Analog, etat des E/S sera faite
via interruption Timer1
On surveillera le "RI" en mode pooling
Vu la duree tres courte du signal RI à zero .. il faut que le
traitement interrupt timer1 soit moins de 50ms
1er Test avec timer interrupt à 30mS..
Essai peu probant .. ABANDON de cette solution trop restrictive
3em solution (version)
Mise en sommeil sur commande, Reveil sur evenement
On demarrage l'application normalement .. conso =48mA
Le GSM2 ets pret à recevoir et repondre aux demandes SMS.
Boucle de fond tourne en 10 secondes.
sur commande specifique "Sommeil" on met le GSM2 en
mode Sleep : conso=28mA
Pour reveiller le GSM2 , il faut qu'un evenement surgisse :
soit depassement de seuil EA1 ou Temperature EA2, ou action BP1
ou BP2
Cet evenement genere un message ,envoyé au phone
Le GSM2 reste ensuite EVEILLE. i=48mA
Il est vrai qu'on a plus la main depuis le PHONE , si le GSM est
en mode sommeil
il faudra attendre un evenement !
mais vu que le role premier est la SURVEILLANCE .. c'est OK
Les memes fonctionalites sont reconduites
Rajout d'un filtrage arithmetique glissant sur 8 valeurs pour la
temperature (EA2)
Hardware:
Le module GSM2-click reste alors sur son support MikroBus#1
La commande DTR depuis RD6 (modif
hardware) est necessaire
Alim 5V externe sur le bornier clicker2
![]() |
![]() |
|
GSM2-Click Déporté | la modif : RI-> RB0 et DTR -> RD6 | modif hardware R=470 sur DTR |
![]() |
prototype |
Attention : l'usage du multimetre (Powerfix Jaune) sur le
calibre 200 mA pour la mesure de courant consommé
perturbe l'init du GSM2 (pic de sous tension= reset) .. =>
usage calibre 10A (resolution +-1mA)
Par contre avec mon multimetre
Rouge FI515X sur calibre mA , ce n'est pas le cas,
c'est pas la meme qualité de Multimetre
..10 fois plus cher .. Le shunt doit etre de valeur beaucoup plus
faible.
.
Software :
Source : 18F87J50_GSM2..._Sleep_on_event_151026_with_h.c
Chargeur : 18F87J50_GSM2_...Sleep_On_Event_151026_with_h.he
x
Tests : 18F87J50_GSM2_Sleep_On_Event_tests.txt
Fiabilité ..OK
4em solution (version retenue)
Hardware:
Le module GSM2-Click est cette fois , installé sur son
support Mikrobus #1.
le bus I2C étant déja utilisé pour le LCD 2119 2x16car
Rajout d'un expander d'entrées/Sorties MCP23017 en I2 C pour gerer 8 sorties
et 8 entrees.
voir aussi appli
avec 12F683 gérant un MCP23017 pour autres details
Le mode Debug est conservé.
Rajout Entree RB2 pour permettre (RB2=0) ou inhiber (RB2=1) l'envoi
d'un SMS pour signaler le demmarage du programme
![]() |
![]() |
proto avec MCP23017 | inter-connections |
Explicages:
Rappel: alim VCC =3,3V
L'adresse de basedu MCP23017 est 0x40 + adresse hardware (formée
par A0,A1,A2)
ici = 000 donc 0x40 ou 64
La sortie INTB genere une impulsion lorsque'une entree parmi les
8 change d'etat.
Cette sortie est aiguilléee sur l'entree RB0 , disponible sur le
bornier de ma carte clicker2,
permet donc de generer une interruption RB0 , qui mettra la ligne
Cde_DTR à 0 et armera
un drapeau (Drapeaux.RB0 .. naturlich !)
La Ligne DTR=0 reveille le GSM.!
Dans le main program , on teste le drapeau RB0 pour inhiber la
mise en sommeil (Sleep mode)
et envoyer un SMS regroupant (en plus des etats precedement
definis) l'etat des 8 commandes de sorties
et l'etat actuel des 8 entrees sous la forme binaire : 8E=
00001000 8S= 00000000
On peut toujours remettre en sommeil le GSM2 en envoyant la cde
"Sommeil".
mais on ne pourra pas reveiller le GSM en envoyant une commande
via le Phone !
mais via Uniquement un evenement exterieur :
Seuil analogique, ou Temperature > seuil, ou etat BPx modifié
,ou sur un changement d'etat d'une
des 8 Entrees, pourra reveiller le GSM.
Rajout Entree RB2 pour permettre (RB2=0) ou inhiber (RB2=1) l'envoi
d'un SMS au demmarage
ou suite à un Reset.
Rappel: :
#define Full_Init est une directive
pour valider une initialisation complete en 16 etapes
.. à faire au moins la 1ere fois
sachant que le parametrage est sauvegardé dans le telephone
profile #0 ,
on peut donc ensuite se limiter à une init en 5 etapes. ( voir
moins !)
SOFTWARE :
rev 31/01/2016
Rajout d'un fichier MCP23017_I2C.h
au projet
source : 18F87J50_GSM2_...2016.c_
chargeur : 18F87J50_GSM2_.....WakeUp_OnEvent_2016.hex_
Rajout de la commande des 8 sorties, depuis le phone.. "MCP1=00000000"
Verification de la commande , si OK , appliquée et SMS de
confirmation envoyé avec valeur de la commande en decimal,
si erreur , modification des sorties NON appliqué .
Modifs du 7/11/2015 :
Rajout d'une LDDR pour detection intrusion dans une piece (
lumiere) en remplacement du potar de test
seuil reglé à 512 (en dur dans le software).. nota: Mesure au
soleil >600, mesure 330 à la lumiere naturelle , mesure= 25
dans le noir....
Attention, si lumiere ambiante teop forte (avec gros soleil) =>
alarme
donc pour eviter ,
soit mettre les lunettes de soleil !
soit fermer les volets
soit envoyer SURVEY OFF
En résumé, Alarme par
envoi d'un SMS , sur un evenement :
// reveille e GSM si il etait en sommeil et envoi le message d'alarme
// si changement d'etat sur 1 des 8 entrees du MCP23017 => IT
RB0
// si mesure ANA RA1 > 512 points
// si mesure ANA EA2_F > 30(°C) ..plus facile pour les tests
de chauffer le capteur LM35DZ
// ET
// si Flag_Over=0 : 60x3=180 sec ecoulees entre les alarmes
Resultat sur terminal Vbray
18F87J50_GSM2_Test_160131.log
Rajout Cde "Help"
réponse :
Cdes disponibles :
Data On demand Survey On (ou Off) Sommeil Cde Led1 0n (ou Off) Cde Led2 0n (ou Off) MAH=15/09/29,16:45:00+04 MCP1=00000000 Debug Normal |
Demande et effectue l'envoi
des donnees de la carte BP1,BP2nEA,EA2,MCP Active ou non la surveillance des alarmes Mets le GSM en mode sommeil, seul un evenement peut le reveiller Commande led 1 locale sur la carte Commande led 1 locale sur la carte reMise A l'Heure en respectant ce format Positionnement des 8 bits du MCP xxxxxxxx avec 0 ou 1 Passe en mode Debug: GSM UART2 <- direct -> QNAVIGATOR UART1 Retour au mode PIC <-> GSM2 et UART1 en espion |
Commande | detail |
Mode Debug
En envoyant la commande "Debug<CR>", on passe en
mode Debug=1
De ce faitn ce n'est plus le PIC qui gere le GSM2, mais l'utilisateur
, via le clavier Terminal VBRAY.
ou l'outil QNavigator V1.5 du constructeur
QUECTEL
Nota: il faut s'incrire sur le site quectel pour recuperer le
logiciel.
Problemo:
Le 1er essai de QNavigator montrait que la commande reçue
(emis epar le terminal) était tronquée du 1er caractere
recu ebug au lieu de Debug ou TI au lieu de ATI
Alors qu'avec VBRAY terminal .. no problemo, avec dans la fenetre
Transmit : case CR=CR+LF non coché
![]() |
![]() |
problemo: Qnavigator envoie CR + LF | apres modif: arret reception si rencontre CR |
Il s' est avéré que QNavigator envoit <CR><LF> et
non <CR> , de ce fait <LF> genere une IT RX UART1
et donc LF est rangé dans le 1er byte du buffer1, sa ns affecter
les autres bytes
Modif: Interrupt RX UART1
Rajout inhibition interrupt RCIE1_bit=0; des la reception de <CR>
et on retrouve alors un fonctionnement OK de QNavigator.
Tant qu'on ne recoit pas une commande "Normal<CR>"
, on reste dans la boucle de surveillance Reception UART1
La commande recue est alors directement renvoyée sur UART2 ,
reliée au GSM
La reponse GSM est recopiée sur UART1 espion.
Sur retour via cd "Normal<CR>, on recupere la boucle
principale du programme
avec ,à nouveau, le PIC gerant le Tout
Un evenement telle qu'une temperature >30°C genere bien un
encoi SMS d'alarme
Exmple d'echanges avec QNavigator :
sans modifier le Hardware Clicker2 GSM2
En mode Debug=1
Le message "Attente clavier " n'est rafraichi que
toutes les 10 boucles(20 sec)
Last SOFTWARE
Liste
des fichiers du Projet MikroC
Chargeur : 18F87J50_GSM2...rev_160625.hex
Source : 18F87J50_GSM2_rev
25 juin 2016
Directory: C:\_MikroC\_MesProjets_MikroC\_18F87J50_GSM2_NEO-6M
Projet: 18F87J50_GSM2_GPS_Ublox_NEO-6M_UART2_UART1_LCD_I2C1_MCP23017_WOE_2016.mcppi
Source : 18F87J50_GSM2_GPS_NEO-6M_UART2_UART1_LCD_I2C1_WOE_w_h_161016.c
UART1 19200,8,N,1 RX <-- GPS NEO_6M et TX ->Display
terminal
Envoi Trames GPS toutes les 6000mS
UART2 19200,8,N,1 pour GSM2-Click QUECTEL M95
Usage de SLEEP mode 0 et 2 ,via Cde ligne DTR
FOSC = 48000
Phones Numbers :
"+33621334715"
"+33614133837"
ADC Init
Init I2C1 400Khz
1ere Lecture ADC RA1 et ADC RA2 : 736 78
Verifier la présence de resistances Pull UP sur SCL et SDA
Check presence LCD2119 at @ 0x74
Check Device @ 116 on I2C1 HARDW
Ameliorations possibles :
Rajouter un 2em MCP23017 ou un PCF8574 pour renvoyer l'info
"Retour d'ordre " , 8 entrées recopiant l'etat des
sorties commandées.
+1 sortie discordance. et en cas de desaccord .. signaler la
DISCORDANCE d'etat .. (principe appliqué en automatisme PLC)
A voir : usage d'un petit 12F1840 au lieu du GROS 18F87J50 ...pour
piloter le tout
A suivre : 1 Nokia LCD+ PCF8754 = Nokia I2C brut
Autres liens utiles
- Elektor
Labs
![]() |
![]() |
Prototype ( sans sle MCP23017) juin 2016 | SMS reçu si temperature > seuil 30°C |
ATTENTION :
Parrallelement à ce projet GSM2 et un autre Projet concomitent
GPS
J'ai commandé un Tracker
GSM/GPRS/GPS (TK102?) pour moins de 25e
et utilisé ma carte SIM "free"
du GSM2 pour le tester ce tracker.
en Liaison avec un Web GPS Trace Server
http://orange.gps-trace.com
et tests aussi avec d'autres server ...
Le Probleme est que entre temps j'avais fait une fausse
manip sur mon Aplli GSM2
montage du GSM2-Click decalé d'une
pin vers le bas , sur le support MikroBuS1
donc +3,3v relié au 0V , +5V relié au 0V mais 0V Non connnecté
sur la carte GSM2
Mon appli GSM2 permettait toujours de RECEVOIR des SMS , mais
PLUS POSSIBLE D'ENVOYER UN SMS
error 69 ????
Doute sur le hardware !
-Doute sur le PIC18F87J50
-Doute sur la carte GSM2-click
-Doute sur la carte SIM ?
Actions::
- Test des E/S du PIC18F87J50 et des E/S concernée par le module
GSM2 => OK , RAS
- Changement de carte SIM aupres de Free => 10e ! recue pares
quelques jours.
ReTest : Idem ! pas d'envoi SMS possible
- Test de ma carte SIM sur un telephone : Envoi SMS ...OK
J'ai donc remis ma carte SIM sur le GSM2 , activé le mode
debug ( par envoi SMS "Debug On")
recu par le GSM2 et aiguillage de l'UART1 vers le GSM2 (via l'UART2
)
comme si le GSM2 etait directement relié au terminal..
coté Terminal :
usage de QNAVIGATOR
(de Quectel, disponible apres inscription sur leur site)
que je recommande vivement !
et envoi de commande famille TCPIP ... etc...
et store en profil 0.
Entre temps un Ticket envoyé à MikroE, me confirmait qu'il y
avait peu de chance (ou malheur)
que ma carte GSM2 soit H.S.
Je sort du mode debug en envoyant "Exit" via le clavier
terminal
et retombe alors sur la config PIC <-> UART2 <--> GSM2
j'envoi un SMS "Cde Led1 On"
et miracle ,il agit, allume la led et repond en envoyant le SMS
"Etat Led1=1 Led2=0"
C'EST OK !
:
Conclusion de cet incident (perdu plusieurs
jours !!) :
- Ne pas utiliser la meme carte SIM
pour plusieurs applications
- faire gaffe à 2 fois , avant d'installer un module Click sur
un mikroBus .
.. meme si dans mon cas , cela n'a pas eu d'incidence
MIXAGE GSM2 Application et avec Appli GPS
7N
Lien
sur l'appli GPS
Le GSP UBlox 7N (rond noir) est raccordé sur la liaison UART1 à
19200,8,N,1
Le GPS est configuré via U-Center pour n'émmettre que les 2
trames ($GPGGA et $GPRMC)
La trame GGA arrivant APRES la trame RMC.
La trame RMC était utilisée dans l'appli GPS pour recuperer la
Date et Heure (Si on n'a pas de GSM !)
avec un traitement particulier pour le decalage Horaire et Fuseau
horaire=+1.
Sinon, dans la mesure ou on dispose du GSM ,
on peut , à partir d'une requete GSM , récuperer la
Date et Heure .
ATTENTION :
l'Heure GPS affichée ne tient pas compte du Fuseau
Horaire et du Decalage Horaire Ete/Hiver
representé ici dans la fin de trame Trame_RMC +08
via la fonction Recupe_DateHeure_GSM()
Step: 3
Lecture de date et heure (AT+CCLK?)
AT+CCLK?
+CCLK: "16/10/07,09:04:56+08"
OK
Step: 4
+CCLK: "16/10/07,09:04:56+08"
OK
HDecal= 2
8 x 0,25 Heures => +2H00 à rajouter à l'heure
presnte dans la trame
il est donc 11H04M56S
La variable HDecal est initialisé au lancement du programme
On peut reactualiser le decalage, en envoyant la demande SMS
"MAH"
qui refera une lecture Date et Heure et raffraichissement
du decalage horaire.
Mais pour eviter de faire une requette SMS toutes les 10 secondes,
j'utilise la lecture de la date et heure du GPS ! la date est
toujours OK
mais il faut réactualiser l'heure , non plus avec des calculs et
test compliques,
mais en rajoutant le HDecal , fournit par le GSM
On pourrait envisager une MAH automatique , tous les jours à 00H03:00
en cas de fonctionnement permamnent 24H/24 du montage.
Tests ...Version 2024
Nota : Les derniers tests remontant à Janvier 2023 ..étaient
OK
Tests actueles : SANS GPS, ni I2C ( donc ni LCD, ni MCP23017)
n'ayant plus de LCD I2C dispo, capable de travailler sous 3,3V .
Les 1er tests sont négatifs, Reset
intempestifs, impossible d'envoyer un SMS ..
avec le même software de Janvier 2023 ...
conditions : alim cordon USB + batterie 3,4V 3000mAH connectée
..
recherche au niveau soft ...???
L'init complete aborte en differents endroits SANS ALLER au bout..
L'inspecteur Bourrel est là pour m'aider !
Bon Dieu, mais c'est bien
SUR !
Rappel :
(voir M95_Hardware_Design_V1.3.pdf)
The power supply is one of the key issues
in designing GSM terminals. Because of the 577us radio burst
in GSM every 4.615ms, power
supply must be able to deliver high current peaks in a burst
period. During
these peaks, drops on the supply voltage must not exceed minimum
working voltage of module.
For the M95 module, the max current consumption could reach to 1.6A during a
transmit burst. It will
cause a large voltage drop on the VBAT. In order to ensure stable
operation of the module, it is
recommended that the max voltage drop during the transmit burst
does not exceed 400mV.
The power supply range of the module is 3.3V to 4.6V. Make sure
that the input voltage will never drop
below 3.3V even in a transmitting burst. If the power voltage
drops below 3.3V, the module could turn off
automatically. For better power performance, it is recommended to
place a 100uF tantalum capacitor with
low ESR (ESR=0.7O) and ceramic capacitor 100nF, 33pF and 10pF
near the VBAT pin
The power supply is
capable of providing the sufficient current up to 2A at least.
Je connecte alors une alim 5V 2A
Alim FAIRWAY Model WN10B-050 , Inp: 100-240VAC , Out : 5V 2.0Amp
sur le bornier ,coté droit, en 1 :+5V et en 2 :GND
Nota : borne 1 sérigraphie repérée Vsys
et non +5V !
Sans alimentation externe 5V 2A,
j'en conclus aussi ,que ma batterie Li-Ion 3,4V 3000mAH
ne suffit pas à alimenter la carte GSM2 !
Batterie mesurée à vide : 3.96V .. donc serait insuffisament
chargée ! (mesurée 4,23V, chargée à fond , en 2019)
GSM au repos : Mesure 4.1V sur la batterie, donc en charge par la
carte GSM ...
ou alors ..ma batterie , agée de plusieurs années ..2018 !
présente maintenant une résistance interne trop grande ...
(Avec alim externe 5V 2A) La séquence d'init complete (19 pas)
se deroule alors SANS probleme
et l'envoi et reception SMS est à
nouveau... OK ..
![]() |
![]() |
![]() |
Alarme Temperature et envoi Cde Led 2 ON |
Alarme Intrusion dététecté par EA1>512 |
Envoi Cde Help et retour d'infos |
nota : le sigle degré ° n'est pas reconnu sur
mon mobile !
Application :
Log sur YAT Terminal du demarrage application et init
complete GSM :
18F87J50_Clicker2__GSM2_Click_QUECKTEL_M95_Lancement_Application_et_Init_2024-0424.txt
Envoi d'une commande depuis Mobile
Startrail 7
********************
Cde Led2 On
*******************
confirmation de la commande par renvoi du retour d'ordre
log sur terminal YAT coté GSM2
38 EA1= 443; EA2= 59;TempF= 19.01deg C;BP1=1;
BP2=1; LD1=0; LD2=0;Dialog=1; SOM=0; STAT=1; DTR=0
Read message NON LUS (AT+CMGL="REC UNREAD")
+CMTI: "SM",1
AT+CMGL="REC UNREAD"
+CMGL: 1,"REC UNREAD","+33612345678","","2024/04/23
16:16:36+08"
Cde Led2 On
OK
Retour d'ordre cde Leds
Contenu du SMS à envoyer
Retour Led1=0 Led2=1
Compose Numero AT+CMGS="+33612345678"
Pret pour envoi Msg Tx
> Retour Led1=0 Led2=1
+CMGS: 142
OK
Envoi SMS OK :
Efface tous les SMS reçus (AT+QMGDA="DEL INBOX")
39 EA1= 443; EA2= 59;TempF= 19.01deg C;BP1=1; BP2=1; LD1=0;
LD2=1;Dialog=1; SOM=0; STAT=1; DTR=0
---------------------------------------------------------------------------
Envoi d'une commande depuis Mobile
Startrail 7
*********************
Data On Demand
*********************
Au lieu de recevoir un Message SMS suite
à un évenement,
possibilité de demander explicitement un Etat via cette commande.
Modifs 2024
Rajout commande : Batterie?
3.3.4.
Monitor Power Supply |
![]() |
Probleme pouvant passer inaperçu ! |
4320 mV ?? |
J'ai de gros doute sur les valeurs
transmises, dont celle ci : 4320mV ... car invariable ! Avec alim
Externe 5V !
(de plus 4320mv = batterie chargée > maxima, la batterie ne
delivre aucun courant (mesuré)
Un demarrage Application ,Sans alim Externe,
uniquement avec la batterie permet de voir
Monitor Power Supply( AT+CBC)
AT+CBC
+CBC: 0,100,4272 ......... ?? Mesure
multimetre 4,06V
OK
mais erreur systematique si demande envoi SMS !!
Nota 1 :
le GSM maintient la charge de la batterie , si alimenté par USB
ou Alim Externe
Sans alim.5V externe, ni alim USB, je mesure 4,12V sur ma
batterie à vide (déconnectée)
et 4.06V si la batterie est connectée (...sans alim externe)
mais erreur systematique si reception ou envoi SMS !!
Nota 2:
Le GSM ne peut pas fonctionner seulement avec MA batterie,
il lui faut IMPERATIVEMENT l'alim.externe 5V DC 2Amp (mini.)
conclusion ..dans ce cas précis ,
à quoi sert la batterie ? à rien !
Test sur ma batterie Li-ION 3000mAH
4.18V à vide ,
3.75V sur 22 ohms ..0.170 Amps
3.50V sur 15 ohms..0.233 Amps
2.74V sur 4.7 ohms ...0.57Amps
ma conclusion : batterie TRES
Fatiqguée .. à remplaçer!
Note 3:
Sans l'alim Externe 5V, je ne peux pas avoir la mesure Batterie ,
car le SMS envoyé demande etat Batterie? ..n'est pas lu .
-------------------------------------------------------------------------------------------
Rajout commande One Shoot pour envoi d'un
seul SMS
si alarme permanente EA1 et/ou Alarme Temperature
.... avec intervalle de 10 minutes
evite la multiplication d'envoi de SMS ..car la boucle de fond
tourne à 10sec..
malgré que l'info Intrusion (EA1>512) persiste ,
le SMS n'est pas renvoyé à nouveau ..il faudra attendre 10minutes
pour reverifier ..
sinon on empilerait les SMS chaque 10 sec...(intervalle de la
boucle principale du programme)
SOFTWARE (MikroC):
Projet : 18F87J50_GSM2_UART2_UART1_Temperat_WOE_2024-04.mcppi
Code Explorer : 18F87J50_Clicker2_GSM2_Quecktel_M95_Code_Explorer_2024.jpg
Source principal : _18F87J50_GSM2_UART2_UART1_WOE_LM35DZ_2024-0424.MC.c
chargeur : 18F87J50_GSM2_UART2_UART1_Temperat_WOE_2024-0424.hex
Config : 18F87J50_GSM2_UART2_UART1_Temperat_WOE_2024-04.cfg
Schem : P18F87J50_PLL_8_to_48MHz.cfgsch
Annexex : _18F87J50_GSM2_annexes.h.2024.MC.zip
liste des fichiers annexes
(MikroC)
"Cliker2_Hardware.h" // definition sepecifique à la
carte Clicker2 PIC18F87J50
"GSM2-click_Hardware.h" // definition sepecifique au
module GSM2
"Timer0_routines.h" // init Timer0
"Timer1_routines.h" // init Timer1
"String_routines.h" // autres fonctions String hors
librairie MikroC
"UART1_UART2_Routines.h" // routine de gestion UART1 et
UART2 + interruptions (y compris Timer0)
"Interrupts_Routines.h" // UART1 UART2 Timer0 RB0
"Interrupts_routines-sans_GPS.h"
"MCP23017_I2C1.h" // gestion circuit expanser 16 E/S en
I2C
"LCD2119_I2C1_routines.h" // affichage LCD 2x16 en I2C1
à suivre ...
une version XC8 ?
..ou avec un 18F27K42 et SIM800 ?
retour à l'index