Vous êtes sur la page 1sur 270

p001-002-9782100553341.

fm Page I Friday, July 23, 2010 10:29 AM

DAVID REY

INTERFACES
GSM
2e dition

Montages pour
tlphones portables

EDITIONS TECHNIQUES ET SCIENTIFIQUES FRANAISES

p001-002-9782100553341.fm Page II Friday, July 23, 2010 10:29 AM

Dunod, Paris, 2004, 2010


ISBN 978-2-10-055334-1
Couverture : Rachid MARA
Illustrations : Alain et Ursula BOUTEVEILLE

p003-004-9782100553341.fm Page V Friday, July 23, 2010 11:22 AM

TABLE DES MATIRES

CHA PITRE

P A GE

Tlchargez les fichiers du livre !

Introduction

Gnralits

Codage des SMS


1.1 Introduction
1.2 Gnralits
1.3 Mode PDU

5
6
6
6

1.4

7
16

Codage/dcodage par logiciel

21
25
28

Description dtaille des commandes

29

Norme GSM07.05

41

Description dtaille des commandes

41

Matriels utiliss
3.1 Tlphones portables

3.2

SMS-SUBMIT
SMS-DELIVER

Commandes AT
2.1 Norme GSM07.07
2.2

VII

55
56

Adaptateur TTL/RS232
Adaptateur pour FBUS/MBUS (ou M2BUS)
Cordons DATA

56
59
61

Modules GSM intgrs

62

Le TM2 de TELTONIKA
Pour aller plus loin

62
70

Interfacer un tlphone GSM


4.1 Avec un PC
Matriel
Hyper Terminal
Commandes gnrales
Commandes SMS

73
74
74
75
78
83

p003-004-9782100553341.fm Page VI Friday, July 23, 2010 11:22 AM

INTERFACES GSM

4.2

Commandes spcifiques au TM2 de Teltonika


Logiciel intgr pour la gestion des SMS
Logiciel WinGSM

90
90
91

Avec un PicBasic

92

Linstruction SEROUT
Envoi dun SMS
Linstruction SERIN
Rception dun SMS

93
94
95
95

Ralisations lectroniques

101

5.1

5.2

5.3

5.4

5.5

Rcepteur/metteur SMS

102

Rcepteur de SMS sur cran LCD


metteur de SMS

102
116

Tlcommandes par GSM

123

1 sortie sur relais


4 sorties sur relais
4 sorties sur triacs
4 sorties analogiques

123
131
142
152

Tlmesures par GSM

163

4 entres logiques
4 entres analogiques
Thermomtre

163
173
183

Carte Entres/Sorties pilote par GSM

194

PicBasic
Schma lectrique
Ralisation
Programme PicBasic : ces.bas
Programmation et configuration
Essais
Interface de puissance

194
195
204
205
221
222
224

Golocalisation par GSM

228

Cell Monitor
Tracker GPS
Positionnement gographique

228
233
233

Annexes

251

Glossaire

261

Bibliographie

264

VI

02_Telechargez.fm Page VII Thursday, February 18, 2010 9:48 AM

TLCHARGEZ LES
FICHIERS DU LIVRE !

Tous les circuits imprims, programmes et logiciels des montages


dcrits dans cet ouvrage sont tlchargeables partir du site :
http://www.dunod.com
Il faut tout dabord rechercher louvrage (par titre ou par auteur)
puis, une fois sur la page ddie louvrage, cliquer sur documents tlchargeables dans la rubrique Complments en ligne. Un
mot de passe, issu de louvrage, vous sera alors demand.
Limpression directe sur transparent des circuits imprims pourra
ainsi tre ralise facilement. La meilleure qualit sera obtenue en
utilisant une imprimante laser qui permet, de par sa prcision, un
rendu du trac exceptionnel. Si lon utilise une imprimante jet
dencre, il conviendra de vrifier minutieusement le rsultat car
des micro-coupures apparaissent frquemment sur les pistes.
La dernire solution est de sortir une impression sur papier et
deffectuer une photocopie de ce dessin sur transparent. Dans ce
cas, il est ncessaire de raliser deux transparents et de les superposer, le trac ntant pas assez opaque pour linsolation aux
ultraviolets.

VII

02_Telechargez.fm Page VIII Thursday, February 18, 2010 9:48 AM

03_Introduction.fm Page 1 Thursday, February 18, 2010 9:50 AM

INTRODUCTION

Actuellement le rseau GSM franais compte pas moins de


58 millions dusags. Le portable est devenu en quelques
annes un produit de consommation courante. Ce petit trsor de
technologie ouvre la porte de nombreuses applications lectroniques sans fil celui qui sait linterfacer avec un PC ou un microcontrleur. Il devient alors possible via lenvoi et la rception de
SMS de piloter et de surveiller un processus quelconque. La
distance nest dsormais plus un souci puisque le rseau GSM
couvre 99 % du territoire franais et ne cesse de progresser au
niveau mondial.

03_Introduction.fm Page 2 Thursday, February 18, 2010 9:50 AM

04_Generalites.fm Page 3 Thursday, February 18, 2010 9:51 AM

GNRALITS

Lusage dun tlphone portable est bien entendu destin


ltre humain, aussi il dispose dinterfaces qualifies dhommemachine. Parmi ces interfaces citons le clavier qui permet par
exemple la saisie du numro de tlphone de la personne que lon
souhaite contacter. Une seconde interface lcran permet de
contrler visuellement que le numro saisi est correct. La dernire
interface constitue par le micro et le haut-parleur permet de
converser oralement avec son interlocuteur. Il existe un autre type
dinterface machine- machine du fait peu connu de lutilisateur.
Physiquement cette interface prend la forme dun connecteur
multibroche. De nombreux accessoires prennent place sur ce
connecteur, citons par exemple les kits mains libres ou pitons, le
chargeur de batterie Parmi ces accessoires un nous intresse
plus particulirement, il sagit dun cordon dadaptation RS232
qui permet daccder toutes les fonctions du tlphone. Un
simple PC muni lui aussi dun port RS232 et quip dun logiciel
terminal standard suffit alors prendre le contrle du processeur
central du tlphone, encore faut-il parler le mme langage
que celui-ci

04_Generalites.fm Page 4 Thursday, February 18, 2010 9:51 AM

05_Ch 1.fm Page 5 Thursday, February 18, 2010 11:22 AM

PAGE

CHAPITRE

CODAGE
DES SMS

1.1 Introduction

1.2 Gnralits

1.3 Mode PDU

1.4 Codage/dcodage par logiciel

21

Commandes AT

25

Matriels utiliss

55

Interfacer un tlphone GSM

73

Ralisations lectroniques

101

Annexes

251

Glossaire

261

Bibliographie

264

05_Ch 1.fm Page 6 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM

1.1 INTRODUCTION
Un des services offert par le GSM est la gestion des minimessages ou SMS (Short Message Service). Il ne sagit plus de la
transmission de sons mais dun texte limit thoriquement
160 caractres. Chaque message envoy transite vers un centre
de messagerie baptis SMSC (Short Message Service Centre) o il
est temporairement stock. Ds que le destinataire est disponible,
cest--dire lorsque le mobile est sous tension et prsent dans une
zone couverte par le rseau GSM, le message est transmis. Le
message peut exceptionnellement rester sur le SMSC durant
plusieurs jours, ce qui est le cas notamment en fin danne o le
nombre de SMS envoys atteint des records, vux de bonne anne
oblige En situation normale on peut considrer que lenvoi
dun SMS est instantan condition que le mobile de destination
soit oprationnel. Les SMSC sont identifis par un numro dappel
spcifique chaque oprateur. Il est possible denvoyer un SMS
autrement quavec un tlphone portable. On trouve sur Internet
des logiciels qui permettent un PC muni dun modem daccder
un SMSC. Le moyen le plus simple et le moins onreux consiste
passer par le Web. Certains providers comme AOL proposent
leurs abonns un service SMS en ligne. Il existe mme des sites
qui permettent lenvoi gratuit de SMS au prix tout de mme dun
message publicitaire qui vient se greffer votre message.

1.2 GNRALITS
Il y a deux faons de transmettre un message SMS, soit par le
mode PDU qui est le mode de base ou le mode TEXT. Le mode
PDU est une suite de caractres hexadcimaux qui codifient le
SMS, le mode TEXT nest rien dautre quune reprsentation sous
forme de texte des donnes qui composent le SMS. Il y a diffrents types dalphabets utiliss pour passer du mode PDU au
mode TEXT. Par exemple votre tlphone portable affiche en
mode TEXT sur son cran les donnes dun ventuel SMS reu,
cest lui qui dtermine automatiquement quel type dalphabet
utiliser. Attention, il faut savoir que certains tlphones portables
ne supportent pas le mode TEXT lorsquils sont interfacs avec
un PC. Il est donc utile de connatre en dtail le mode PDU.

1.3 MODE PDU


Lorsquun mobile A envoie un SMS au mobile B, le message transite obligatoirement par un centre de messagerie baptis SMSC.
Dans son message lutilisateur du mobile A doit dfinir deux
adresses, celle du SMSC quil souhaite utiliser et celle du mobile B.

05_Ch 1.fm Page 7 Thursday, February 18, 2010 11:22 AM

CHAPITRE

CODAGE DES SMS

Figure 1.1.

Lacheminement du dit message du mobile A destination du


SMSC est baptis SMS-SUBMIT. Une fois le message trait par le
SMSC il est dlivr au mobile B, on parle alors de SMS-DELIVER
(figure 1.1).
Les protocoles SMS-SUBMIT et SMS-DELIVER sont des PDU,
il en existe dautres, dimportance moindre, qui permettent de
signaler des ventuelles erreurs dacheminement :
SMS-DELIVER-REPORT : le cas chant, il indique une dfaillance lors du transfert du SMS par le SMSC au destinataire ;
SMS-SUBMIT-REPORT : le cas chant, il indique une dfaillance lors du transfert du SMS par le mobile au SMSC ;
SMS-STATUS-REPORT : le SMSC envoie un rapport dtat au
mobile metteur du SMS ;

DUNOD La photocopie non autorise est un dlit.

SMS-COMMAND : le mobile envoie une commande au SMSC.


Les trames codant le SMS sont diffrentes suivant le type de PDU
mis en uvre. Dans la partie qui va suivre nous nous contenterons de dcrire les deux principaux protocoles : SMS-SUBMIT et
SMS-DELIVER.

SMS-SUBMIT
Tlphone GSM vers SMSC.
La taille maximale de la trame dun SMS-SUBMIT est de 173
octets. Le champ le plus important en terme de taille est le champ
qui codifie le corps du message qui peut atteindre 140 octets. Les
deux autres champs indispensables sont SCA qui codifie ladresse
du SMSC et DA qui codifie ladresse de lmetteur.
1-10 octets

SCA

1 octet 1 octet

PDU

MR

2-12 octets

1 octet

0-7 octets

DA

PID

DCS

1 octet 1 octet 0-140 octets

VP

UDL

UD

05_Ch 1.fm Page 8 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM

SCA : Service Centre Adresse


Adresse du centre de messagerie.
1 octet

2 octets

0 - 8 octets

LEN

Type Number

Numro SMSC

Le champ SCA ne possde pas une taille fixe, elle dpend de la


longueur du numro du SMSC utilis, ce paramtre est stock
dans le champ LEN.
LEN : nombre doctets ncessaires pour codifier le numro du
SMSC.
Type Number : indique le format du numro de tlphone du
SMSC.
7

Type number

Numbering Plan Identification

Type number : spcifie le type de numro de tlphone utilis.


La valeur la plus utilise est 001bin qui signale un numro de type
international (tableau 1.1).
Tableau 1.1.

Bit 6 Bit 5 Bit 4

Description

Format non spcifi

Numro international

Numro national

Numro spcifique au rseau

Numro dabonn

Codification en accord avec la norme GSM TS 03.38


alphabet par dfaut sur 7 bit

Numro abrg

Numbering Plan Identification : le numbering plan identification est pris en compte dans le cas o le type number est gal
000bin, 001bin ou 010bin. Si type number est gal 101bin alors
les bits 3 0 sont rservs. Pour adresser nimporte quelle entit,
le numbering plan identification doit tre gal 0001bin
(tableau 1.2).

05_Ch 1.fm Page 9 Thursday, February 18, 2010 11:22 AM

CHAPITRE

CODAGE DES SMS

Bit 3 Bit 2 Bit 1 Bit 0

Tableau 1.2.

Description

ISDN/tlphone numbering plan (E.164/E.163)

Data numbering plan (X.121)

Telex numbering plan

National numbering plan

Private numbering plan

ERMES numbering plan (ETSI DE/PS 3 01-3)

Compte tenu de ce que nous avons dit plus haut, le Type Number
le plus utilis est : 91hex.
7

Numro du SMSC (service de centre de messagerie) : attention,


le codage est effectu en dcimal cod binaire (BCD). Un octet
contient donc deux quarts cods en BCD et qui plus est de poids
inverss. Le nombre de semi-octet devant tre obligatoirement
paire il est parfois ncessaire de complter par Fhex.

DUNOD La photocopie non autorise est un dlit.

Digit2

Digit1

Digit4

Digit3

Digit n

Digit n1

Voici les principaux numros utiliss en France pour contacter


un SMSC, le signe + signale quil sagit dun numro international :
+33609001390 (SFR)
+33689004000 (Orange)
+33660003000 (Bouygues Tlcom)
Par exemple codons le numro du SMSC utilis par les abonns
dOrange de France Tlcom : le nombre de chiffres tant impair
il est ncessaire dajouter un Fhex la fin. Ensuite il suffit de
permuter chaque chiffre comme le montre le tableau ci-aprs.

05_Ch 1.fm Page 10 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM
Octet n 1

Octet n 2

Octet n 3

Octet n 4

Octet n 5

Octet n 6

Finalement le numro +33660003000 une fois cod devient :


3306091093F0.
Remarque : le champ SCA est optionnel, de ce fait lorsquil est
positionn 00hex cela signifie que le SMSC utilis est celui stock
dans la mmoire du tlphone, correspondant en principe
loprateur auquel vous avez souscrit votre abonnement.

Type de PDU
Le champ PDU toujours cod sur 1 seul octet a pour fonction
principale de dfinir sil sagit dun SMS-DELIVER ou dun SMSSUBMIT (bits 0 et 1) tableau 1.3.

Tableau 1.3.

RP

UDHI

SRR

Champ

Bit 7

VPF

RD

MTI

Description

Il nexiste pas de chemin de repli

Il existe un chemin de repli

RP

Champ

Bit 6

Description

Le champ UD contient uniquement un message

Le champ UD contient un en-tte en plus du message

UDHI

Champ

Bit 5

Description

Un rapport dtat ne sera pas retourn

Un rapport dtat sera retourn

SRR

Champ

VPF

Bit4

Bit 3

Description

Le champ VP nest pas prsent

Le champ VP existe, il est codifi en entier (relatif)

Le champ VP existe, il est codifi en semi-octet


(absolu)

10

05_Ch 1.fm Page 11 Thursday, February 18, 2010 11:22 AM

CHAPITRE

CODAGE DES SMS

Champ

Bit 2

Tableau 1.3 (suite).

Description

Indique au SMSC quil ne doit pas recevoir un nouvel SMS


portant le mme MR et la mme adresse de destination

Indique au SMSC quil peut accepter la rception dun nouvel SMS portant le mme MR et la mme adresse de destination

RD

Champ

Bit1

Bit 0

MTI

Description
SMS-SUBMIT : Achemine le SMS du mobile vers
le SMSC

MR : Message rfrence
Chaque message envoy par le mobile au SMSC est identifi par
un numro compris entre 0 et FFhex baptis MR (Rfrence du
Message). Le fait de positionner MR 0 indique au mobile que
cest lui qui doit dfinir automatiquement ce champ. Dans ce cas
il sincrmente pour chaque nouveau message envoy pour un
mme destinataire. Ce champ est li au bit RD du champ PDU.
1 octet

MR

DA : Destination Adress
Le codage de ladresse de lmetteur est sur le principe semblable
au codage de ladresse du SMSC (voir champ SCA).

DUNOD La photocopie non autorise est un dlit.

1 octet

2 octets

0 - 8 octets

LEN

Type Number

Numro du destinataire

LEN : longueur du numro du destinataire correspondant cette


fois au nombre de chiffres et pas au nombre de semi-octets utiliss
pour sa codification comme cest le cas pour le SMSC.

PID : Protocol Identifier


1 octet

PID

Le champ PID cod sur un octet indique quel type de service


tlmatique est destin le message. Dans notre cadre dutilisation ce champ sera toujours positionn 00hex. Attention, sil est

11

05_Ch 1.fm Page 12 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM
certain que le PID 00hex est support par tous les SMSC, il en est
autrement pour les autres (tableau 1.4).
Tableau 1.4.

PID

Description

00hex

La trame est traite comme un message court

11hex

La trame est traite comme un telex

02hex

La trame est traite comme un telefax de groupe 3

03hex

La trame est traite comme un telefax de groupe 4

12hex

La trame est traite comme un e-mail

Pour plus dinformations vous pouvez consulter la norme GSM


03.40 chapitre 9.2.3.9.

DCS : Data Coding Scheme


Le champ DCS indique de quelle manire est cod le champ UD
qui correspond au corps du message. Il peut aussi indiquer une
classe du message (bits 4 7 positionns 1). Dans la pratique,
tous les bits sont positionns zro (tableau 1.5).
7

Coding Group

Tableau 1.5.

Bit7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Description


0

Indique que le champ UD est cod avec lalphabet


GSM, aucune classe nest spcifie

Indique que le champ UD est cod avec lalphabet par


dfaut, chaque caractre est cod sur 7 bits, une classe
est spcifie

Indique que le champ UD est cod en ASCII sur 8 bits

Classe 0 : le message saffiche immdiatement lcran

Classe 1 : spcifique au mobile (ME)

Classe 2 : spcifique la carte SIM

Classe 3 : spcifique lquipement terminal (TE)

Rserv

12

05_Ch 1.fm Page 13 Thursday, February 18, 2010 11:22 AM

CHAPITRE

CODAGE DES SMS

Avec lalphabet GSM chaque caractre est cod sur 7 bits (voir
Annexes). Avec ce type dalphabet il est donc possible de coder
8 caractres avec 7 octets. Le champ UD peut dans ce cas codifier
un total de 160 caractres.
Dans la pratique, le plus simple consiste positionner tous les
bits du champ DCS zro, ce qui slectionne lalphabet GSM,
aucune classe nest mentionne ainsi cest le mobile de destination qui choisira le stockage adquat du SMS.

VP : Validity Period
Permet dindiquer au SMSC la dure de validit du SMS condition que les bits 3 et 4 (champ VPF) de loctet PDU soient correctement positionns. Si VPF (voir champ PDU) est 0, le champ VP
sera ignor par le SMSC, le SMS aura une dure de vie illimite.
Cette dure peut tre relative (VPF = 10bin), si le SMSC na pas
russi transmettre le SMS au destinataire dans la dure dfinie
par VP, le SMS est dtruit (tableau 1.6).
1 octet

JOUR

VPdec

DUNOD La photocopie non autorise est un dlit.

0 143

Tableau 1.6.

Dure de validit du SMS


(VP + 1) 5 minutes

144 167

12 heures + ((VP 143) 30 minutes)

168 196

(VP 166) 1 jour

197 255

(VP 192) 1 semaine

La dure peut tre absolue (VPF = 11bin), le SMSC jusqu la


date dfinie par VP pour dlivrer le SMS au destinataire, pass
cette date le message est dtruit.
1 octet

1 octet

1 octet

1 octet

1 octet

1 octet

1 octet

Anne

Mois

Jour

Heure

Minute

Seconde

Fuseau

En codage absolu le champ VP se compose de 7 octets, contenant


chacun deux champs cods en BCD et de poids inverss. Le
champ Fuseau exprim en quart dheure indique la diffrence
entre lheure locale et lheure GMT.

13

05_Ch 1.fm Page 14 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM

UDL : User Data Length, UD : User Data


1 octet

0 - 140 octets

UDL

UD

UDL contient la taille en octets utiliss pour codifier le message


dans UD.

Exemple de codage
titre dexemple, essayons de constituer la trame qui permettrait denvoyer un SMS ayant une validit de 4 jours, contenant
le message TEST au numro 0612345678 en utilisant le
centre de messagerie +33609001390 .
Numro du SMSC utilis : +33609001390.
Le signe + indique quil sagit dun numro international, on
donc Type Number = 91hex.
7

Numro international

ISDN / Telephone numbering plan

Pour chacun des octets qui composent le numro, on inverse les


deux groupes composs de 4 bits chacun. Le nombre de chiffres
tant impair, il est ncessaire dajouter loctet Fhex la fin du
numro. On obtient le numro suivant : 3306091093F0.
3

Le nombre doctets utiliss pour coder le numro du SMSC est


de 07dec do LEN = 07hex (Type Number inclus).
Finalement SCA = 07913306091093F0.
7

RP

UDHI

SRR

VPF
1

RD
0

RP = 0. Il nexiste pas de chemin de repli.

14

MTI
0

05_Ch 1.fm Page 15 Thursday, February 18, 2010 11:22 AM

CHAPITRE

CODAGE DES SMS


UDHI = 0. Le champ UD contient uniquement un message.
SRR = 0. Aucun rapport dtat ne sera retourn au mobile.
VPF = 10. Le champ VP et cod en relatif.
MTI = 01. SMS-SUBMIT (Envoi).
On a donc PDU = 11hex.
Rfrence du SMS, MR = 00hex, indique que cest le mobile qui
doit dfinir cette valeur.
Le numro de tlphone du destinataire est 0612345678 , la
codification est identique celle du champ SCA. Dans le cas
prsent le nombre de chiffres tant pair il nest pas utile dajouter
Fhex la fin.
0

On obtient le numro : 6021436587.


Nous allons utiliser un format de numro non spcifi donc Type
of Number = 81hex.
7

Le numro comporte 10 chiffres donc LEN = 0Ahex.

DUNOD La photocopie non autorise est un dlit.

Do DA = 0A816021436587.
Le message doit tre trait par le SMSC comme un SMS donc
PID = 00hex.
Le champ UD est cod avec lalphabet par dfaut, aucune classe
nest spcifie donc DCS = 00hex.
La dure de validit du message est limite 4 jours. On applique
la formule nb jours = VP 166, avec nb jours = 4 cela implique
que VP = AAhex.
Corps du message : TEST , comme spcifi par le champ DCS
le codage est ralis avec lalphabet GSM. Pour chacun des caractres composant le message on cherche la correspondance en
binaire dans le tableau alphabet GSM (voir Annexes). Un caractre correspond un bloc de 7 bits. Ensuite on regroupe les bits
par paquet de 8 en commenant par la droite, remarquez quil est
ncessaire dajouter 4 zros pour complter le dernier paquet.

15

05_Ch 1.fm Page 16 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM
Chaque octet est finalement converti en un nombre hexadcimal,
pour ce faire vous pouvez utiliser la calculatrice scientifique de
Windows (tableau 1.7).
Tableau 1.7.

0000 1010100

1010011

1000101

1010100

00001010

10010100

11100010

11010100

0A

94

E2

D4

Chaque lettre est code sur 7 bits, pour former la trame compose
doctets on regroupe les bits par bloc de 8 on en dduit alors la
valeur en hexadcimal.
On a donc dans le champ UD = D4E294OA.
Il faut 4 octets pour coder le message donc UDL = 04.
Finalement pour envoyer un SMS ayant une validit de 4 jours,
contenant le message TEST au numro 0612345678 en
utilisant le centre de messagerie +33609001390 il faut constituer la trame :
07913306091093F011000A8160214365870000AA04D4E294OA
Pour utiliser le centre de messagerie associ au tlphone, il
suffit de remplacer les octets concernant le SMSC par 00 :
0011000A8160214365870000AA04D4E2940A

SMS-DELIVER
SMSC vers tlphone GSM.
La taille maximale de la trame dun SMS-DELIVER est de 173
octets. Le champ le plus important en terme de taille est le champ
qui codifie le corps du message qui peut atteindre 140 octets. Les
deux autres champs indispensables sont SCA qui codifie ladresse
du SMSC et OA qui codifie ladresse du destinataire.
1-10 octets 1 octet 2-12 octets 1 octet 1 octet 7 octets 1 octet 0-140 octets

SCA

PDU

OA

PID

DCS

SCA : Service Centre Adresse


Adresse du centre de messagerie.

16

SCTS

UDL

UD

05_Ch 1.fm Page 17 Thursday, February 18, 2010 11:22 AM

CHAPITRE

CODAGE DES SMS

Le codage est identique celui prsent dans la partie SMSSUBMIT. Dans le cas prsent il indique quel est le SMSC qui a
trait le SMS.

PDU : Protocol Data Unit


7

RP

UDHI

SRI

MMS

Champ

Bit 7

MTI

Tableau 1.8.

Description

Il nexiste pas de chemin de repli

Il existe un chemin de repli

RP

Champ

Bit 6

Description

Le champ UD contient uniquement un message

Le champ UD contient un en-tte en plus du message

UDHI

Champ

Bit 5

Description

Aucun rapport dtat ne sera retourn au mobile

Un rapport dtat sera retourn au mobile

SRI

Champ

Bit 2

Description

Des messages supplmentaires pour le MS sont en attente


dans le SMSC

Pas de message supplmentaire en attente pour le MS


dans le SMSC

DUNOD La photocopie non autorise est un dlit.

MMS

Champ
MTI

Bit 1 Bit 0
0

Description
SMS-DELIVER : Achemine le SMS du mobile vers
le SMSC

Le champ MTI est le plus important, dans le cas dun SMS-DELIVER il est positionn 00.

OA : Originator Adress
Le codage de ladresse de lmetteur est sur le principe semblable
au codage de lexpditeur dans la partie SMS-SUBMIT.
1 octet

2 octets

0 - 8 octets

LEN

Type Number

Numro de lmetteur du SMS

17

05_Ch 1.fm Page 18 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM

PID : Protocol Identifier


Le codage est identique celui prsent dans la partie SMSSUBMIT.
1 octet

PID

SCTS : Service Centre Time Stamp


1 octet

1 octet

1 octet

1 octet

1 octet

1 octet

1 octet

Anne

Mois

Jour

Heure

Minute

Seconde

Fuseau

Le champ SCTS se compose de 7 octets, contenant chacun deux


champs cods en BCD et de poids inverss. Il indique au destinataire la date et lheure laquelle le SMS est arriv au SMSC. Le
champ Fuseau exprim en quart dheure indique la diffrence
entre lheure locale et lheure GMT.

UDL : User Data Length, UD : User Data


1 octet

0 - 140 octets

UDL

UD

Exemple de dcodage
Imaginons que nous devions dcoder la trame suivante :
07913306091093F0000A81609121436500009920215075032104D4E
2940A
Le premier octet 07 nous indique que ladresse du SMSC
utilis pour acheminer le SMS est code sur 7 octets.
On extrait donc les 7 octets suivants afin de dterminer le numro
du SMSC, soit 913306091093F0.
Le premier octet 91 nous indique quil sagit dun numro
international.
7

Numro international

Les 6 octets suivants contiennent le numro du SMSC :

18

05_Ch 1.fm Page 19 Thursday, February 18, 2010 11:22 AM

CHAPITRE

CODAGE DES SMS


Pour chacun des octets qui composent le numro on inverse les
deux groupes composs de 4 bits chacun.
3

Lavant dernier octet F ne correspond aucun chiffre, il nest l


que pour avoir un nombre de chiffres pair.
Le numro du SMSC utilis pour convoyer le message est donc :
+33609001390.
Loctet suivant 00 indique le PDU utilis :
7

RP

UDHI

SRI

MMS

MTI
0

RP = 0. Il nexiste pas de chemin de repli.


UDHI = 0. Le champ UD contient uniquement un message.
SRI = 0. Aucun rapport dtat ne sera retourn au mobile.
MMS = 0. Pas de message supplmentaire en attente pour le MS
dans le SMSC.

DUNOD La photocopie non autorise est un dlit.

MTI = 0. SMS-DELIVER.
Loctet suivant 0Ahex = 10dec indique le nombre de chiffres
composant le numro de lmetteur du message. Attention on ne
comptabilise pas loctet utilis pour le champ Type Number.
Do OA = 0A816091214365.
6

Aprs permutation des chiffres on obtient le numro :


0619123456.
PID = 00hex donc il sagit dun message SMS.
DCS = 00hex donc le champ UD est cod avec lalphabet par
dfaut, aucune classe nest spcifie.
Les 7 octets suivants 99202150750321 codifient le champ SCTS
(tableau 1.9).

19

05_Ch 1.fm Page 20 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM
Tableau 1.9.

1 octet

1 octet

1 octet

1 octet

1 octet

1 octet

1 octet

Anne

Mois

Jour

Heure

Minute

Seconde

Fuseau

12 fvrier 1999

05 : 57 : 03

GMT+3h

Le SMS a donc t expdi par le SMSC le 12 fvrier 1999


05 :57 :03 (GMT+3h).
Il reste dcoder le dernier morceau de la trame : 04D4E294OA.
Loctet 04hex = 04dec indique la longueur du champ UD contenant
le corps du message.
Tableau 1.10.

0A

94

E2

D4

00001010

10010100

11100010

11010100

0000 1010100

1010011

1000101

1010100

Chaque octet exprim en hexadcimal est converti en un nombre


binaire compos de 8 bits. Daprs le champ DCS on sait que UD
est cod avec lalphabet GSM. On regroupe les bits par paquets
de 7 en commenant par la gauche. En saidant du tableau de
conversion de lalphabet GSM (voir Annexes) on en dduit le
caractre correspondant chaque paquet. Finalement en effectuant une lecture de la droite vers la gauche on obtient le corps
du message soit TEST .
En conclusion la trame :
07913306091093F0000A81609121436500009920215075032104D4E
2940A
signifie quil sagit dun SMS contenant le message TEST
envoy par 0619123456 trait par le SMSC +33609001390
le 12 fvrier 1999 05 : 57 : 03 (GMT+3h).

20

05_Ch 1.fm Page 21 Thursday, February 18, 2010 11:22 AM

CHAPITRE

CODAGE DES SMS

1.4 CODAGE/DCODAGE PAR LOGICIEL

DUNOD La photocopie non autorise est un dlit.

Comme vous pouvez le constater le codage/dcodage manuel


dune trame PDU est assez fastidieux. Dans la pratique ceci est
heureusement totalement transparent pour lutilisateur du tlphone portable. Dune part le numro du SMSC utilis est celui
figurant dans la mmoire du mobile, dfinit par loprateur, il est
donc inutile de le mentionner lors de la rdaction du message. Le
numro du correspondant peut tre slectionn dans le rpertoire ou alors saisie manuellement en mode TEXT. Le corps du
message est galement saisi en mode TEXT laide du clavier.
Rien de plus simple en somme pour rdiger un SMS. Tous les
autres champs que nous avons vus prcdemment sont grs par
le processeur du mobile. Le mobile se charge ensuite de convertir
chacun des champs en valeurs hexadcimales pour constituer la
trame qui sera finalement envoye sur le rseau. Le mobile destinataire du SMS fera le cheminement inverse pour restituer
lutilisateur seulement les informations pertinentes sur son cran.
Malheureusement pour certains tlphones lorsque le port srie
est reli par exemple un PC, le mode TEXT nest plus support.
Les trames SMS affiches/constitues lcran du PC sont obligatoirement en mode PDU ce qui complique fortement les manipulations. Heureusement nous allons faire en sorte grce au
logiciel ConvertSMS.exe (figures 1.2 et 1.3) que ce soit le PC
qui prenne en charge le codage/dcodage des donnes SMS. Le
logiciel dvelopp avec Delphi 4 est relativement simple, le code
fait largement appel aux fonctions de manipulation de chanes
de caractres.

Figure 1.2.

21

05_Ch 1.fm Page 22 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM

Figure 1.3.

Algorithme de codage
Tous les paramtres correspondant au codage dun SMS sont
prsents dans longlet nomm : TEXT -> PDU .
Pour faciliter le codage dun SMS nous allons figer certains
champs (griss). Le champ SCA est positionn 00, ainsi le
numro du SMSC utilis est celui prsent dans la mmoire du
portable, inutile de sen soucier. Le champ PDU est 11hex pour
indiquer quil sagit dun SMS-SUBMIT et que le champ VP est
cod en relatif (bit 3 = 0 et bit 4 = 1). Le champ MR est fig zro,
ainsi lidentification du message est confie au mobile. Comme il
sagit dun SMS, le champ PID est zro. Le champ DCS est aussi
zro, ainsi le champ UD doit tre cod avec lalphabet GSM et
aucune classe nest spcifie. Les autres champs devront tre
renseigns par lutilisateur, sauf le champ UDL qui est calcul
par le logiciel. Le champ DA correspond au numro du destinataire du SMS. Le champ VP indique la dure de validit du SMS,
sa valeur est comprise entre 0 et 255dec, la dure correspondante
saffiche ct, par exemple avec VP = 170dec le message aura une
dure de validit de 4 jours. Le champ UD correspond au texte
du message. Le bouton convertir permet dafficher la trame
au format PDU correspondante aux informations saisies. Dans la
copie dcran nous avons repris lexemple vu prcdemment.

22

05_Ch 1.fm Page 23 Thursday, February 18, 2010 11:22 AM

CHAPITRE

CODAGE DES SMS


Algorithme de dcodage
Le deuxime onglet nomm PDU -> TEXT permet le dcodage
dun SMS rceptionn.
On considre que la trame commence toujours par les caractres
0791 , en effet le numro du SMSC est toujours international
donc Type Number = 91hex et il se compose de 11 chiffres, donc
cod sur 7 octets. Le bouton convertir permet de dcoder les
diffrents champs correspondant la trame saisie ; attention lors
de la saisie de la trame ne pas insrer de saut de ligne qui viendrait gner le dcodage. Dans la copie dcran nous avons repris
lexemple vu prcdemment.

ConvertSMS.dll
Ceux qui pratiquent un langage autre que Delphi ne sont pas
oublis, les fonctions de codage/dcodage ont t compiles dans
le fichier ConvertSMS.dll . Les deux fonctions dclarer et
appeler dans votre programme sont :
Function PduToText(pdu: string):TTEXTE;

Largument pdu contient la trame convertir.

DUNOD La photocopie non autorise est un dlit.

La fonction retourne la variable type TTEXTE constitue ainsi :


type
TTexte=record
SMSC:string[12];
PDU:string[2];
OA:string[12];
PID:string[2];
DCS:string[2];
UDL:string[160];
SCTS:string[50];
end;
Function TextToPdu(SCA_PDU_MR:string;targetms:string;PID_DCS:
string;VP:Integer;text:string):TPDU;

Largument SCA_PDU_MR contient les 3 champs concatns


SCA, PDU et MR, par exemple : 001100 .
targetms contient le numro du destinataire, par exemple :
0601020304 .
PID_DCS contient les champs concatns PID et DCS.
VP est un nombre entier compris entre 0 et 255.
text contient le texte du message.

23

05_Ch 1.fm Page 24 Thursday, February 18, 2010 11:22 AM

INTERFACES GSM
La fonction retourne la variable type TPDU constitue ainsi :
type
TPDU=record
Len:string[12];
Trame:string[255];
end;

Le formalisme de dclaration et dappel des fonctions contenues


dans la DLL ConvertSMS.dll seffectuera bien videmment
suivant le type de langage utilis.

24

06_Ch 2.fm Page 25 Thursday, February 18, 2010 11:23 AM

PAGE

CHAPITRE

COMMANDES
AT

2.1 Norme GSM07.07

28

2.2 Norme GSM07.05

41

Matriels utiliss

55

Interfacer un tlphone GSM

73

Ralisations lectroniques

101

Annexes

251

Glossaire

261

Bibliographie

264

25

06_Ch 2.fm Page 26 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM
Il existe un standard de tlcommunication europen (ETS) qui
spcifie une liste de commandes AT qui permettent laccs aux
fonctions dun tlphone portable par lintermdiaire dun terminal. Ces commandes sinspirent fortement du standard Hayes,
du nom de la socit amricaine qui dans les annes 1970 a dfini
une liste de commandes universelles permettant de piloter un
modem. Chaque instruction dbute par les caractres ASCII
AT tirs de labrviation ATtention et se termine par un
retour chariot, CR : Carriage Return, do le nom souvent donn
cette srie de commandes : instructions AT . On peut effectivement comparer un tlphone portable un modem sans fil, il est
donc logique quil utilise des instructions semblables au modem
fixe qui quipe nos PC. Les constructeurs se doivent de fabriquer
des tlphones portables qui respectent ces normes. La premire
baptise GSM07.07 permet laccs aux fonctions gnrales du
tlphone, la deuxime GSM07.05 concerne la gestion des SMS.
Dans les textes officiels qui traitent du GSM on retrouve les termes
ME pour Mobile Equipement qui correspond par exemple un
tlphone portable, TE pour Terminal Equipement qui physiquement peut tre un ordinateur ou un microcontrleur et TA pour
Terminal Adaptator qui assure la liaison entre le ME et le TE, ne
pas confondre avec le cble srie.
Dans la pratique il y a trois possibilits concernant la disposition
des diffrents lments (figure 2.1) :
TA, ME et TE sont trois entits distinctes ;
TA et ME forment une seule entit, ce qui est le cas le plus
frquent. Par exemple un tlphone portable standard ou un
terminal GSM contient dans son botier la fois le TA et le ME.
Le TE forme une entit part, par exemple il peut sagir dun
ordinateur de type PC qui dispose dun port srie ou dun circuit
lectronique bas sur un C qui implmente un port srie ;
TA, ME et TE forment une seule entit.

Figure 2.1.

26

06_Ch 2.fm Page 27 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

Paramtres
Liste des diffrents paramtres qui sont utiliss avec les commandes AT :
<xxx>
Indique que xxx est un paramtre de la commande AT associe.
[<xxx>]

Indique que le paramtre <xxx> est facultatif.

<CR>

Carriage Return (retour chariot)


<CR> = 13dec = 0Dhex

<LF>

Line Feed
<LF> = 10dec = 0Ahex

<ctrl-Z/ESC> Touche CTRL plus touche Z quivalent au code


ASCII EOF pour End Of File ; en informatique
cest un caractre qui signale la fin dun fichier,
ici il signale la fin dune instruction.
<CTRL-Z> = 26dec = 1Ahex
OU
Touche ESC ou Escape permet de sortir de la
commande en cours de frappe sans quelle ne
soit excute.
<ESC> = 27dec = 1Bhex

DUNOD La photocopie non autorise est un dlit.

Comme le montre le tableau 2.1, il existe trois manires denvoyer


une mme commande AT.

Tableau 2.1.

Commande de test

AT+CXXX=?

Retourne la liste des paramtres utilisables avec


la commande CXXX.

Commande de lecture

AT+CXXX?

Retourne le ou les paramtres en cours associs


la commande CXXX.

Commande dcriture

AT+CXXX=<xxx>

Applique le ou les paramtres <xxx> la commande


CXXX.

Dans tous les cas le tlphone doit rpondre, favorablement ou


non, la commande envoye. Si la commande est accepte, la
rponse retourne est de la forme : <CR><LF>OK<CR><LF>. Si la
commande nest pas reconnue, ou que le ME rencontre un problme lors de son excution, un message derreur est retourn :
<CR><LF>ERROR<CR><LF>, accompagn ventuellement dun
message dcrivant la nature de lerreur (voir commande
AT+CMEE).

27

06_Ch 2.fm Page 28 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

2.1 NORME GSM07.07


La norme GSM07.07 regroupe environ 80 commandes permettant daccder toutes les fonctions du ME. Nous nallons pas
dtailler la totalit de ces commandes mais seulement celles qui
seront susceptibles de nous intresser dans les chapitres suivants
(tableau 2.2).
Tableau 2.2.

Commandes

Fonction

Page

AT+CGMI

Identification fabricant

29

AT+CGMM

Identification modle

29

AT+CGMR

Identification version

29

AT+CGSN

Identification numro de srie (IMEI)

30

AT+CIMI

Information didentit internationale du mobile (IMSI)

30

AT+CLIP

Prsentation du numro

31

AT+CSCS

Alphabet utilis par le TE

32

AT+CPAS

tat dactivit du tlphone

32

AT+CPIN

Entre le code PIN

33

AT+CBC

tat de charge batterie

33

Enregistrement sur le rseau

34

AT+CSQ

Qualit du signal

35

AT+CIND

Indicateurs de contrle

35

AT+CPBS

Slectionne un rpertoire tlphonique

36

AT+CPBR

Lecture du rpertoire tlphonique

37

AT+CPBF

Recherche une entit dans le rpertoire tlphonique

37

AT+CPBW

criture dans le rpertoire tlphonique

38

AT+CCLK

Horloge

38

AT+CALA

Alarme

39

AT+CMEE

Signalisation dune erreur

39

AT+CREG

28

06_Ch 2.fm Page 29 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

Description dtaille des commandes


AT+CGMI : Identification fabricant
Commande de test
AT+CGMI=?

Rponse
OK
si erreur
+CME ERROR: <err>

Commande de lecture
AT+CGMI
(exceptionnellement
pas de point dinterrogation)

Rponse
+CGMI: <manufacturer>
Renvoi des informations (2 048 caractres au maximum) concernant
le fabriquant du ME.
si erreur
+CME ERROR: <err>

AT+CGMM : Identification modle


Commande de test
AT+CGMM=?

Rponse
OK
si erreur
+CME ERROR: <err>

Commande de lecture
AT+CGMM
(exceptionnellement
pas de point dinterrogation)

Rponse
+CGMM: <model>
Retourne le modle du ME.
si erreur
+CGMI ERROR: <err>

DUNOD La photocopie non autorise est un dlit.

AT+CGMR : Identification version


Commande de test
AT+CGMR=?

Rponse
OK
si erreur
+CME ERROR: <err>

Commande de lecture
AT+CGMR
(exceptionnellement
pas de point dinterrogation)

Rponse
+CGMR: <revision>
Retourne la version du ME.
si erreur
+CGMI ERROR: <err>

29

06_Ch 2.fm Page 30 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

AT+CGSN : Identification numro de srie (IMEI)


Commande de test
AT+CGSN=?

Rponse
OK
si erreur
+CME ERROR: <err>

Commande de lecture
AT+CGSN
(exceptionnellement
pas de point dinterrogation)

Rponse
+CGSN: <sn>
Retourne le numro de srie du ME nomm IMEI (International
Mobile station Equipment Identity ; voir norme GSM 03.03).
si erreur
+CGMI ERROR: <err>

AT+CIMI : Information didentit internationale du mobile (IMSI)


Commande de test
AT+CGMI=?

Rponse
OK
si erreur
+CME ERROR: <err>

Commande de lecture
AT+CIMI
(exceptionnellement
pas de point dinterrogation)

Rponse
<IMSI>
Retourne le numro IMSI : International Mobile Subscriber Indentity.
Permet au TE didentifier la carte SIM lie au ME.
si erreur
+CGMI ERROR: <err>

30

06_Ch 2.fm Page 31 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

AT+CLIP : Prsentation du numro


Rponse
+CLIP: (liste des <n>s supports)
si erreur
+CGMI ERROR: <err>

Commande de lecture
AT+CLIP?

Rponse
+CLIP= <n>,<m>
Paramtres
<n> : paramtre qui active/dsactive la prsentation du numro au TE
0 inactif (valeur par dfaut)
1 actif
<m> : paramtre qui indique ltat de la fonctionnalit prsentation
du numro
0 Loprateur ne fournit pas ce service (non prvu dans labonnement)
1 Loprateur fournit ce service
2 Inconnu (ex : connexion au rseau impossible)
si erreur
+CGMI ERROR: <err>

Commande dcriture
AT+CLIP=[<n>]

Rponse
OK
Paramtre
Voir commande de lecture
si erreur
+CGMI ERROR: <err>
Remarque :
Si la prsentation du numro est active (AT+CLIP=1) et condition que
lappelant ne soit pas en mode secret, le numro est envoy au TE :
+CLIP: <number>,<type>[,<alpha>]
<number> : numro de tlphone
<type> : type de numro (national/international)
<alpha> : nom provenant du rpertoire, correspondant au numro
de tlphone

DUNOD La photocopie non autorise est un dlit.

Commande de test
AT+CLIP=?

31

06_Ch 2.fm Page 32 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

AT+CSCS : Alphabet utilis par le TE


Commande de test
AT+CSCS?

Rponse
OK
si erreur
+CME ERROR: <err>

Commande de lecture
AT+CSCS=?

Rponse
+CSCS: <chset>
Indique au TA quel est lalphabet utilis par le TE. Ainsi le TA peut
correctement convertir les chanes de caractres entre le TE et le ME.
si erreur
+CGMI ERROR: <err>

Commande dcriture
AT+CSCS=
<chset>

Rponse
OK
Paramtre
<chset> :
"GSM" GSM alphabet par dfaut
"HEX" chane de nombre hexadcimal 00 FF
"IRA" alphabet de rfrence international (ITU-T T.50 [13])
si erreur
+CGMI ERROR: <err>

AT+CPAS : tat dactivit du tlphone


Commande de test
AT+CPAS=?

Rponse
+CPAS: (liste des <pas>s supports)

Commande de lecture
AT+CPAS?

Rponse
+CPAS : <pas>
Paramtre
Retourne ltat dactivit <pas> du ME
0 prt
1 indisponible
2 indfini
3 sonnerie (le ME est prt pour le transfert de commandes entre
TA/TE, mais la sonnerie est active)
4 appel en cours (le ME est prt pour le transfert de commandes
entre TA/TE, mais un appel est en cours)
5 en veille
si erreur
+CGMI ERROR: <err>

32

06_Ch 2.fm Page 33 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

AT+CPIN : Entre le code PIN


Commande de test
AT+CPIN=?

Rponse
OK
si erreur
+CGMI ERROR: <err>

Commande de lecture
AT+CPIN?

Rponse
+CPIN= <code>
Paramtre
<code> :
READY ME aucun mot de passe donner
SIM PIN ME attente du SIM PIN
SIM PUK ME attente SIM PUK
si erreur
+CGMI ERROR: <err>

Commande dcriture
AT+CPIN=<pin>

Rponse
OK
Permet de rentrer le code PIN
si erreur
+CGMI ERROR: <err>

Commande dcriture
AT+CPIN=
<pin>,<newpin>

Rponse
OK
Permet de modifier le code PIN, <newpin> est le nouveau code.
+CGMI ERROR: <err>

DUNOD La photocopie non autorise est un dlit.

AT+CBC : Charge de la batterie


Commande de test
AT+CBC=?

Rponse
+CBC: (liste des <bcs>s),(liste des <bcl>s)
si erreur
+CGMI ERROR: <err>

Commande de lecture
AT+CBC?

Rponse
+CBC: <bcs>,<bcl>
Paramtres
<bcs> : tat de connexion de la batterie
0 le ME est aliment par la batterie
1 le ME est connect une batterie, mais il nest pas aliment par
celle-ci
2 le ME nest pas connect une batterie
3 dfaut dalimentation
<bcl> : niveau de charge de la batterie
0
la batterie est dcharge, ou le ME ne dispose pas de batterie
1..100 capacit de la batterie entre 1 et 100 %
si erreur
+CGMI ERROR: <err>

33

06_Ch 2.fm Page 34 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

AT+CREG : Enregistrement sur le rseau


Commande de test
AT+CREG=?

Rponse
+CREG: (liste des <n>s supports)
si erreur
+CGMI ERROR: <err>

Commande de lecture
AT+CREG?

Rponse
+CREG: <n>,<stat>[,<lac>,<ci>]
Paramtres
<n> : indique dans quel mode la commande AT+CREG est utilise
0 commande inactive (valeur par dfaut)
retourne un code indiquant si le tlphone est enregistr sur le
rseau +CREG: <stat>
retourne un code <stat> indiquant si le tlphone est enregistr sur
le rseau et les informations <lac> et <ci>
<stat> :
0 tlphone non enregistr, pas de recherche doprateur en cours
1 tlphone enregistr sur le rseau
2 tlphone non enregistr, recherche doprateur en cours
3 enregistrement interdit
4 inconnu
5 enregistr, roaming
<lac> : Location Aera Code, deux octets cods en hexadcimal
<ci> : Cell-ID, deux octets cods en hexadcimal
si erreur
+CGMI ERROR: <err>

Commande dcriture
AT+CREG=[<n>]

Rponse
OK
Paramtre
Voir commande de lecture
si erreur
+CGMI ERROR: <err>

34

06_Ch 2.fm Page 35 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

AT+CSQ : Qualit du signal


Commande de test
AT+CSQ=?

Rponse
+CSQ: (liste des <rssi>s supports),(liste des <ber>s supports)
si erreur
+CGMI ERROR: <err>

Commande de lecture
AT+CSQ?

Rponse
+CSQ: <rssi>,<ber>
Paramtres
<rssi> :
0
113 dBm ou moins
1
111 dBm
2..30 - 109... 53 dBm
31
51 dBm ou plus
99
inconnu ou non dtectable
<ber> :
0..7
RXQUAL
99
inconnu ou non dtectable
si erreur
+CGMI ERROR: <err>

DUNOD La photocopie non autorise est un dlit.

AT+CIND : Indicateurs de contrle


Commande de test
AT+CIND=?

Rponse
+CIND: (<descr>,(liste des <ind>s supports)) [,(<descr>,
(liste des <ind>s supports))[,...]]
si erreur
+CGMI ERROR: <err>

Commande de lecture
AT+CIND?

Rponse
+CIND: <ind>[,<ind>[,...]]
Paramtres
<ind> : niveau correspondant au <descr>
<descr> :
"battchg" niveau de charge de la batterie (0-5)
"signal"
qualit du signal (0-5)
"service" disponibilit du service (0-1)
"sounder" activit sonore (0-1)
"message" message reu (0-1)
"call"
appel en cours (0-1)
"vox"
transmission active par activit vocale (0-1)
"roam"
indicateur de roaming (0-1)
"smsfull"
la mmoire de stockage des sms est pleine (1), ou disponible (0)
si erreur
+CGMI ERROR: <err>

35

06_Ch 2.fm Page 36 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

AT+CPBS : Slectionne un rpertoire tlphonique


Commande de test
AT+CPBS=?

Rponse
+CPBS: (liste des <storage>s supports)
OK
si erreur
+CGMI ERROR: <err>

Commande de lecture
AT+CPBS?

Rponse
+CPBS: <storage>[,<used>,<total>]
Paramtres
Voir commande dcriture
si erreur
+CPBS ERROR: <err>

Commande dcriture
AT+CPBS=<storage>

Rponse
OK
Paramtres
<storage> :
"DC" : liste des numros appels
"EN" : numro durgence stock dans mmoire SIM ou ME
"FD" : rpertoire fixe
"LD" : dernier numro appel
"MC" : liste des numros appels, mais sans rponse
"ME" : rpertoire du ME
"MT" : rpertoire combin, ME et SIM
"ON" : numros propres la carte SIM / ME (MSISDNs)
"RC" : liste des appels reus
"SM" : rpertoire de la carte SIM
"TA" : rpertoire du TA
<used> : indique lespace utilis dans la mmoire
<total> : taille de la mmoire
si erreur
+CGMI ERROR: <err>

36

06_Ch 2.fm Page 37 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

AT+CPBR : Lecture du rpertoire tlphonique


Commande de test
AT+CPBR=?

Rponse
+CPBR: (liste des <index>s supports),[<nlength>],[<tlength>]
Paramtres
<nlength> : taille maximum du champ <number>
<tlength> : taille maximum du champ <text>
si erreur
+CGMI ERROR: <err>

Commande dcriture
AT+CPBR=<index1>
[,<index2>]

Rponse
+CPBR: <index1>,<number>,<type>,<text>[[...]
<CR><LF>+CPBR: <index2>,<number>,<type>,<text>]]
Cette commande affiche le contenu du rpertoire situ entre les
emplacements <index1> et <index2>
Paramtres
<number> : numro de tlphone
<type> : type de numro
<text> : nom de la personne
si erreur
+CGMI ERROR: <err>

DUNOD La photocopie non autorise est un dlit.

AT+CPBF : Recherche une entit dans le rpertoire tlphonique


Commande de test
AT+CPBF=?

Rponse
+CPBF: [<nlength>],[<tlength>]
OK
Paramtres
<nlength> : taille maximum du champ <number>
<tlength> : taille maximum du champ <text>
si erreur
+CGMI ERROR: <err>

Commande de lecture
AT+CPBF=
<findtext>

Rponse
+CPBF: <index1>,<number>,<type>,<text>[[...]
<CR><LF>+CBPF: <index2>,<number>,<type>,<text>]]
Recherche un lment dans le rpertoire courant (celui slectionn
par la commande +CPBS) qui commence par les caractres spcifis
par <findtext>
Paramtres
<number> : numro de tlphone
<type> : type de numro
<text> : nom de la personne
si erreur
+CGMI ERROR: <err>

37

06_Ch 2.fm Page 38 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

AT+CPBW : criture dans le rpertoire tlphonique


Commande de test
AT+CPBW=?

Rponse
+CPBW: (liste des <index>s supports),[<nlength>],[<tlength>]
Paramtres
<nlength> : taille maximum du champ <number>
<tlength> : taille maximum du champ <text>
si erreur
+CGMI ERROR: <err>

Commande dcriture
AT+CPBW=
[<index>]
[,<number>
[,<type>[,<text>]]]

Rponse
OK
Paramtres
<number> : numro de tlphone
<type> : type de numro
<text> : nom de la personne
si erreur
+CGMI ERROR: <err>

AT+CCLK : Date / Heure


Commande de test
AT+CCLK?

Rponse
+CCLK: <time>
Retourne la date et lheure au format "aa/mm/jj","hh:mm:ss"
si erreur
+CGMI ERROR: <err>

Commande dcriture
AT+CCLK=<time>

Rponse
OK
mise jour de la date et de lheure
si erreur
+CGMI ERROR: <err>

38

06_Ch 2.fm Page 39 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

AT+CALA : Alarme
Commande de test
AT+CALA=?

Rponse
+CALA: (liste des <n>s supports),(liste des <type>s supports),
<tlength>
Paramtres
Voir commande de lecture
si erreur
+CGMI ERROR: <err>

Commande de lecture
AT+CALA?

Rponse
+CALA: <time>,<n1>,<type>,[<text>]
[<CR><LF>+CALA: <time>,<n2>,<type>,[<text>][]]]
Paramtre lalarme horaire du ME. Il est possible de programmer
plusieurs alarmes, chaque alarme affiche un message diffrent sur
lcran du ME.
Paramtres
<time> :
date et heure au format "aa/mm/jj","hh:mm:ss"
<n>, <n1>, <n2> : nombre entier spcifiant lindex de lalarme
(spcifique au fabriquant)
<type> :
nombre entier qui indique le type dalarme, son,
volume, Led
<text> :
texte qui doit safficher sur lcran du ME lorsque
lalarme est active
<Tlength> :
taille maximum du champ <text>
si erreur
+CGMI ERROR: <err>

Commande dcriture
AT+CALA=<time>
[, <n>[, <type>
[, <text>]]]

Rponse
OK
Programmation dune alarme
si erreur
+CGMI ERROR: <err>

DUNOD La photocopie non autorise est un dlit.

AT+CMEE : Signalisation dune erreur


Commande de test
AT+CMEE=?

Rponse
+CMEE: (liste des <n>s supports)

Commande de lecture
AT+CMEE?

Rponse
+CMEE: <n>

Commande dcriture
AT+CMEE=[<n>]

Paramtres
<n>:
0 seul le code "ERROR" est retourn
1 retourne le code "ERROR" plus une valeur numrique
2 retourne le code "ERROR" plus un commentaire

39

06_Ch 2.fm Page 40 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM
Codes derreur
Lorsquune commande choue, un code derreur <err> peut tre
renvoy au TE (voir commande AT+CMEE) :
0......... chec du tlphone
1......... pas de connexion au tlphone
2......... "phone-adaptor link reserved"
3......... opration interdite
4......... opration non supporte
5......... PH-SIM PIN requis
6......... PH-FSIM PIN requis
7......... PH-FSIM PUK requis
10....... SIM absente
11 ....... SIM PIN requis
12....... SIM PUK requis
13....... chec de SIM
14....... SIM occupe
15....... SIM fausse
16....... mot de passe incorrect
17....... SIM PIN2 requis
18....... SIM PUK2 requis
20....... mmoire pleine
21....... index invalide
22....... non trouv
23....... chec de mmoire
24....... chane de texte trop longue
25....... caractre invalide dans la chane
26....... numro de tlphone trop long
27....... caractre invalide dans le numro
30....... pas de rseau
31....... timeout rseau
32....... pas de rseau, appel durgence seulement
40....... code PIN didentification sur le rseau requis
41....... code PUK didentification sur le rseau requis
42....... code PIN second didentification sur le rseau requis
43....... code PUK second didentification sur le rseau requis
44....... code PIN didentification sur loprateur requis
45....... code PUK didentification sur loprateur requis
46....... code PIN requis pour une identification
47....... code PUK requis pour une identification
100..... inconnu
Attention, certains lments prsents ci-avant sont extraits dun
document officiel de lETSI et par consquent ils sont soumis
un copyright :

40

06_Ch 2.fm Page 41 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

ETSI 1999. Further use, modification, redistribution is


strictly prohibited. ETSI standards are avaiable from:
http://pda.etsi.org/pda/ and http://www.etsi.org/eds/

2.2 NORME GSM07.05


La norme GSM07.05 spcifie les commandes AT permettant la
gestion des SMS (tableau 2.3).

DUNOD La photocopie non autorise est un dlit.

Commande

Fonction

Page

AT+CSMS

Slection du service de messagerie

45

AT+CPMS

Slection de la zone mmoire pour le stockage des SMS

46

AT+CMGF

Slection du format du SMS (PDU ou TEXT)

46

AT+CSCA

Dfinition de ladresse du centre de messagerie

47

AT+CSDH

Affiche en mode TEXT le paramtrage des SMS

47

AT+CSAS

Sauvegarde du paramtrage

48

AT+CRES

Restauration du paramtrage par dfaut

48

AT+CNMI

Indication concernant un nouveau SMS

49

AT+CMGL

Liste les SMS stocks en mmoire

50

AT+CMGR

Lecture dun SMS

50

AT+CMGS

Envoie un SMS

51

AT+CMSS

Envoie dun SMS stock en mmoire

51

AT+CMGW

criture dun SMS

52

AT+CMGD

Efface un SMS

52

Description dtaille des commandes


Paramtres concernant le stockage
<index>
Nombre entier indiquant lemplacement du SMS
dans la mmoire associe.
<mem1>

Mmoire dans laquelle les messages sont lus ou


effacs. Les commandes utilisant ce paramtre

41

Tableau 2.3.

06_Ch 2.fm Page 42 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM
sont +CMGL qui liste les messages, +CMGR qui
effectue la lecture dun message et +CMGD qui
efface un message.
<mem2>

Mmoire utilise pour rdiger ou envoyer un


message. Les commandes utilisant ce paramtre
sont +CMSS qui envoie le message situ dans
cette mmoire et +CMGW qui crit un message
dans cette mmoire.

<mem3>

Mmoire utilise pour stocker les messages reus.


Les messages reus peuvent ventuellement tre
directement transmis au TE, voir commande
+CNMI.
Les paramtres <mem1>, <mem2> et <mem3> peuvent
thoriquement prendre les valeurs suivantes :
<memx>

Description

ME

Stockage dans la mmoire du mobile

MT

Tous les stockages associs au mobile

SM

Stockage dans la carte SIM

TA

Stockage dans le TA (Terminal Adaptator)

Si le mobile est utilis en mode PDU ce paramtre


est un nombre entier compris entre 0 et 4. En
mode TEXT il sagit alors dune chane de caractres. Dans les deux cas il indique ltat du message situ en mmoire :

<stat>

Mode
PDU

Mode
TEXT

REC UNREAD

Message reu non lu

REC READ

Message reu lu

STO UNSENT

Message stock non envoy

STO SENT

Message stock dj envoy

ALL

Tous les messages (voir commande +CMGL)

<total1>

Signification

nombre entier indiquant le nombre de messages


quil est possible de stocker dans la mmoire
<mem1>.

42

06_Ch 2.fm Page 43 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT
<total2>

nombre entier indiquant le nombre de messages


quil est possible de stocker dans la mmoire
<mem2>.

<total3>

nombre entier indiquant le nombre de messages


quil est possible de stocker dans la mmoire
<mem3>.

<used1>

nombre entier indiquant le nombre de messages


stocks dans la mmoire <mem1>.

<used2>

nombre entier indiquant le nombre de messages


stocks dans la mmoire <mem2>.

<used3>

nombre entier indiquant le nombre de messages


stocks dans la mmoire <mem3>.

DUNOD La photocopie non autorise est un dlit.

Paramtres concernant les donnes


On retrouve bien entendu des paramtres communs ceux que
nous avons dtaills dans le chapitre Codage des SMS .
<alpha>

Il sagit dune chane de caractres reprsentant


le nom du destinataire <da> ou de lexpditeur
du message <oa> correspondant une entre
trouve dans le rpertoire du mobile (voir
commande associe +CSCS).

<da>

Adresse du destinataire du message. Le type


dadresse utilis est donn par <toda>.

<data>

Correspond au champ User Data qui stocke le


corps du message.

<dcs>

Data Coding Scheme, indique lalphabet utilis pour


composer le champ <data> et la classe du message.

<dt>

Discharge Time respectant le format : "yy/MM/dd,


hh:mm:sszz", o les caractres indiquent
lanne (deux derniers chiffres), mois, jour, heure,
minutes, secondes et le dcalage horaire.

<fo>

Indique le type de massage :

<length>

<fo>

Description

17dec

SMS-DELIVER ou SMS-SUBMIT

2dec

SMS-STATUS-REPORT ou SMS-COMMAND

Indique la longueur du champ <data>. En mode


TEXT il indique le nombre de caractres, en mode
PDU il indique le nombre doctets.

43

06_Ch 2.fm Page 44 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM
<mr>

Rfrence du message (nombre entier compris


entre 0 et 255dec).

<oa>

Adresse de lmetteur du message.

<pdu>

Contient les informations relatives au type de


PDU.

<pid>

Protocole Identifier, indique quel type de service


tlmatique est destin le message, par dfaut, il
est 0, le message est donc trait comme un SMS.

<sca>

Adresse du centre de messagerie.

<scts>

Service Centre Time Stamp contient la date et


lheure laquelle le SMS est arriv au SMSC
(voir <dt>).

<toda>

Type de ladresse de destination, quand le premier


caractre de <da> est + on a <toda>=145dec
(numro international) sinon <toda>=129dec
(numro national).

<tooa>

Type de ladresse de lmetteur du message,


quand le premier caractre de <da> est + on a
<tooa>=145dec (numro international) sinon
<tooa>=129dec (numro national).

<tosca>

Format de codage de ladresse du centre de


messagerie, ce paramtre est facultatif, sil est
omis les numros tlphoniques nationaux/internationaux sont reconnus par le caractre +
qui prcde le numro.

<vp>

Nombre compris entre 0 et 255dec indiquant la


dure de validit du message.

44

06_Ch 2.fm Page 45 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

Commandes AT pour la gestion des SMS


AT+CSMS : Slection du service de messagerie
Rponse
+CSMS: (liste des <service>s supports)
Paramtres
Voir commande dcriture
si erreur
+CMS ERROR <err>

Commande de lecture
AT+CSMS?

Rponse
+CSMS: <service>,<mt>,<mo>
Retourne les types de messages supports par le ME : <mt> pour le
mobile qui reoit le message, <mo> pour le mobile qui met le message.
Paramtres
Voir commande dcriture
si erreur
+CMS ERROR <err>

Commande dcriture
AT+CSMS=
<service>

Rponse
+CSMS: <mt>,<mo>
Paramtres
<service> :
0
GSM 03.40 et 03.41
1...127 rserv
128... spcifique au constructeur
<mt>,<mo> :
0
type non support
1
type support
si erreur
+CMS ERROR <err>

DUNOD La photocopie non autorise est un dlit.

Commande de test
AT+CSMS=?

45

06_Ch 2.fm Page 46 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

AT+CPMS : Slection de la zone mmoire pour le stockage des SMS


Commande de test
AT+CPMS=?

Rponse
+CPMS: (liste des <mem1>s supportes),(liste des <mem2>s supportes),
(liste des <mem3>s supportes)
Liste pour chaque type de mmoire
si erreur
+CMS ERROR <err>

Commande de lecture
AT+CPMS?

Rponse
+CPMS: <mem1>,<used1>,<total1>,<mem2>,<used2>,<total2>,
<mem3>,<used3>,<total3>
Affiche pour chaque type de mmoire <memx> lespace utilis <usedx>
et la capacit de stockage <totalx>
si erreur
+CMS ERROR: <err>

Commande dcriture
+CPMS=
<mem1>
[,<mem2>[,<mem3>]]

Rponse
+CPMS: <used1>,<total1>,<used2>,<total2>,<used3>,<total3>
Affecte une mmoire aux paramtres <mem1>, <mem2> et <mem3>
si erreur
+CMS ERROR <err>

AT+CMGF : Slectionne le format des SMS (PDU ou TEXT)


Commande de test
AT+CMGF=?

Rponse
+CMGF: liste des <mode>s supports OK
Paramtre
Voir commande dcriture
si erreur
+CMS ERROR <err>

Commande de lecture
AT+CMGF?

Rponse
+CMGF: <mode> OK
Paramtre
Voir commande dcriture
si erreur
+CMS ERROR <err>

Commande dcriture
AT+CMGF=
[<mode>]

Rponse
OK
slectionne le format de dialogue utilis
Paramtre
<mode> :0 mode PDU (mode disponible sur tous les types de mobile)
1 mode TEXT
si erreur
+CMS ERROR <err>

46

06_Ch 2.fm Page 47 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

AT+CSCA : Adresse du centre de messagerie (SMSC)


Commande de test
AT+CSCA=?

Rponse
OK
si erreur
+CMS ERROR <err>

Commande de lecture
AT+CSCA?

Rponse
+CSCA: <sca>,<tosca>
OK
si erreur
+CMS ERROR <err>

Commande dcriture
Si mode TEXT (+CMGF=1) :
AT+CSCA=
<sca>[,<tosca>]

Rponse
OK
Dfinit ladresse du centre de messagerie utiliser pour lenvoi des
SMS
si erreur
+CMS ERROR <err>

DUNOD La photocopie non autorise est un dlit.

AT+CSDH : Affiche en mode TEXT le paramtrage des SMS


Commande de test
AT+CSDH=?

Rponse
+CSDH: (liste des <show>s supports)
Paramtre
Voir commande dcriture
si erreur
+CMS ERROR <err>

Commande de lecture
AT+CSDH?

Rponse
+CSDH: <show>
Paramtre
Voir commande dcriture
si erreur
+CMS ERROR <err>

Commande dcriture
AT+CSDH=
[<show>]

Rponse
OK
Paramtre
<show> :
0 naffiche pas tout le paramtrage du SMS, concerne les commandes +CSCA et +CSMP (<sca>, <tosca>, <fo>, <vp>, <pid> et <dcs>)
sinon <length>, <toda> ou <tooa> pour +CMT, +CMGL, +CMGR
1 affiche tout le paramtrage du SMS
si erreur
+CMS ERROR <err>

47

06_Ch 2.fm Page 48 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

AT+CSAS : Sauvegarde du paramtrage en cours


Commande de test
AT+CSAS=?

Rponse
+CRES: liste des <profile>s supports
si erreur
+CMS ERROR <err>

Commande dcriture
AT+CSAS=
[<profile>]

Sauvegarde en mmoire du paramtrage du service de messagerie


en cours (concerne la commande +CSCA). Un mobile peut contenir
dans sa mmoire volatile jusqu 255 profiles diffrents.
si erreur
+CMS ERROR <err>

AT+CRES : Restauration du paramtrage par dfaut


Commande de test
AT+CRES=?

Rponse
+CRES: liste des <profile>s supports
si erreur
+CMS ERROR <err>

Commande dcriture
AT+CRES=
[<profile>]

Restauration dun des paramtrages du service de messagerie (concerne la commande +CSCA) stocks en mmoire. Un mobile peut contenir dans sa mmoire volatile jusqu 255 profiles diffrents dfinis
laide de la commande +CSAS.
si erreur
+CMS ERROR <err>

48

06_Ch 2.fm Page 49 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

DUNOD La photocopie non autorise est un dlit.

AT+CNMI : Indication concernant un nouveau SMS


Commande de test
AT+CNMI=?

Rponse
+CNMI: (liste des <mode>s supports), (liste des <mt>s supports)
Paramtres
Voir commande dcriture
si erreur
+CMS ERROR <err>

Commande de lecture
AT+CNMI?

Rponse
+CNMI: <mode>,<mt>
Paramtres
Voir commande dcriture
si erreur
+CMS ERROR <err>

Commande dcriture
+CNMI=
[<mode>
[,<mt>]]

Rponse
OK
Dtermine comment le mobile doit informer le TE lorsquun nouveau
SMS arrive du rseau.
<mode> :
0 Les indications concernant la rception dun nouveau message
sont stockes dans le TA.
1 Rejette les indications concernant la rception dun nouveau message lorsque la liaison entre le TA et le TE est rserve. Sinon les
indications sont directement transfres vers le TE.
2 Sauvegarde dans le TA les indications concernant la rception dun
nouveau message lorsque la liaison entre le TA et le TE est rserve.
Lorsque la liaison est libre, les indications sont transfres vers le
TE.
3 Les indications concernant la rception dun nouveau message
sont directement transfres vers le TE.
<mt> :
0 Aucune indication concernant le SMS-DELIVER nest envoye au
TE.
1 Si le SMS-DELIVER est stock dans le mobile, les indications concernant lemplacement en mmoire du message sont envoyes au
TE en utilisant le code +CMTI: <mem>,<index>
2 Les SMS-DELIVERs sont directement achemins au TE en utilisant le code +CMT : [<alpha>],<length><CR><LF><pdu>
3 Les SMS-DELIVERs de classe 3 sont directement achemins au
TE en utilisant le code :
+CMT: [<alpha>],<length><CR><LF><pdu>
si erreur
+CMS ERROR <err>

49

06_Ch 2.fm Page 50 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

AT+CMGL : Liste les SMS stocks en mmoire


Commande de test
AT+CMGL=?

Rponse
+CMGL: liste des <stat>s supports OK
si erreur
+CMS ERROR <err>

Commande dcriture
AT+CMGL=
[<stat>]

Rponse
Si mode PDU (AT+CMGF=0) et commande russie
+CMGL: <index>,<stat>,[<alpha>],<length><CR><LF><pdu>
[<CR><LF>+CMGL:<index>,<stat>,[<alpha>],<length><CR><LF>
<pdu>[...]]
Si mode TEXT (AT+CMGF=1) et commande russie
+CMGL: <index>,<stat>,<oa/da>,[<alpha>],[<scts>]
[,<tooa/toda>,<length>]<CR><LF><data>[<CR><LF>
+CMGL: <index>,<stat>,<da/oa>,[<alpha>],[<scts>]
[,<tooa/toda>,<length>]<CR><LF><data>[...]]
Retourne tous les messages stocks avec leur tat <stat> depuis la
mmoire <mem1>
Si ltat dun message est received unread il devient received
read
si erreur
+CMS ERROR <err>

AT+CMGR : Lecture dun SMS


Commande de test
+CMGR=?

Rponse
OK
si erreur
+CMS ERROR <err>

Commande dcriture
+CMGR=
<index>

Rponse
Si mode PDU (AT+CMGF=0) et commande russie
+CMGR: <stat>,[<alpha>],<length><CR><LF><pdu>
Si mode TEXT (AT+CMGF=1), commande russie et SMS-DELIVER
+CMGR: <stat>,<oa>,[<alpha>],<scts>
[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR>
<LF><data>
Si mode TEXT (AT+CMGF=1), commande russie et SMS-SUBMIT
+CMGR: <stat>,<da>,[<alpha>]
[,<toda>,<fo>,<pid>,<dcs>,[<vp>],<sca>,<tosca>,<length>]<CR>
<LF><data>
Retourne le message ayant pour emplacement <index> dans la
mmoire <mem1>
Si ltat dun message est received unread il devient received
read
si erreur
+CMS ERROR <err>

50

06_Ch 2.fm Page 51 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT

AT+CMGS : Envoi dun SMS


Commande de test
AT+CMGS=?

Rponse
OK
si erreur
+CMS ERROR <err>

Commande dcriture
Si mode PDU (+CMGF=0) :
+CMGS=
<length><CR>
trame PDU
<ctrl-Z/ESC>
Si mode TEXT (+CMGF=1) :
+CMGS=
<da>[,<toda>]
<CR>
texte
<ctrl-Z/ESC>

Rponse
+CMGS: <mr>[,<scts>] OK
Envoi du SMS sur le rseau (SMS-SUBMIT).
La rfrence du message <mr> est retourne au terminal metteur si
le message est correctement envoy.
Si erreur :
+CMS ERROR: <err>
Note :
La fin du message est signale par CTRL Z
ESC annule lenvoi du message en cours, bien que le terminal
retourne OK, le SMS nest pas envoy.
Envoi de-mail par SMS : certains providers ne reconnaissent pas le
symbole @, il est possible dans certains cas de le remplacer par !

AT+CMSS : Envoi dun SMS stock en mmoire


Rponse
OK
si erreur
+CMS ERROR <err>

Commande dcriture
+CMSS=<index>
[,<da>[,<toda>]]

Si lenvoi est russi :


+CMSS: <mr>
Cette commande envoie le SMS (SMS-SUBMIT), situ lemplacement <index> de la mmoire <mem2>
La rfrence du message <mr> est retourne au terminal metteur si
le message est correctement envoy.
si erreur
+CMS ERROR <err>

DUNOD La photocopie non autorise est un dlit.

Commande de test
AT+CMSS=?

51

06_Ch 2.fm Page 52 Thursday, February 18, 2010 11:23 AM

INTERFACES GSM

AT+CMGW : criture dun SMS en mmoire


Commande de test
AT+CMGW=?

Rponse
OK
si erreur
+CMS ERROR <err>

Commande dcriture
Si mode PDU (+CMGF=0) :
+CMGW=
<length>[,stat]
<CR>
trame PDU
<ctrl-Z/ESC>
Si mode TEXT (+CMGF=1) :
+CMGW=<oa/da>
[,<tooa/toda>
[,<stat>]]<CR>
texte
<ctrl-Z/ESC>

Rponse
+CMGW: <index>
Lexcution de cette commande effectue le stockage dans la mmoire
<mem2> dun message (SMS-DELIVER ou SMS-SUBMIT). Lemplacement du message dans la mmoire <index> est retourn. Par dfaut
ltat du message sera stored unsent , mais le paramtre <stat>
qui est facultatif autorise les autres valeurs possibles.
si erreur
+CMS ERROR <err>

AT+CMGD : Efface un SMS


Commande de test
AT+CMGD=?

Rponse
OK
si erreur
+CMS ERROR <err>

Commande dcriture
AT+CMGD=
<index>

Rponse
OK
Efface le message situ dans la mmoire <mem1> lemplacement
dfinit par <index>
si erreur
+CMS ERROR <err>

52

06_Ch 2.fm Page 53 Thursday, February 18, 2010 11:23 AM

CHAPITRE

COMMANDES AT
Codes derreur
Lorsquune commande choue, un code derreur <err> peut tre
renvoy au TE (voir commande AT+CMEE) :
300 ...............chec ME
301 ...............service SMS du ME rserv
302 ...............opration non autorise
303 ...............opration non supporte
304 ...............paramtre invalide (mode PDU)
305 ...............paramtre invalide (mode TEXT)
310 ...............SIM non insre
311 ...............SIM PIN ncessaire
312 ...............PH-SIM PIN ncessaire
313 ...............chec SIM
314 ...............SIM occupe
315 ...............SIM faux
320 ...............chec mmoire
321 ...............index mmoire non valide
322 ...............mmoire pleine
330 ...............adresse SMSC inconnue
331 ...............pas de rseau
332 ...............timeout rseau
500 ...............erreur inconnue
501 511 .....rserv
512 ...............spcifique au constructeur
Attention, certains lments prsents ci avant sont extraits dun
document officiel de lETSI et par consquent ils sont soumis
un copyright :

DUNOD La photocopie non autorise est un dlit.

ETSI 1999. Further use, modification, redistribution is


strictly prohibited. ETSI standards are avaiable from:
http://pda.etsi.org/pda/ and http://www.etsi.org/eds/

53

06_Ch 2.fm Page 54 Thursday, February 18, 2010 11:23 AM

07_Ch 3.fm Page 55 Thursday, February 18, 2010 11:24 AM

PAGE

CHAPITRE

MATRIELS
UTILISS

3.1 Tlphones portables

56

3.2 Modules GSM intgrs

62

Interfacer un tlphone GSM

73

Ralisations lectroniques

101

Annexes

251

Glossaire

261

Bibliographie

264

55

07_Ch 3.fm Page 56 Thursday, February 18, 2010 11:24 AM

INTERFACES GSM

3.1 TLPHONES PORTABLES


La majorit des tlphones portables disposent en interne dun
TA, dans ce cas il est possible de rcuprer les lignes TxD et RxD
disponibles sur un connecteur multibroche, propre chaque
modle de tlphone. Un simple circuit adaptateur de niveau de
tension TTL/RS232 permet alors de relier le tlphone au port
srie dun PC. Bien entendu tout portable normalement constitu se doit de reconnatre les normes GSM07.07 et GSM07.05,
ainsi il est possible via lordinateur daccder toutes les fonctions du tlphone laide des commandes AT que nous avons
vues prcdemment. Il est important de noter que certains modles
de portables ne supportent pas le mode TEXT, la gestion des SMS
entre lordinateur et le mobile se fait uniquement en mode PDU.
Rappelons que la commande AT+CMGF=? permet de lister les
modes supports par le mobile, si la rponse est +CMGF : (0,1)
cela signifie que les modes TEXT (0) et PDU (1) sont supports.
Si la rponse est +CMGF : (0), seul le mode PDU peut tre utilis.

Adaptateur TTL/RS232

Figure 3.1.
Schma
de ladaptateur
TTL/RS232.

Nous allons faire appel au clbre circuit intgr MAX232 qui,


cbl avec ces 4 condensateurs au tantale de 1 F, permet dadapter

56

07_Ch 3.fm Page 57 Thursday, February 18, 2010 11:24 AM

CHAPITRE

MATRIELS UTILISS

les niveaux de tension entre le PC et le tlphone. Paradoxalement le plus compliqu consiste se procurer le connecteur pour
relier le tlphone au montage. Il est possible de modifier un kit
piton encore faut-il que les broches qui nous intressent soient
prsentes. Quelques exemples de brochages rcuprs sur Internet
vont vous permettre didentifier les lignes relier au montage.
Attention les brochages prsents ici nont pas t vrifis, leur
utilisation est sous votre entire responsabilit. Lalimentation
du montage peut se faire partir des sorties DTR et RTS de
lordinateur, dans ce cas le cavalier J1 est en position B. Comme
certains PC ne disposent pas dune puissance suffisante sur leur

Figure 3.2.
Circuit imprim.
Figure 3.3.
Implantation
des composants.
DUNOD La photocopie non autorise est un dlit.

Liste des composants


C1 : 100 nF / LCC jaune
C2 C5 : 1 F / tantale / 15 V
C6 : 220 F / lectrolytique / 15 V
D1 : 1N4002
D2, D3 : 1N4148
REG : rgulateur 78L05
J1 : barrette HE10 3 contacts
+ cavalier
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle
pour CI/coud 90
CN3 : connecteur spcifique
au modle de tlphone utilis
IC1 : MAX232
+ support DIL 16 broches

57

07_Ch 3.fm Page 58 Thursday, February 18, 2010 11:24 AM

INTERFACES GSM

Figure 3.4.
Diffrents brochages.

58

07_Ch 3.fm Page 59 Thursday, February 18, 2010 11:24 AM

CHAPITRE

MATRIELS UTILISS

port srie, cest le cas notamment des portables, il est possible de


connecter sur le bornier CN1 une alimentation externe dlivrant
une tension de 12 V, dans ce cas le cavalier J1 est en position A.
Dans les deux cas le rgulateur 78L05 se charge de rguler
+ 5 V la tension destine au MAX232 mais aussi au tlphone,
certains modles ont besoin de cette tension pour activer leur
port srie. Il est possible de tester le montage avant mme de
lavoir connect au tlphone. Pour cela, reliez momentanment
les lignes TXD et RXD, ainsi les donnes transmises sur TXD sont
recopies sur RXD. Un simple logiciel comme Hyper Terminal
suffira vrifier que le texte saisi lcran est renvoy comme un
cho par le montage.

DUNOD La photocopie non autorise est un dlit.

Adaptateur pour FBUS/MBUS (ou M2BUS)

Certains tlphones, notamment ceux de la marque Nokia, ncessitent une lectronique lgrement diffrente pour communiquer
avec un PC. En effet ils utilisent des protocoles de transmission
FBUS et/ou MBUS propres ce constructeur. Le FBUS est le
mode de communication privilgi de lutilisateur, il permet le
transfert de donnes une vitesse maximale de 115 kbauds, on
retrouve les broches TXD et RXD mais les niveaux de tension ne
doivent pas dpasser 3 V, do la prsence des diodes zener DZ1

59

Figure 3.5.
Schma
de ladaptateur
pour FBUS/MBUS.

07_Ch 3.fm Page 60 Thursday, February 18, 2010 11:24 AM

INTERFACES GSM
et DZ2 qui possdent une tension de seuil de 2,7 V. Le MBUS est
plutt rserv au personnel technique de Nokia pour effectuer le
paramtrage systme du tlphone, bien quil puisse tre aussi
utilis pour le transfert de donnes mais avec une vitesse limite
9 600 bauds. La transmission et la rception se font sur une seule
broche nomme MBUS.
Le montage prsent ici peut communiquer selon les deux protocoles FBUS (cavalier J2 retir) ou MBUS (cavalier J2 en place). Il
est possible de tester le montage avant mme de lavoir reli au
tlphone. En effet, lorsque rien nest connect au bus, les lignes
RXD et TXD se trouvent relies par la diode D4 de sorte que
toute information envoye sur TXD est retransmise sur RXD (si
le cavalier J2 en place).

Figure 3.6.
Circuit imprim.
Figure 3.7.
Implantation
des composants.
Liste des composants
C1 : 100 nF / LCC jaune
C2 C5 : 1 F / tantale / 15 V
C6 : 220 F / lectrolytique / 15 V
D1 : 1N4002
D2 D4 : 1N4148
DZ1, DZ2 : diode zener 2,7 V
REG : rgulateur 78L05
J1 : barrette HE10 3 contacts + cavalier
J2 : barrette HE10 2 contacts + cavalier
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle pour CI coud 90
CN3 : connecteur spcifique
au modle de tlphone utilis
IC1 : MAX232 + support DIL 16 broches

60

07_Ch 3.fm Page 61 Thursday, February 18, 2010 11:24 AM

CHAPITRE

MATRIELS UTILISS

DUNOD La photocopie non autorise est un dlit.

Remarque : pour relier ladaptateur TTL/RS232 ou ladaptateur


pour FBUS/MBUS (ou M2BUS) au port srie dun ordinateur
il faut utiliser un cble RS232 droit , la ligne TXD de ladaptateur doit tre connecte sur la ligne TXD du PC et la ligne RXD
de ladaptateur doit tre connecte sur la ligne RXD du PC (voir
figure 3.9).

Figure 3.8.
Brochages
concernant
les tlphones
de la marque
NOKIA.

Figure 3.9.
Cble adaptateur.

Cordons DATA
Si vous ntes pas convaincu du brochage trouv sur Internet et
que vous avez peur dabmer votre tlphone, il est possible
dacheter un cble tout prt. Ces cbles appels DATA ou DATA
LINK sont malheureusement difficiles se procurer dans le commerce traditionnel. Encore une fois Internet vient notre secours,
sur le site www.maisondugsm.com vous trouverez certainement
le cble correspondant votre modle de tlphone, avec la
possibilit de commander par correspondance si le paiement en
ligne vous rebute. Ces cbles disposent en interne de toute la
circuiterie permettant une liaison directe entre votre tlphone et

61

07_Ch 3.fm Page 62 Thursday, February 18, 2010 11:24 AM

INTERFACES GSM
le port srie du PC. Lnergie ncessaire la mise niveaux des
signaux est prleve, en principe, de la ligne DTR, ce qui rend le
cble totalement autonome. Notez quil existe des cbles permettant de connecter simultanment une alimentation externe afin
de recharger la batterie du tlphone.

3.2 MODULES GSM INTGRS


On trouve dsormais sur le march des tlphones GSM intgrs
dbarrasss de leurs interfaces homme-machine, ne subsiste que
la partie interface machine-machine (M2M), qui physiquement
correspond un connecteur multibroche quelconque ou encore
un connecteur DB9 facilitant la connexion un PC. Ces modules
sont universels puisquils supportent les normes GSM07.07 et
GSM07.05 dcrites prcdemment et permettent de ce fait
lchange de donnes, de SMS, demails et mme de tlcopies
(FAX) via le rseau de tlphonie mobile. Leur simplicit de mise
en uvre ouvre des perspectives trs intressantes concernant la
ralisation de montages lectroniques sans fil.
La socit Lextronic propose la vente via son site Internet
plusieurs modles de modules GSM intgrs ladresse
http://www.lextronic.fr/R203-modules-gsm--gprs.html

Le TM2 de TELTONIKA
Parmi les diffrents modles proposs par Lextronic notre choix
sest port sur le TM2 fabriqu par la socit Teltonika. Il sagit
dun modle quadri bandes qui utilise les frquences 850, 900,
1 800 et 1 900 MHz. Il est capable de fonctionner dans les modes
voix, donnes, FAX et surtout, le plus intressant pour nous,
dans le mode SMS. Le module dispose dun support destin
recevoir lindispensable carte SIM et un connecteur MMCX
permettant de relier une petite antenne RF galement fournie par
Lextronic. Toutes les entres et sorties utiles au pilotage du
module sont disponibles sur un connecteur comportant 60
points en CMS. Inutile desprer souder vous-mme un tel
composant. Heureusement Lextronic propose un adaptateur qui
rpartit lensemble des connexions sur 4 ranges de 15 points au
pas classique de 2,54mm.
Nous avons ajout au module TM2 une interface au format
RS232 afin de pouvoir facilement le connecter au port srie dun
PC et surtout toutes les ralisations prsentes dans le chapitre 5.
Une fois de plus nous faisons donc appel au traditionnel
MAX232 pour ladaptation des niveaux de tensions des lignes
TXD0 et RXD0. Comme le TM2 utilise des niveaux de tension de

62

07_Ch 3.fm Page 63 Thursday, February 18, 2010 11:24 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

MATRIELS UTILISS

Transmission

Voix, donnes et SMS

Alimentation

3.5 V 4.2 V, typiquement 3.8 V

Bandes de frquences

GSM 850 MHz, EGSM 900 MHz, DCS 1800 MHz, PCS
1900 MHz

Courant absorb

GSM900 : 147 mA (900 mA max)


GSM1800 : 127 mA (700 mA max)
GSM1900 : 113 mA (650 mA max)

Puissance dmission

Class 4 (2 W) pour bandes GSM/EGSM


Class 1 (1 W) pour bandes DCS/PCS

Lecteur de carte SIM

Intgr au module, supporte les cartes SIM 3,3v et 1,8v

Antenne

Externe par connecteur MMCX

Interfaces

Connecteur 60 points (CVILUX CBRB060PC2000R0) :


Audio, (2x analog, 1x digital), I2C bus, SPI bus, 2x
ADC, 2x analog out (PWM), 12 GPIOs et 2 port srie
de type UART

Normes respectes

GSM07.07 et GSM07.05

Modes SMS

PDU et TEXT

GPRS Data Services

GPRS multi-slot class (MSC) 10 (4+1, 3+2), GPRS


PBCCH/PCCCH support, GPRS Class B and CC

FAX

G3, Classe 2.0

Temprature
dutilisation

20 C + 55 C

Taille

33,5 mm x 38,8 mm x 5,6 mm

Masse

< 10 g

+3,3v il faut prendre soin dabaisser la tension fournie par la


sortie TXD du MAX232 laide dun simple pont diviseur de
tension constitu par les rsistances R1 et R2.
Lentre KIN2 est relie au GND ainsi le TM2 devient actif ds sa
mise sous tension.
Le module TM2 doit tre aliment par une tension de +3,8v via
ses entres VBAT. Nous utilisons un rgulateur de tension
LM317 (REG2) qui dlivre une tension fonction de la rsistance
du potentiomtre P1. Avant mme dinsrer le module TM2 il est
impratif de rgler le potentiomtre P1 jusqu lobtention
dune tension de +3,8v entre la broche VBAT et la broche GND.

63

Tableau 3.1.
Caractristiques
principales

07_Ch 3.fm Page 64 Thursday, February 18, 2010 11:24 AM

INTERFACES GSM

Figure 3.10.
Le module TM2 vu
de dessous ( gauche)
et de dessus
( droite).

Une petite chute de plaque daluminium fera office de dissipateur thermique pour REG2.
Un deuxime rgulateur 78L05 (REG1) est ncessaire pour
alimenter le circuit MAX232 avec une tension plus conventionnelle de +5v.

Figure 3.11.
Le module TM2 avec
son antenne sur sa
platine dadaptation.

Compte tenu de lintensit absorbe par le module GSM notamment lors des phases de recherche de rseau, il conviendra
dutiliser un bloc alimentation secteur dlivrant au moins une
intensit de 1A pour une tension continue comprise entre 9 et
12v. Une prise jack (CN1) femelle permet de relier facilement
nimporte quel bloc du commerce. Lalimentation est reprise sur
le connecteur CN2 afin dalimenter le montage hte, un de ceux
prsents dans le chapitre 5.

64

07_Ch 3.fm Page 65 Thursday, February 18, 2010 11:24 AM

CHAPITRE

MATRIELS UTILISS

Figure 3.12.
Schma lectrique.

DUNOD La photocopie non autorise est un dlit.

Seules les broches utiles au montage sont relies la carte


dadaptation via 4 connecteurs CN4 CN7 de type HE10.
Comme les broches VBAT et GND sont dj interconnectes sur
la carte dadaptation il nest pas utile de toutes les relies notre
montage.

65

07_Ch 3.fm Page 66 Thursday, February 18, 2010 11:24 AM

INTERFACES GSM

Figure 3.13.
Circuit imprim.

Figure 3.14.
Implantation
des
composants.

Liste des composants


R1 : 4,7 k
R2 : 100 k
R3 : 220  (prcision 1 %)
P1 : potentiomtre multi-tours
horizontal/4,7 k
C1 : 220 F/lectrolytique/25v horizontal
C2 : 100 nF/LCC jaune
C3 C6 : 1 F/tantale/15v
D1 : diode 1N4004
IC1 : MAX232 + support DIL 16 broches
IC2 : module GSM TM2 + platine dadaptation
+ antenne (www.Lextronic.fr)
REG1 : 78L05
REG2 : LM317
CN1 : prise jack femelle pour CI
CN2 : bornier 2 plots
.
CN3 : connecteur DB9 femelle
CN4 CN7 : connecteur HE10

66

07_Ch 3.fm Page 67 Thursday, February 18, 2010 11:24 AM

CHAPITRE

MATRIELS UTILISS

Mise en uvre
Le montage peut tre connect au port srie dun ordinateur de
type PC. Dans cette configuration le chapitre 4 vous montrera
comment utiliser le logiciel Hyper terminal pour envoyer des
commandes AT au module TM2.
La connexion du module TM2 peut seffectuer directement au
port srie du PC ou par lintermdiaire dun cble droit constitu de deux connecteurs DB9 mle et femelle.

Figure 3.15.
Cble droit
constitu de deux
connecteurs DB9 mle
et femelle.

Le montage peut galement tre directement connect au port


srie dune des 5 ralisations prsentes au chapitre 5.

Commandes AT spcifiques au module TM2


En supplment des commandes AT prsentes au chapitre 2, il
est ncessaire de connatre les commandes dtailles ci-aprs.
Elles nous serons utiles la fin du chapitre suivant afin de paramtrer la vitesse de transmission entre le module TM2 (TA) et le
montage hte (TE).

DUNOD La photocopie non autorise est un dlit.

AT+IpR : Dfinit la vitesse de transmission srie


Commande de test
AT+IPR=?

Rponse
+IPR : liste des <vitesses> supportes pour la transmissions des donnes entre la TA et le TE
0, 2400, 4800, 9600, 19200, 38400, 57600, 115200 bps.
115200 est le rglage sortie dusine.
0 signifie que le TA se synchronise automatiquement sur
la vitesse du TE

Commande de lecture
AT+IPR?

Rponse
+IPR : <vitesse>
OK
Retourne la vitesse de transmission en cours
si erreur
+CME ERROR : <error>

Commande dcriture
AT+IPR=<vitesse>

Rponse
OK
Dfinit la vitesse de transmission
si erreur
+CME ERROR : <error>

67

Tableau 3.2.

07_Ch 3.fm Page 68 Thursday, February 18, 2010 11:24 AM

INTERFACES GSM
Tableau 3.3.

AT&W : sauvegarde la configuration en cours


Commande
dcriture
AT&W [<value>]

Rponse
OK
Cette commande enregistre en mmoire la configuration
active du TA dans un des deux profiles utilisateurs.
<value>=0 premier profile (valeur par dfaut)
<value>=1 deuxime profile
si erreur
+CME ERROR : <error>
Nota : cette commande doit tre utilise conjointement
avec la commande AT+CPWROFF pour que la mmorisation du profile soit effective
Liste des paramtres mmoriss dans le profile
utilisateur :
 AT&C : Circuit 109 behavior ;
 AT&D : Circuit 108 behavior ;
 AT&K : Flow control ;
 ATE : Echo mode ;
 ATQ : Response Suppression Mode ;
 ATV : Response Formatting Mode ;
 ATX : Call Progress Monitoring Control ;
 ATS0 : Automatic answer ;
 ATS2 : Escape character ;
 ATS3 : Command line termination character ;
 ATS4 : Response formatting character ;
 ATS5 : Command line editing character ;
 ATS7 : Connection completion timeout ;
 AT+CBST : Data Rate, Bearer Service, Connection
Element ;
 AT+CRLP : RlpIws (IWF to MS window size), RlpMws
(MS to IWF window size), Rlp96T1 (acknowledgement
timer T1), RlpN2 (retransmission attempts N2) ;
 AT+CR : Service Report Control Mode ;

68

07_Ch 3.fm Page 69 Thursday, February 18, 2010 11:24 AM

CHAPITRE

MATRIELS UTILISS

Tableau 3.3. (suite)

AT&W : sauvegarde la configuration en cours


 AT+CRC : Cellular Result Mode ;
 +BR (+IPR saved value) : Baud Rate ;
 AT+COPS : Cops mode, Cops PLMN to Register ;
 AT+NMGC : Microphone Gain Control ;
 AT+NSGC : Speaker Gain Control ;
 AT+NSTN : Sidetone ;
 AT+NUBF : Uplink Biquad Filters ;
 AT+NDBF : Downlink Biquad Filters ;
 AT+NHFP : Hand Free Parameters ;
 AT+ICF : DTE-DCE character framing ;

Tableau 3.4.

AT&V : affiche la configuration en cours


AT&V[<value>]

Rponse
ACTIVE PROFILE :
&C1,
S02 :
S07 :
061,
+BR :

&D1, &K3, E1, Q0, V1, X4, S00


043, S03 : 013, S04 : 010, S05
060, +CBST : 007, 000, 001, +CRLP
048, 006, +CR : 000, +CRC
57600, +COPS : 2,FFFFF

:
:
:
:

000,
008,
061,
000,

:
:
:
:

000,
008,
061,
000,

:
:
:
:

000,
008,
061,
000,

DUNOD La photocopie non autorise est un dlit.

STORED PROFILE 0 :
&C1,
S02 :
S07 :
061,
+BR :

&D1, &K3, E1, Q0, V1, X4, S00


043, S03 : 013, S04 : 010, S05
060, +CBST : 007, 000, 001, +CRLP
048, 006, +CR : 000, +CRC
115200, +COPS : 2, FFFFF

STORED PROFILE 1 :
&C1,
S02 :
S07 :
061,
+BR :

&D1, &K3, E1, Q0, V1, X4, S00


043, S03 : 013, S04 : 010, S05
060, +CBST : 007, 000, 001, +CRLP
048, 006, +CR : 000, +CRC
115200, +COPS : 2, FFFFF

OK
Cette commande retourne la configuration en cours
ainsi que les configurations stockes dans les
profiles utilisateurs.
si erreur
+CME ERROR : <error>

69

07_Ch 3.fm Page 70 Thursday, February 18, 2010 11:24 AM

INTERFACES GSM
Tableau 3.5.

AT&Y : Dfinit le profile charg la suite dun RESET


AT&Y[<value>]

Rponse
OK
<value>=0 premier profile (valeur par dfaut)
<value>=1 deuxime profile
si erreur
+CME ERROR : <error>

Pour aller plus loin


Le module TM2 est aussi capable de mettre en uvre des
connexions de type GPRS, de fait il est possible douvrir des sockets
permettant le transfert de donnes suivant le protocole TCP/IP.
La configuration en mode client ou serveur se fait laide de
commandes AT propres au module TM2.
Sans trop rentrer dans les dtails nous vous prsentons deux
exemples de configuration tirs de la datasheet du constructeur
Teltonika AT commands.

Configuration du profile GPRS


Tout dabord il faut configurer un profile GPRS partir des informations de votre oprateur tlphonique (SFR dans cet exemple).
Tableau 3.6.

at+npsd=0,1,"websfr"
OK

Cration dun profile GPRS n 0


Code APN : websfr

at+npsd=0,2," "
OK
at+npsd=0,3," "
OK
at+npsd=0,4,"172.20.2.10"
OK
at+npsd=0,5,"194.6.128.4"
OK
at+npsd=0,7,"0.0.0.0"
OK

Nom dutilisateur (vide)

70

Mot de passe (vide)


DNS1
DNS2
Adresse IP (0.0.0.0 dynamique)

07_Ch 3.fm Page 71 Friday, February 19, 2010 9:26 AM

CHAPITRE

MATRIELS UTILISS

Cration dun socket serveur


at+npsda=0,3
OK
at+npsnd=0,0
+NPSND : 0,0,"217.201.129.34"
OK
at+nsocr=6
+NSOCR : 0
OK
at+nsoli=0,80
OK
+NUSOLI :
1,"151.9.34.66",9882

Active le profile GPRS n 0

+NUSORD : 1,28

Indication quil existe 28 octets en


provenance du client
Lecture de ces 28 octets

at+nsord=1,28

Cration dun soket


0 = n du soket TCP
Association du socket au port 80
Affichage de ladresse IP du client qui tente
de se connecter

Rponse
Ecriture de 29 octets destination du client

Fermeture du socket 1
Fermeture du socket 0
Fermeture du profile GPRS n 0

DUNOD La photocopie non autorise est un dlit.

+NSORD : 1,28,"data sent from


telnet client"
OK
at+nsowr=1,29,"sending data to
telnet client"
+NSOWR : 1,29
OK
at+nsocl=1
OK
at+nsocl=0
OK
at+npsda=0,4
OK

Obtention dune adresse IP dynamique


Adresse IP serveur=217.201.129.34

71

Tableau 3.7.

07_Ch 3.fm Page 72 Thursday, February 18, 2010 11:24 AM

INTERFACES GSM
Cration dun socket client
Tableau 3.8.

at+npsda=0,3
OK
at+nsocr=6
+NSOCR : 0
OK
at+nsoco=0,"151.9.34.66",80
OK
at+nsowr=0,18,"data to be
written"
+NSOWR : 0,18
OK
+NUSORD : 0,18
at+nsord=0,8
+NSORD : 0,8,"data to "
OK
+NUSORD : 0,10
at+nsord=0,10
+NSORD : 0,10,"be written"
OK
at+nsocl=0
OK
at+npsda=0,4

Active le profile GPRS n 0


Cration dun soket TCP
0 = n du soket
Adresse IP serveur=151.9.34.66 et
port=80 associs au socket n0
Ecriture de 18 octets destination du
serveur
Confirmation dcriture
Notification de rception de 18 octets
mis par le serveur
Lecture des 8 premiers octets
Notification quil existe 10 octets restant
Lecture des 10 octets
Fermeture du socket 0
Fermeture du profile GPRS n 0

Pour plus dinformations sur la mise en uvre de montages


autonomes utilisant la technologie TCP/IP pour communiquer,
nous vous renvoyons louvrage Contrle, commande et mesure via
Internet disponible aux ditions DUNOD.

72

08_Ch 4.fm Page 73 Thursday, February 18, 2010 11:25 AM

PAGE

CHAPITRE

INTERFACER UN
TLPHONE GSM

73

4.1 Avec un PC

74

4.2 Avec un PicBasic

92

Ralisations lectroniques

101

Annexes

251

Glossaire

261

Bibliographie

264

08_Ch 4.fm Page 74 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM
Ce chapitre va vous montrer comment interfacer facilement un
tlphone (ou terminal) GSM. Dans un premier temps nous utiliserons un ordinateur de type PC en guise de TE (Terminal Equipement), les commandes AT vues prcdemment saisies partir du
logiciel Hyper Terminal seront envoyes via le port srie. Dans un
deuxime temps cest un simple microcontrleur PicBasic beaucoup plus compacte qui nous permettra, en matire denvoi et de
rception de SMS, datteindre les mmes rsultats que le PC.

4.1 AVEC UN PC
Le logiciel Hyper Terminal livr en standard avec Windows est
utilis pour envoyer les commandes AT tires des normes
GSM07.05 et GSM07.07. Un logiciel maison dvelopp sous
DELPHI vous permettra denvoyer, de recevoir, et de consulter
facilement vos SMS.

Matriel
Tlphone GSM standard
un cble spcifique, du commerce, ou que vous fabriquerez
vous-mme (adaptateur RS232/TTL), comme nous lavons vu
dans le chapitre 3 ;
une carte SIM pour vous connecter au rseau GSM (vous
pouvez utiliser une carte prpaye telle que mobicarte) ;
un PC disposant dun port srie libre (exemple : COM2 ou
COM1). Nota : si votre ordinateur na pas de port srie vous
pouvez utiliser un convertisseur USB-Srie du commerce ;
un logiciel Windows de type Hyper Terminal (livr en
standard avec toutes les versions de Windows).

Terminal GSM : TM2 de Teltonika


une carte SIM pour vous connecter au rseau GSM (vous
pouvez utiliser une carte prpaye telle que mobicarte) ;
une antenne GSM (fournie par le fabriquant) ;
un bloc secteur pour lalimentation (9 12 v / 1 A) ;
un PC disposant dun port srie libre (exemple : COM2 ou
COM1). Nota : si votre ordinateur na pas de port srie vous
pouvez utiliser un convertisseur USB-Srie du commerce ;
un logiciel Windows de type Hyper Terminal (livr en standard avec toutes les versions de Windows).

74

08_Ch 4.fm Page 75 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM

Attention, veillez mettre le tlphone ou le terminal hors tension


avant dinsrer ou de retirer la carte SIM de son lecteur.

Hyper Terminal
Ouvrez une session du logiciel Hyper Terminal gnralement situ
sous le rpertoire C:\Program Files\Windows . Vous pouvez
crer un raccourci sur le bureau pour un accs ultrieur plus rapide.

Figure 4.1.
Description
de la connexion.

DUNOD La photocopie non autorise est un dlit.

Dans la fentre Description de la connexion (figure 4.1) spcifiez un nom pour la connexion que vous allez crer. Choisissez
galement une icne qui sera associe la connexion.
Dans la fentre Numro de tlphone (figure 4.2) slectionnez
dans la liste droulante Se connecter en utilisant le port COM1
ou COM2. Les autres listes de la fentre qui sont utilises uniquement avec un modem doivent se griser.
La fentre Proprits de COMx (figure 4.3) permet de configurer le
protocole de transfert. La vitesse de transmission dfinie en bits
par seconde (ou bauds) est fixe 9 600. Cette valeur nest, en principe, pas primordiale pour un tlphone GSM car celui-ci est
prvu pour se synchroniser sur la vitesse de transmission du TE.
Nous avons volontairement choisi une vitesse ni trop rapide ni
trop lente, susceptible dtre accepte par tous les modles de tlphone. Les autres paramtres 8 bits de donnes, pas de parit et 1
bit de stop correspondent la configuration par dfaut. Aucun
contrle de flux nest spcifi, il suffira dattendre la confirmation
de traitement de la commande saisie avant denvoyer la suivante.
Lorsque vous cliquez sur la touche OK la connexion est tablie.

75

08_Ch 4.fm Page 76 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM

Figure 4.2.
Numro de tlphone.

Attention : concernant le module GSM TM2 vous devez utiliser une vitesse de 115 200 bds. Nous verrons dans le paragraphe
Commandes spcifiques au TM2 de Teltonika comment
ramener cette vitesse 9 600 bds.
Remarque : il nest pas utile de paramtrer le logiciel pour que les
commandes saisies au clavier saffichent lcran car chaque
caractre saisi est automatiquement renvoy par le ME en cho.

Figure 4.3.
Proprits de COM2.

76

08_Ch 4.fm Page 77 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM

Ceci permet de contrler que la commande est correctement


rceptionne par le ME. On constate dailleurs un trs lger
retard entre la saisie dune commande et son affichage lcran.
On constate aussi que si une nouvelle commande ne commence
pas par les caractres "AT+" les caractres saisis ne sont pas affichs l'cran, donc refuss par le ME.
Pour tester la liaison vous pouvez utiliser la commande la plus
simple qui soit :
AT [ENTREE]

Rappelons que la touche [ENTREE] ou Return du clavier correspond


au caractre <CR>, lcran il se traduit par un retour la ligne.
Si la liaison est tablie le mobile doit simplement rpondre par :
OK

DUNOD La photocopie non autorise est un dlit.

Figure 4.4.
Hyper Terminal.

Lorsque lon utilise un logiciel informatique comme Hyper Terminal pour envoyer ou recevoir des donnes via le port srie du PC,
les caractres saisis lcran sont cods suivant la table des caractres ASCII. Par exemple si vous tapez la lettre majuscule A cest
le code 1000001bin qui est envoy au systme connect sur le port
srie. Il est donc impratif que ce systme utilise la mme table
pour convertir la donne rceptionne. Dans notre cas, le tlphone GSM peut utiliser diffrents alphabets citons par exemple :
IRA, GSM, HEX malheureusement lalphabet ASCII nest pas
support. Cependant, si lon se limite lutilisation des caractres
usuels (AZ, az, 09,) la compatibilit est assure. Il faut
rester prudent dans lutilisation des autres caractres, notamment
les caractres accentus. Pour les utilisateurs du Terminal TC35

77

08_Ch 4.fm Page 78 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM

Tableau 4.1.

(ou MC35) il existe une solution pour envoyer les caractres non
compatibles, il faut saisir un anti-slash suivi du caractre ASCII ;
voir quelques exemples au tableau 4.1.

Caractre
GSM

Valeur hexa.
du caractre GSM

Caractre
ASCII

Caractres
ASCII
de remplacement

Codes hexa.
des caractres
de remplacement

00

(null)

\00

5C 30 30

02

\02

5C 30

06

5C

7F

5C

Remarque : pour connatre tous les caractres incompatibles


entre lalphabet GSM et lalphabet ASCII il suffit de comparer les
deux tableaux situs en Annexes.
La commande AT+CSCS permet de slectionner un alphabet.
Il est recommand dutiliser lalphabet GSM (en principe cest
lalphabet configur par dfaut par les fabricants) qui est thoriquement support par tous les tlphones.
Alphabets supports par le tlphone :
AT+CSCS=?
+CSCS: ("GSM","UCS2")

Commande pour slectionner lalphabet GSM :


AT+CSCS="GSM"
OK

Commandes gnrales
Nous allons tester dans cette partie uniquement les commandes
de la norme GSM07.05.
Pour tre tranquille dans nos exprimentations, nous allons de
suite entrer le code PIN pour dverrouiller la carte SIM, grce
la commande AT+CPIN :
AT+CPIN="xxxx"
OK

Les caractres xxxx doivent bien entendu tre remplacs par le


code PIN de votre tlphone. Si le code saisi est valide le tlphone doit rpondre par OK.

78

08_Ch 4.fm Page 79 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM


Caractristiques du module GSM
En principe lorsque le TE commence tablir une communication
avec le TA et le ME, celui-ci demande leurs caractristiques grce
aux commandes +GMI, +GMM, +GMR et +GSN, cest ce que
nous allons faire :
Retourne le nom du fabriquant :
AT+CGMI
SAGEM
OK

Retourne le modle :
AT+CGMM
MY X-5 GPRS
OK

Retourne la version :
AT+CGMR
1.00
OK

Retourne le numro de srie :

DUNOD La photocopie non autorise est un dlit.

AT+CGSN
987612345-123
OK

Tout le monde connat le fameux code *#06# qui une fois compos
sur le clavier du tlphone permet dafficher son identifiant
international (IMEI). On obtient le mme rsultat avec la commande AT+CGSN :
AT+CGSN
351030358226964
OK

Pour information dchiffrons ce code qui sert de base pour le


calcul du code de dverrouillage
Les deux premiers chiffres (33) indiquent le pays dorigine du
mobile, selon le code international de la numrotation tlphonique, dans cet exemple il sagit de la France.
Les quatre chiffres suivants (1030) reprsentent le TAC (Type
Approval Code) qui identifie le modle de poste au regard de la
procdure dagrment.

79

08_Ch 4.fm Page 80 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM
Les deux chiffres suivants (35) sont le FAC (Final Assembly Code)
qui prcise le lieu dassemblage final de lappareil, donc en
Bretagne dans cet exemple.
Les six chiffres suivants (822696) sont le numro de srie du
mobile (SNR).
Le dernier chiffre est une clef dont le codage est similaire au
dernier chiffre des numros de cartes bancaires.

Indicateurs et contrles
tat dactivit :
Cette commande peut tre utilise pour interroger le ME avant
de faire effectuer une action au tlphone :
AT+CPAS
+CPAS: 0
OK

Le zro indique que le ME est prt recevoir des commandes de


la part du TE.
Charge de la batterie indique ltat de connexion de la batterie et
son niveau de charge :
AT+CBC
+CBC: 0,80
OK

Le ME est aliment par la batterie et la charge est de 80 %.


Qualit du signal :
AT+CSQ
+CSQ: 7,99
OK

Le premier chiffre correspond au champ <rssi> qui indique la


puissance du signal reu. On sait que pour rssi = 2 la puissance
correspondante est de 109 dBm, pour rssi = 30 on a une puissance de 53 dBm. De ces 4 valeurs on dfinit lquation suivante :
P = 2rssi 113. Donc en injectant dans lquation rssi = 7 on
obtient une puissance gale 99 dBm pour cet exemple.
Rappelons que le dBm est une unit de mesure exprimant un
niveau rfrenc par rapport une puissance de 1 mW. En ralit
la valeur obtenue par lquation prcdente est le gain (G). Si lon
considre que la station dmission GSM envoie un signal dune
puissance gale 1 mW et que le tlphone mobile reoit une
puissance Ps, le gain est donn par lquation suivante :
G = 10 log(Ps/1 103). On obtiendra toujours un gain ngatif

80

08_Ch 4.fm Page 81 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM


car bien videmment la puissance reue par le tlphone est
toujours plus faible que le signal mis par la station, au mieux on
peut avoir puissance reue = puissance mise auquel cas le gain
est gal zro. Pour calculer la puissance reue en mW, on utilise
lquation : Ps = 10G/10. Par exemple avec G = 99 dBm on obtient
Ps = 125 1012 mW.
La deuxime valeur 99 correspondant au champ <ber> indique
que le taux derreur de bit est inconnu ou non dtectable.
La commande +CIND regroupe les 3 commandes vues prcdemment.
Demande la liste des indicateurs supports par le ME et valeurs
possibles :
AT+CIND=?
+CIND:
("battchg",(0..5)),("signal",(0..5)),("service",(0,1)),("call",(0,
1))
OK

Commande de lecture :
AT+CIND?
+CIND: 4,3,1,0
OK

La lecture nous indique ici que la batterie est charge 80 %, que


la qualit du signal est de 60 %, que le tlphone est en service et
quil ny a pas dappel en cours.

DUNOD La photocopie non autorise est un dlit.

Lecture de la date et de lheure du ME :


AT+CCLK?
+CCLK: "03/04/15,10:43:49"

Attention, le jour et lanne sont permuts, il faut lire : 15/04/03.


Programmation dune alarme. Lalarme peut produire diffrents
effets, crire un message lcran du ME, mettre un son Les
effets sont spcifiques au fabricant du tlphone, pour connatre
ceux disponibles sur votre tlphone tapez la commande
suivante :
AT+CALA=?
+CALA: (1),(sound)

Le chiffre 1 indique le nombre dalarme quil est possible de


programmer. Le deuxime paramtre sound signale leffet de
lalarme, en loccurrence dmettre un son.

81

08_Ch 4.fm Page 82 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM
Exemple de programmation dune alarme. Le ME mettra un
son le 15 mars 2003 11:50.
AT+CALA="03/03/15,11:50:00"
OK

Gestion des rpertoires tlphonique


La saisie des numros mais surtout des noms dans un rpertoire
tlphonique nest pas des plus aises dautant que la taille des
touches du clavier ne cesse de diminuer chaque nouveau
modle. Dsormais plus de soucis grce aux commandes +CPBR
et +CPBW qui permettent de lire et de rajouter des entres dans
votre rpertoire.
Un tlphone peut contenir, au maximum, 15 rpertoires. La
commande +CPBS permet de savoir quels sont ceux disponibles
sur votre tlphone :
AT+CPBS=?
+CPBS: ("DC","ME","SM")

Ensuite il faut slectionner un rpertoire parmi ceux proposs,


prenons le cas le plus courant, celui plac sur la carte SIM. Souvent le rpertoire utilisateur est mmoris sur la carte SIM, ce qui
vite de ressaisir son contenu lorsque lon change de tlphone.
AT+CPBS="SM"
OK

Chaque rpertoire possde un espace mmoire fixe. La commande


+CPBS utilise en mode lecture permet dobtenir cette information :
AT+CPBS?
+CPBS: "SM",2,50

Dans cet exemple, la mmoire possde une capacit de 50 enregistrements, dont 2 sont utiliss.
Chaque enregistrement est accessible via son index, le premier
enregistrement ne possde pas forcment un index gal 1. De
plus les champs numro et nom sont limits en terme de nombre
de caractres. Consultons ces paramtres avec la commande
+CPBR :
AT+CPBR=?
+CPBR: (1-150),10,12

La carte SIM dispose de 150 enregistrements encadrs par les


index 1 150, il ny a donc pas doffset dans cet exemple. Le champ
numro peut contenir 10 caractres et le champ nom 12 caractres.

82

08_Ch 4.fm Page 83 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM


Il est possible de lire tous les enregistrements en une seule fois :
AT+CPBR=1,150

Seuls les enregistrements non vides sont affichs lcran. Une


ligne correspondant un enregistrement, voici le rsultat obtenu :
+CPBR: 1,"0600000001",145,"Julien"
+CPBR: 2,"0600000002",129,"stphanie"

On retrouve le champ index puis le champ numro, le chiffre


129dec (soit 81hex) indique quil sagit dun numro national, le
chiffre 145dec (soit 91hex) indique un numro international, pour
finir on trouve le champ nom.
Il existe mme une fonction qui permet de rechercher dans le
rpertoire en cours le ou les enregistrements qui ont un champ
texte qui commence par la chane de caractres spcifie :
AT+CPBF="st"

La commande retourne lenregistrement correspondant :


+CPBR: 2,"0600000002",129,"stphanie"

Terminons par la commande +CPBW qui permet dajouter un


enregistrement au rpertoire. Si le champ index nest pas spcifi,
le nouvel enregistrement sera positionn au premier emplacement de libre trouv. Si lon utilise un index contenant dj un
enregistrement, celui-ci sera cras.
AT+CPBW=,"0600000003",129,"jacques"

DUNOD La photocopie non autorise est un dlit.

On aurait obtenu le mme effet avec la commande :


AT+CPBW=3,"0600000003",129,"jacques"

Si la commande est utilise seulement avec le paramtre index,


lenregistrement correspondant est effac. Par exemple pour
effacer lenregistrement numro 3 :
AT+CPBW=3

Commandes SMS
Slection de la zone mmoire pour lecture/criture des SMS
Avant dutiliser les commandes relatives aux SMS, il faut savoir
quels sont les types de mmoires disponibles sur votre tlphone :
AT+CPMS=?
+CPMS: ("ME","SM"),("ME","SM"),("ME","SM")

83

08_Ch 4.fm Page 84 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM
Daprs cet exemple les mmoires ME et SIM peuvent tre utilises aussi bien pour la lecture (<mem1>) que pour lcriture
(<mem2> et <mem3>).
Regardons la configuration actuelle :
AT+CPMS?
+CPMS: "ME",7,100,"ME",7,100,"ME",7,100

Avec cette configuration toutes les commandes de lecture et


dcriture se font sur la mmoire ME propre au tlphone qui
dispose ici de 100 emplacements. La mmoire ME contient
actuellement 7 messages.
Pour travailler sur la mmoire de la carte SIM il suffit denvoyer
la commande suivante :
AT+CPMS="SM","SM","SM"
+CPMS: "SM",1,12,"SM",1,12,"SM",1,12

Dsormais, lcriture et la lecture des SMS se fera exclusivement


dans la mmoire de la carte SIM qui dispose de 11 emplacements
libres.
Certains tlphones supportent loption MT , ainsi les commandes de lecture et dcriture des SMS peuvent tre utilises sur
toutes les mmoires disponibles sur le tlphone.
Voici titre dexemple ce que renvoie un MYX-5 de SAGEM :
AT+CPMS=?
+CPMS: ("ME","SM","MT")

On remarque que seule la mmoire <mem1> utilise par les


commandes de lecture est disponible. Il est possible daffecter
<mem1> la mmoire de la carte SIM :
AT+CPMS="SM"
+CPMS : "SM",1,12

Affectons maintenant <mem1> la mmoire du tlphone :


AT+CPMS="ME"
+CPMS : "ME",7,100

Dernire possibilit, affectons <mem1> les deux mmoires :


AT+CPMS="MT"
+CPMS : "MT",8,112

On remarque que lespace mmoire disponible est bien la somme


de lespace mmoire ME et du SM (100 + 12 = 112). Il en va de
mme pour le nombre de messages contenus (1 + 7 = 8).

84

08_Ch 4.fm Page 85 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM


Envoi dun SMS
En Mode PDU
Premire chose il faut sassurer que le mode PDU est support
par le module GSM, cest normalement le cas quel que soit le
modle utilis :
AT+CMGF=?

Le module retourne la liste des modes quil supporte :


+CMGF: (0,1)

Dans le cas prsent le mode PDU est support (0) de mme que
le mode TEXT (1).
Activons donc le mode PDU :
AT+CMGF=0

Il faut entrer la longueur, en octets, de la trame qui compose le SMS :


AT+CMGS=17

Un curseur vous invite saisir la trame. Laction des touches


[CONTROL] et [Z] valide la saisie et envoie le SMS directement
sur le rseau, il ne sera pas stock sur le tlphone :
>0011000A8160102030400000AA04D4E2940A

Si tout sest bien droul, le module GSM doit retourner la


rponse suivante :

DUNOD La photocopie non autorise est un dlit.

+CMGS: O
OK

Le chiffre 0 correspond au champ MR qui est la rfrence du


message comprise entre 0 et 255, cette rfrence est gnre automatiquement par le mobile et signale galement que le message
est correctement envoy. Par exemple, si on envoie un nouveau
message au mme destinataire, la rfrence sera incrmente
dune unit.
Pour constituer la trame il est bien entendu fortement recommand dutiliser le logiciel ConvertSMS.exe dtaill dans le
chapitre 1, slectionnez la trame constitue par le logiciel puis
faite un copier/coller pour limporter dans Hyper Terminal.
En Mode TEXT
Premire chose, il faut sassurer que le mode TEXT est support
par le module GSM :
AT+CMGF=?

85

08_Ch 4.fm Page 86 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM
Le module retourne la liste des modes quil supporte :
+CMGF: (0,1)

Dans le cas prsent le mode PDU est support (0) de mme que
le mode TEXT (1).
Activons donc le mode TEXT :
AT+CMGF=1
OK

Comme nous lavons vu pour envoyer un SMS il faut indiquer le


numro du SMSC que lon souhaite utiliser. Ce paramtre est
normalement dj dans la mmoire du mobile, il correspond
celui de loprateur auquel vous avez souscrit votre abonnement.
Pour sen assurer demandons les paramtres associs la commande +CSCA :
AT+CSCA?
+CSCA: "+33689004000"

Vous pouvez bien entendu modifier ce paramtre :


AT+CSCA="+61418706700"
OK

Il faut entrer le numro de tlphone du destinataire du message :


AT+CMGS="0601020304"

Entrez le texte du message par exemple TEST et validez la


saisie par laction simultane des touches [CTRL] et [Z] qui
provoque lenvoi du SMS sur le rseau GSM.
> TEST

Si tout sest bien droul, le module GSM doit retourner la


rponse suivante :
+CMGS: 0
OK

Le chiffre 0 correspond au champ MR qui est la rfrence du


message comprise entre 0 et 255dec, cette rfrence est gnre
automatiquement par le mobile et signale galement que le
message est correctement envoy. Par exemple si on envoie un
nouveau message au mme destinataire, la rfrence sera incrmente dune unit.

86

08_Ch 4.fm Page 87 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM


Autre mthode denvoi dun SMS
Dans le cas prcdent le message constitu nest pas stock en
mmoire mais directement expdi sur le rseau. Il est galement
possible de le sauvegarder temporairement en mmoire <mem2>
grce la commande +CMGW afin de lexpdier au moment
opportun.
Par exemple si lon souhaite que <mem2>="ME", il faut utiliser
la commande suivante :
AT+CPMS="ME","ME"

Le premier paramtre qui correspond <mem1> est obligatoire.


Dans cette configuration la lecture des messages reus et stocks
non envoys est sauvegarde dans la mme mmoire.
Mode PDU (AT+CMGF=0)
AT+CMGW=17
0011000A8160102030400000AA04D4E2940A

Mode TEXT (AT+CMGF=1)


AT+CMGW="0601020304"
TEST

Que ce soit en mode PDU ou TEXT, le module GSM retourne


lemplacement mmoire <index> o est stock le message :
+CMGW: 900

DUNOD La photocopie non autorise est un dlit.

La commande +CMSS permet denvoyer un message stock en


mmoire <mem2> par exemple lemplacement 900, ce qui
provoquera lenvoi du message saisi prcdemment :
AT+CMSS=900

Si lenvoi est russi :


+CMSS: 0

Le chiffre 0 correspond au champ MR qui est la rfrence du


message comprise entre 0 et 255dec, cette rfrence est gnre
automatiquement par le mobile et signale galement que le
message est correctement envoy. Par exemple, si on envoie un
nouveau message au mme destinataire, la rfrence sera incrmente dune unit.

Rception/lecture/suppression dun SMS


En Mode PDU (AT+CMGF=0)

87

08_Ch 4.fm Page 88 Friday, March 5, 2010 7:44 PM

INTERFACES GSM
La manire dont le ME indique au TE quil vient de recevoir un
nouveau SMS dpend du paramtrage de la commande +CNMI :
AT+CNMI=1,1

Avec cette configuration le ME signalera au TE la rception dun


nouveau SMS en envoyant le code :
+CMTI: <mem>,<index>

Par exemple voici le code affich sur lcran du PC signalant


quun nouveau message est reu et quil est sauvegard lemplacement 1 de la mmoire de la carte SIM
+CMTI: "SM",1

Pour lire le message en question il faut utiliser la commande


+CMGR suivie du paramtre index, on considre que la mmoire
utilise pour la lecture est celle de la carte SIM (<mem1>="SM",
voir commande AT+CPMS) :
AT+CMGR=1

Le module GSM doit retourner le contenu du message sous forme


dune trame PDU :
+CMGR: 1,23
07913306091093F0040B913316502193F100003050616124430004D4E2940A
OK

O 1 est le code tat qui indique que le message a dj t lu,


23hex indique la longueur du message.
En Mode TEXT (AT+CMGF=1)
Les instructions utilises pour configurer la rception et effectuer
la lecture dun SMS sont identiques celles du mode PDU. La
diffrence rside dans laffichage du contenu du message. Le
module GSM retourne ltat du message, le numro de lmetteur
et la date laquelle le message a t trait par le SMSC :
+CMGR: "REC READ" ,"+33610512391","03/05/16,16:42:34+00"

ainsi que le corps du message


TEST
OK

Liste tous les SMS en mmoire


La commande AT+CMGL (ou AT+CMGL=4) permet de lister tous
les messages stocks dans la mmoire <mem1> (voir commande
AT+CPMS) :
AT+CMGL

88

08_Ch 4.fm Page 89 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM


Il est possible dutiliser le paramtre facultatif <stat> pour afficher
certains types de messages, par exemple si <stat>=1, seuls les
messages reus non lus seront affichs. La commande de test
AT+CMGL= ? renvoie la liste des <stat>s supports par le ME.
Laffichage lcran du message dpend du mode slectionn
PDU ou TEXT.
En Mode PDU (AT+CMGF=0)
Les 3 paramtres qui suivent le texte +CMGL correspondent
respectivement aux champs <index>, <stat> au format numrique et <length> qui est la taille de la trame PDU affiche sur la
deuxime ligne.
+CMGL: 1,2,25
000011FF0281603200A712EDF27C1E3E97416537284CA797DDF432
+CMGL: 2,1,23
07913306091093F0040B913316502193F100003050616124430004D4E2940A
OK

En Mode TEXT (AT+CMGF=1)


Les paramtres qui suivent le texte +CMGL correspondent respectivement aux champs <index>, <stat> au format texte, <OA>
qui est le numro de lexpditeur du message (si SMS-DELIVER)
ou <DA> qui est le numro du destinataire (si SMS-SUBMIT)
et la date denvoi du SMS (si SMS-DELIVER). Sur la deuxime
ligne on trouve le corps du message.

DUNOD La photocopie non autorise est un dlit.

+CMGL: 1,"STO UNSENT","06"


message en attente
+CMGL: 2,"REC READ" ,"+33610512391","03/05/16,16:42:34+00"
TEST
OK

Effacer un message SMS


Mode PDU/TEXT
Il convient deffacer priodiquement les messages reus afin de
ne pas saturer la mmoire <mem1>. La commande +CMGD efface
le SMS situ, par exemple, lemplacement <index> = 1
AT+CMGD=1

Le module doit confirmer leffacement par la rponse :


OK

Notez quil nexiste pas de commande AT qui permet deffacer


en une seule fois tous les messages stocks en mmoire.

89

08_Ch 4.fm Page 90 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM

Commandes spcifiques au TM2 de Teltonika


Par dfaut la vitesse de transmission des donnes srie est de
115 200 bauds. Comme les montages prsents dans le chapitre
suivant intitul Ralisations lectroniques utilisent tous une
vitesse de 9 600 bauds, il est ncessaire de modifier le paramtrage dusine du TM2.
La commande AT+IPR permet de modifier cette vitesse de transmission :
AT+IPR=9600

Ds lors il faut modifier le paramtrage dHyper Terminal.


Cliquez sur Dconnexion
puis dans le menu Fichier slectionnez Proprits enfin cliquez sur le bouton Configurer et slectionnez une vitesse de 9 600 bds. Cliquer sur Connexion
.
La vitesse de transmission seffectue bien 9 600 bds mais au
prochain RESET elle reviendra par dfaut 115 200 bds. Il faut
donc mmoriser cette configuration dans un profil utilisateur.
Tout dabord il faut paramtrer le TM2 pour quil charge le profil
utilisateur n 0 chaque RESET :
AT&Y0
OK

Il faut maintenant mmoriser la configuration en cours dans le


profil utilisateur n 0 :
AT&W0
OK

Une dernire commande est obligatoire pour que la mmorisation soit effective :
AT+CPWROFF

lissue de cette dernire commande le TM2 est automatiquement plac en mode veille.
Dsormais chaque RESET ou mise sous tension le profil utilisateur n 0 sera automatiquement charg. De fait le module TM2
communique une vitesse de 9 600 bds compatible avec
lensemble des ralisations lectroniques prsentes dans le
chapitre suivant.

Logiciel intgr pour la gestion des SMS


Pour la gestion des SMS en mode PDU nous vous recommandons le logiciel ConvertSMS2.exe (figure 4.5) qui, comme son

90

08_Ch 4.fm Page 91 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM

Figure 4.5.
ConvertSMS2.

nom le laisse supposer, est une volution de celui prsent dans


le chapitre Codage SMS . Dsormais il intgre une partie qui
gre la liaison srie. Le paramtrage par dfaut est COM2, avec
un dbit de 9 600 bauds, 8 bits de donnes, pas de parit. Le port
est actif une fois que vous avez cliqu sur le bouton Ouvrir. Au
mme instant une deuxime fentre plus petite saffiche, vous
demandant de saisir votre code PIN.

DUNOD La photocopie non autorise est un dlit.

Aprs avoir constitu la trame PDU dans longlet TEXT->PDU ,


il suffit de cliquer sur le bouton envoi pour que le message
soit directement expdi sur le rseau via le ME, notez que le
bouton SMSC ? indique le centre de messagerie utilis.
Il est aussi possible de lire un SMS spcifique, dans la mmoire
spcifie par <mem1>, identifi par son index en cliquant sur
Lecture , ou lire tous les messages situs en mmoire grce au
bouton Tous , le rsultat saffiche dans la zone de texte nomme
Tampon de rception du port srie , slectionnez alors la trame
que vous souhaitez dcoder puis cliquez sur le bouton Convertir
trame slectionne , le SMS saffiche alors en mode text sur la
fentre de gauche dans longlet PDU->TEXT .

Logiciel WinGSM
Si lon fait abstraction des logiciels qui permettent de dverrouiller son portable, bien loin des proccupations de cet
ouvrage, il existe trs peu de softs ddis la gestion des SMS.
Lauteur a dcid de mettre fin cette pnurie en dveloppant
son propre logiciel baptis WinGSM qui permet de grer et
darchiver sur le disque dur de son PC les SMS mmoriss sur
son tlphone portable, et ce nest pas tout :

91

08_Ch 4.fm Page 92 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM
Muni dun cordon ad ok permettant de relier votre tlphone
portable au port srie de votre PC et du logiciel WinGSM vous
avez la possibilit de :
Grer/Archiver vos SMS
Lorsque la mmoire de votre tlphone (ME) ou de votre carte
SIM (SM) est pleine, vous tes oblig de supprimer dfinitivement certains SMS. Grce WinGSM vous pouvez les transfrer sur le disque dur de votre ordinateur (fichier SMS.gsm) et
les consulter ultrieurement votre convenance, mme lorsque
le tlphone nest plus connect au PC. Vous pouvez galement
composer facilement un nouveau SMS et lexpdier directement
sur le rseau GSM ou le mmoriser pour lenvoyer au moment
opportun.
Grer/Sauvegarder votre rpertoire tlphonique
En cas de perte ou de vol de votre tlphone, vous tes contraint
de ressaisir les noms et les numros de tlphones prsents
dans la mmoire de votre tlphone et/ou de votre carte SIM.
Si vous avez pris soin, grce WinGSM, de faire une copie de
sauvegarde sur le disque dur de votre PC (fichier rpertoire
.gsm), vous pouvez transfrer, dun click, toutes les entits de
votre rpertoire tlphonique vers votre nouveau mobile GSM.
Vous pouvez bien entendu ajouter/modifier/supprimer facilement des numros/noms dans le rpertoire dj en mmoire
sur votre tlphone.
Visualiser lcran les paramtres de fonctionnement de votre
tlphone
WinGSM affiche de nombreuses donnes de paramtrage,
souvent inaccessibles lutilisateur conventionnel.
Utiliser votre tlphone comme un modem
Avec WinGSM vous pouvez raliser le transfert, travers le
rseau GSM, de donnes (DATA) destination dun modem fixe
(RTC) ou destination dun autre tlphone GSM (figure 4.6).
WinGSM est compatible avec tous les tlphones GSM du
march et mme avec les modules GSM intgrs MC35 et TC35
de Siemens ! (supporte les normes GSM07.05 et GSM05.05). Le
programme fonctionne sous toutes les versions de Windows,
95 XP.

4.2 AVEC UN PICBASIC


Le microcontrleur choisi, pour jouer le rle du TE, est un PicBasic
du constructeur Coren COMFILE TECHNOLOGY. Il existe
3 familles de PicBasic, celui que nous avons choisi, le PICBASIC3B, appartient la deuxime famille, il est un bon compromis

92

08_Ch 4.fm Page 93 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM

Figure 4.6.
WinGSM.

entre le cot et les possibilits offertes. Disponible en botier au


format DIP 18 broches, il intgre un PIC 16C74A-04, un quartz de
4,19 MHz et une mmoire eeprom srie dune capacit de 4 Ko.

DUNOD La photocopie non autorise est un dlit.

Que tous ceux qui sont allergiques au langage assembleur se


rassurent, comme son nom le laisse prsager, le PicBasic se
programme en basic. Le logiciel PICBASIC-LAB fourni par le
fabricant permet, laide dun PC, une conception vraiment trs
aise du programme. Le puissant compilateur intgr permet de
traduire les lignes basic en instructions spcifiques comprhensibles par le microcontrleur. Le programme compil peut ensuite
tre implant dans la mmoire eeprom du PicBasic par le biais
dun cordon reli au port imprimante dun PC.
Notez quen phase de conception la fonction debug vous permettra de suivre pas pas lexcution du programme par le PicBasic.
Il est notamment possible de consulter ltat de toutes les variables
utilises par le programme. Une fois le programme au point il
suffit de dconnecter le cordon pour rendre le PicBasic autonome.
Le langage Basic reconnu par le compilateur se compose une
cinquantaine dinstructions. Celles qui nous intressent fortement
sont les instructions SERIN et SEROUT qui assurent la gestion
dun port srie, elles nous permettront de communiquer facilement avec un module GSM.

Linstruction SEROUT
SEROUT Port, Param1, Mode, Param2, [Var1]

Cette instruction permet de transmettre des donnes sous forme


srie selon le protocole RS232. Une fois excute, la broche Port

93

08_Ch 4.fm Page 94 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM
du PICBASIC transmettra la ou les donnes Var1 une vitesse
dfinie par Param1, selon la correspondance du tableau prcdent.
Le paramtre Mode permet dinstaurer une temporisation entre
chaque caractre mis dont la dure en millisecondes est fonction
de Param2. Les donnes envoyes doivent tre de type BYTE
cest--dire comprise entre 0 et 255 (tableau 4.2).
Tableau 4.2.

Vitesse (bits/s)

PICBASIC 2H/3B/3H

2 400
4 800

207

9 600

103

19 200

51

Envoi dun SMS


Dans cet exemple nous allons montrer comment envoyer un SMS
contenant le texte TEST au numro 0600000000 laide de
la commande SEROUT. On considre que la sortie I/O17 (broche
n 22) du PICBASIC est utilise et que la vitesse de transmission
seffectue 9 600 bauds. Dans ce cas Port = 17, Param1 = 103,
Mode = 0 ; la temporisation entre chaque caractre et fixe 1 ms
donc Param2 = 1. Comme nous lavons dj vu, la commande AT
utiliser est AT+CMGS .

Mode TEXT (AT+CMGF=1)


Premirement il faut dfinir le numro du destinataire :
SEROUT 17,103,0,1,["AT+CMGS=",34,"0600000000",34,13]

34dec est le code ASCII du symbole guillemet. Les vrais guillemets encadrant le numro sont l uniquement pour indiquer au
compilateur quil doit traiter le numro 0600000000 comme une
chane de caractres, mme chose pour la commande AT+CMGS.
Alors que le code ASCII 34dec ne sera pas interprt par le compilateur donc envoy tel quel sur la sortie srie. 13dec est le code
ASCII du retour chariot <CR>, qui dclenche lexcution de la
commande.
Ensuite il faut une temporisation dau moins 1/2 seconde (500 ms)
avant dentrer le texte du message :
DELAY 500

Envoi du texte :
SEROUT 17,103,0,1,["TEST",26]

94

08_Ch 4.fm Page 95 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM


26dec est le code ASCII du caractre EOF (End Of File) quivalent
la combinaison des touches CTRL+Z, qui provoque lenvoi du
SMS sur le rseau GSM.

Mode PDU (AT+CMGF=0)


En mode PDU la premire instruction indique la taille de la trame,
17 dans cet exemple :
SEROUT 17,103,0,1,["AT+CMGS=17",13]
DELAY 500

Ensuite la trame elle-mme est envoye :


SEROUT 17,103,0,1,["0011000A8160000000000000AA04D4E2940A",26]

26dec est le code ASCII du caractre EOF (End Of File) quivalent


la combinaison des touches CTRL+Z, qui provoque lenvoi du
SMS sur le rseau GSM.

Linstruction SERIN
SERIN Port, Param1, Mode, Param2, Adress, [Var1]

DUNOD La photocopie non autorise est un dlit.

Cette instruction permet dattendre la rception de donnes sous


forme srie selon le protocole RS232. Une fois excute, la broche
Port du PICBASIC attendra la ou les donnes Var1 une vitesse
dfinie par Param1, selon la correspondance du tableau vu prcdemment. Durant cette phase le PICBASIC ne pourra pas effectuer
dautres tches et attendra en permanence les donnes pendant
une dure dfinie en millisecondes par Param2. Si la dure
dattente est dpasse, sans quaucune donne ne soit reue, le
programme passera ladresse indique par Adress. Le paramtre
Mode nest pas utilis et doit tre positionn 0.

Rception dun SMS


La mthode prsente ici consiste mettre en uvre la commande
AT+CNMI afin de configurer le ME (tlphone) pour quil
signale au TE (PicBasic) larrive dun SMS. Rappelons que cette
commande utilise les paramtres <mode> et <mt> voir norme
GSM07.05. Lorsque <mode>=1 les indications concernant la
rception dun nouveau message sont directement transfres au
TE. Les dites indications, si le message est du type SMS-DELIVER,
sont de la forme +CMTI: <mem>,<index> condition que
<mt>=1, <mem> contient la rfrence de la mmoire utilise
pour stocker le message et <index> son emplacement au sein de
cette mmoire.
En langage PicBasic nous devons utiliser dans un premier temps
linstruction SEROUT pour configurer le ME laide de la com-

95

08_Ch 4.fm Page 96 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM
mande AT+CNMI suivie des paramtres <mode> et <mt> et du
code ASCII 13dec qui dclenche lexcution de la commande :
SEROUT 17,103,0,1,["AT+CNMI=1,1",13]

Dsormais le ME signalera systmatiquement au TE larrive dun


nouveau SMS en envoyant sur la ligne srie RxD linstruction
+CMTI: <mem>,<index>. Le PicBasic doit donc en permanence
scruter la ligne RxD dans lespoir de recevoir cette instruction.
Linstruction SERIN associe WAIT place le C dans une phase
de scrutation de lentre srie, correspondant ici lentre I/O16
(broche 21), qui dure 1 000 ms (1 s), ds que la chane TI est
reconnue, les caractres qui suivent sont placs dans la variable
tableau Tampon qui peut contenir jusqu 8 valeurs de type BYTE.
Si la chane attendue nest pas reue durant cette seconde le
programme boucle sur ltiquette ATT (pour ATTente). Le simple
fait de placer ltiquette ATT sur la mme ligne que linstruction
SERIN permet de reconduire indfiniment la phase dattente.
ATT: serin 16,103,0,1000,ATT,[WAIT("TI"),Tampon(0)~8]

Imaginons maintenant que le ME vient de recevoir un SMS et


quil a stock dans la mmoire de la carte SIM lemplacement
numro 1. Aussitt linstruction +CMTI: "SM",1 est envoye au
PicBasic qui va placer les 8 caractres suivants TI dans la
variable Tampon, voir tableau 4.3.

Tableau 4.3.

Tampon(0) Tampon(1) Tampon(2) Tampon(3) Tampon(4) Tampon(5) Tampon(6) Tampon(7)


:
58dec

00dec

"

"

34dec

83dec

77dec

34dec

44dec

49dec

Il serait plus judicieux dutiliser par exemple linstruction


WAIT("+CMTI: ") mais cette combinaison nest malheureusement
pas accepte par le compilateur, linstruction WAIT ne peut
contenir que deux caractres.
Parmi les 8 octets contenus par la variable Tampon, les donnes
Tampon(2) Tampon(5) contiennent le nom de la mmoire
<mem1> o est stock le message et Tampon(7) contient la
fameuse donne <index>, ici gale 1 qui correspond lemplacement du message dans la mmoire. On considre dans cet
exemple que <index> est compris entre 0 et 9, en pratique ce
nest pas toujours le cas, mais il sera temps de voir cela dans le
chapitre 5. Par contre le nom de la mmoire est toujours cod sur
quatre caractres.

96

08_Ch 4.fm Page 97 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM


Premirement nous allons paramtrer le tlphone pour que la
commande de lecture des SMS se fasse sur la mmoire prcise
par les variables Tampon(2) Tampon(5), grce la commande
AT+CPMS :
SEROUT 14,51,0,1,["AT+CPMS=",Tampon(2),Tampon(3),Tampon(4),
Tampon(5),13]

Cette ligne de code est quivalente pour cet exemple la commande :


AT+CPMS="SM"<CR>

Remarque : comme les donnes Tampon(2) et Tampon(5) contiennent toujours le code ASCII 34dec qui correspond au guillemet,
on aurait pu utiliser le code suivant :
SEROUT 14,51,0,1,["AT+CPMS=",34,Tampon(3),Tampon(4),34,13]

La commande AT+CMGR suivie du paramtre <index> contenu


dans la variable Tampon(7) permet deffectuer la lecture du SMS
en question, lecture qui va se faire, pour cet exemple, lemplacement numro 1 dans la mmoire de la carte SIM grce la
commande prcdente.
SEROUT 14,51,0,1,["AT+CMGR=",Tampon(7),13]

Cette ligne de code est quivalente la commande :


AT+CMGR=1<CR>.
Temporisation de 500 ms (0,5 s) pour laisser le temps au ME
dexcuter la commande.

DUNOD La photocopie non autorise est un dlit.

DELAY 500

Pour contenir le message nous imaginons quil existe une


deuxime donne baptise SMS de type tableau limite
70 valeurs de type BYTE. La RAM du PicBasic 3B peut contenir
80 octets, 7 sont utiliss par la variable Tampon, on se garde donc
une marge de 3 octets. Linstruction SERIN permet de capturer
les 70 caractres envoys par le ME sur la ligne RxD du PicBasic.
Si le SMS comporte plus de 70 caractres il sera tronqu.
linverse, si le SMS contient moins de 70 caractres, le programme
basculera sur ltiquette SUITE au bout de 1 000 ms (1 s).
serin 16,103,0,1000,SUITE,[SMS(0)~70]

Le contenu de la variable SMS dpend du mode utilis PDU ou


TEXT.

97

08_Ch 4.fm Page 98 Thursday, February 18, 2010 11:25 AM

INTERFACES GSM
Voici ce que pourrait contenir la variable SMS en mode PDU :
+CMGR: 0,,24
07911614786007F0040B911604994743F400009930139100406B05E8329BFD06
OK

Le dcodage de la trame PDU nest pas vidente pour le PicBasic,


cest pour cela que nous allons privilgier lutilisation du mode TEXT
dans le chapitre 5.
En mode TEXT on aurait :
+CMGR: "REC READ","+61407809050","98/12/01,20:16:11+44"
TEST
OK

La premire ligne contient len-tte du message, le premier paramtre REC READ indique quil sagit dun message non lu, le
deuxime paramtre donne le numro de lexpditeur du message, le dernier paramtre indique la date laquelle le message
a t envoy. Le texte du message qui nous intresse est situ sur
la deuxime ligne soit TEST , on constate quil nest pas
vident premire vue dextraire cette donne. Il serait judicieux
de placer dans la variable SMS uniquement le mot TEST .
Malheureusement linstruction WAIT ne peut pas tre utilise
pour dtecter le caractre <CR> afin de mmoriser uniquement
la donne situe sur la deuxime ligne. La solution consiste
faire prcder le corps du message dune paire de caractres
spcifiques qui dclencherait la mmorisation dans la variable
SMS. Il faut choisir des caractres qui ne devront jamais apparatre dans len-tte du message sous peine de rcuprer des
donnes inutiles. Deux points dexclamations !! semble tre
une bonne solution. Voici donc linstruction basic utiliser :
ATT1: serin 16,103,0,1000,ATT1,[WAIT("!!"),SMS(0)~70]

En admettant cette fois que le SMS rceptionn est de la forme


suivante :
+CMGR: "REC READ","+61407809050","98/12/01,20:16:11+44"
!!TEST
OK

98

08_Ch 4.fm Page 99 Thursday, February 18, 2010 11:25 AM

CHAPITRE

INTERFACER UN TLPHONE GSM

La variable SMS est constitue comme le montre le tableau 4.4.


Les donnes SMS(0) SMS(3) contiennent les donnes souhaites.
Il suffirait de faire tester ces 4 variables au PicBasic pour que
celui-ci effectue une action en fonction de leur contenu, cest ce
que nous allons maintenant mettre en pratique dans le chapitre
suivant.
SMS(1)

SMS(2)

SMS(3)

48dec

69dec

83dec

48dec

SMS(4)

DUNOD La photocopie non autorise est un dlit.

SMS(0)

99

SMS()

Tableau 4.4.
SMS()

SMS(70)

08_Ch 4.fm Page 100 Thursday, February 18, 2010 11:25 AM

09_Ch 5.fm Page 101 Thursday, February 18, 2010 11:26 AM

PAGE

CHAPITRE

RALISATIONS
LECTRONIQUES

5.1 Rcepteur/metteur SMS

102

5.2 Tlcommandes par GSM

123

5.3 Tlmesures par GSM

163

5.4 Carte Entres/Sorties


pilote par GSM

194

5.5 Golocalisation par GSM

228

Annexes

251

Glossaire

261

Bibliographie

264

101

09_Ch 5.fm Page 102 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Dans la ralisation dune application sans fil, la porte est le
paramtre le plus important. Avec les modules HF intgrs Aurel
ou Mipot du commerce il est difficile dassurer une transmission
correcte sur une distance suprieure 100 m et ceci mme dans
les conditions les plus favorables, temps clair, terrain dgag
Mme si la porte est lie la puissance dmission, il existe une
limite fixe par la rglementation. Voil pourquoi les modules
vendus dans le commerce dlivrent une puissance dmission ne
dpassant pas quelques dizaines de milliwatts.
Avec la technologie GSM, la porte nest plus un problme. Un tlphone portable possde certes une puissance de quelques watts
mais celle-ci est largement suffisante pour accder au rseau tlphonique via les antennes relais quadrillant notre territoire. Il
devient alors possible par lenvoi et la rception de commandes
sous forme de SMS de piloter et de surveiller un processus quelconque se droulant sur un site distant, voire mme mobile (automobile). La mise en uvre de ce procd ncessite le dveloppement
dune lectronique autonome capable de sinterfacer avec un tlphone et de communiquer avec celui-ci via les commandes AT que
nous avons dcrites prcdemment, et disposant dactionneurs et
de capteurs pour interagir avec son environnement. Cest le but
que nous allons atteindre dans ce dernier chapitre.
Tous les montages prsents ci-aprs peuvent sutiliser avec un
tlphone portable GSM supportant le mode TEXT connect
laide dun cordon DATA ; ou avec nimporte quel terminal GSM
supportant les standards GSM07.07 et GSM07.05, comme le TM2
de Teltonika pour ne citer que lui.

5.1 RCEPTEUR/METTEUR SMS


Les deux premiers montages ont surtout une vocation pdagogique. Il est certainement plus simple de lire directement le SMS
reu sur lcran LCD de votre tlphone ; ou de composer sur le
clavier le message envoyer. Cependant ceci est moins vident
sur les terminaux GSM (par exemple TM2) qui ne disposent
daucune interface homme-machine

Rcepteur de SMS sur cran LCD


Ds que le tlphone portable ou le terminal GSM connect ce
montage reoit un nouveau SMS, un buzzer interpelle lutilisateur
pour quil consulte le contenu du message affich sur lcran LCD.

Schma lectrique
Voir figure 5.1.

102

Figure 5.1.
Schma
du rcepteur de SMS
sur cran LCD.

DUNOD La photocopie non autorise est un dlit.

09_Ch 5.fm Page 103 Thursday, February 18, 2010 11:26 AM

RALISATIONS LECTRONIQUES

CHAPITRE

103

09_Ch 5.fm Page 104 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Le cur du montage est comme convenu un PicBasic PB-3B. Les
lignes I/O16 (broche 21) et I/O17 (broche 22) sont mises contribution pour lacquisition des donnes sries. Le circuit IC2, un
Max232 dadapte le niveau de tension des signaux en provenance
et destination du tlphone GSM reli au circuit par lintermdiaire dun cble adaptateur que nous avons dcrit dans la
premire partie du chapitre 3. Si vous utilisez un terminal GSM
tel que le TC35 de siemens qui dispose dune sortie RS232 normalise, la liaison se fera avec un cble RS232 standard. Le Max232
est cbl avec 4 condensateurs au tantale ncessaires lactivation
de sa pompe de charge interne qui permet de passer la tension
dalimentation de 5 12 V. Lentre RXD (broche 2) qui rcupre
les donnes en provenance du tlphone est relie lentre
RX1i, si sur cette entre une tension de + 12 V est applique on
aura sur la sortie correspondante RX1o une tension nulle qui sera
applique sur la ligne I/O16 configure pour loccasion en
entre. Si lentre RX1i est soumise une tension de 12 V, on
aura sur lentre I/O16 une tension de + 5 V. La ligne I/O17
(broche 22) est configure en sortie pour lenvoi des donnes
destination du tlphone, elle est relie lentre TX1i. Une
tension nulle applique sur TX1i donne une tension de + 12 V
sur la sortie TX1o et sur TXD (broche 3). Une tension de + 5 V
donne une tension de 12 V sur TXD. La sortie DTR est aussi
mise contribution, mais uniquement pour lalimentation du
cble utilis conjointement avec un tlphone portable. En effet
les cbles DATA LINK du commerce utilisent cette sortie pour
alimenter leur lectronique interne. Comme lentre TX2i est relie
la masse, on obtient sur TX2o donc sur DTR une tension de
+ 12 V. Cette sortie est inutile si vous utilisez un terminal GSM,
il suffit dans ce cas de retirer le cavalier J1. Les lignes RXD, TXD et
DTR sont disponibles sur un connecteur au format DB 9 broches
mle pour une connexion directe.
Comme tout microcontrleur qui se respecte, le PicBasic utilise
un quartz, de 20 MHz, associ aux condensateurs de dcouplage
C2 et C3 de 22 pF, pour cadencer lexcution du programme.
Lentre RES qui est en logique inverse, est relie directement
au + 5 V, ainsi chaque mise sous tension du montage le PicBasic
est remis zro. Lalimentation se fait par la broche 20, deux
broches 8 et 19 sont utilises pour la mise la masse.
Le PicBasic dispose dinstructions spcialement ddies pour le
pilotage dun afficheur LCD commande srie. Une seule ligne
nomme PICBUS (broche 26) suffit piloter lafficheur 2 16
caractres que nous avons choisi. Un buzzer constitu dun
simple disque piezzo est connect sur la sortie I/O9 (broche 12),
l encore une instruction Basic dlivre un signal carr dune

104

09_Ch 5.fm Page 105 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

DUNOD La photocopie non autorise est un dlit.

frquence de 4 kHz pour faire mettre un bip . Deux boutons


poussoirs BP1 et BP2 respectivement relis aux lignes I/O0
(broche 2) et I/O1 (broche 3) permettent lutilisateur dagir sur
le droulement du programme. Lorsque le bouton poussoir est
inactif, lentre correspondante est la masse via une rsistance
de 10 k. Les rsistances R2 et R3 de 10 k associes la diode
D1 permettent, par lintermdiaire du cordon spcifique (fourni
par Lextronic) connect sur le port imprimante dun PC, de transfrer le programme dans leeprom du PicBasic. Lalimentation de
lensemble est confie un traditionnel rgulateur de tension
7805 en botier TO220 capable de dbiter une tension rgule de
+ 5 V avec une intensit maximale de 1 A. Le condensateur
lectrolytique de 220 F assure un filtrage efficace de la tension
dalimentation provenant, par exemple, dun bloc secteur dlivrant une tension maximale continue de 15 V. La diode D1 protgera le montage dans le cas dune malencontreuse inversion de
polarit. Pour terminer, une Led associe une rsistance de 470
signale visuellement la prsence de la tension dalimentation.

Ralisation
Limpression du circuit sur du papier transparent avec une imprimante jet dencre ou laser permet dobtenir un masque de
bonne qualit. Pour avoir une opacit correcte des pistes, il est
conseill de superposer deux masques lors de linsolation. Le
temps dexposition aux UV peut ainsi tre augment pour une
rvlation sans surprise. Aprs gravure, rinage et perage, les
diffrents composants seront souds conformment au schma
dimplantation. Attention lorientation des composants polariss. La borne positive du buzzer correspond au disque gris de
plus faible dimension. La borne positive pour chacun des condensateurs est signale par un signe + grav ct cuivre. Soyez
galement vigilant sur lorientation du connecteur du cble de
programmation et celui de lafficheur LCD (voir figure 5.4).
Programme du PicBasic : recep.bas
Le programme implant dans la mmoire eeprom du PicBasic est
largement aussi important que la partie lectronique, puisque
cest de lui que dpend le fonctionnement correct du montage.
Il nest donc pas inutile de le dtailler surtout pour ceux qui dsireront par la suite ajouter des fonctionnalits au montage.
'DECLARATION DES CONSTANTES
'--------------------------

Pour faciliter la maintenance nous avons dclar trois constantes :


TXD qui correspond la ligne I/O16 (broche n 22) du PicBasic,
RXD qui correspond ligne I/O17 (broche n 21) et BDS pour

105

09_Ch 5.fm Page 106 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.2.
Circuit imprim.

Figure 5.3.
Implantation
des composants.
Liste des composants
R1 : 470
R2, R3, R4, R5 : 10 k
C1 : 100 nF (pas de 2,54 mm)
C2, C3 : 22 pF / cramique
C4, C10 : 100 nF / LCC jaune
C5, C6, C7, C8 : 1 F / tantale / 15 V
C9 : 220 F / lectrolytique / 15 V
D1 : diode 1N4002
D2 : diode 1N4148
L : Led standard
Q : quartz 20 MHz
REG : rgulateur 7805

BUZ : buzzer piezzo (sans lectronique intgre)


BP1, BP2 : bouton poussoir type D6
J1 : barrette HE10 2 contacts + cavalier
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle pour CI / coud 90
CN3 : connecteur pour cble de programmation
(LEXTRONIC)
CN4 : connecteur pour cran LCD (LEXTRONIC)
IC1 : PICBASIC PB-3B (LEXTRONIC)
+ support DIL 28 broches (troit)
IC2 : MAX232 + support DIL 16 broches
cran LCD srie 2 16 caractres (LEXTRONIC)

106

09_Ch 5.fm Page 107 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Figure 5.4.

bauds qui dfinit la vitesse de transmission ici fixe 9 600 car


BDS = 103. Lutilisation de constantes vite de parcourir tout le
programme lorsque lon dsire modifier un des paramtres.
CONST BDS = 103
CONST RXD = 17
CONST TXD = 16

DUNOD La photocopie non autorise est un dlit.

'DECLARATION DES VARIABLES


'-------------------------

Comme dans nimporte quel autre programme nous avons besoin


de variables pour stocker dans la mmoire RAM des donnes
et les rcuprer ultrieurement. La premire variable nomme
Tampon contient la mmoire et lindex du SMS. Il nest pas
possible dutiliser des variables de type texte (string), les seuls
types supports par le compilateur sont BYTE qui est un nombre
cod sur 8 bits donc compris entre 0 et 255 et INTEGER qui est
un nombre cod sur 16 bits donc compris entre 0 et 65 535. Par
contre il est possible de configurer une variable en tableau afin
de stocker plusieurs valeurs. Sachant quun caractre ASCII se
code sur 8 bits, il est possible de stocker une chane de caractres
dans un tableau de type BYTE. Dans ce cas la ligne de commande
DIM Tampon(10) as BYTE signifie que la variable Tampon peut
contenir jusqu 10 valeurs de type BYTE. La deuxime variable
nomme SMS stocke le contenu du SMS, limit ici 16 caractres. Enfin la variable simple i de type BYTE qui sert notamment
pour les boucles FOR/NEXT.
DIM Tampon(10) AS BYTE
DIM SMS(16) AS BYTE
DIM i AS BYTE

107

09_Ch 5.fm Page 108 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
'INITIALISATION DE LECRAN LCD
'------------------------------------------------

Il convient dinitialiser lcran LCD connect au PicBasic grce


aux instructions spcifiques ce type dafficheur. Linstruction
SET PICBUS HIGH ou LOW permet de paramtrer la vitesse de
communication du bus spcialis PICBUS . Par dfaut ce type
dafficheur est configur pour travailler une vitesse de
19 200 bauds, donc linstruction SET PICBUS sera suivie de linstruction HIGH (LOW pour une vitesse de 4 800 bauds). Linstruction LCDINIT initialise lcran LCD.
SET PICBUS HIGH
LCDINIT
'TEST LIAISON SERIE
'-----------------------------

Pour sassurer que la liaison entre le montage et le tlphone est


valide, nous allons envoyer la commande la plus simple qui soit :
AT<CR>, le ME doit rpondre par <CR><LF>OK<CR><LF> si la liaison
est correcte. Les caractres AT suivis du caractre <CR>=13dec
sont envoys par la commande SEROUT. Linstruction SERIN
permet dattendre lventuelle rponse OK pendant 2 000 ms
(soit 2 s). Si les caractres OK sont rceptionns dans le temps
donn, le caractre suivant soit <CR> est plac dans la variable i.
Dans le cas contraire le programme saute la ligne repre par
ltiquette TEST0, i est alors vide. Il suffit de tester le contenu de
i pour savoir si la liaison est tablie.
TEST0:
TEST1:

i=0
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST1,[WAIT("OK"),i]
IF i<>0 THEN
LOCATE 0,0
PRINT "Liaison OK"
LOCATE 0,1
PRINT "Test mode..."
ELSE
LOCATE 0,0
PRINT "PB liaison !"
DELAY 5000
END IF

Tant que la liaison nest pas tablie le programme boucle sur


ltiquette TEST0. Lcran LCD affiche le message PB liaison ! .
Une fois la liaison tablie, le programme suit son cours normal.
IF i=0 THEN GOTO TEST0

108

09_Ch 5.fm Page 109 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
'SELECTION DE lALPHABET GSM
'----------------------------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------------

En principe le code PIN qui autorise lutilisation du tlphone


doit tre compos chaque mise sous tension. Avec un tlphone
classique vous pouvez le saisir partir du clavier. Ce qui nest
plus possible si vous utilisez un terminal GSM intgr, pour la
simple et bonne raison quil ne dispose pas de clavier ! Linstruction AT+CPIN suivie de votre code PIN est dans ce cas incontournable. 13dec est le code ASCII du retour chariot <CR>, qui
dclenche lexcution de la commande.
SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'INITIALISATION DES VARIABLES
'----------------------------

Il convient comme dans tout programme dinitialiser les variables,


en particulier Tampon et SMS.

DUNOD La photocopie non autorise est un dlit.

DEBUT: FOR i=0 TO 9


Tampon(i)=0
NEXT i
FOR i=0 TO 15
SMS(i)=0
NEXT i
'INITIALISATION ME
'-----------------

On considre que la liaison est tablie, nous allons configurer le


ME en mode TEXT avec la commande AT+CMGF=1 . On prendra pour habitude de faire suivre lenvoi dune commande par
une temporisation dau moins 500 ms (0,5 s) ceci afin de laisser le
temps au ME de rceptionner, de traiter et ventuellement de
rpondre la commande.
CLS
i=0
SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
SERIN RXD,BDS,0,2000,INIT,[WAIT("OK"),i]
INIT: IF i<>0 then
LOCATE 0,0
PRINT "Mode TEXT"

109

09_Ch 5.fm Page 110 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
LOCATE 0,1
PRINT "Attente SMS..."
ELSE
LOCATE 0,0
PRINT "Mode TEXT"
LOCATE 0,1
PRINT "non supporte :("
DELAY 5000
END IF
IF i=0 THEN GOTO INIT
DELAY 1000

Le ME doit signaler au TE larrive dun nouveau SMS, pour


cela utilisons la commande AT+CNMI=1,1 . Ainsi larrive
dun SMS sera signale par lenvoi au ME de la commande
+CMTI: "SM",1. Ceci dans le cas o le message serait stock dans
la carte SIM lemplacement n 1.
SEROUT TXD,BDS,0,1,["AT+CNMI=1,1",13]
DELAY 1000
'ATTENTE RECEPTION SMS
'---------------------

Le C est plac dans une phase dattente. Ds que les caractres


TI sont reus, les 10 caractres suivants sont stocks dans la
variable Tampon, le buzzer retentit et le texte Message reu
saffiche sur la premire ligne de lcran LCD, sur la deuxime
ligne apparat la mmoire contenant le SMS et son index. Notez
que linstruction WAIT ne peut pas tre utilise avec une chane
de plus de 2 caractres. Lindex est obtenu aprs la concatnation
des variables Tampon(7), Tampon(8) et Tampon(9) condition
que leur contenu soit compris entre 48dec=0ASCII et 57dec=9ASCII.
Ceci limine les caractres indsirables du style <CR> ou <LF>
qui senregistrent dans la variable Tampon lorsque lindex est
cod sur un ou deux chiffres.
ATTSM: SERIN RXD,BDS,0,10000,ATTSM,[WAIT("TI"),Tampon(0)~10]
CLS
LOCATE 0,0
PRINT "Message recu !"
LOCATE 0,1
PRINT "Mem:",Tampon(3),Tampon(4)
PRINT ",Index:"
FOR i=7 TO 9
IF Tampon(i)>=48 AND Tampon(i)<=57 THEN PRINT Tampon(i)
NEXT i

Un bip est mis par le buzzer jusqu ce quun des boutons


poussoirs (BP1 ou BP2) soit actionn.

110

09_Ch 5.fm Page 111 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

ATTBP: BEEP 9
IF IN(0)=0 AND IN(1)=0 THEN GOTO ATTBP

Comme lindex sincrmente chaque nouveau message rceptionn, il est ncessaire dextraire cette donne pour savoir o
aller lire le message en mmoire. Dans ltat actuel des choses
admettons que la donne Tampon contient ce qui est indiqu au
tableau 5.1.

Tableau 5.1.

Tampon Tampon Tampon Tampon Tampon Tampon Tampon Tampon Tampon Tampon
(0)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
:

"

"

On considre dans le programme que la valeur <index> sera


code au maximum sur 3 chiffres. Il est par exemple possible que
le stockage des SMS se fasse partir de lindex 900. Cela dpend
du tlphone utilis et du type de mmoire slectionn. Dans
lexemple prsent ici, le SMS est stock dans la carte SIM
lemplacement n 1.
'LECTURE DU SMS RECU
'-------------------

DUNOD La photocopie non autorise est un dlit.

Le fait dactionner BP1 ou BP2 provoque la lecture du SMS dans


la mmoire dfinie par les variables Tampon(3) et Tampon(4)
situ lemplacement point par la valeur obtenue aprs la
concatnation des variables Tampon(7), Tampon(8) et Tampon(9)
condition que leur contenu soit compris entre 48dec = 0ASCII et
57dec = 9ASCII.
SEROUT TXD,BDS,0,1,["AT+CPMS=",34,Tampon(3),Tampon(4),34,13]
DELAY 500
SEROUT TXD,BDS,0,1,["AT+CMGR="]
FOR i=7 TO 9
IF Tampon(i)>=48 AND Tampon(i)<=57 THEN SEROUT
TXD,BDS,0,1,[Tampon(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]

Dans notre exemple, les variables Tampon(8) et Tampon(9) tant


vides, elles seront ignores par le programme. La commande
envoye au ME est quivalente AT+CMGR=1<CR> .
En rponse la commande prcdente le ME va transmettre le
contenu du SMS. Comme il nest pas possible au PicBasic de
mmoriser lintgralit du message qui peut atteindre 180 caractres, sans compter len-tte, on considre que le message est
compos au maximum dune chane de 16 caractres. La mmori-

111

09_Ch 5.fm Page 112 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
sation du message dans la variable SMS seffectuera ds la dtection dune paire de points dexclamation. Les SMS envoys au
montage devront donc toujours dbuter par les caractres !! . Voici
titre dexemple un SMS tel quil est transmis notre montage
par le ME :
+CMGR: "REC READ","+61405809051","03/12/01,20:16:11+44"
!!Ceci est un test

Tous les caractres qui prcdent la paire de points dexclamations


seront ignors par le PicBasic. La variable SMS contient donc le
texte Ceci est un test .
SERIN RXD,BDS,0,5000,SUITE,[WAIT("!!"),SMS(0)~16]
SUITE: IF SMS(0)=0 THEN GOTO RAZ
'AFFICHAGE SUR LECRAN LCD
'-------------------------

Il reste maintenant afficher le contenu de la variable SMS sur


lcran LCD du montage. Dans le cas o le SMS contiendrait
moins de 16 caractres, le C va enregistrer des caractres inutiles
et notamment les caractres <CR><LF>OK<CR><LF> qui signalent la fin du texte. Pour viter de les afficher sur lcran il suffit
de sortir de la boucle FOR/NEXT ds que le caractre <CR>=13dec
est dtect.
CLS
LOCATE 0,0
FOR i=0 to 15
IF SMS(i)=13 THEN
GOTO RAZ
ELSE
PRINT SMS(i)
END IF
NEXT i
'EFFACE LE SMS EN MEMOIRE
'------------------------

Lappui sur BP1 efface le SMS de la mmoire du tlphone grce


la commande AT+CMGD suivie de lindex du SMS, BP2 permet
de retourner au dbut du programme sans supprimer le SMS,
attention tout de mme ne pas saturer la mmoire de votre tlphone.
RAZ: LOCATE 0,1
PRINT "BP1:RAZ BP2:SUIV"
BP1: IF IN(0)=1 THEN
SEROUT TXD,BDS,0,1,["AT+CMGD="]
FOR i=7 TO 9

112

09_Ch 5.fm Page 113 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

IF Tampon(i)>=48 AND Tampon(i)<=57 THEN SEROUT


TXD,BDS,0,1,[Tampon(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
DELAY 1000
BEEP 9
CLS
LOCATE 0,0
PRINT "RAZ Message"
LOCATE 0,1
PRINT "BP2:SUIV"
END IF
IF IN(1)=1 THEN GOTO DEBUT
GOTO BP1

DUNOD La photocopie non autorise est un dlit.

Toutes les instructions que nous venons de dcrire sont rassembles dans le fichier recep.bas . Il reste maintenant transfrer
le programme dans leeprom du PicBasic. Pour raccorder le PC
et le PicBasic via le cble imprimante, il vous faudra imprativement couper lalimentation du montage, puis connecter le cble
avant dallumer le PC et en dernier lieu mettre le montage sous
tension. Lancez le logiciel PICBASIC-LAB, ouvrez alors le fichier
recep.bas , cliquez sur le bouton RUN . Le programme est
compil en instructions assembleurs qui sont ensuite implantes
dans la mmoire du PicBasic. Pour rendre le montage autonome,
coupez toujours lalimentation du montage puis celle du PC. De
mme, ne dconnectez le cordon de liaison que si le PC et le
montage sont tous deux hors tension.

Test du montage
Dans un premier temps il est prudent de tester le montage laide
dun PC avant dy relier un tlphone. Ralisez un cble RS232
crois laide dun cordon comportant 3 conducteurs et de
2 connecteurs DB9 femelles cbler comme le montre la figure 5.5.
Reliez le montage au port srie du PC. Ouvrez une session du
logiciel Hyper Terminal, vous pouvez reprendre le fichier InterfacesGSM.lnk prsent dans le chapitre 4. Rappelons que la

Figure 5.5.

113

09_Ch 5.fm Page 114 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.6.
Configuration ASCII.

vitesse de transmission est de 9 600 bauds, 8 bits de donnes et


pas de contrle de flux. Dans le menu Fichier slectionnez
Proprits , cliquez sur longlet paramtres puis finalement
sur le bouton Configuration ASCII . Sur la fentre qui apparat (figure 5.6), cochez les cases Reproduire localement les
caractres taps et Ajouter les changements de ligne la fin
des lignes entrantes , validez par OK .
Alimentez le montage, aussitt les caractres AT doivent
apparatre sur lcran du PC. Rpondez dans les 2 secondes qui
suivent en tapant les caractres OK , suivis dun retour chariot.
Lcran LCD du montage doit afficher la phrase Liaison OK .
La commande dinitialisation du mode TEXT AT+CMGF=1 doit
safficher lcran, rpondez aussi par OK et un retour chariot.
La commande AT+CNMI=1,1 doit ensuite safficher. Simulons
alors la rception dun SMS en envoyant la commande +CMTI:
"SM",1. Le buzzer doit retentir et lcran afficher Message
reu ! . Actionnez un des deux boutons poussoirs de la platine
pour demander la lecture du message. Vous devez voir apparatre
la commande AT+CMGR=1, rpondez en tapant par exemple
!!TEST . Comme prvu, les caractres TEST qui suivent la
chane !! doivent safficher sur lcran LCD. Actionnez BP1
pour effacer le SMS, en retour vous obtenez lcran la commande
correspondante AT+CMGD=1 et aprs une temporisation de 1 s le
processus se rpte.
Notez quil est difficile de saisir les rponses dans le temps donn.
Il est possible de les prparer lavance dans des fichiers texte
grce au bloc-notes de Windows. Lenvoi seffectue par le menu
Transfert , Envoyer le fichier texte . Une autre solution
consiste rallonger temporairement les temporisations des instructions SERIN.

114

09_Ch 5.fm Page 115 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Les 3 points dtaills ici sont valables pour lensemble des montages prsents dans ce chapitre.

Tableau 5.2.

Pour connecter un tlphone portable laide dun cble DATA LINK du


commerce noubliez pas de mettre en place le cavalier J1 sur le montage.
Pour connecter un tlphone portable laide de ladaptateur TTL/RS232
ou TTL/FBUS ou M2BUS prsent dans le chapitre Matriels utiliss
vous devez utiliser un cble RS232 droit (voir figure ci-aprs). Une alimentation externe (la mme que celle du montage) sera utilise pour alimenter ladaptateur (cavalier J1 de ladaptateur en position A).
Concernant le module TM2 vous pouvez directement le connecter au prsent montage ou utiliser un cble RS232 droit (voir figure 5.7). Lalimentation du montage est fournie par le module TM2 (via le connecteur
CN2).

Figure 5.7.
Cble
droit .

Le moment tellement attendu, celui de relier votre tlphone


portable au montage, est enfin arriv ! !

DUNOD La photocopie non autorise est un dlit.

Mettez la platine sous tension. Allez, par exemple, sur Internet


pour envoyer gratuitement un SMS. Noubliez pas de commencer le message par les caractres !!. Quelques secondes aprs
lenvoi du SMS lcran LCD du montage doit indiquer larrive
de votre message.

Rsum des points importants

Tableau 5.3.

RECEPTEUR DE MESSAGES SMS


Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
Elments du programme PicBasic modifier
Code PIN (7208 par dfaut)
Commande SMS reue

Action du montage

!!texte

Affiche le contenu du paramtre texte sur la premire ligne de lcran LCD


(texte 16 caractres)

115

09_Ch 5.fm Page 116 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

metteur de SMS
Nous prsentons ici une deuxime utilisation du montage, la
platine est identique, seul le programme est modifi. Le but est
denvoyer quotidiennement un SMS une heure pralablement
programme. Nous en profiterons donc pour montrer comment
bnficier de lhorloge du tlphone qui fournit la date et lheure
courante. Pour varier les plaisirs le SMS est compos au format
PDU.

Programme du PicBasic (version PDU) : emet_pdu.bas


'DECLARATION DES CONSTANTES
'--------------------------

Dclarations de nos trois constantes employes dans les instructions SERIN et SEROUT pour configurer le port srie.
CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'-------------------------

Dclarations des quatre variables utilises par le programme. La


variable tableau CLK permet la mmorisation de la date et de
lheure fournies par le tlphone. La variable nbSMS de type
BYTE permet de mmoriser le nombre de SMS envoys. Nous
verrons un peu plus loin lutilit de la variable old. La variable i
est notamment utilise pour les boucles FOR/NEXT.
DIM
DIM
DIM
DIM

CLK(20) AS BYTE
old AS BYTE
nbSMS AS BYTE
i AS BYTE

INITIALISATION DE LECRAN LCD


-----------------------------

La partie de code assurant linitialisation de lcran LCD, le test


de la liaison srie et lenvoi du code PIN est identique au programme prcdent :
SET PICBUS HIGH
LCDINIT
'TEST LIAISON SERIE
'-----------------i=0
TEST0: SEROUT TXD,BDS,0,1,["AT",13]

116

09_Ch 5.fm Page 117 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
SERIN RXD,BDS,0,2000,TEST1,[WAIT("OK"),i]
TEST1: IF i<>0 THEN
LOCATE 0,0
PRINT "Liaison OK"
ELSE
LOCATE 0,0
PRINT "PB liaison !"
DELAY 5000
END IF
IF i=0 THEN GOTO TEST0
DELAY 5000
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'-------SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'INITIALISATION ME
'-----------------

Exceptionnellement lenvoi des SMS se fera en mode PDU :


CLS
i=0
SEROUT TXD,BDS,0,1,["AT+CMGF=0",13]
DELAY 1000

DUNOD La photocopie non autorise est un dlit.

'ATTENTE / AFFICHAGE DATE et HEURE SUR ECRAN LCD


'-----------------------------------------------

Voici maintenant le programme principal. Dans un premier


temps on interroge le tlphone pour savoir quelle est la date et
lheure courante. Rappelons que la commande utiliser est
AT+CCLK?, suivie bien entendu dun retour chariot :
ATT:

old=0
SEROUT TXD,BDS,0,1,["AT+CCLK?"]
DELAY 500
SEROUT TXD,BDS,0,1,[13]

En retour le tlphone transmet le texte suivant : +CCLK:


"aa/mm/jj,hh:mm:ss", pour placer la date est lheure dans la
variable CLK nous allons attendre les caractres LK et mmoriser les 20 caractres suivants :
SERIN RXD,BDS,0,2000,ATT,[WAIT("LK"),CLK(0)~20]

117

09_Ch 5.fm Page 118 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Examinons ce que contient dsormais la variable tableau CLK
(tableau 5.4).

Tableau 5.4.

CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK CLK
(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19)
:

"

AA : anne, MM : mois, JJ : jour, HH : heure, MM : minute, SS :


seconde.
Nous affichons sur la premire ligne de lcran LCD la date au
format JJ/MM :
LOCATE 0,0
PRINT CLK(9),CLK(10),"/",CLK(6),CLK(7),"

"

Laffichage de lheure se fait laide dune boucle FOR et NEXT


afin de parcourir les champs CLK(12) CLK(19) :
FOR i=12 TO 19
PRINT CLK(i)
NEXT i

Si lheure courante correspond lheure programme, un SMS


doit tre envoy, le programme bascule alors sur le sous-programme EMET. Pour tre certain que le montage nenvoie pas
plus dun SMS par jour, le programme teste le champ CLK(10)
qui reprsente lunit du jour ; tant quil na pas vari, aucun autre
SMS ne peut tre envoy. La valeur prcdente est mmorise
dans la variable old. Par dfaut lheure programme est 09:55,
vous pouvez bien entendu modifier ce paramtre selon votre
convenance.
IF CLK(10)<>old THEN
IF CLK(12)="0" AND CLK(13)="9" THEN
IF CLK(15)="5" AND CLK(16)="5" THEN GOSUB EMET
END IF
END IF
GOTO ATT
'EMISSION SMS
'------------

Voici maintenant la description du sous-programme qui assure


lenvoi du SMS. chaque envoi un compteur sincrmente afin
dafficher sur lcran LCD le nombre total de SMS (limit 99
pour viter le dbordement du texte de lcran LCD) envoys
depuis la mise sous tension du montage.

118

09_Ch 5.fm Page 119 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

EMET: nbSMS=nbSMS+1
IF nbSMS>99 THEN nbSMS=0
LOCATE 0,1
PRINT DEC(nbSMS,2,0)," SMS envoye(s)"

En mode PDU, il suffit de prciser le nombre doctets que comporte le message, puis denvoyer la trame au tlphone, le caractre <eof> = 26dec provoque lenvoi sur le rseau GSM :
SEROUT TXD,BDS,0,1,["AT+CMGS=46",13]
DELAY 1000
SEROUT
TXD,BDS,0,1,["0011000A8160572391950000AA25C3F2380D2ACFE9A0BA1BD42
ECFE7E17319442E83E8E5391D0497BFCFF270BB5D06"]
SEROUT TXD,BDS,0,1,[26]
old=CLK(10)
RETURN

La composition de votre propre message se fera avec le logiciel


ConvertSMS . Renseignez le champ DA, cest--dire le numro
de tlphone du destinataire, puis le champ texte du message,
cliquez sur le bouton convertir. Faites ensuite un copier/coller
de la trame obtenue vers le programme. Noubliez pas de mettre
jour la longueur qui suit la commande AT+CMGS .

Rsum des points importants

Tableau 5.5.

METTEUR DE MESSAGES SMS (mode PDU)


Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce

DUNOD La photocopie non autorise est un dlit.

lments du programme PicBasic modifier


Code PIN (7208 par dfaut)
Heure laquelle le SMS doit tre envoy (09:55 par dfaut)
Trame PDU constituant le message envoyer

Programme du PicBasic (version TEXT) : emet_txt.bas


Voici une deuxime version du programme, pour ceux qui prfrent travailler avec le mode TEXT pour envoyer les SMS.
'DECLARATION DES CONSTANTES
'-------------------------CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES

119

09_Ch 5.fm Page 120 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
'------------------------DIM CLK(20) AS BYTE
DIM old AS BYTE
DIM nbSMS AS BYTE
DIM i AS BYTE
'INITIALISATION DE LECRAN LCD
'----------------------------SET PICBUS HIGH
LCDINIT
'TEST LIAISON SERIE
'-----------------i=0
TEST0: SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST1,[WAIT("OK"),i]
TEST1: IF i<>0 THEN
LOCATE 0,0
PRINT "Liaison OK"
ELSE
LOCATE 0,0
PRINT "PB liaison !"
DELAY 5000
END IF
IF i=0 THEN GOTO TEST0
DELAY 5000
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'-------SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'INITIALISATION ME
'-----------------

Lenvoi des SMS se fait dsormais en mode TEXT grce la


commande AT+CMGF = 1<CR> .
CLS
i=0
SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
DELAY 1000
'ATTENTE / AFFICHAGE DATE et HEURE SUR ECRAN LCD
'----------------------------------------------old=0
ATT:
SEROUT TXD,BDS,0,1,["AT+CCLK?"]

120

09_Ch 5.fm Page 121 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

DELAY 500
SEROUT TXD,BDS,0,1,[13]
SERIN RXD,BDS,0,2000,ATT,[WAIT("LK"),CLK(0)~20]
LOCATE 0,0
PRINT CLK(9),CLK(10),"/",CLK(6),CLK(7),"

"

FOR i=12 TO 19
PRINT CLK(i)
NEXT i
IF CLK(10)<>old THEN
IF CLK(12)="0" AND CLK(13)="9" THEN
IF CLK(15)="5" AND CLK(16)="5" THEN GOSUB EMET
END IF
END IF
GOTO ATT
'EMISSION SMS
'-----------EMET: nbSMS=nbSMS+1
IF nbSMS>99 THEN nbSMS=0
LOCATE 0,1
PRINT DEC(nbSMS,2,0)," SMS envoye(s)"

DUNOD La photocopie non autorise est un dlit.

Avec le mode TEXT lenvoi du message Ceci est un message de


test programme se fait laide de la commande AT+CMGS .
Noubliez pas de modifier le numro du destinataire du message.
SEROUT TXD,BDS,0,1,["AT+CMGS=",34,"06xxxxxxxx",34,13]
DELAY 1000
SEROUT TXD,BDS,0,1,["Ceci est un message de test
programme",26]
old=CLK(10)
RETURN

Rsum des points importants

Tableau 5.6.

METTEUR DE MESSAGES SMS (mode TEXT)


Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
lments du programme PicBasic modifier

Code PIN (7208 par dfaut)


Heure laquelle le SMS doit tre envoy (09:55 par dfaut)
Numro de tlphone pour lenvoi des SMS (06xxxxxxxx par dfaut)
Texte du SMS ( Ceci est un message de test programme par dfaut)

121

09_Ch 5.fm Page 122 Thursday, February 18, 2010 11:26 AM

Figure 5.8.
Schma de la tlcommande
1 sortie sur relais.

INTERFACES GSM

122

09_Ch 5.fm Page 123 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

5.2 TLCOMMANDES PAR GSM


1 sortie sur relais
Cette premire tlcommande qui possde une seule sortie,
nest, exceptionnellement, pas pilote par SMS. Le changement
dtat du relais se fait lorsque le tlphone reoit un appel,
condition que le numro de lappelant soit autoris piloter la
carte. Lutilisation de ce montage est totalement gratuite, aucun
frais de communication nest prvoir du fait quil ny a pas de
prise de ligne, cest la sonnerie qui est le vecteur de la commande. Attention, il faut tout de mme que labonnement du
tlphone connect au montage inclue la prsentation du numro.
Si ce nest pas le cas vous pouvez toujours vous rabattre sur la
version 2 du programme.

DUNOD La photocopie non autorise est un dlit.

Schma lectrique
Nous ne reviendrons pas sur la description des parties communes
au montage prcdent. La sortie I/O11 ne disposant pas dune
puissance suffisante pour faire coller le relais, nous avons fait
appel un tage amplificateur constitu dun simple transistor
2N2222. La base est relie la sortie I/O11 via une rsistance de
1 k. Le relais est plac entre le collecteur et lalimentation du
montage (en amont du rgulateur) qui ne devra pas dpasser les
12 V. Notez la prsence de la diode dite de roue libre D3 charge de court-circuiter la force contre lectromotrice gnre par
la bobine. Lorsque la sortie I/O11 est ltat haut, T1 est satur,
le relais est actif. Lorsque I/O11 est ltat bas, T1 est bloqu, le
relais est inactif. Le seul capteur de la carte est le bouton poussoir
BP1 connect lentre I/O0. La rsistance de rappel R7 impose
une tension de + 5 V lorsque le BP nest pas actionn (figures 5.9
et 5.10).
Programme PICBASIC (version 1) : 1sr_v1.bas
'DECLARATION DES CONSTANTES
'--------------------------

Dclaration des constantes utilises par les instructions SERIN et


SEROUT. TXD correspond la ligne I/O16 du PicBasic, RXD
correspond ligne I/O17 et BDS pour bauds qui dfinit la vitesse
de transmission ici fixe 9 600 car BDS = 103.
CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'-------------------------

123

09_Ch 5.fm Page 124 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.9.
Circuit imprim.

Figure 5.10.
Implantation
des composants.
Liste des composants
R1, R5, R6 : 470
R2, R3, R7 : 10 k
R4 : 1 k
C1 : 100 nF (pas de 2,54 mm)
C2, C3 : 22 pF / cramique
C4, C10 : 100 nF / LCC jaune
C5, C6, C7, C8 : 1 F / tantale / 15 V
C9 : 220 F / lectrolytique / 15 V
D1 : diode 1N4002
D2, D3 : diode 1N4148
L, L1, L2 : Led standard (diamtre 3 mm)
Q : quartz 20 MHz
REG : rgulateur 7805

BUZ : buzzer piezzo (sans lectronique intgre)


T : transistor 2N2222
J1 : barrette HE10 2 contacts + cavalier
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle pour CI / coud 90
CN3 : connecteur pour cble de programmation
(LEXTRONIC)
CN4 : connecteur pour cran LCD (LEXTRONIC)
(facultatif)
IC1 : PICBASIC PB-3B (LEXTRONIC)
+ support DIL 28 broches (troit)
IC2 : MAX232 + support DIL 16 broches
REL : relais ISKRA TRM 2903 12 V (ou quivalent)
BP : bouton poussoir type D6

124

09_Ch 5.fm Page 125 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
DIM
DIM
DIM
DIM
DIM

Num(16) AS BYTE
NumMem AS BYTE
i AS BYTE
j AS INTEGER
flag AS BYTE

'GESTION DU BOUTON POUSSOIR


'--------------------------

Linstruction utilise ici permet de raliser un accs direct au


sous-programme BP ds lors quun niveau logique bas apparat sur lentre I/O0 o est connect le bouton poussoir. Cette
surveillance est gre en tche de fond pendant lexcution du
programme principal. Ds que le bouton poussoir est actionn, le
programme principal est interrompu, le sous-programme BP
est excut, le programme principal peut ensuite reprendre son
cours normal.
ON INT(0)=0 GOSUB BP

DUNOD La photocopie non autorise est un dlit.

'TEST LIAISON SERIE


'------------------

Pour sassurer que la liaison entre le montage et le tlphone est


valide, nous allons envoyer la commande la plus simple qui soit :
AT<CR>, le ME doit rpondre par <CR><LF>OK<CR><LF> si la liaison
est correcte. Les caractres AT suivis du caractre <CR>=13dec
sont envoys par la commande SEROUT. Linstruction SERIN
permet dattendre lventuelle rponse OK pendant 2 000 ms
(soit 2 s). Si les caractres OK sont rceptionns dans le temps
donn, le caractre suivant soit <CR> est plac dans la variable i.
Dans le cas contraire le programme saute la ligne repre par
ltiquette TEST, i est alors vide, un bip est mis par le buzzer.
Il suffit de tester le contenu de i pour savoir si la liaison est
tablie.
TEST: BEEP 9
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------

125

09_Ch 5.fm Page 126 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
En principe le code PIN qui autorise lutilisation du tlphone
doit tre compos chaque mise sous tension. Avec un tlphone
classique vous pouvez le saisir partir du clavier. Ce qui nest
plus possible si vous utilisez un terminal GSM intgr, pour la
simple et bonne raison quil ne dispose pas de clavier ! Linstruction AT+CPIN suivie de votre code PIN est dans ce cas incontournable.
SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'INITIALISATION DU ME
'--------------------

Activation de la fonction prsentation du numro. Attention


lutilisation de ce service dpend de votre formule dabonnement.
SEROUT TXD,BDS,0,1,["AT+CLIP=1",13]
DELAY 500
'INITIALISATION N TELEPHONE
'---------------------------

Le numro de tlphone autoris piloter le relais est initialis


dans la mmoire eeprom du PicBasic. Pour ne pas interfrer avec
la partie programme, le stockage se fait dans les 11 derniers
emplacements de la mmoire de FF5hex FFFhex. Cette mmorisation ne se ralise quune seule fois car le programme teste
avant si ladresse FF5hex est vide (notez quun emplacement vide
contient la donne FFhex). Attention le numro est en notation
internationale, mais sans le signe + , on a donc un numro de
la forme 33xxxxxxxxx (+33 correspond en fait au chiffre 0).
IF EEREAD(&HFF5)=&HFF THEN
EEWRITE &HFF5,"3"
EEWRITE &HFF6,"3"
EEWRITE &HFF7,"x"
EEWRITE &HFF8,"x"
EEWRITE &HFF9,"x"
EEWRITE &HFFA,"x"
EEWRITE &HFFB,"x"
EEWRITE &HFFC,"x"
EEWRITE &HFFD,"x"
EEWRITE &HFFE,"x"
EEWRITE &HFFF,"x"
END IF
'INITIALISATION DES VARIABLES
'----------------------------

126

09_Ch 5.fm Page 127 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

DEBUT: FOR i=0 TO 15


Num(i)=0
NEXT i
'ATTENTE SONNERIE (Appel entrant)
'--------------------------------

Lors dun appel les sonneries sont matrialises par le message


RING qui est envoy sur la sortie srie du tlphone destination du TE. Lorsque la prsentation du numro est active, le
message complmentaire suivant apparat chaque sonnerie :
+CLIP : <number>,<type>. Le paramtre <number> contient le
numro de tlphone de lappelant. Le C va donc scruter lentre
RXD dans lattente des caractres IP . Ds leur rception les
16 caractres suivants sont placs dans la variable tableau Num.
ATT:

SERIN RXD,BDS,0,10000,ATT,[WAIT("IP"),Num(0)~16]
GOSUB BUZ

Ce que contient la variable Num lorsque le tlphone reoit un


appel est montr tableau 5.7.

Tableau 5.7.

NUM NUM NUM NUM NUM NUM NUM NUM NUM NUM NUM NUM NUM NUM NUM NUM
(0)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9) (10) (11) (12) (13) (14) (15)
:

"

Le numro de lappel entrant est contenu par les variables


Num(3) Num(12).

DUNOD La photocopie non autorise est un dlit.

'COMPARAISON AVEC NUMERO EN EEPROM


'---------------------------------

Le programme compare le numro de lappel entrant au numro


stock dans leeprom du PicBasic. Si au moins un des chiffres qui
composent le numro ne correspond pas, la variable flag est
positionne 0.
flag=1
j=&HFF5
FOR i=4 TO 14
NumMem=EEREAD(j)
IF Num(i)<>NumMem THEN flag=0
j=j+1
NEXT i
'ACTIVATION / DESACTIVATION DU RELAIS
'------------------------------------

127

"

09_Ch 5.fm Page 128 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Si la variable flag est 1, le relais change dtat. Si flag est 0 le
relais conserve son tat, la Led L2 sillumine pendant 5 s pour
signaler que lappel est rejet. Linstruction TOGGLE change
ltat de la sortie qui lui est associe.
IF flag=1 THEN
TOGGLE 11
TOGGLE 2
OUT 3,0
GOSUB BUZ
ELSE
OUT 3,1
END IF
DELAY 5000
OUT 3,0
GOTO ATT
'GESTION DU BP
'-------------

Sous-programme relatif la gestion du bouton poussoir. Ds lors


que le BP est actionn, le relais et la Led L1 changent dtat et le
buzzer est activ.
BP:

TOGGLE 11
TOGGLE 2
GOSUB BUZ
DELAY 1000
RETURN

'ACTIVATION DU BUZZER
'-------------------BUZ:
FOR i=0 TO 10
BEEP 9
NEXT i
RETURN
Tableau 5.8.

Rsum des points importants


1 SORTIE SUR RELAIS (version 1)

Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
lments du programme PicBasic modifier
Code PIN (7208 par dfaut)
Numro de tlphone autoris activer/dsactiver le relais, attention le numro est en notation
international mais sans le signe +, exemple : 33xxxxxxxx (valeur par dfaut)

128

09_Ch 5.fm Page 129 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
Programme PICBASIC (version 2) : 1sr_v2.bas
Pour ceux qui nont pas la chance de possder la fonctionnalit
prsentation du numro, voici une deuxime version du programme. Le montage se contente de dtecter larrive dun appel
pour changer ltat du relais. Linconvnient est que nimporte
qui peut piloter votre montage.
'DECLARATION DES CONSTANTES
'-------------------------CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'------------------------DIM RING(2) AS BYTE
DIM i AS BYTE
'GESTION DU BOUTON POUSSOIR
'-------------------------ON INT(0)=0 GOSUB BP
'TEST LIAISON SERIE
'-----------------TEST: BEEP 9
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST

DUNOD La photocopie non autorise est un dlit.

'SELECTION DE lALPHABET GSM


'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'-------SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'INITIALISATION DES VARIABLES
'---------------------------DEBUT: RING(0)=0
RING(1)=0
'ATTENTE SONNERIE (Appel entrant)
'--------------------------------

Lors dun appel les sonneries sont matrialises par le message


RING qui est envoy sur la sortie srie du tlphone destination du TE. Cest ce texte qui va tre reconnu par le C, pour

129

09_Ch 5.fm Page 130 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
ce faire celui-ci attend les caractres RI , les 2 caractres suivants
sont placs dans la variable RING.
ATT:

SERIN RXD,BDS,0,10000,ATT,[WAIT("RI"),RING(0)~2]

Ce que contient la variable RING lorsque le tlphone reoit un


appel est montr tableau 5.9.
Tableau 5.9.

RING(0)

RING(1)

'ACTIVATION / DESACTIVATION DU RELAIS


'------------------------------------

Si les variables RING(0) et RING(1) contiennent respectivement


les lettres N et G , ltat du relais est modifi.
IF RING(0)<>"N" OR RING(1)<>"G" THEN GOTO ATT
TOGGLE 11
TOGGLE 2
GOSUB BUZ
DELAY 5000
GOTO ATT
'GESTION DU BP
'------------BP:
TOGGLE 11
TOGGLE 2
GOSUB BUZ
DELAY 1000
RETURN
'ACTIVATION DU BUZZER
'-------------------BUZ:
FOR i=0 TO 10
BEEP 9
NEXT i
RETURN
Tableau 5.10.

Rsum des points importants


1 SORTIE SUR RELAIS (version 2)

Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
lments du programme PicBasic modifier
Code PIN (7208 par dfaut)

130

09_Ch 5.fm Page 131 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

4 sorties sur relais


Ce montage associ un tlphone portable ou un terminal
GSM permet le pilotage de 4 sorties tout ou rien de puissance.
Lactivation des relais se fait par lenvoi dun message SMS partir
dun tlphone portable voire mme dun ordinateur disposant
dune connexion Internet (SMS gratuits !). Le message doit
contenir le numro du relais activer (ou dsactiver). tout
moment il est possible de demander ltat des 4 sorties.

Schma lectrique
Quatre lignes du PicBasic I/O8 I/O11 configures pour loccasion en sorties pilotent les 4 relais. Le circuit ULN2803A sert
damplificateur afin de fournir lintensit suffisante pour activer
les bobines, les 4 sorties restantes sont mises profit pour signaler visuellement ltat de chacun des relais. IC3 est un amplificateur inverseur de tension, par exemple si lentre D0 est ltat
haut, la sortie Q0 est ltat bas, le relais REL1 est alors actif.
Chacune des sorties de lamplificateur est capable de dlivrer
une intensit de 500 mA, plus quil en faut pour faire coller le
relais. Les relais choisis pour cette ralisation sont au format DIL,
ils se caractrisent par une petite taille, cependant ils sont capables de vhiculer une intensit permanente de 1,25 A.
Programme PICBASIC (version 1) : 4sr_v1.bas
Le dbut du programme est similaire au montage prcdent. Les
lignes de programme concernant la gestion de lcran LCD sont
retires.

DUNOD La photocopie non autorise est un dlit.

'DECLARATION DES CONSTANTES


'--------------------------

Dclaration des constantes utilises par les instructions SERIN


et SEROUT. TXD correspond la ligne I/O16 du PicBasic, RXD
correspond ligne I/O17 et BDS pour Bauds qui dfinit la
vitesse de transmission ici fixe 9 600 car BDS = 103.
CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'------------------------DIM Tampon(10) AS BYTE
DIM SMS(7) AS BYTE
DIM i AS BYTE
DIM n AS BYTE

131

09_Ch 5.fm Page 132 Thursday, February 18, 2010 11:26 AM

Figure 5.11.
Schma
de la tlcommande
4 sorties sur relais.

INTERFACES GSM

132

09_Ch 5.fm Page 133 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

DUNOD La photocopie non autorise est un dlit.

Figure 5.12.
Circuit imprim.
Liste des composants
R1, R4 R7 : 470
R2, R3 : 10 k
C1 : 100 nF (pas de 2,54 mm)
C2, C3 : 22 pF / cramique
C4, C10 : 100 nF / LCC jaune
C5, C6, C7, C8 : 1 F / tantale / 15 V
C9 : 220 F / lectrolytique / 15 V
D1 : diode 1N4002
D2 : diode 1N4148
L, L1 L4 : Led standard (diamtre 3 mm)
Q : quartz 20 MHz
REG : rgulateur 7805
BUZ : buzzer piezzo (sans lectronique
intgre)
J1 : barrette HE10 2 contacts + cavalier

Figure 5.13.
Implantation des composants.
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle pour CI / coud 90
CN3 : connecteur pour cble de programmation
(LEXTRONIC)
CN4 : connecteur pour cran LCD (LEXTRONIC)
(facultatif)
IC1 : PICBASIC PB-3B (LEXTRONIC) + support
DIL 28 broches (troit)
IC2 : MAX232 + support DIL 16 broches
IC3 : ULN2803A + support DIL 18 broches
REL1 REL4 : relais FINDER au format DIL
30.22S modle 3995 (Arqui composants)
S1 S4 : cosse poignard

133

09_Ch 5.fm Page 134 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
'INITIALISATION DES RELAIS
'-------------------------

Au dpart du programme tous les relais doivent tre inactifs.


Linstruction BYTEOUT port,val permet de sortir la valeur binaire
de la donne (val) sur 8 sorties du PicBasic. Chaque sortie est
limage de chaque bit de la valeur binaire donne. Dans notre cas
les relais sont relis sur les sorties I/O8 I/O11, il sagit donc des
4 bits du bloc 1. Le LSB correspond la broche I/O8, le MSB la
broche I/O15. Les bits 0 3 sont donc positionns zro, ltat
des autres bits na aucune importance car les sorties correspondantes ne sont pas utilises (mieux vaux tout de mme les positionner ltat bas).
BYTEOUT 1,&b00000000
'TEST LIAISON SERIE
'------------------

Pour sassurer que la liaison entre le montage et le tlphone est


valide, nous allons envoyer la commande la plus simple qui soit :
AT<CR>, le ME doit rpondre par <CR><LF>OK<CR><LF> si la liaison
est correcte. Les caractres AT suivis du caractre <CR>=13dec
sont envoys par la commande SEROUT. Linstruction SERIN
permet dattendre lventuelle rponse OK pendant 2 000 ms
(soit 2 s). Si les caractres OK sont rceptionns dans le temps
donn, le caractre suivant soit <CR> est plac dans la variable i.
Dans le cas contraire le programme saute la ligne repre par
ltiquette TEST, i est alors vide, un bip est mis par le buzzer.
Il suffit de tester le contenu de i pour savoir si la liaison est
tablie.
i=0
TEST: BEEP 4
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------

En principe le code PIN qui autorise lutilisation du tlphone


doit tre compos chaque mise sous tension. Avec un tlphone
classique vous pouvez le saisir partir du clavier. Ce qui nest

134

09_Ch 5.fm Page 135 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
plus possible si vous utilisez un terminal GSM intgr, pour la
simple et bonne raison quil ne dispose pas de clavier ! Linstruction AT+CPIN suivie de votre code PIN est dans ce cas incontournable.
SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'INITIALISATION DU ME
'--------------------

Le ME est configur en mode TEXT par la commande


AT+CMGF=1 . La commande AT+CNMI=1,1 indique au
ME que chaque nouveau SMS reu doit tre signal au TE. Ainsi
larrive dun SMS sera signale par lenvoi au ME de la commande +CMTI: <mem1>,<index>.
SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
DELAY 500
SEROUT TXD,BDS,0,1,["AT+CNMI=1,1",13]
DELAY 500
'INITIALISATION DES VARIABLES
'---------------------------DEBUT: FOR i=0 TO 9
Tampon(i)=0
NEXT i
FOR i=0 TO 6
SMS(i)=0
NEXT i

DUNOD La photocopie non autorise est un dlit.

'ATTENTE RECEPTION SMS


'---------------------

Dsormais le C scrute lentre RXD dans lattente des caractres


TI . Ds leur rception les 10 caractres suivants sont placs
dans la variable Tampon. Une srie de 11 bips signale larrive
du SMS.
ATT:

SERIN RXD,BDS,0,10000,ATT,[WAIT("TI"),Tampon(0)~10]
FOR i=0 TO 10
BEEP 4
NEXT i

Comme lindex sincrmente chaque nouveau message rceptionn, il est ncessaire dextraire cette donne pour savoir o
aller lire le message en mmoire. Dans ltat actuel des choses
admettons que la donne Tampon contient ce qui est indiqu
tableau 5.11.

135

09_Ch 5.fm Page 136 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Tableau 5.11.
Tampon Tampon Tampon Tampon Tampon Tampon Tampon Tampon Tampon Tampon
(0)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
:

"

"

On considre dans le programme que la valeur <index> sera


code au maximum sur 3 chiffres. Il est possible, comme le montre
cet exemple, que le stockage des SMS se fasse dans la mmoire
ME partir de lindex 900.
'LECTURE DU SMS RECU
'-------------------

Le TE configure le ME pour que la lecture soit faite dans la


mmoire dfinie par Tampon(3) et Tampon(4).
SEROUT TXD,BDS,0,1,["AT+CPMS=",34,Tampon(3),Tampon(4),34,13]
DELAY 500

La lecture du SMS est provoque par la commande


AT+CMGR=<index> . Si la donne <index> est code sur un
ou deux chiffres, on rcupre des donnes indsirables
(<CR><LF>). Pour les liminer lors de la reconstitution de lindex
du message on sassure que les donnes Tampon(7) Tampon(9)
contiennent un caractre compris entre 0ASCII=48dec et 9ASCII=57dec.
SEROUT TXD,BDS,0,1,["AT+CMGR="]
FOR i=7 TO 9
IF Tampon(i)>=48 AND Tampon(i)<=57 THEN SEROUT TXD,BDS,
0,1,[Tampon(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]

Ds la rception des caractres !! les 7 caractres suivants sont


placs dans la variable SMS. Dans le cas o les caractres !!
ne sont pas dtects dans les 5 s, le programme passe au label
SUITE, comme la variable SMS(0) est vide le SMS est effac. Si le
SMS contient moins de 7 caractres le programme passe galement au label SUITE mais comme SMS(0) est dans ce cas diffrent
de zro le programme suit son cours.
SERIN RXD,BDS,0,5000,SUITE,[WAIT("!!"),SMS(0)~7]
SUITE: SMS(0)=0 THEN GOTO RAZ

En ltat actuel du programme, si lon considre que le SMS


envoy tait de la forme !!REL1,ON , la variable tableau SMS
doit contenir ce qui est indiqu tableau 5.12.

136

09_Ch 5.fm Page 137 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

SMS(0)

SMS(1)

SMS(2)

SMS(3)

SMS(4)

SMS(5)

SMS(6)

SMS(3) contient le numro du relais activer, compris entre 1 et 4


SMS(5) et SMS(6) contiennent ltat que doit prendre le relais
lissue de la commande, ON ou OF. Il nest pas interdit de saisir
le dernier F de OFF mais celui-ci sera ignor par le programme.
'GESTION DES RELAIS
'------------------

DUNOD La photocopie non autorise est un dlit.

La partie gestion des relais est traite uniquement si la variable


SMS(3) est comprise entre 1 et 4, codes ASCII 49dec et 52dec. Si tel
est le cas, le contenu des variables SMS(5) et SMS(6) est test
pour savoir si le relais en question doit tre activ ou dsactiv.
Si SMS(5)+SMS(6)= ON alors le relais est activ par la commande OUT x,1. Si SMS(5)+SMS(6)= OF le relais est dsactiv
par la commande OUT x,0. Le paramtre x tant le numro de la
broche sur laquelle le relais est connect.
IF SMS(3)<=52 AND SMS(3)>=49 THEN
IF SMS(5)="O" AND SMS(6)="N" THEN
IF SMS(3)="1" THEN OUT 8,1
IF SMS(3)="2" THEN OUT 9,1
IF SMS(3)="3" THEN OUT 10,1
IF SMS(3)="4" THEN OUT 11,1
END IF
IF SMS(5)="O" AND SMS(6)="F" THEN
IF SMS(3)="1" THEN OUT 8,0
IF SMS(3)="2" THEN OUT 9,0
IF SMS(3)="3" THEN OUT 10,0
IF SMS(3)="4" THEN OUT 11,0
END IF
END IF
'ENVOI DUN SMS CONTENANT LETAT DES 4 RELAIS
'--------------------------------------------

Si la variable SMS(3) ne contient pas un chiffre compris entre 1


et 4 mais un point dinterrogation ? , ceci dans le cas o le SMS
envoy est de la forme !!REL? , le montage doit rdiger et
envoyer un SMS contenant ltat actuel des 4 relais. Notez la
commande OUTSTAT qui permet de consulter ltat des sorties
qui pilotent les relais sans en modifier ltat.
La variable n contient successivement les codes ASCII 49dec
52dec, correspondant aux numros 1 4 des relais.

137

Tableau 5.12.

09_Ch 5.fm Page 138 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Pour obtenir systmatiquement un accus de rception pour
chaque commande envoye il suffirait de supprimer la ligne de
code IF SMS(3)="?" THEN et le END IF correspondant.
n=0
IF SMS(3)="?" THEN
SEROUT TXD,BDS,0,1,["AT+CMGS=",34,"06xxxxxxxx",34,13]
DELAY 1000
SEROUT TXD,BDS,0,1,["ETAT DES RELAIS : "]
FOR i=8 TO 11
n=i+41
IF OUTSTAT(i)=1 THEN
SEROUT TXD,BDS,0,1,["REL",n,"=ON "]
ELSE
SEROUT TXD,BDS,0,1,["REL",n,"=OFF "]
END IF
NEXT i
SEROUT TXD,BDS,0,1,[26]
DELAY 5000
END IF
'EFFACE LE SMS EN MEMOIRE
'------------------------

Pour terminer, le SMS est systmatiquement effac laide de la


commande AT+CMGD suivie de lindex, pour viter une
saturation de la mmoire utilise. Du fait chaque SMS reu aura
le mme index.
RAZ:

SEROUT TXD,BDS,0,1,["AT+CMGD="]
FOR i=7 TO 9
IF Tampon(i)>=48 AND Tampon(i)<=57 THEN SEROUT TXD,BDS,
0,1,[Tampon(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
DELAY 1000
GOTO DEBUT

Rsum des points importants


Voir Tableau 5.13.
Programme PICBASIC (version 2) : 4sr_v2.bas
Dans le programme prcdent, lorsque lon utilise la commande
!!REL? un SMS contenant ltat des 4 relais est envoy un
numro qui est prcis en dur dans le programme, ce qui limite
lutilisation du montage un seul numro. Si vous utilisez un
autre tlphone portable pour envoyer la commande !!REL?
vous ne recevrez aucun SMS en retour. Nous allons avec cette
deuxime version du programme remdier ce petit inconvnient.

138

09_Ch 5.fm Page 139 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Tableau 5.13.
4 SORTIES SUR RELAIS (version 1)
Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
lments du programme PicBasic modifier
Code PIN (7208 par dfaut)
Numro de tlphone pour lenvoi des SMS (06xxxxxxxx par dfaut)
Commande SMS reue

Action du montage

!!RELx,ON

Activation du relais numro x (4 x 1)

!!RELx,OF

Dsactivation du relais numro x (4 x 1)

!!REL?

Un SMS contenant ltat des 4 relais est envoy au numro spcifi dans
le programme

Il suffit de faire suivre la commande du numro o doit tre


expdi le SMS : !!REL?,06xxxxxxxx.
'DECLARATION DES CONSTANTES
'-------------------------CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'-------------------------

DUNOD La photocopie non autorise est un dlit.

La taille de la variable tableau SMS doit dsormais pouvoir


contenir jusqu 15 caractres.
DIM
DIM
DIM
DIM

Tampon(10) AS BYTE
SMS(15) AS BYTE
i AS BYTE
n AS BYTE

'INITIALISATION DES RELAIS


'------------------------BYTEOUT 1,&b00000000
'TEST LIAISON SERIE
'-----------------TEST: BEEP 4
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST

139

09_Ch 5.fm Page 140 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'-------SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'INITIALISATION DU ME
'-------------------SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
DELAY 500
SEROUT TXD,BDS,0,1,["AT+CNMI=1,1",13]
DELAY 500
'INITIALISATION DES VARIABLES
'---------------------------DEBUT: FOR i=0 TO 9
Tampon(i)=0
NEXT i
FOR i=0 TO 14
SMS(i)=0
NEXT i
'ATTENTE RECEPTION SMS
'--------------------ATT: SERIN RXD,BDS,0,10000,ATT,[WAIT("TI"),Tampon(0)~10]
FOR i=0 TO 10
BEEP 4
NEXT i
'LECTURE DU SMS RECU
'-------------------

Le TE configure le ME pour que la lecture soit faite dans la


mmoire dfinie par Tampon(3) et Tampon(4). La lecture du SMS
est provoque par la commande AT+CMGR=<index> . Ds la
rception des caractres !! les 15 caractres suivants sont
placs dans la variable SMS.
SEROUT TXD,BDS,0,1,["AT+CPMS=",34,Tampon(3),Tampon(4),34,13]
DELAY 500
SEROUT TXD,BDS,0,1,["AT+CMGR="]
FOR i=7 TO 9
IF Tampon(i)>=48 AND Tampon(i)<=57 THEN SEROUT TXD,BDS,
0,1,[Tampon(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
SERIN RXD,BDS,0,5000,ATT,[WAIT("!!"),SMS(0)~15]
ATT: IF SMS(0)=0 THEN GOTO RAZ

140

09_Ch 5.fm Page 141 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
En ltat actuel du programme, si lon considre que le SMS
envoy tait de la forme !!REL?,0601234567 , la variable tableau
SMS doit contenir ce qui est indiqu tableau 5.14.

Tableau 5.14.

SMS SMS SMS SMS SMS SMS SMS SMS SMS SMS SMS SMS SMS SMS SMS
(0)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9) (10) (11) (12) (13) (14)
R

SMS(3) contient un point dinterrogation qui signale au PicBasic


quil doit envoyer un SMS contenant ltat des 4 relais au numro
spcifi par SMS(5) SMS(14).
'GESTION DES RELAIS
'------------------

DUNOD La photocopie non autorise est un dlit.

Noter que les autres commandes, !!RELx,ON et !!RELx,OF, fonctionnent de la mme manire que dans la version 1 du programme.
IF SMS(3)<=52 AND SMS(3)>=49 THEN
IF SMS(5)="O" AND SMS(6)="N" THEN
IF SMS(3)="1" THEN OUT 8,1
IF SMS(3)="2" THEN OUT 9,1
IF SMS(3)="3" THEN OUT 10,1
IF SMS(3)="4" THEN OUT 11,1
END IF
IF SMS(5)="O" AND SMS(6)="F" THEN
IF SMS(3)="1" THEN OUT 8,0
IF SMS(3)="2" THEN OUT 9,0
IF SMS(3)="3" THEN OUT 10,0
IF SMS(3)="4" THEN OUT 11,0
END IF
END IF
'ENVOI UN SMS CONTENANT LETAT DES 4 RELAIS
'--------------------------------------------

Si la variable SMS(3) ne contient pas un chiffre compris entre 1


et 4 mais un point dinterrogation ? , ceci dans le cas o le SMS
envoy est de la forme !!REL? ,06xxxxxxxx , le montage doit
rdiger et envoyer un SMS contenant ltat actuel des 4 relais.
Cette fois le numro du tlphone nest pas fig dans le programme, il est contenu par les variables SMS(5) SMS(14). La
boucle FOR/NEXT permet de balayer les 10 variables pour
reconstituer le numro. Si aucun numro nest spcifi, ce qui est
vrai si SMS(4) ne contient pas une virgule, le message est envoy
au numro par dfaut indiqu en dur dans le programme.

141

09_Ch 5.fm Page 142 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
n=0
IF SMS(3)="?" THEN
IF SMS(4)="," THEN
SEROUT TXD,BDS,0,1,["AT+CMGS=",34]
FOR i=5 TO 14
SEROUT TXD,BDS,0,1,[SMS(i)]
NEXT i
SEROUT TXD,BDS,0,1,[34,13]
ELSE
SEROUT TXD,BDS,0,1,["AT+CMGS=",34,"06xxxxxxxx",34,13]
END IF
DELAY 1000
SEROUT TXD,BDS,0,1,["ETAT DES RELAIS : "]
FOR i=8 TO 11
n=i+41
IF OUTSTAT(i)=1 THEN
SEROUT TXD,BDS,0,1,["REL",n,"=ON "]
ELSE
SEROUT TXD,BDS,0,1,["REL",n,"=OFF "]
END IF
NEXT i
SEROUT TXD,BDS,0,1,[26]
DELAY 5000
END IF
'EFFACE LE SMS EN MEMOIRE
'-----------------------RAZ: SEROUT TXD,BDS,0,1,["AT+CMGD="]
FOR i=7 TO 9
IF Tampon(i)>=48 AND Tampon(i)<=57 THEN SEROUT TXD,BDS,
0,1,[Tampon(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
DELAY 1000
GOTO DEBUT

Rsum des points importants


Voir Tableau 5.15.

4 sorties sur triacs


Ce montage associ un tlphone portable ou un terminal
GSM permet le pilotage de 4 charges alimentes par la tension
du secteur, la partie puissance fait cette fois appel des triacs.
Contrairement aux relais, les triacs ont un fonctionnement purement lectronique, donc statique, ce qui est gage dune dure de
vie plus importante.
Comme pour le montage prcdent, lactivation des triacs se fait
par lenvoi dun message SMS partir dun tlphone portable

142

09_Ch 5.fm Page 143 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Tableau 5.15.
4 SORTIES SUR RELAIS (version 2)
Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
lments du programme PicBasic modifier
Code PIN (7208 par dfaut)
Numro de tlphone par dfaut pour lenvoi des SMS
Commande SMS reue

Action du montage

!!RELx,ON

Activation du relais numro x (4 x 1)

!!RELx,OF

Dsactivation du relais numro x (4 x 1)

!!REL?

Un SMS contenant ltat des 4 relais est envoy au numro spcifi en


dur dans le programme

!!REL?,06xxxxxxxx

Un SMS contenant ltat des 4 relais est envoy au numro indiqu

ou dun ordinateur. Le message doit contenir le numro du triac


activer (ou dsactiver). tout moment il est possible de
demander ltat des 4 sorties.

DUNOD La photocopie non autorise est un dlit.

Schma lectrique
Quatre lignes du PicBasic I/O8 I/O11 configures en sorties
pilotent les 4 triacs. Lutilisation de la tension du secteur nous
conduit effectuer une isolation galvanique afin de protger
correctement llectronique place en amont. Cette isolation est
ralise laide dun optocoupleur (du type MOC3041), un tel
circuit se compose de deux parties distinctes (isolation galvanique de 7 500 V) : la premire est constitue dune diode infrarouge qui va venir mettre en conduction le triac contenu dans la
deuxime partie. Il dispose galement dun dispositif qui dtecte
le passage zro de la tension du secteur afin dviter de gnrer
des parasites lors de lalimentation de la charge. Le courant de
lordre de 10 mA, ncessaire lactivation de la diode infrarouge,
est gnr par la sortie du PicBasic, la limitation de lintensit est
assure par une rsistance de 470 . La faible puissance du triac
interne loptocoupleur (Imax = 100 mA) ne permet pas lalimentation directe dune charge importante. Un deuxime triac mis
en cascade permet de disposer dune puissance beaucoup plus
importante. Toutefois, compte tenu de la largeur des pistes de la
carte, il est conseill de ne pas dpasser 200 W par sortie. Le composant rfrenc VR est une varistance qui permet de protger le

143

09_Ch 5.fm Page 144 Thursday, February 18, 2010 11:26 AM

Figure 5.14.
Schma de la
tlcommande
4 sorties sur triacs.

INTERFACES GSM

144

09_Ch 5.fm Page 145 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
montage lors du pilotage dune charge inductive, les phnomnes
dauto-induction lors de ltablissement et la coupure du courant
peuvent dtriorer le triac. Chaque triac possde donc une varistance monte en parallle. Ce composant voit son impdance
chuter trs fortement en prsence dune surtension (tension
> tension nominale de 250 V), protgeant ainsi le circuit plac en
aval, en loccurrence le triac. Notez la prsence de 4 Led sur les
broches I/O0 I/O3 qui signalent visuellement ltat des triacs.

Programme PICBASIC : 4st.bas


Il est bien entendu possible de rutiliser le programme du montage 4 sorties sur relais , cependant nous allons en profiter pour
mettre en uvre ici une deuxime mthode de programmation
qui va viter au PicBasic dattendre en permanence que le ME lui
signale larrive dun SMS. Priodiquement, cest le TE qui va
consulter la mmoire du ME pour savoir si un nouveau SMS y
est stock. Cette mthode est plus simple et permet surtout au
PicBasic deffectuer dautres tches entre deux consultations. Le
seul petit inconvnient est quil faut savoir lavance dans quelle
mmoire va tre stock le prochain SMS et quel sera son index.
Nous allons galement ajouter la commande : TRI.,DATA qui
positionne simultanment les 4 triacs ltat spcifi par la
donne DATA comprise entre 00 et 15dec.

DUNOD La photocopie non autorise est un dlit.

'DECLARATION DES CONSTANTES


'-------------------------CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'------------------------DIM index(3) AS BYTE
DIM SMS(15) AS BYTE
DIM DATA AS BYTE
DIM i AS BYTE
DIM n AS BYTE
'INITIALISATION DES TRIACS ET DES LEDS
'------------------------------------BYTEOUT 1,&b00000000
OUT 0,1
OUT 1,1
OUT 2,1
OUT 3,1
'TEST LIAISON SERIE
'-----------------i=0

145

09_Ch 5.fm Page 146 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.15.
Circuit imprim.

TEST: BEEP 4
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------

En principe le code PIN qui autorise lutilisation du tlphone


doit tre compos chaque mise sous tension. Avec un tlphone

146

09_Ch 5.fm Page 147 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

DUNOD La photocopie non autorise est un dlit.

Figure 5.16.
Implantation
des composants.
Liste des composants
R1, R4 R15 : 470
R2, R3 : 10 k
C1 : 100 nF (pas de 2,54 mm)
C2, C3 : 22 pF / cramique
C4, C10 : 100 nF / LCC jaune
C5, C6, C7, C8 : 1 F / tantale / 15 V
C9 : 220 F / lectrolytique / 15 V
D1 : diode 1N4002
D2 : diode 1N4148
L, L1 L4 : Led standard
(diamtre 3 mm)
Q : quartz 20 MHz
REG : rgulateur 7805
BUZ : buzzer piezzo
(sans lectronique intgre)
J1 : barrette HE10 2 contacts + cavalier
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle
pour CI / coud 90
CN3 : connecteur pour cble
de programmation (LEXTRONIC)
CN4 : connecteur pour cran LCD
(LEXTRONIC) (facultatif)
IC1 : PICBASIC PB-3B (LEXTRONIC)
+ support DIL 28 broches (troit)
IC2 : MAX232 + support DIL 16 broches
OPT1 OPT4 : optocoupleur MOC3041
TR1 TR4 : TRIAC BTA08-400B
VR1 VR4 : varistance 220 V

classique vous pouvez le saisir partir du clavier. Ce qui nest


plus possible si vous utilisez un terminal GSM intgr, pour la
simple et bonne raison quil ne dispose pas de clavier ! Linstruction AT+CPIN suivie de votre code PIN est dans ce cas incontournable.
SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'INITIALISATION DU ME EN MODE TEXT
'---------------------------------

147

09_Ch 5.fm Page 148 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Comme nous navons pas besoin que le ME avertisse le TE de
larrive dun nouveau SMS, la commande AT+CNMI=1,1 est
retire. Ne subsiste que la commande qui slectionne le mode
TEXT.
SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
DELAY 500
'SELECTION MEMOIRE ET INDEX POUR LECTURE SMS
'-------------------------------------------

Comme nous lavons dit plus haut, la mmoire de stockage et


lindex sont figs. Il faut donc dterminer ces deux paramtres
lavance. Concernant la mmoire <mem1>, on considre que les
SMS envoys par les particuliers ne possdent pas de classe. Cela
signifie que le mobile qui reoit ce genre de SMS le stocke dans la
mmoire ME. Les autres types de mmoire sont surtout utiliss
par les oprateurs. Si votre tlphone le supporte vous pouvez
utiliser le paramtre MT qui permet aux commandes de lecture
de SMS de travailler avec toutes les mmoires (possible sur le
SIEMENS MC35 et TC35).

Figure 5.17.
Index.

Ici nous avons choisi la mmoire du tlphone do


AT+CPMS= "ME" . De mme, la variable index doit tre initialise avec lindex que portera le prochain SMS rceptionn. Il
correspond au premier emplacement de libre dans la mmoire
slectionne. Pour le dterminer, vous pouvez utiliser le logiciel
convertSMS2 , aprs avoir slectionn la mmoire, soit ME
dans notre cas, cliquez sur le bouton Tous , il suffit de relever
lindex du premier emplacement de libre.
Dans lexemple ci-contre on constate que la mmoire ME
contient 2 messages, le premier est situ lindex 900, le
deuxime est situ lindex 902. Lindex 901 est donc libre, cest
l que le prochain message reu sera stock.

148

09_Ch 5.fm Page 149 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
Remarque : Si vous avez un index cod sur un ou deux chiffres,
il suffit de mettre les variables non utilises nul. Par exemple
si index = 1 (index de base pour le MC35 et TC35 de SIEMENS),
il faudra modifier le programme comme ceci :
index(0)="":index(1)="":index(2)="1".
SEROUT TXD,BDS,0,1,["AT+CPMS=",34,"ME",34,13]
DELAY 500
index(0)="9":index(1)="0":index(2)="1"
'INITIALISATION DES VARIABLES
'---------------------------DEBUT: FOR i=0 TO 14
SMS(i)=0
NEXT i
'REGARDE SI RECEPTION DUN SMS
'-----------------------------

Le programme grce la commande AT+CMGR regarde si


lemplacement mmoire indiqu par lindex contient un SMS. Si
lemplacement est vide le programme saute ltiquette RAZ.
Dans le cas contraire si le texte contient les caractres !! , les
15 caractres suivants, qui contiennent la commande, sont stocks
dans la variable SMS.

DUNOD La photocopie non autorise est un dlit.

ATT:

SEROUT TXD,BDS,0,1,["AT+CMGR="]
FOR i=0 to 2
IF index(i)>=48 AND index(i)<=57 THEN SEROUT TXD,BDS,
0,1,[index(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
SERIN RXD,BDS,0,5000,ATT,[WAIT("!!"),SMS(0)~15]
IF SMS(0)=0 THEN GOTO RAZ
FOR i=0 TO 10
BEEP 4
NEXT i

'GESTION DES TRIACS


'------------------

La commande contenue dans la variable SMS est dcode pour


savoir sil faut activer/dsactiver un triac ou envoyer un SMS
contenant ltat des 4 triacs. Exemple : la commande !!TRI4,OF
dsactive le triac numro 4.
IF SMS(3)<=52 AND SMS(3)>=49 THEN
IF SMS(5)="O" AND SMS(6)="N" THEN
IF SMS(3)="1" THEN OUT 8,1
IF SMS(3)="2" THEN OUT 9,1

149

09_Ch 5.fm Page 150 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
IF SMS(3)="3" THEN OUT 10,1
IF SMS(3)="4" THEN OUT 11,1
END IF
IF SMS(5)="O" AND SMS(6)="F" THEN
IF SMS(3)="1" THEN OUT 8,0
IF SMS(3)="2" THEN OUT 9,0
IF SMS(3)="3" THEN OUT 10,0
IF SMS(3)="4" THEN OUT 11,0
END IF
END IF

Ajout de la commande qui permet de piloter simultanment les


4 triacs. Notez qu la place du numro du triac il faut saisir un
point. Les donnes SMS(5) et SMS(6) contiennent la valeur
appliquer sur les sorties qui pilotent les triacs (tableau 5.16).
Tableau 5.16.

DATA

TRIAC n

Commande
(dec)

!!TRI.,00

!!TRI.,01

!!TRI.,02

!!TRI.,03

!!TRI.,04

!!TRI.,05

!!TRI.,06

!!TRI.,07

!!TRI.,08

!!TRI.,09

!!TRI.,10

10

!!TRI.,11

11

!!TRI.,12

12

!!TRI.,13

13

!!TRI.,14

14

!!TRI.,15

15

1 = ON, 0 = OFF

150

09_Ch 5.fm Page 151 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
Notez que la commande !!TRI.,00 dsactive simultanment les
4 triacs, alors que la commande !!TRI.,15 active simultanment
les 4 triacs.
SMS(5) et SMS(6) contiennent la valeur de consigne que doivent
prendre les 4 triacs. Cette valeur ne peut pas tre utilise directement, car elle est code en ASCII. Malheureusement il nexiste
aucune instruction en langage PicBasic pour convertir une valeur
de type texte en donne de type BYTE. Attention il ne suffit pas
de multiplier SMS(5) par 10, SMS(6) par 1 et dadditionner ces
deux valeurs pour obtenir la valeur numrique souhaite. Avant
de faire ce calcul il faut retrancher 48dec chaque donne (48
correspond au code ASCII du chiffre 0).
IF SMS(3)="." THEN
SMS(5)=SMS(5)-48
SMS(5)=SMS(5)*10
SMS(6)=SMS(6)-48
DATA = SMS(5)+SMS(6)
BYTEOUT 1,DATA
END IF

Mise jour des Led en fonction de ltat des triacs :


IF
IF
IF
IF

OUTSTAT(8) =0
OUTSTAT(9) =0
OUTSTAT(10)=0
OUTSTAT(11)=0

THEN
THEN
THEN
THEN

OUT
OUT
OUT
OUT

0,1
1,1
2,1
3,1

ELSE
ELSE
ELSE
ELSE

OUT
OUT
OUT
OUT

0,0
1,0
2,0
3,0

DUNOD La photocopie non autorise est un dlit.

'ENVOI DUN SMS CONTENANT LETAT DES 4 TRIACS


'--------------------------------------------

Si la variable SMS(3) ne contient pas un chiffre compris entre 1


et 4 mais un point dinterrogation ? , ceci dans le cas o le SMS
envoy est de la forme !!TRI?,06xxxxxxxx , le montage doit
rdiger et envoyer un SMS contenant ltat actuel des 4 triacs.
Cette fois le numro du tlphone nest pas fig dans le programme, il est contenu par les variables SMS(5) SMS(14). La
boucle FOR/NEXT permet de balayer les 10 variables pour
reconstituer le numro. Si aucun numro nest spcifi, ce qui est
vrai si SMS(4) ne contient pas le code ASCII du symbole virgule,
le message est envoy au numro par dfaut indiqu en dur dans
le programme.
n=0
IF SMS(3)="?" THEN
IF SMS(4)="," THEN
SEROUT TXD,BDS,0,1,["AT+CMGS=",34]
FOR i=5 TO 14
SEROUT TXD,BDS,0,1,[SMS(i)]

151

09_Ch 5.fm Page 152 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
NEXT i
SEROUT TXD,BDS,0,1,[34,13]
ELSE
SEROUT TXD,BDS,0,1,["AT+CMGS=",34,"06xxxxxxxx",34,13]
END IF
DELAY 1000
SEROUT TXD,BDS,0,1,["ETAT DES TRIACS : "]
FOR i=8 TO 11
n=i+41
IF OUTSTAT(i)=1 THEN
SEROUT TXD,BDS,0,1,["TRIAC",n,"=ON "]
ELSE
SEROUT TXD,BDS,0,1,["TRIAC",n,"=OFF "]
END IF
NEXT i
SEROUT TXD,BDS,0,1,[26]
DELAY 5000
END IF
'EFFACE LE SMS EN MEMOIRE
'------------------------

Cette partie du programme permet deffacer systmatiquement


le SMS en mmoire, ainsi le prochain SMS rceptionn aura
toujours le mme index. Ceci vite de prvoir une incrmentation de la variable index et surtout de saturer la mmoire utilise.
Notez que cette partie de programme est dans certains cas appele
mme si aucun SMS nest effacer, le ME rpond par un message
derreur qui est ignor par le programme.
RAZ:

SEROUT TXD,BDS,0,1,["AT+CMGD="]
FOR i=0 TO 2
IF index(i)>=48 AND index(i)<=57 THEN SEROUT
TXD,BDS,0,1,[index(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
DELAY 1000
GOTO DEBUT

Rsum des points importants


Voir Tableau 5.17.

4 sorties analogiques
Le prsent montage nutilise pas de rseau R-2R comme on
aurait pu sy attendre mais des potentiomtres numriques. Le
potentiomtre numrique remplit exactement la mme fonction
que son anctre mcanique. La diffrence est que pour faire varier
sa rsistance on ne fait plus tourner un axe mais on envoie un mot

152

09_Ch 5.fm Page 153 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Tableau 5.17.
4 SORTIES SUR TRIACS
Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
lments du programme PicBasic modifier

DUNOD La photocopie non autorise est un dlit.

Code PIN (7208 par dfaut)


Mmoire lecture SMS <mem1> (ME par dfaut)
Index du prochain SMS reu (900 par dfaut)
Numro de tlphone par dfaut pour lenvoi des SMS

Commande SMS reue

Action du montage

!!TRIx,ON

Activation du triac numro x (4 x 1)

!!TRIx,OF

Dsactivation du triac numro x (4 x 1)

!!TRI.,data

Positionne les 4 triacs suivant la valeur contenue par data (15 data 00)

!!TRI?

Un SMS contenant ltat des 4 triacs est envoy au numro spcifi en


dur dans le programme

!!TRI?,06xxxxxxxx

Un SMS contenant ltat des 4 triacs est envoy au numro indiqu

de commande par le biais dune liaison srie synchrone ncessitant que 3 fils. On peut donc facilement interfacer ce type de
composant avec un PicBasic et envisager de piloter par SMS tout
montage utilisant un potentiomtre (alimentation variable, filtre
programmable, timer, gradateur). Lajout de straps permet de
transformer le montage en Convertisseur Numrique Analogique, on obtient dans ce cas sur les sorties une tension comprise
entre 0 et + 5 V que lon peut faire varier par pas de 20 mV.

Schma lectrique
Voir Figures 5.18, 5.19 et 5.20..
Caractristiques
Dans la famille des potentiomtres numriques proposs par le
constructeur Analog Devices nous trouvons le AD8400 qui
dispose dun canal, le AD8402 de deux canaux et le AD8403 de
quatre canaux. Bien que le montage prsent ici possde 4 sorties,
nous avons opt pour lutilisation de 4 circuits AD8400 indpendants. Il est ainsi possible de choisir des valeurs de rsistance
nominale diffrentes sur chaque sortie. Une sortie correspond
un potentiomtre que lon peut contrler numriquement. Les
valeurs nominales disponibles sont 1 k, 10 k, 50 k ou 100 k.

153

09_Ch 5.fm Page 154 Thursday, February 18, 2010 11:26 AM

Figure 5.18.
Schma
de la tlcommande
4 sorties analogiques.

INTERFACES GSM

154

09_Ch 5.fm Page 155 Thursday, February 18, 2010 11:26 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

RALISATIONS LECTRONIQUES

Liste des composants


R1 : 470
R2, R3 : 10 k
R4 : 1 k
C1 : 100 nF (pas de 2,54 mm)
C2, C3 : 22 pF / cramique
C4, C10 : 100 nF / LCC jaune
C5, C6, C7, C8 : 1 F / tantale / 15 V
C9 : 220 F / lectrolytique / 15 V
D1 : diode 1N4002
D2 : diode 1N4148
L : Led standard
Q : quartz 20 MHz
REG : rgulateur 7805

Figure 5.19. (en haut)


Circuit imprim.

Figure 5.20. (en bas)


Implantation des composants.

BUZ : buzzer piezzo (sans lectronique intgre)


J1 : barrette HE10 2 contacts + cavalier
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle pour CI / coud 90
CN3 : connecteur pour cble de programmation
(LEXTRONIC)
CN4 : connecteur pour cran LCD (LEXTRONIC)
(facultatif)
IC1 : PICBASIC PB-3B (LEXTRONIC) + support DIL
28 broches (troit)
IC2 : MAX232 + support DIL 16 broches
IC3 IC6 : AD8400 (RADIOSPARES) + support DIL
8 broches

155

09_Ch 5.fm Page 156 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Nous avons choisi pour notre montage 4 potentiomtres de 10 k.
La rsolution du potentiomtre est de 8 bits, cest--dire que lon
peut accder 28 = 256 positions lmentaires. Chacune de ces
256 positions est spare par une valeur gale 10 000 /256
= 39 . Il suffit de transfrer un mot de 8 bits dans un registre
pour dterminer la valeur de la rsistance du potentiomtre. Soit
A et B les deux points fixes et W le point variable (curseur). Entre
les points A et B on retrouve la valeur nominale du potentiomtre
soit 10 k. La position du curseur W est pilote par la valeur
contenue dans le registre de commande. La mise jour de ce
registre se fait par un bus de type SPI pilot par le PicBasic. Il
sagit dune liaison srie synchrone. On retrouve donc un signal
dhorloge (CLK) connect la broche I/O0, une ligne pour le
transfert des donnes (SDI) connecte la broche I/O1 et une
ligne de validation (CS), les 4 sorties I/O8 I/O11 relies aux
entres CS permettent de slectionner indpendamment chacun
des circuits AD8400. Chaque mot transfr comporte 10 bits. Le
niveau prsent sur la ligne de donne est transfr dans le
registre dcalage sur un front montant du signal dhorloge
alors que la ligne CS est ltat bas. Ce processus est rpt
10 fois puis la ligne CS est mise ltat haut ce qui dclenche la
mise jour de la position de W. Les deux premiers bits transfrs
dterminent ladresse du potentiomtre. Dans le cadre dune
utilisation de lAD8400 qui ne dispose que dun canal, les bits
dadresse A0 et A1 seront toujours gaux zro. Les 8 autres bits
dterminent la position du curseur W, le transfert du mot seffectue par bit de poids dcroissant. Le premier point est accessible
en envoyant la valeur 0. Le curseur est alors en bute sur le
point B, il subsiste entre ces deux points une rsistance rsiduelle
denviron 50 . La seconde position est obtenue en envoyant le
mot 01dec on obtient entre les points W et B une rsistance quivalente de 89 . Chaque position est en fait calcule par la relation suivante : RWB(Dx) = (Dx/255) RBA + Rw avec Rw = 50 . La
rsistance maximale est obtenue en transfrant la valeur 255dec
on obtient alors entre le point B est W une rsistance gale
10 011 . On peut videmment en dduire aussi la rsistance
entre les points W et A en utilisant la relation suivante :
RWA(Dx) = ((255 Dx)/255) RBA + Rw (tableau 5.18).
Utilisation du circuit en convertisseur numrique-analogique
Il est aussi trs facile dobtenir en sortie du potentiomtre non
plus une rsistance mais une tension, simplement en reliant le
point A au + 5 V (straps J2, J4, J6 et J8) et le point B au Gnd (straps
J1, J3, J5 et J7). La tension comprise entre le point W et le point B
se calcule de la manire suivante : VwB(Dx) = Dx/255 VAB + VB.

156

09_Ch 5.fm Page 157 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Code (Dec)

RWB()

RWA()

255

10 011

89

128

5 050

5 050

89

10 011

50

10 050

Tableau 5.18.

Figure 5.21.
Graphique R = f(D).

On obtient ni plus ni moins quun convertisseur numrique


analogique (CNA). Concernant notre montage, nous avons
VAB = + 5 V et VB = 0 V (on nglige la rsistance rsiduelle), la
formule prcdente devient :

DUNOD La photocopie non autorise est un dlit.

VwB(Dx) = Dx/256 5 et VwA = 5 VwB.


Si vous dsirez gnrer une intensit convenable, il suffit dajouter
un amplificateur oprationnel cbl en suiveur de tension
(tableau 5.19).

Code (Dec)

VWB (V)

VWA (V)

255

128

2,5

2,5

0,02

4,98

157

Tableau 5.19.

09_Ch 5.fm Page 158 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Programme PICBASIC : 4sa.bas
'DECLARATION DES CONSTANTES
'-------------------------CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'------------------------DIM Tampon(10) AS BYTE
DIM SMS(13) AS BYTE
DIM i AS BYTE
DIM n AS BYTE
DIM D(4) AS BYTE
'INITIALISATION DES 4 CIRCUITS AD8400
'------------------------------------

Au dpart du programme il faut que les sorties CS0 CS3 soient


ltat haut afin que les circuits AD8400 ignorent les ventuelles
informations circulant sur les lignes SDI et CLK. Linstruction
BYTEOUT permet de sortir la valeur binaire de la donne (val)
sur 8 sorties du PicBasic. Chaque sortie est limage de chaque bit
de la valeur binaire donne. Dans notre cas les entres CS sont
relies sur les sorties I/O8 I/O11, il sagit donc des 4 bits du
bloc 1. Le LSB correspond la broche I/O8, le MSB la broche
I/O15. Les bits 0 3 sont donc positionns ltat logique haut,
ltat des autres bits na aucune importance (ici positionns
zro). Une boucle FOR/NEXT permet la mise zro de la variable
tableau D qui contient limage de la valeur de consigne pour
chacun des 4 potentiomtres. La valeur de consigne zro est alors
envoye simultanment aux 4 potentiomtres.
BYTEOUT 1,&b00001111
FOR i=0 TO 3
D(i)=0
NEXT i
BYTEOUT 1,&b00000000
SHIFTOUT 0,1,1,0,10
BYTEOUT 1,&b00001111
'TEST LIAISON SERIE
'------------------

Pour sassurer que la liaison entre le montage et le tlphone est


valide, nous allons envoyer la commande la plus simple qui soit :
AT<CR>, le ME doit rpondre par <CR><LF>OK<CR><LF> si la liaison
est correcte. Les caractres AT suivi du caractre <CR>=13dec

158

09_Ch 5.fm Page 159 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
sont envoys par la commande SEROUT. Linstruction SERIN
permet dattendre lventuelle rponse OK pendant 2 000 ms
(soit 2 s). Si les caractres OK sont rceptionns dans le temps
donn, le caractre suivant soit <CR> est plac dans la variable i.
Dans le cas contraire le programme saute la ligne repre par
ltiquette TEST i est alors vide, un bip est mis par le buzzer.
Il suffit de tester le contenu de i pour savoir si la liaison est tablie.
TEST: BEEP 4
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------

En principe le code PIN qui autorise lutilisation du tlphone


doit tre compos chaque mise sous tension. Avec un tlphone
classique vous pouvez le saisir partir du clavier. Ce qui nest
plus possible si vous utilisez un terminal GSM intgr, pour la
simple et bonne raison quil ne dispose pas de clavier ! Linstruction AT+CPIN suivie de votre code PIN est dans ce cas incontournable.
SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500

DUNOD La photocopie non autorise est un dlit.

'INITIALISATION DU ME
'--------------------

Le ME est configur en mode TEXT par la commande


AT+CMGF=1 . La commande AT+CNMI=1,1 indique au
ME que chaque nouveau SMS reu doit tre signal au TE.
SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
DELAY 500
SEROUT TXD,BDS,0,1,["AT+CNMI=1,1",13]
DELAY 500
'INITIALISATION DES VARIABLES
'---------------------------DEBUT:FOR i=0 TO 9
Tampon(i)=0
NEXT i
FOR i=0 TO 12
SMS(i)=0

159

09_Ch 5.fm Page 160 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
NEXT i
'ATTENTE RECEPTION SMS
'---------------------

Dsormais le C scrute lentre RXD dans lattente des caractres


TI . Ds leur rception les 10 caractres suivants sont placs
dans la variable Tampon. Une srie de 11 bips signale larrive
du SMS.
ATT:

SERIN RXD,BDS,0,10000,ATT,[WAIT("TI"),Tampon(0)~10]
FOR i=0 TO 10
BEEP 4
NEXT i

'LECTURE DU SMS RECU


'-------------------

Le TE configure le ME pour que la lecture soit faite dans la


mmoire dfinie par Tampon(3) et Tampon(4). La lecture du SMS
est provoque par la commande AT+CMGR=<index> . Ds la
rception des caractres !! les 13 caractres suivants sont
placs dans la variable SMS.
SEROUT TXD,BDS,0,1,["AT+CPMS=",34,Tampon(3),Tampon(4),
34,13]
DELAY 500
SEROUT TXD,BDS,0,1,["AT+CMGR="]
FOR i=7 TO 9
IF Tampon(i)>=48 AND Tampon(i)<=57 THEN SEROUT
TXD,BDS,0,1,[Tampon(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
SERIN RXD,BDS,0,5000,SUITE,[WAIT("!!"),SMS(0)~13]
SUITE: IF SMS(0)=0 THEN GOTO RAZ

En ltat actuel du programme, si lon considre que le SMS


envoy est de la forme !!S1,127 , la variable tableau SMS doit
contenir ce qui est indiqu tableau 5.20.
Tableau 5.20.

SMS(0)

SMS(1)

SMS(2)

SMS(3)

SMS(4)

SMS(5)

83dec

49dec

44dec

49dec

50dec

55dec

SMS(1) contient le numro de la sortie, compris entre 1 et 4.


SMS(3), SMS(4) et SMS(5) contiennent la valeur comprise entre 0
et 255 que doit prendre la sortie concerne. Cette valeur ne peut

160

09_Ch 5.fm Page 161 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
pas tre utilise directement, car elle est code en ASCII alors que
le circuit AD8400 rclame une valeur numrique. Malheureusement il nexiste aucune instruction en langage PicBasic pour
convertir une valeur de type texte en donne de type BYTE.
Attention il ne suffit pas de multiplier SMS(3) par 100, SMS(4) par
10, SMS(5) par 1 et dadditionner ces trois valeurs pour obtenir la
valeur souhaite. Voici la preuve : 49 100 + 50 10 + 55 1
= 5 455.
'CONVERSION ASCII -> DECIMAL
'

En fait, avant de faire ce calcul il faut retrancher 48 chaque


donne.
SMS(3) 48 = 49 48 = 1
SMS(4) 48 = 50 48 = 2
SMS(5) 48 = 55 48 = 7
Finalement en reprenant le calcul prcdent, on obtient bien la
valeur souhaite : 1 100 + 2 10 + 7 1 = 127.
La formule gnrale est donc :
D = (SMS(3) 48) 100 + (SMS(4) 48) 10 + (SMS(5) 48) 1
Traduit en langage PicBasic :
IF SMS(1)<=52 AND SMS(1)>=49 THEN

DUNOD La photocopie non autorise est un dlit.

SMS(3)=SMS(3)-48
SMS(3)=SMS(3)x100
SMS(4)=SMS(4)-48
SMS(4)=SMS(4)x10
SMS(5)=SMS(5)-48
SMS(1)=SMS(1)-49
D(SMS(1))=SMS(3)+SMS(4)+SMS(5)

Attention la valeur de consigne doit tre code sur 3 chiffres, veillez


complter par des zros si ncessaire. Par exemple : !!S1,009.
'GESTION DES SORTIES
'

La variable n (soit SMS(1)) contient le numro de la sortie en


cours compris entre 0 et 3. Il suffit dajouter 8 SMS(1) pour
obtenir la sortie du PicBasic qui slectionne le circuit AD8400.
Linstruction SHIFTOUT permet denvoyer la donne D(n) au
potentiomtre numrique. Cette instruction gnre un signal
dhorloge de synchronisation sur la sortie I/O0, tout en venant

161

09_Ch 5.fm Page 162 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
crire sriellement les donnes prsentes sur lentre I/O1. Le
paramtre suivant dfinit le mode dcriture, plac ici 1, il
indique que le MSB est prioritaire. Le dernier paramtre positionn 10, indique le nombre de bits de la donne D(n), 2 bits
pour ladresse (toujours 0) et 8 bits pour la donne (comprise
entre 0 et 255).
n=SMS(1)
SMS(1)=SMS(1)+8
OUT SMS(1),0
SHIFTOUT 0,1,1,D(n),10
OUT SMS(1),1
END IF
'ENVOI DUN SMS CONTENANT LA VALEUR POUR CHAQUE SORTIE
'-----------------------------------------------------

Si la variable SMS(3) ne contient pas un chiffre compris entre 1


et 4 mais un point dinterrogation ? , ceci dans le cas o le SMS
envoy est de la forme !!S?,06xxxxxxxx , le montage doit rdiger
et envoyer un SMS contenant les 4 valeurs de consigne. Si la
commande est suivie dune virgule et dun numro du tlphone, la boucle FOR/NEXT permet de balayer les 10 variables
SMS(3) SMS(12) pour reconstituer le numro. Si aucun numro
nest spcifi, ce qui est vrai si SMS(2)<>",", le message est envoy
au numro par dfaut indiqu en dur dans le programme.
n=0
IF SMS(1)="?" THEN
IF SMS(2)="," THEN
SEROUT TXD,BDS,0,1,["AT+CMGS=",34]
FOR i=3 TO 12
SEROUT TXD,BDS,0,1,[SMS(i)]
NEXT i
SEROUT TXD,BDS,0,1,[34,13]
ELSE
SEROUT TXD,BDS,0,1,["AT+CMGS=",34,"06xxxxxxxx",34,13]
END IF
DELAY 1000
SEROUT TXD,BDS,0,1,["ETAT DES SORTIES : "]
FOR i=0 TO 3
n=i+49
SEROUT TXD,BDS,0,1,["S",n,"=",DEC(D(i),3,0),32]
NEXT i
SEROUT TXD,BDS,0,1,[26]
DELAY 5000
END IF
'EFFACE LE SMS EN MEMOIRE
'------------------------

162

09_Ch 5.fm Page 163 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Pour terminer, le SMS est systmatiquement effac laide de la


commande AT+CMGD, pour viter une saturation de la mmoire
utilise. Du fait chaque SMS reu aura le mme index.
RAZ:

SEROUT TXD,BDS,0,1,["AT+CMGD="]
FOR i=7 TO 9
IF Tampon(i)>=48 AND Tampon(i)<=57 THEN SEROUT
TXD,BDS,0,1,[Tampon(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
DELAY 1000
GOTO DEBUT

Rsum des points importants

Tableau 5.21.

4 SORTIES ANALOGIQUES
Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
Parties du programme PicBasic modifier

DUNOD La photocopie non autorise est un dlit.

Code PIN (7208 par dfaut)


Numro de tlphone par dfaut pour lenvoi des SMS
Commande SMS reue

Action du montage

!!Sx,data

La valeur de consigne data exprime en dcimal, toujours code sur


3 chiffres,
(000 data > 255) est envoye sur la sortie pointe par x (4 x 1)

!!S?

La valeur de consigne associe pour chaque sortie est envoye par SMS
au numro spcifi en dur dans le programme

!!S?,06xxxxxxxx

La valeur de consigne associe pour chaque sortie est envoye par SMS
au numro indiqu

5.3 TLMESURES PAR GSM


4 entres logiques
Voici une carte comportant 4 entres logiques tout ou rien. Sur
demande de lutilisateur ltat logique des entres est envoy par
SMS. Il est possible de programmer la carte pour quun envoi se
dclenche sur un tat logique prcis des 4 entres. On peut envisager dutiliser ce montage comme systme dalarme protgeant
4 zones.

Schma lectrique
Voir Figure 5.22.

163

09_Ch 5.fm Page 164 Thursday, February 18, 2010 11:26 AM

Figure 5.22.
Schma
de la tlcommande
4 entres logiques.

INTERFACES GSM

164

09_Ch 5.fm Page 165 Thursday, February 18, 2010 11:26 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

RALISATIONS LECTRONIQUES
Les lignes I/O8 I/O11 du PicBasic sont utilises comme des
entres logiques. Pour une protection efficace du PicBasic les
4 entres sont isoles lectriquement des tensions externes qui
lui seront appliques. Le composant charg de cet isolement est
un optocoupleur (ou photocoupleur). Comme son nom le laisse
supposer le transfert de linformation binaire se fait optiquement ;
un tel circuit se compose de deux parties distinctes : la premire
est constitue dune diode infrarouge qui va venir mettre en
conduction le phototransistor contenu dans la deuxime partie.
Le 4N33 choisi ici possde un isolement lectrique de 2 500 V. En
thorie cela signifie quil faudrait appliquer une tension dau
moins 2 500 V en amont du circuit pour arriver endommager la
partie situe en aval. Dans notre cadre dutilisation on considre
que les tensions normales appliques sur les entres seront
comprises entre 0 et + 5 V. Sachant quune intensit de 10 mA
traversant la diode suffit a saturer le phototransistor, les rsistances R8 R11 ont une valeur de 470 . Une diode externe au
botier est utilise pour signaler visuellement lutilisateur ltat
de chaque entre. On notera la prsence des diodes 1N4002, D3
D6, qui protgeront les optocoupleurs dventuelles tensions
inverses importantes. Lorsque la tension dentre est nulle, voir
ngative, la diode interne loptocoupleur est teinte, par consquent le phototransistor est bloqu, sur lentre correspondante
du PicBasic on obtient une tension de + 5 V du fait de la prsence
de la rsistance de rappel (R12 R15) au + 5 V du montage. Lorsque la tension dentre est gale + 5 V, la diode interne loptocoupleur est allume et vient saturer le phototransistor, on
obtient par consquent une tension denviron 0,6 V considre
comme un tat logique bas par le PicBasic. On remarque que
ltat logique lu par le PicBasic est invers par rapport celui des
entres de la carte, il faudra en tenir compte dans le programme.
Une barrette de 4 mini-interrupteurs est connecte aux entres
I/O0 I/O3 du PicBasic. Les rsistances de rappel R4 R7 imposent une tension de + 5 V aux entres lorsque les interrupteurs
sont ouverts. Lorsque ltat des 4 interrupteurs est gal ltat
des 4 entres E1 E4, un SMS est envoy au destinataire de votre
choix. La Led L5 signale lenvoi du SMS (Figures 5.23 et 5.24).

Programme PICBASIC : 4el.bas


Comme le PicBasic doit la fois traiter larrive dun ventuel
SMS, et envoyer un SMS dans le cas o ltat logique des interrupteurs est identique aux entres, nous allons utiliser la
mthode de programmation mise en uvre pour le montage
4 sorties sur triacs . Comme le PicBasic ne possde pas dinterruption programme lors de larrive dune donne sur son entre
srie, il est ncessaire quil scrute en permanence la ligne RxD

165

09_Ch 5.fm Page 166 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.23.
Circuit imprim.

dans lattente du signal envoy par le ME concernant larrive


dun SMS, ce qui nest pas possible dans notre application. Priodiquement, cest le TE qui va consulter la mmoire du ME pour
savoir si un nouveau SMS y est stock. Entre deux consultations
le PicBasic vrifiera lgalit entre les entres et les interrupteurs,
si celle-ci est avre, un SMS dalerte sera envoy.
'DECLARATION DES CONSTANTES
'-------------------------CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'-------------------------

166

09_Ch 5.fm Page 167 Thursday, February 18, 2010 11:26 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

RALISATIONS LECTRONIQUES

Liste des composants


R1, R8 R11, R16 : 470
R2 R7, R12 R15 : 10 k
C1 : 100 nF (pas de 2,54 mm)
C2, C3 : 22 pF / cramique
C4, C10 : 100 nF / LCC jaune
C5, C6, C7, C8 : 1 F / tantale / 15 V
C9 : 220 F / lectrolytique / 15 V
D1, D3 D6 : diode 1N4002
D2 : diode 1N4148
L, L1 L5 : Led standard
Q : quartz 20 MHz
REG : rgulateur 7805
J1 : barrette HE10 2 contacts + cavalier

Figure 5.24.
Implantation
des composants.
BUZ : buzzer piezzo (sans lectronique intgre)
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle pour CI / coud 90
CN3 : connecteur pour cble de programmation
(LEXTRONIC)
CN4 : connecteur pour cran LCD (LEXTRONIC)
(facultatif)
IC1 : PICBASIC PB-3B (LEXTRONIC) + support DIL
28 broches (troit)
IC2 : MAX232 + support DIL 16 broches
OPT1 OPT4 : optocoupleur 4N33
DIP : interrupteur mini dip 4 contacts

167

09_Ch 5.fm Page 168 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
DIM
DIM
DIM
DIM
DIM
DIM

index(3) AS BYTE
SMS(13) AS BYTE
i AS BYTE
j AS INTEGER
n AS BYTE
num AS BYTE

'TEST LIAISON SERIE


'-----------------i=0
TEST: BEEP 12
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------

En principe le code PIN qui autorise lutilisation du tlphone


doit tre compos chaque mise sous tension. Avec un tlphone
classique vous pouvez le saisir partir du clavier. Ce qui nest
plus possible si vous utilisez un terminal GSM intgr, pour la
simple et bonne raison quil ne dispose pas de clavier ! Linstruction AT+CPIN suivie de votre code PIN est dans ce cas incontournable.
SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500

Comme nous navons pas besoin que le ME avertisse le TE de


larrive dun nouveau SMS, la commande AT+CNMI=1,1 est
retire.
'INITIALISATION DU ME EN MODE TEXT
'--------------------------------SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
DELAY 500
'SELECTION MEMOIRE ET INDEX POUR LECTURE SMS
'-------------------------------------------

Comme nous lavons dit plus haut, la mmoire de stockage et


lindex sont figs. Il faut donc dterminer ces deux paramtres
lavance. Concernant la mmoire <mem1>, on considre que les
SMS envoys par les particuliers ne possdent pas de classe. Cela

168

09_Ch 5.fm Page 169 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
signifie que le mobile qui reoit ce genre de SMS le stocke dans la
mmoire ME. Les autres types de mmoire sont surtout utiliss
par les oprateurs. Si votre tlphone le permet vous pouvez utiliser le paramtre MT qui permet aux commandes de lecture de
SMS de travailler avec toutes les mmoires. Ici nous avons choisi
la mmoire du tlphone do AT+CPMS= ME . De mme, la
variable index doit tre initialise avec lindex que portera le
prochain SMS rceptionn. Il correspond au premier emplacement de libre dans la mmoire slectionne. Pour le dterminer,
vous pouvez utiliser le logiciel convertSMS2 , aprs avoir
slectionn la mmoire soit ME dans notre cas, cliquez sur
le bouton Tous il suffit de relever lindex du premier emplacement de libre. Lindex par dfaut utilis ici est fix 900. Si
vous avez un index cod sur un ou deux chiffres, il suffit de
mettre les variables non utilises nul. Par exemple si index = 1,
il faudra modifier le programme comme ceci :
index(0)="":index(1)="":index(2)="1".
SEROUT TXD,BDS,0,1,["AT+CPMS=",34,"ME",34,13]
DELAY 500
index(0)="9":index(1)="0":index(2)="0"

DUNOD La photocopie non autorise est un dlit.

'INITIALISATION N TELEPHONE UTILISE PAR DEFAUT POUR LENVOI DES


SMS
'----------------------------------------------------------------

Le numro de tlphone utilis par dfaut pour envoyer des SMS


est initialis dans la mmoire eeprom du PicBasic. Pour ne pas
interfrer avec la partie programme, le stockage se fait dans les
10 derniers emplacements de la mmoire de FF6hex FFFhex.
Cette mmorisation ne se ralise quune seule fois car le programme teste avant si ladresse FF6hex est vide (notez quun
emplacement vide contient la donne FFhex).
IF EEREAD(&HFF6)=&HFF THEN
EEWRITE &HFF6,"0"
EEWRITE &HFF7,"6"
EEWRITE &HFF8,"x"
EEWRITE &HFF9,"x"
EEWRITE &HFFA,"x"
EEWRITE &HFFB,"x"
EEWRITE &HFFC,"x"
EEWRITE &HFFD,"x"
EEWRITE &HFFE,"x"
EEWRITE &HFFF,"x"
END IF
'INITIALISATION DES VARIABLES
'----------------------------

169

09_Ch 5.fm Page 170 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
OUT4,0
DEBUT: FOR i=0 TO 12
SMS(i)=0
NEXT i
'COMPARAISON INTERRUPTEURS / ENTREES
'-----------------------------------

En premier lieu, ltat logique des 4 interrupteurs est lu, puis


compar avec ltat des 4 entres de la carte, en cas dgalit le
sous-programme ALERT est excut.
IF IN(0)=IN(8) AND IN(1)=IN(9) THEN
IF IN(2)=IN(10) AND IN(3)=IN(11) THEN GOSUB ALERT
END IF
'REGARDE SI RECEPTION DUN SMS
'-----------------------------

Le programme, grce la commande AT+CMGR , regarde si


lemplacement mmoire indiqu par lindex contient un SMS. Si
lemplacement est vide le programme saute ltiquette RAZ.
Dans le cas contraire si le texte contient les caractres !! , les
13 caractres suivants, qui dfinissent la commande, sont stocks
dans la variable SMS, sinon le programme saute ltiquette RAZ.
SEROUT TXD,BDS,0,1,["AT+CMGR="]
FOR i=0 to 2
IF index(i)>=48 AND index(i)<=57 THEN SEROUT
TXD,BDS,0,1,[index(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
SERIN RXD,BDS,0,5000,SUITE,[WAIT("!!"),SMS(0)~13]
SUITE: IF SMS(0)=0 THEN GOTO RAZ
FOR i=0 TO 10
BEEP 12
NEXT i
'GESTION DES SMS RECEPTIONNES
'----------------------------

Dans un premier temps, seules les deux premires lettres constituant la commande reue par SMS sont vrifies par le programme. Si les lettres E? sont reconnues, le sous-programme
ETAT est appel. Si les lettres N, sont dtectes, le sousprogramme MAJNUM est appel. Si ce sont les lettres RA , la
sortie I/O4 qui signale et mmorise le fait quun message dalerte
a t envoy, est remise zro. La Led L5 est alors teinte.
IF SMS(0)="E" AND SMS(1)="?" THEN GOSUB ETAT
IF SMS(0)="N" AND SMS(1)="," THEN GOSUB MAJNUM

170

09_Ch 5.fm Page 171 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
IF SMS(0)="R" AND SMS(1)="A" THEN OUT4,0
GOTO RAZ
'MESSAGE DALERTE EN CAS DEGALITE
'---------------------------------

Si la sortie I/O4 est zro, le sous-programme ENV qui compose


la premire partie du SMS est appel. Ensuite vient se greffer la
fin du message, le texte => ALERTE . Le caractre 26dec soit
<EOF> dclenche lenvoi du SMS. La sortie I/O4 est positionne
1 pour viter que dautres SMS dalerte soient envoys. Lutilisateur devra envoyer un SMS avec la commande !!RA pour positionner la sortie I/O4 zro.
ALERT: IF OUTSTAT(4)=0 THEN
GOSUB ENV
SEROUT TXD,BDS,0,1,["=> ALERTE",26]
OUT4,1
DELAY 5000
END IF
RETURN
'ENVOI ETAT DES ENTREES
'----------------------

Appel du sous-programme ENV pour la composition du SMS


spcifiant ltat des 4 entres. Le caractre 26dec soit <EOF>
dclenche lenvoi du SMS.

DUNOD La photocopie non autorise est un dlit.

ETAT: GOSUB ENV


SEROUT TXD,BDS,0,1,[26]
DELAY 5000
RETURN
'Modification du numro utilis pour lenvoi des SMS
'---------------------------------------------------

Le numro contenu dans la commande !!N,06xxxxxxxx est sauvegard dans la mmoire eeprom du PicBasic aux adresses FF6hex
FFFhex. Cest ce numro qui sera utilis pour lexpdition des SMS.
MAJNUM:
i=2
FOR j=&HFF6 TO &HFFF
EEWRITE j,SMS(i)
i=i+1
NEXT j
'ENVOI DUN SMS CONTENANT LETAT DES 4 ENTREES
'---------------------------------------------

171

09_Ch 5.fm Page 172 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Si la variable SMS(2) contient une virgule, cest quil sagit de la
commande !!E?,06xxxxxxxx, le programme envoie alors le SMS
au numro indiqu par les variables SMS(3) SMS(12). Pour tous
les autres cas, le numro utilis est celui situ dans la mmoire
eeprom du PicBasic, aux adresses FF6hex FFFhex. Le message
expdi sur le rseau GSM contient ltat logique en cours des
4 entres de la carte.
ENV:

SEROUT TXD,BDS,0,1,["AT+CMGS=",34]
IF SMS(2)="," THEN
FOR i=3 TO 12
SEROUT TXD,BDS,0,1,[SMS(i)]
NEXT i
ELSE
FOR j=&HFF6 TO &HFFF
num=EEREAD(j)
SEROUT TXD,BDS,0,1,[num]
NEXT j
END IF
SEROUT TXD,BDS,0,1,[34,13]
DELAY 1000
SEROUT TXD,BDS,0,1,["ETAT DES ENTREES : "]
FOR i=8 TO 11
n=i+41
IF IN(i)=0 THEN
SEROUT TXD,BDS,0,1,["E",n,"=ON "]
ELSE
SEROUT TXD,BDS,0,1,["E",n,"=OFF "]
END IF
NEXT i
RETURN

'EFFACE LE SMS EN MEMOIRE


'------------------------

Cette partie du programme permet de systmatiquement effacer


le SMS en mmoire, ainsi le prochain SMS rceptionn aura
toujours le mme index. Ceci vite de prvoir une incrmentation
de la variable index et surtout de saturer la mmoire utilise.
Notez que cette partie de programme est appele mme si aucun
SMS nest effacer, le ME rpond par un message derreur qui
est ignor par le programme.
RAZ:

SEROUT TXD,BDS,0,1,["AT+CMGD="]
FOR i=0 TO 2
IF index(i)>=48 AND index(i)<=57 THEN SEROUT
TXD,BDS,0,1,[index(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
DELAY 1000
GOTO DEBUT

172

09_Ch 5.fm Page 173 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
Test du montage
Dans un premier temps il est prudent de tester le montage laide
dun PC avant dy relier un tlphone. Ralisez un cble RS232
laide dun cordon comportant 3 conducteurs et de 2 connecteurs
DB9 femelles cbler.
Reliez le montage au port srie du PC. Ouvrez une session du
logiciel Hyper Terminal, vous pouvez reprendre le fichier
Interfaces GSM.lnk prsent dans le chapitre 4. Rappelons
que la vitesse de transmission est de 9 600 bauds, 8 bits de donnes
et pas de contrle de flux. Alimentez le montage, aussitt les
caractres AT doivent apparatre sur lcran du PC. Rpondez
dans les 2 secondes qui suivent en tapant les caractres OK,
suivis dun retour chariot. La commande dinitialisation du mode
TEXT AT+CMGF=1 doit safficher lcran ; rpondez aussi par
OK et un retour chariot. Vous devez voir apparatre la commande AT+CMGR=900 (en admettant que index est fix 900),
rpondez dans les 5 secondes qui suivent en tapant la commande
!!E ? . Vous devez voir apparatre lcran les instructions permettant lenvoi dun SMS contenant ltat logique des 4 entres.
Appliquez maintenant un tat logique sur les entres correspondant celui des interrupteurs. Aussitt la Led L5 doit sallumer.
Vous devez voir apparatre lcran les instructions permettant
lenvoi dun SMS contenant ltat logique des 4 entres suivi cette
fois de la phrase => ALERTE . la prochaine apparition de la
commande AT+CMGR=900 vous pouvez tester la commande
!!RA qui doit provoquer lextinction de la Led L5.

DUNOD La photocopie non autorise est un dlit.

Si tout fonctionne correctement vous pouvez relier votre tlphone ou terminal GSM au montage.

Rsum des points importants


Voir Tableau 5.22.

4 entres analogiques
Voici une carte capable de convertir 4 tensions analogiques en
4 donnes numriques codes sur 8 bits et denvoyer le rsultat
par SMS sur demande de lutilisateur. La carte envoie galement
un SMS dalerte lorsquune tension dpasse un seuil pralablement programm.

Schma lectrique
Voir Figure 5.25.
Le PicBasic 3B possde 5 entres analogiques disponibles sur les
broches AD0 AD4. Dans le cadre de notre application nous
nous limiterons lacquisition de 4 tensions analogiques sur les

173

09_Ch 5.fm Page 174 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Tableau 5.22.
4 ENTRES LOGIQUES
Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
4 mini-interrupteurs, lorsque ltat logique est gal celui des 4 entres un SMS dalerte est envoy
Parties du programme PicBasic modifier

Code PIN (7208 par dfaut)


Mmoire lecture SMS <mem1> (ME par dfaut)
Index du prochain SMS reu (900 par dfaut)
Numro de tlphone utilis par dfaut pour lenvoi des SMS

Commande SMS reue

Action du montage

!!E?

Un SMS contenant ltat logique des 4 sorties est envoy au numro prsent dans la mmoire eeprom du PicBasic

!!N,06xxxxxxxx

Modifie dans la mmoire eeprom du PicBasic le numro utilis pour lenvoi


des SMS

!!E?,06xxxxxxxx

Un SMS contenant ltat logique des 4 sorties est envoy au numro indiqu

!!RA

Autorise le montage envoyer dautres SMS dalerte

entres AD0 (broche2) AD3 (broche5). La valeur de la tension


lire doit tre comprise entre 0 et + 5 V. Il est impratif que la
tension ne dpasse pas la barre des + 5 V, sous peine dendommager le PicBasic. Pour lacquisition de tensions suprieures
+ 5 V il est prvu sur la carte des emplacements pour ajouter les
rsistances R12 R15, chaque rsistance associe celle existante
forme un pont diviseur de tension.
titre dexemple tudions le cas de lentre E1 (figure 5.26). Le
raisonnement est bien entendu similaire pour les trois autres
entres de la carte. La tension AD0 applique au CAN du PicBasic
se calcule ainsi : AD0 = [R12/(R12 + R8)] E1. Pour chaque
valeur de E1 en entre on souhaite connatre la rsistance R12
utiliser, il nous faut donc une fonction de la forme R12 = f(E1).
On sait que lorsque E1 est au maximum on doit toujours avoir
AD0 = + 5 V. On en dduit la formule suivante :
R12 = (5 R8)/(E1 5).
Par exemple si lon souhaite mesurer une tension comprise entre
0 et + 10 V, on aura R12 = (5 R8)/(10 5) do R12 = R8. Pour
une tension comprise entre 0 et + 15 V on aura R12 = R8/10.
Notez la prsence dun condensateur de 22 nF qui limine les
variations brusques de la tension mesurer (filtre passe bas).

174

Figure 5.25.
Schma de la tlcommande
4 entres analogiques.

DUNOD La photocopie non autorise est un dlit.

09_Ch 5.fm Page 175 Thursday, February 18, 2010 11:26 AM

RALISATIONS LECTRONIQUES

CHAPITRE

175

09_Ch 5.fm Page 176 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.26.
Entre E1.

Avec la version du PicBasic que nous utilisons, la rsolution du


convertisseur est de 10 bits ; cela signifie que le PicBasic convertit
une tension en un nombre binaire compos de 10 bits. La prcision de la mesure est donc gale 5/210 = 0,005 V. Rappelons la
relation qui permet partir de la valeur binaire de calculer la
tension : V = (D 5)/210, V est la tension mesure exprime en
volts, D est la donne exprime en dcimal calcule par le PicBasic.
Par exemple si D = 512 cela signifie que la tension mesure est
gale 2,5 V. Linstruction basic qui permet de raliser une
conversion est ADIN(port), avec port compris entre 0 et 3.
Comme nous lavons dit dans lintroduction, la carte doit envoyer
un SMS ds lors que la tension mesure dpasse un seuil pralablement programm par lutilisateur. Dans un premier temps
pour signaler le dpassement du seuil sur chacune des entres,
nous utilisons 4 Led, associes bien entendu des rsistances de
limitation, sur les broches I/O8 I/O11 utilises en sorties.

Programme PICBASIC : 4ea.bas


Comme le PicBasic doit la fois traiter larrive dun ventuel
SMS, et envoyer un SMS dans le cas o une tension dpasse le
seuil dfini par lutilisateur, nous allons utiliser la mthode de
programmation mise en uvre pour le montage 4 sorties sur
triacs . Comme le PicBasic ne possde pas dinterruption
programme lors de larrive dune donne sur son entre srie,
il est ncessaire quil scrute en permanence la ligne RxD dans
lattente du signal envoy par le ME concernant larrive dun
SMS, ce qui nest pas possible dans notre application. Priodiquement, cest le TE qui va consulter la mmoire du ME pour
savoir si un nouveau SMS y est stock. Entre deux consultations
le PicBasic vrifiera que chacune des tensions mesures est infrieure au seuil correspondant.
Le programme ci-aprs est prvu pour lacquisition de tensions comprises entre 0 et + 5 V. Il est donc inutile dimplanter les rsistances
R12 R15 sur la carte. Toutefois si les rsistances en question sont
en place il suffirait de multiplier le rsultat de la conversion par
un coefficient. Par exemple si vous mesurez une tension comprise
entre 0 et + 10 V il faut multiplier par 2 le rsultat obtenu par le
CAN du PicBasic pour retrouver la tension dentre.

176

09_Ch 5.fm Page 177 Thursday, February 18, 2010 11:26 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

RALISATIONS LECTRONIQUES

Liste des composants


R1, R4 R7 : 470
R2, R3 : 10 k
R8 R11 : 47 k
R12 R15 : rsistance prvoir si la tension
mesurer est suprieure + 5 V
C1 : 100 nF (pas de 2,54 mm)
C2, C3 : 22 pF / cramique
C4, C10 : 100 nF / LCC jaune
C5, C6, C7, C8 : 1 F / tantale / 15 V
C9 : 220 F / lectrolytique / 15 V
C11 C14 : 22 nF / cramique
D1 : diode 1N4002
D2 : diode 1N4148
L, L1 L4 : Led standard
Q : quartz 20 MHz
REG : rgulateur 7805

Figure 5.27. (en haut)


Circuit imprim.
Figure 5.28. (en bas)
Implantation des composants.
BUZ : buzzer piezzo (sans lectronique intgre)
J1 : barrette HE10 2 contacts + cavalier
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle pour CI / coud 90
CN3 : connecteur pour cble de programmation
(LEXTRONIC)
CN4 : connecteur pour cran LCD (LEXTRONIC)
(facultatif)
IC1 : PICBASIC PB-3B (LEXTRONIC) + support DIL
28 broches (troit)
IC2 : MAX232 + support DIL 16 broches

177

09_Ch 5.fm Page 178 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
'DECLARATION DES CONSTANTES
'-------------------------CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'------------------------DIM index(3) AS BYTE
DIM SMS(13) AS BYTE
DIM i AS BYTE
DIM j AS INTEGER
DIM n AS BYTE
DIM FLAG AS BYTE
DIM seuil(4) AS BYTE
DIM num AS BYTE
DIM
DIM
DIM
DIM
DIM

D AS INTEGER
V AS INTEGER
V1 AS INTEGER
V2 AS INTEGER
V3 AS INTEGER

'TEST LIAISON SERIE


'-----------------i=0
TEST: BEEP 4
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'INITIALISATION DU ME EN MODE TEXT
'--------------------------------SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
DELAY 500
'INITIALISATION DES VARIABLES
'----------------------------

Comme nous lavons dit plus haut, la mmoire de stockage et


lindex sont figs. Il faut donc dterminer ces deux paramtres
lavance. Concernant la mmoire <mem1>, on considre que les
SMS envoys par les particuliers ne possdent pas de classe. Cela
signifie que le mobile qui reoit ce genre de SMS le stocke dans la
mmoire ME. Les autres types de mmoire sont surtout utiliss

178

09_Ch 5.fm Page 179 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
par les oprateurs. Si votre tlphone le permet vous pouvez
utiliser le paramtre MT qui permet aux commandes de lecture
de SMS de travailler avec toutes les mmoires. Ici nous avons
choisi la mmoire du tlphone do AT+CPMS= ME . De
mme, la variable index doit tre initialise avec lindex que
portera le prochain SMS rceptionn. Il correspond au premier
emplacement de libre dans la mmoire slectionne. Pour le
dterminer, vous pouvez utiliser le logiciel convertSMS2 ,
aprs avoir slectionn la mmoire soit ME dans notre cas,
cliquez sur le bouton Tous il suffit de relever lindex du
premier emplacement de libre. Lindex par dfaut utilis ici est
fix 900. Si vous avez un index cod sur un ou deux chiffres,
il suffit de mettre les variables non utilises nul. Par exemple
si index = 1, il faudra modifier le programme comme ceci :
index(0)="":index(1)="":index(2)="1".
Il faut dans cette partie dfinir galement les seuils des tensions
qui dclencheront lenvoi dun SMS. Chaque entre possde son
propre seuil exprim en dcimal. Attention comme il nest pas
possible de dclarer une variable de type tableau en INTEGER,
les valeurs doivent tre comprises entre 0 et 255. Voici la relation
qui permet de calculer la valeur dcimale code sur 8 bits en
fonction de la tension : D = (V 28)/5, par exemple si vous dsirez
quun SMS dalerte soit envoy si la tension mesure sur lentre
E1 dpasse 2,5 V, il vous faut initialiser la variable seuil(0) 127.

DUNOD La photocopie non autorise est un dlit.

SEROUT TXD,BDS,0,1,["AT+CPMS=",34,"ME",34,13]
DELAY 500
index(0)="9":index(1)="0":index(2)="0"
seuil(0)=127:seuil(1)=127:seuil(2)=127:seuil(3)=127
BYTEOUT 1,&b00001111
'INITIALISATION N TELEPHONE UTILISE PAR DEFAUT POUR LENVOI DES
SMS
'---------------------------------------------------------------

Le numro de tlphone utilis par dfaut pour envoyer des SMS


est initialis dans la mmoire eeprom du PicBasic. Pour ne pas
interfrer avec la partie programme, le stockage se fait dans les
10 derniers emplacements de la mmoire de FF6hex FFFhex.
Cette mmorisation ne se ralise quune seule fois car le programme teste avant si ladresse FF6hex est vide (notez quun
emplacement vide contient la donne FFhex).
IF EEREAD(&HFF6)=&HFF THEN
EEWRITE &HFF6,"0"
EEWRITE &HFF7,"6"
EEWRITE &HFF8,"x"

179

09_Ch 5.fm Page 180 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
EEWRITE
EEWRITE
EEWRITE
EEWRITE
EEWRITE
EEWRITE
EEWRITE
END IF

&HFF9,"x"
&HFFA,"x"
&HFFB,"x"
&HFFC,"x"
&HFFD,"x"
&HFFE,"x"
&HFFF,"x"

'INITIALISATION DES VARIABLES (suite)


'-----------------------------------DEBUT: FLAG=0
FOR i=0 TO 12
SMS(i)=0
NEXT i
'COMPARAISON TENSIONS
'--------------------

Dans un premier temps le PicBasic regarde si au moins un des


4 seuils programms est dpass. Si cette condition est vrifie et
que la Led de signalement correspondante est inactive, le sousprogramme ENV est appel.
FOR i=0 TO 3
n=i+8
D=ADIN(i)
D=D/4
IF D>=SEUIL(i) AND OUTSTAT(n)=1 THEN FLAG=1
NEXT i
IF FLAG=1 THEN GOSUB ENV
'REGARDE SI RECEPTION DUN SMS
'-----------------------------

Le programme grce la commande AT+CMGR regarde si


lemplacement mmoire indiqu par lindex contient un SMS. Si
lemplacement est vide le programme saute ltiquette RAZ.
Dans le cas contraire si le texte contient les caractres !! , les
13 caractres suivants, qui contiennent la commande, sont stocks
dans la variable SMS, sinon le programme saute ltiquette RAZ.
SEROUT TXD,BDS,0,1,["AT+CMGR="]
FOR i=0 to 2
IF index(i)>=48 AND index(i)<=57 THEN SEROUT
TXD,BDS,0,1,[index(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
SERIN RXD,BDS,0,5000,SUITE,[WAIT("!!"),SMS(0)~13]
SUITE: IF SMS(0)=0 THEN GOTO RAZ

180

09_Ch 5.fm Page 181 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
FOR i=0 TO 10
BEEP 4
NEXT i
'GESTION DES SMS RECEPTIONNES
'----------------------------

Seules les deux premires lettres constituant la commande reue


par SMS sont vrifies par le programme. Si les lettres E? sont
reconnues, le sous-programme ENV est appel. Si les lettres
N, sont reconnues, le sous-programme MAJNUM est appel.
Si ce sont les lettres RA , les 4 Led qui mmorisent le fait quun
message dalerte a t envoy sont remises zro.
IF SMS(0)="E" AND SMS(1)="?" THEN GOSUB ENV
IF SMS(0)="N" AND SMS(1)="," THEN GOSUB MAJNUM
IF SMS(0)="R" AND SMS(1)="A" THEN BYTEOUT 1,&b00001111
GOTO RAZ
'ENVOI DUN SMS CONTENANT LETAT DES 4 ENTREES
'---------------------------------------------

DUNOD La photocopie non autorise est un dlit.

Si la variable SMS(2) contient une virgule, cest quil sagit de la


commande !!E?,06xxxxxxxx, le programme envoie alors le SMS
au numro indiqu par les variables SMS(3) SMS(12). Pour tous
les autres cas, le numro utilis est celui situ dans la mmoire
eeprom du PicBasic, aux adresses FF6hex FFFhex. Le message
expdi sur le rseau GSM indique la valeur de la tension mesure en volts (0 + 5 V) sur chacune des 4 entres de la carte. Dans
le cas o la tension dpasse le seuil programm le message =>
seuil atteint est ajout. La Led de signalisation correspondante
est active pour viter lenvoi dautres SMS. Rappelons que la
commande !!RA permet de remettre zro les 4 Led.
ENV:

SEROUT TXD,BDS,0,1,["AT+CMGS=",34]
IF SMS(2)="," THEN
FOR i=3 TO 12
SEROUT TXD,BDS,0,1,[SMS(i)]
NEXT i
ELSE
FOR j=&HFF6 TO &HFFF
num=EEREAD(j)
SEROUT TXD,BDS,0,1,[num]
NEXT j
END IF
SEROUT TXD,BDS,0,1,[34,13]
DELAY 1000
SEROUT TXD,BDS,0,1,["TENSIONS MESUREES : "]
FOR i=0 TO 3

181

09_Ch 5.fm Page 182 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
n=i+48
D=ADIN(i)
GOSUB CONV
SEROUT TXD,BDS,0,1,["E",n,"=+",V1,",",V2,V3,"v "]
n=i+8
IF D>=SEUIL(i) AND OUTSTAT(n)=1 THEN
SEROUT TXD,BDS,0,1,["=> ALERTE "]
OUT n,0
ELSE
IF OUTSTAT(n)=0 THEN SEROUT TXD,BDS,0,1,["(seuil
atteint) "]
END IF
NEXT i
SEROUT TXD,BDS,0,1,[26]
DELAY 5000
RETURN
'Conversion DECIMAL -> TENSION -> ASCII
'--------------------------------------

Ce sous-programme permet de convertir la valeur dcimale


fournie par linstruction D=ADIN(i) en trois caractres ASCII. Le
rsultat contenu dans la variable D est cod sur 10 bits. Pour faciliter lcriture de notre programme nous allons travailler sur
8 bits, ce qui revient diviser le rsultat par 4. La prcision de la
mesure est donc gale 5/28 = 0,02 V ce qui nest dj pas si mal.
La formule qui permet de calculer la tension correspondante
est de la forme V = (D 5)/28. Comme le PicBasic ne peut pas
travailler avec des nombres virgule, nous allons multiplier le
rsultat par 100, en simplifiant, la relation devient
V = (100 D)/51. On obtient alors un nombre entier compris
entre 0 et 500. Pour extraire le chiffre des units nomm V1 on
divise le rsultat par 100, do la relation V1 = V/100. La
premire dcimale nomme V2 est obtenue par la formule
V2 = (V 100 V1)/10. Enfin la deuxime dcimale est obtenue
par la formule V3 = V (100 V1 + 10 V2), notez quil est
ncessaire de dcouper cette formule en 3 sous formules pour
que le PicBasic puisse effectuer le calcul de V3. Finalement on
ajoute chacun des chiffres le nombre 48dec pour obtenir le caractre ASCII correspondant. Le sous-programme ENV se chargera
dintercaler une virgule entre V1 et V2 lors de la composition du
SMS.
CONV: D=D/4
V=(100*D)/51
V1=V/100
V3=100*V1
V2=(V-V3)/10

182

09_Ch 5.fm Page 183 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
V3=V3+(10*V2)
V3=V-V3
V1=V1+48
V2=V2+48
V3=V3+48
RETURN
'MISE JOUR DU NUMRO POUR LENVOI DES SMS
'------------------------------------------

Le numro contenu dans la commande !!N,06xxxxxxxx est sauvegard dans la mmoire eeprom du PicBasic aux adresses FF6hex
FFFhex. Cest ce numro qui sera utilis pour lexpdition des SMS.
MAJNUM:
i=2
FOR j=&HFF6 TO &HFFF
EEWRITE j,SMS(i)
i=i+1
NEXT j
'EFFACE LE SMS EN MEMOIRE
'------------------------

Cette partie du programme permet de systmatiquement effacer


le SMS en mmoire, ainsi le prochain SMS rceptionn aura
toujours le mme index. Ceci vite de prvoir une incrmentation
de la variable index et surtout de saturer la mmoire du tlphone.
Notez que cette partie de programme est appele mme si aucun
SMS nest effacer, le ME rpond par un message derreur qui
est ignor par le programme.

DUNOD La photocopie non autorise est un dlit.

RAZ:

SEROUT TXD,BDS,0,1,["AT+CMGD="]
FOR i=0 TO 2
IF index(i)>=48 AND index(i)<=57 THEN SEROUT
TXD,BDS,0,1,[index(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
DELAY 1000
GOTO DEBUT

Rsum des points importants


Voir Tableau 5.23.

Thermomtre
Voici certainement le premier thermomtre GSM ! Vous pouvez
tout instant demander la temprature ambiante en degr Celsius
que vous recevrez sous forme dun SMS. Le montage vous avertit
automatiquement lorsque la temprature est ngative, idal donc

183

09_Ch 5.fm Page 184 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Tableau 5.23.
4 ENTRES ANALOGIQUES
Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
Les rsistances R12 R15 sont implanter sur la carte si la tension applique aux entres peut
dpasser + 5 V
Parties du programme PicBasic modifier

Code PIN (7208 par dfaut)


Mmoire lecture SMS <mem1> (ME par dfaut)
Index du prochain SMS reu (900 par dfaut)
Numro de tlphone utilis par dfaut pour lenvoi des SMS
Seuils de dclenchement de lenvoi dun SMS (seuil(0), seuil(1), seuil(2), seuil(3))

Commande SMS reue

Action du montage

!!E?

Un SMS contenant les 4 tensions mesures est envoy au numro spcifi


dans la mmoire eeprom du PicBasic

!!N,06xxxxxxxx

Modifie dans la mmoire eeprom du PicBasic le numro utilis pour lenvoi


des SMS

!!E?,06xxxxxxxx

Un SMS contenant les 4 tensions mesures est envoy au numro spcifi

!!RA

Autorise le montage envoyer dautres SMS dalerte

pour raliser un dtecteur de gel. Il est aussi possible de dfinir


une temprature maximale, lorsque celle-ci est atteinte, un SMS
davertissement vous est envoy, idal pour dtecter un incendie.

Schma lectrique
Ce montage utilise le circuit DS1620 du constructeur Dallas. Il
sagit dun capteur de temprature ambiante contenu dans un
botier DIL 8 broches. La liaison avec le PicBasic seffectue via
un bus SPI ncessitant seulement trois lignes pour dialoguer :
lhorloge CLK qui synchronise les donnes circulant sur DQ
et RST qui permet une remise zro du circuit. Ces trois lignes
sont respectivement relies aux broches I/O2 (broche 4), I/O3
(broche 5) et I/O1 (broche 3) du PicBasic. La temprature
comprise entre 55 C et + 125 C avec une prcision de 0,5 C
est transmise sous la forme dun mot de 9 bits en complment
2 sur la ligne DQ, le LSB (bit de poids le plus faible) est transmis
en premier. Comme le PicBasic ne peut pas traiter des nombres
virgule, la prcision de la mesure sera de 1 C.
On remarque que le 9e bit indique le signe, sil est gal 0 la
temprature mesure est positive, sil est gal 1 la temprature

184

09_Ch 5.fm Page 185 Thursday, February 18, 2010 11:26 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

RALISATIONS LECTRONIQUES

Temprature

Donne binaire

Donne Hex.

Donne Dc.

+ 125 C

0 11111010

00FA

250

+ 25 C

0 00110010

0032

50

0,5 C

0 00000001

0001

0 C

0 00000000

0000

0,5 C

1 11111111

01FF

511

25 C

1 11001110

01CE

462

55 C

1 10010010

0192

402

185

Figure 5.29.
Schma du
thermomtre GSM.

Tableau 5.24.
Relation
entre la donne
et la temprature.

09_Ch 5.fm Page 186 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.30.
Circuit imprim.

Figure 5.31.
Implantation
des composants.
Liste des composants
R1, R5 : 470
R2, R3 : 10 k
R4 : 1 k
C1 : 100 nF (pas de 2,54 mm)
C2, C3 : 22 pF / cramique
C4, C10, C11 : 100 nF / LCC jaune
C5, C6, C7, C8 : 1 F / tantale / 15 V
C9 : 220 F / lectrolytique / 15 V
D1 : diode 1N4002
D2 : diode 1N4148
L, L1 : Led standard
Q : quartz 20 MHz
REG : rgulateur 7805

BUZ : buzzer piezzo (sans lectronique intgre)


J1 : barrette HE10 2 contacts + cavalier
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle pour CI / coud 90
CN3 : connecteur pour cble de programmation
(LEXTRONIC)
CN4 : connecteur pour cran LCD (LEXTRONIC)
(facultatif)
IC1 : PICBASIC PB-3B (LEXTRONIC) + support DIL
28 broches (troit)
IC2 : MAX232 + support DIL 16 broches
IC3 : DS1620 + support DIL 8 broches

186

09_Ch 5.fm Page 187 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
est ngative. Dans le cas dune temprature positive le calcul est
trs simple, il suffit de diviser la donne par deux. Dans le cas
dune temprature ngative, il faut prendre en compte les
8 premiers bits et les soustraire 255 puis diviser le rsultat par
deux. Prenons titre dexemple la donne 1 11001110, le 9e bit est
1, donc il sagit dune temprature ngative. On prend les
8 autres bits soit 11001110bin = 206dec. On effectue lopration
255 206 = 49, 49/2 = 24,5 soit 25.

Programme PicBasic : . thermo.bas


'DECLARATION DES CONSTANTES
'-------------------------CONST BDS = 103
CONST RXD = 17
CONST TXD = 16
'DECLARATION DES VARIABLES
'------------------------DIM index(3) AS BYTE
DIM SMS(13) AS BYTE
DIM i AS BYTE
DIM j AS INTEGER
DIM num AS BYTE

La variable T mmorise la temprature courante. TH mmorise


le seuil de temprature haute. FLAG_TH et FLAG_TB indiquent
si un SMS de dpassement de seuil haut ou bas a t envoy.

DUNOD La photocopie non autorise est un dlit.

DIM
DIM
DIM
DIM

T AS INTEGER
TH AS INTEGER
FLAG_TH AS BYTE
FLAG_TB AS BYTE

'INITIALISATION DES VARIABLES


'----------------------------

La donne index nest pas dtermine automatiquement, il


faudra donc linitialiser (900 par dfaut), il en va de mme pour
la mmoire ( ME par dfaut). Le seuil de temprature haute
TH est ici fix 25 C, vous pouvez bien entendu le modifier
dans une plage allant de 1 125 C. La ligne qui suit effectue un
dcalage gauche de la donne TH, ce qui correspond une
multiplication par deux. Les indicateurs de dpassement de seuil
sont initialiss zro.
index(0)="9":index(1)="0":index(2)="0"
TH=25
TH=(TH<<1)
FLAG_TH=0
FLAG_TB=0

187

09_Ch 5.fm Page 188 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
'INITIALISATION N TELEPHONE UTILISE PAR DEFAUT POUR LENVOI DES
SMS
'---------------------------------------------------------------

Le numro de tlphone utilis par dfaut pour envoyer des SMS


est initialis dans la mmoire eeprom du PicBasic. Pour ne pas
interfrer avec la partie programme, le stockage se fait dans les
10 derniers emplacements de la mmoire de FF6hex FFFhex.
Cette mmorisation ne se ralise quune seule fois car le programme teste avant si ladresse FF6hex est vide (notez quun
emplacement vide contient la donne FFhex).
IF EEREAD(&HFF6)=&HFF THEN
EEWRITE &HFF6,"0"
EEWRITE &HFF7,"6"
EEWRITE &HFF8,"x"
EEWRITE &HFF9,"x"
EEWRITE &HFFA,"x"
EEWRITE &HFFB,"x"
EEWRITE &HFFC,"x"
EEWRITE &HFFD,"x"
EEWRITE &HFFE,"x"
EEWRITE &HFFF,"x"
END IF
'TEST LIAISON SERIE
'-----------------i=0
TEST: BEEP 9
SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------

En principe le code PIN qui autorise lutilisation du tlphone


doit tre compos chaque mise sous tension. Avec un tlphone
classique vous pouvez le saisir partir du clavier. Ce qui nest
plus possible si vous utilisez un terminal GSM intgr, pour la
simple et bonne raison quil ne dispose pas de clavier ! Linstruction AT+CPIN suivie de votre code PIN est dans ce cas incontournable.
SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500

188

09_Ch 5.fm Page 189 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
'INITIALISATION DU ME (MODE TEXT)
'-------------------------------SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
DELAY 500
SEROUT TXD,BDS,0,1,["AT+CPMS=",34,"ME",34,13]
DELAY 500
'PROGRAMME PRINCIPAL
'-------------------DEBUT:
'Initialisation variable tableau SMS
'
FOR i=0 TO 12
SMS(i)=0
NEXT i
'Mesure de la temprature
'

DUNOD La photocopie non autorise est un dlit.

Dans un premier temps le PicBasic demande quelle est la temprature, au circuit DS1620, en envoyant sur le bus SPI linstruction
AAhex laide de linstruction spcifique SHIFTOUT. Cette instruction gnre un signal dhorloge de synchronisation sur la
sortie I/O2, tout en venant crire sriellement les donnes
prsentent sur lentre I/O3. Lavant dernier paramtre de la
commande dfinit le mode dcriture, plac zro il indique que
le LSB est prioritaire. Pour lire la rponse donne par le DS1620
il faut ensuite utiliser linstruction SHIFTIN, les lignes dhorloge
et de donne sont identiques, le dernier paramtre indique la taille
en nombre de bits de la donne rcupre ici positionne 9. Les
instructions OUT 1,1 et OUT 1,0 assure linitialisation du capteur
de temprature avant et aprs sa consultation.
OUT 1,1
SHIFTOUT 2,3,0,&HAA
T=SHIFTIN(2,3,0,9)
OUT 1,0
'Regarde si un des seuils de T est franchi
'

Si la temprature mesure est suprieure 255, cela signifie que


le 9e bit est positionn 1, donc quil sagit dune temprature
ngative, le sous-programme ALERT est alors appel. Si la temprature mesure est positive et suprieure au seuil dfini par TH,
le sous-programme ALERT est aussi appel.
IF T>255 THEN
GOSUB ALERT

189

09_Ch 5.fm Page 190 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
ELSE
IF T>TH THEN GOSUB ALERT
END IF
'Regarde si nouveau SMS
'

La mmoire du ME spcifie par la donne index est consulte


pour savoir si un nouveau SMS est arriv.
SEROUT TXD,BDS,0,1,["AT+CMGR="]
FOR i=0 to 2
IF index(i)>=48 AND index(i)<=57 THEN SEROUT
TXD,BDS,0,1,[index(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
SERIN RXD,BDS,0,5000,SUITE,[WAIT("!!"),SMS(0)~13]
SUITE: IF SMS(0)=0 THEN GOTO RAZ
FOR i=0 TO 10
BEEP 9
NEXT i
'Envoi de la temprature courante
'

Si les deux premires lettres de la commande rceptionne sont


T et ? un SMS contenant la temprature courante est
envoy. Sil sagit des lettres T et R la mmorisation des
seuils de dpassement FLAG_TH et FLAG_TB sont mis zro.
Le code ci-dessous gnre le SMS qui contient la temprature
ambiante mesure, le seuil de dtection temprature haute et
le numro de tlphone utilis pour lenvoi des SMS dalertes.
Il fait notamment appel aux sous-programmes THM pour la
conversion dune temprature ngative (T > 255) ou THP pour la
conversion dune temprature positive (T < 255).
IF SMS(0)="T" AND SMS(1)="?" THEN
GOSUB NUMERO
IF T>255 THEN GOSUB THM ELSE GOSUB THP
j=(TH>>1)
SEROUT TXD,BDS,0,1,[" / Seuil Haut = +",DEC(j,3,1),"'C"]
SEROUT TXD,BDS,0,1,[" / Numero dalerte : "]
FOR j=&HFF6 TO &HFFF
num=EEREAD(j)
SEROUT TXD,BDS,0,1,[num]
NEXT j
SEROUT TXD,BDS,0,1,[26]
END IF
'Remise zro des flags
'

190

09_Ch 5.fm Page 191 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
Si les deux premires lettres de la commande rceptionne sont
T et R la mmorisation des seuils de dpassement
FLAG_TH et FLAG_TB sont mis zro. La Led de signalement
est teinte.
IF SMS(0)="T" AND SMS(1)="R" THEN
FLAG_TH=0
FLAG_TB=0
OUT 0,0
END IF
'Mise jour du seuil de temprature haut
'

Il est possible de programmer par SMS la valeur du seuil haut


qui dclenche lenvoi dun message dalerte. La commande est
de la forme !!TH,temp, la donne temp contient la valeur de seuil
comprise entre + 001 et + 125 C.
IF SMS(0)="T" AND SMS(1)="H" THEN
SMS(3)=SMS(3)-48
SMS(3)=SMS(3)*100
SMS(4)=SMS(4)-48
SMS(4)=SMS(4)*10
SMS(5)=SMS(5)-48
TH=SMS(3)+SMS(4)+SMS(5)
TH=(TH<<1)
END IF

DUNOD La photocopie non autorise est un dlit.

'Mise jour du numro utilis pour lenvoi des SMS


'

Le numro contenu dans la commande !!N,06xxxxxxxx est sauvegard dans la mmoire eeprom du PicBasic aux adresses FF6hex
FFFhex. Cest ce numro qui sera utilis pour lexpdition des SMS.
IF SMS(0)="N" THEN
i=2
FOR j=&HFF6 TO &HFFF
EEWRITE j,SMS(i)
i=i+1
NEXT j
END IF
'Efface le SMS dans la mmoire du tlphone
'

Cette partie du programme permet de systmatiquement effacer le


SMS en mmoire, ainsi le prochain SMS rceptionn aura toujours
le mme index. Ceci vite de prvoir une incrmentation de la
variable index et surtout de saturer la mmoire du tlphone.

191

09_Ch 5.fm Page 192 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
RAZ:

SEROUT TXD,BDS,0,1,["AT+CMGD="]
FOR i=0 to 2
IF index(i)>=48 AND index(i)<=57 THEN SEROUT
TXD,BDS,0,1,[index(i)]
NEXT i
SEROUT TXD,BDS,0,1,[13]
DELAY 5000
GOTO DEBUT

'ENVOI DU MESSAGE DALERTE GEL ou INCENDIE


'-----------------------------------------

Le sous-programme ALERT gnre le SMS dalerte de dpassement des seuils. Il fait appel aux sous-programmes GEL si la
temprature mesure est infrieure ou gale zro, INC si la temprature est suprieure au seuil TH fix en dbut de programme
(ou par SMS), condition quaucun des flags (FLAG_TB ou
FLAG_TH) ne soit positionn 1.
ALERT: IF FLAG_TB<>0 OR FLAG_TH<>0 THEN RETURN
GOSUB NUMERO
IF T>255 THEN
GOSUB GEL
ELSE
IF T>TH THEN GOSUB INC
END IF
SEROUT TXD,BDS,0,1,[26]
DELAY 5000
RETURN
'NUMEROTATION POUR LENVOI DUN SMS
'----------------------------------

Si la commande envoye est de la forme !!T?,06xxxxxxxx le


numro utilis pour lenvoi des SMS est celui spcifi par la commande. Pour les autres commandes le numro utilis est celui
inscrit dans la mmoire eeprom du PicBasic.
NUMERO:
SEROUT TXD,BDS,0,1,["AT+CMGS=",34]
IF SMS(1)="?" AND SMS(2)="," THEN
FOR i=3 TO 12
SEROUT TXD,BDS,0,1,[SMS(i)]
NEXT i
ELSE
FOR j=&HFF6 TO &HFFF
num=EEREAD(j)
SEROUT TXD,BDS,0,1,[num]
NEXT j
END IF
SEROUT TXD,BDS,0,1,[34,13]

192

09_Ch 5.fm Page 193 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
DELAY 1000
RETURN
'MESSAGES DALERTES
'------------------

Voici les sous-programmes GEL et INC qui font eux-mmes appel


aux sous-programmes THM et THP qui ralisent la conversion
de la temprature. On notera la mise 1 des variables FLAG_TB
et FLAG_TH afin dviter que dautres SMS dalertes ne soient
envoys tant que ces mmes variables ne seront pas remises
zro par la commande !!TR.
GEL:

GOSUB THM
SEROUT TXD,BDS,0,1,[" => RISQUE DE GEL"]
FLAG_TB=1
OUT 0,1
RETURN

INC:

GOSUB THP
SEROUT TXD,BDS,0,1,[" => INCENDIE"]
FLAG_TH=1
OUT 0,1
RETURN

'CALCUL DE LA TEMPERATURE
'------------------------

DUNOD La photocopie non autorise est un dlit.

Voici les sous-programmes, THM qui est charg de la conversion


dune temprature ngative et THP charg de la conversion dune
temprature positive.
THM:

T=255 AND T
T=(255-T)
T=(T>>1)
SEROUT TXD,BDS,0,1,["TEMPERATURE : -",DEC(T,3,1),"C"]
RETURN

THP:

T=(T>>1)
SEROUT TXD,BDS,0,1,["TEMPERATURE : +",DEC(T,3,1),"C"]
RETURN

Rsum des points importants


Voir Tableau 5.25.

193

09_Ch 5.fm Page 194 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Tableau 5.25.
THERMOMTRE
Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
lments du programme PicBasic modifier

Code PIN (7208 par dfaut)


Mmoire lecture SMS <mem1> (ME par dfaut)
Index du prochain SMS reu (900 par dfaut)
Numro de tlphone par dfaut pour lenvoi des SMS
Seuil de temprature haute TH. Lorsque temprature > TH un SMS dalerte est envoy.

Commande SMS reue

Action du montage

!!T?

Un SMS contenant la temprature mesure est envoy au numro spcifi


dans leeprom du PicBasic laide de la commande !!N,06xxxxxxxx

!!T?,06xxxxxx

Un SMS contenant la temprature mesure est envoy au numro indiqu

!!N, 06xxxxxx

Enregistre le numro de tlphone indiqu dans leeprom du PicBasic.


Cest ce numro qui sera utilis pour lenvoi des SMS dalertes. Par dfaut
le numro utilis est celui en dur dans le programme

!!TH,temp

Fixe le seuil de temprature haute la valeur spcifie par la donne temp


(125 temp 001)

!!TR

Autorise le montage envoyer dautres SMS dalerte, si la temprature


est ngative ou suprieure au seuil TH programm

5.4 CARTE ENTRES/SORTIES PILOTE PAR GSM


La carte prsente ici est en quelque sorte une compilation des
montages prcdents. Elle permet la commande de 32 sorties
logiques rparties sur 4 ports ainsi que la lecture de 32 entres
logiques rparties aussi sur 4 ports et de 8 entres analogiques
rparties sur 1 port. Le pilotage de ces 72 lignes est entirement
ralis par lenvoi et la rception de SMS sur le rseau de tlphonie mobile.

PicBasic
Le cur de notre carte est l encore un microcontrleur PicBasic
du constructeur Coren COMFILE TECHNOLOGY. Il existe
3 familles de PicBasic, celui que nous avons choisi ici, le PICBASIC-2S, appartient la deuxime famille, il est un bon compromis entre le cot et les possibilits offertes. Ce petit module
hybride au format DIP 34 broches est constitu dun PIC
16C74A-04, dun quartz de 4,19 MHz, dune mmoire eeprom

194

09_Ch 5.fm Page 195 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

24LC64 dune capacit de 8 Ko et dun petit connecteur qui permet


limplantation en mmoire du programme. Sans avoir branch le
fer souder, on dispose dj dune minicarte tout fait fonctionnelle. Comparativement au PicBasic 3B, le 2H dispose de 2 fois
plus de mmoire programme, de 9 entres logiques et 3 entres
analogiques supplmentaires. Toutefois le nombre dinstructions
traites par seconde est beaucoup plus faible, 56 000 pour le 3B
seulement 1 000 pour le 2S, mais cette diffrence nest pas du
tout pnalisante dans le cadre de notre application.

DUNOD La photocopie non autorise est un dlit.

Schma lectrique
Le schma lectrique (Figure 5.33) peut sembler complexe, au
premier coup dil. Nous allons voir quil nen est rien.

Port srie
Le PicBasic dispose dinstructions qui permettent dutiliser deux
de ses lignes I/O pour simuler une liaison RS232. Le format des
donnes transfres est 8 bits de donnes avec 1 bit de start, 1 bit
de stop et sans bit de parit.
Linstruction SERIN Port, Param1, Mode, Param2, Adress, [Var1]
permet dattendre la rception de donnes sous forme srie selon
le protocole RS232. La broche Port attend la ou les donnes Var1
une vitesse dfinie par Param1 (voir tableau 5.26). Durant cette
phase le PicBasic ne peut pas effectuer dautres tches et attend
la rception des donnes pendant une dure dfinie par Param2.

195

Figure 5.32.
Synoptique.

09_Ch 5.fm Page 196 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

196

09_Ch 5.fm Page 197 Thursday, February 18, 2010 11:26 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

RALISATIONS LECTRONIQUES

Figure 5.33.
Schma de la carte E/S
pilote par GSM.

197

09_Ch 5.fm Page 198 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.33 (suite).


Sections alimentation
et interface srie.

Si la dure dattente est dpasse, sans quaucune donne ne soit


reue, le programme passera directement ladresse dfinie par
Adress. Le paramtre Mode nest pas utilis et doit tre positionn 0.
Linstruction SEROUT Port, Param1, Mode, Param2, Adress,
[Var1] permet de transmettre des donnes galement sous forme
srie et au format RS232. La broche Port transmet la ou les donnes
Var1 une vitesse dfinie par Param1. Le paramtre Mode permet
dinstaurer une temporisation entre chaque caractre mis dont
la dure en millisecondes est fonction de Param2.
Les donnes reues et envoyes par ces deux instructions doivent
tre de type byte, cest--dire comprises entre 0 et 255. Si une
donne de type integer, comprise entre 0 et 65 535, est envoye,
seuls les 8 bits de poids faible seront transmis.
La broche I/O5 (broche n 9) sera utilise pour recevoir les
donnes srie, et la broche I/O6 (broche n 10) pour effectuer
des transmissions. La vitesse de transmission a t fixe
9 600 bauds, la valeur attribue au paramtre Param1 est donc
30. Comme notre carte doit pouvoir dialoguer avec le tlphone
via le port srie, il faut utiliser un circuit adaptateur de signaux

198

09_Ch 5.fm Page 199 Thursday, February 18, 2010 11:26 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

RALISATIONS LECTRONIQUES

Figure 5.34.
Circuit imprim
carte principale,
rduit de 10 %.

199

09_Ch 5.fm Page 200 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.35.
Implantation des composants
carte principale, rduite de 10 %.
Liste des composants carte principale
R1 : 470
R2 R9 : 220
C1 C8 : 100 nF / cramique multicouche
(pas de 2,54)
C9 : 220 F / 25 V / lectrolytique
C10, C15 : 100 nF / LCC jaune
C11 C14 : 1 F / tantale
D1 : 1N4002
L1 : Led
SIL1 SIL4 :
rseau de rsistance 10 k (8R+commun)
IC1 IC4 : 74HCT541
+ support DIL 20 broches
IC5 IC8 : 74HCT574
+ support DIL 20 broches
IC9 : MAX232
+ support DIL 16 broches
IC10 : PICBASIC-2S
REG : rgulateur 7805
+ dissipateur thermique
CN1 : DB9 mle pour CI coud 90
CN2 : bornier vis 2 plots
8 barrettes femelles HE14 10 broches
2 barrettes femelles HE14 17 broches
2 barrettes mles HE14 10 broches
1 barrette mle HE14 3 broches (facultatif)
1 connecteur pour cran LCD srie
(facultatif)

200

09_Ch 5.fm Page 201 Thursday, February 18, 2010 11:26 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

RALISATIONS LECTRONIQUES

Liste des composants platines dessais


AFF : 4 bargraphs 10 Led + support DIL 20 broches
DIP : 4 dips switchs 8 interrupteurs + support DIL 16 broches
L : 4 Led rouges rectangulaires
R : 40 rsistances 470
C : 8 connecteurs HE10 mles 10 broches
8 barrettes mles HE14 10 broches

201

Figure 5.36. (en haut)


Circuit imprim
platines dessais.
Figure 5.37. (en bas)
Implantation des composants
platines dessais.

09_Ch 5.fm Page 202 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
du type MAX232 (IC9 sur le schma) cbl avec 4 condensateurs
de 1 F, afin de transformer les signaux TTL issus du PicBasic en
signaux de + 10 V/ 10 V.
Tableau 5.26.
Diffrentes vitesses
de transmission.

Vitesse (bauds)

Param1 (instructions SERIN et SEROUT)

2 400

138

4 800

66

9 600

30

19 200

11

Protocole de communication

Tableau 5.27.

Les commandes envoyes sous forme de SMS travers le rseau


GSM sont rceptionnes par le tlphone puis transmises la
carte via le port srie. Les commandes dbutent toujours par les
caractres !! suivis dune lettre qui identifie la commande, par
exemple L pour lecture, E pour criture puis vient le
numro du port concern par la commande et finalement la
donne (dans le cas dune opration dcriture). Chaque paramtre est spar par une virgule (tableau 5.27).

Commande

Action

!!L, port

Lecture des 8 entres du port concern, avec 0 port 7

!!E, port, Data

criture de la donne data sur le port concern, avec 4 port 7

!!S, port, NumBit

Mise 1 de la sortie NumBit du port concern, avec 4 port 7 et 0 NumBit 7

!!R, port, NumBit

Mise 0 de la sortie NumBit du port concern, avec 4 port 7 et 0 NumBit 7

!!C, port, NumBit

Complmente la sortie NumBit du port concern, avec 4 port 7 et 0 NumBit 7

!!T

Effectue la lecture de toutes les entres logiques, le rsultat est envoy sous
forme de 4 octets correspondants respectivement aux ports 0, 1, 2 et 3

!!V

Effectue la lecture de toutes les entres analogiques, le rsultat est envoy sous
forme de 8 tensions lues sur les entres AD0 AD7

Ports E/S
La carte possde pas moins de 8 ports parallles comportant
chacun 8 lignes, 4 sont utilisables en entre et sont numrots de
0 3, 4 sont utilisables en sortie et sont numrots de 4 7.
Chacun des 8 ports est reli 8 lignes du PicBasic. Il existe deux
instructions spcifiques qui permettent de travailler simultanment avec des blocs de 8 lignes. Linstruction BYTEIN(Param1)

202

09_Ch 5.fm Page 203 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

DUNOD La photocopie non autorise est un dlit.

permet de rcuprer la valeur de 8 entres dans un mot binaire


8 bits dont chaque bit est limage de chacune des entres. Il est
possible avec le PICBASIC-2S daccder 3 blocs diffrents.
Linstruction BYTEOUT Port, Val permet de sortir la valeur
binaire 8 bits dune donne Val sur 8 sorties du PicBasic. Le paramtre port qui peut prendre les valeurs 1, 2 ou 3 permet daccder
aux 3 blocs. Le bloc n 1 que nous utilisons comme un bus de
donnes bidirectionnel laide des instructions BYTEIN et
BYTEOUT est constitu des lignes I/O8 (broche n 12) I/O15
(broche n 19). Dans le cas dune opration dcriture, la donne
est dabord lue sur le port srie puis recopie sur le bus de
donnes qui est alors configur en sortie (instruction BYTEOUT).
Dans le cas dune opration de lecture, la donne est dabord lue
par le bus de donnes qui est alors configur en entre (instruction
BYTEIN), puis envoye au tlphone via le port srie. Il est vident
quun seul port est utilis la fois, cette slection seffectuant par
lintermdiaire du bloc n 2 constitu des lignes I/O16 (broche
n 20) I/O23 (broche n 27) qui est en quelque sorte utilis
comme bus dadressage. Notez que la configuration des lignes
du PicBasic en entre ou en sortie est automatiquement ralise.
Par exemple si vous utilisez une instruction dcriture comme
BYTEOUT, les lignes concernes sont configures en sortie. Avec
linstruction de lecture BYTEIN les lignes concernes sont configures en entre.
Sur chacune des 8 lignes du bus de donnes on trouve une rsistance de 220 charge de protger la ligne du PicBasic contre
dventuelles mauvaises manipulations. Imaginons que vous
effectuez une opration dcriture sur le bus de donnes alors
que le bus dadressage rend actif, par exemple, le port n 0. Si par
malheur une sortie du bus de donnes qui est ltat haut est
relie une entre du port qui est ltat bas on obtient un court
circuit qui pour consquence de dtruire le PicBasic ! Mais,
comme nous avons pris le soin dinsrer une rsistance, la tension
dbite par la sortie du PicBasic ne dpassera pas les 20 mA
prconiss par le fabricant et le circuit sera sauv, ouf !
Entres
Chaque port dentre utilise un circuit 74HCT541. La slection
des ports 0, 1, 2 et 3 seffectue par les bits G1 et G2 qui sont relis
respectivement I/O23 (broche 27), I/O22 (broche 26), I/O21
(broche 25) et I/O20 (broche 24). Si une de ces lignes est ltat
bas loctet prsent sur lentre du 74HCT541 correspondant est
recopi sur sa sortie et envoy de ce fait sur le bus de donnes qui
est alors configur en entre. Si les bits G1 et G2 sont ltat haut,
les sorties du 74HCT541 sont ltat de haute impdance, ce qui

203

09_Ch 5.fm Page 204 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
revient dire que le circuit est dconnect du bus de donnes.
Les entres du 74HCT541 sont relies des rsistances de rappel.
Si lentre nest pas utilise, elle est mise ltat haut par une
rsistance de 10 k.
Sorties
Chaque port de sortie utilise un circuit 74HCT574. La slection
des ports 4, 5, 6 et 7 seffectue par les broches CLK (clock) qui sont
relies respectivement I/O19 (broche 23), I/O18 (broche 22),
I/O17 (broche 21) et I/O16 (broche 20). Chacune des 8 entres de
chaque 74HCT574 est relie au bus de donnes qui est alors
configur en sortie. Si une des entres CLK est soumise un front
montant, la donne prsente en entre du 74HCT574 correspondant est recopie sur sa sortie. Ltat de la sortie tant mmoris
dans un tampon jusqu la prochaine criture.
Port analogique
Le PICBASIC-2S dispose dorigine de 8 entres analogiques AD0
AD7 possdant une rsolution de 8 bits, soit une prcision de
20 mV sur la mesure. Linstruction trs simple comme ADIN(port)
permet de connatre la valeur de la tension prsente sur une
broche prcise. La valeur lire doit tre imprativement comprise
entre 0 et + 5 V sous peine de dtriorer le circuit. Pour la lecture
de niveaux suprieurs il faudra avoir recours par exemple des
ponts diviseurs de tensions ou des amplis OP cbls en diviseurs de tension. Le paramtre port correspond la broche du
module qui reoit la valeur mesurer : broches 0 4 et 24 26. La
valeur de la lecture est de type byte (comprise entre 0 et 255),
lquation qui permet de calculer la tension est : Tension
= (valeur 5)/255. Par exemple pour une valeur de 125 on obtient
une tension gale 2,45 V.

Ralisation
Il faudra un minimum de vigilance lors de la ralisation, la carte
comporte de nombreuses pistes proches les une des autres et
relativement fines. La majorit des pastilles seront percer laide
dun foret de 0,8 mm de diamtre. Seules les pastilles du bornier
et du rgulateur seront percer 1,5 mm. Concernant le montage
des composants, on commencera par la mise en place des
13 straps. On soudera ensuite les rsistances puis les condensateurs dont il faudra imprativement respecter la polarit, particulirement pour ceux destins au MAX232. On terminera par
les supports des CI, le 7805 et le connecteur DB9. Le support du
PicBasic est constitu de deux barrettes HE14 femelles de
17 contacts. Avant la mise en place des CI sur leurs supports

204

09_Ch 5.fm Page 205 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
respectifs, il est conseill de mettre le montage sous tension et de
vrifier la tension dalimentation laide dun voltmtre qui doit
tre gale + 5 V 5 % prs.

Programme PicBasic : ces.bas


tudions maintenant en dtail le programme destin au PicBasic.
'DECLARATION DES CONSTANTES
'--------------------------

Il ne faut surtout pas se priver de lutilisation des constantes qui


facilitent la comprhension et la maintenance dun programme.
De plus les constantes ne sont utilises que par le compilateur,
elles ne prennent donc pas de place dans la mmoire du PicBasic.
'Constantes ddies la gestion du port srie
'

Dclaration des constantes utilises par les instructions SERIN et


SEROUT. TXD correspond la ligne I/O6 du PicBasic, RXD
correspond ligne I/O5. BDS (pour bauds) dfinit la vitesse de
transmission ici fixe 9 600 car BDS = 30.
CONST BDS = 30
CONST RXD = 5
CONST TXD = 6

DUNOD La photocopie non autorise est un dlit.

'Constantes utilises pour ladressage de leeprom


'

De nombreux paramtres utiles la carte (code PIN, Mem, Index,


Numro) sont sauvegards dans la mmoire eeprom du
PicBasic. Les plages dadresses sont identifies par des constantes,
D_x dfinit ladresse de dbut, F_x dfinit ladresse de fin.
CONST
CONST
CONST
CONST
CONST
CONST
CONST
CONST
CONST
CONST
CONST
CONST

D_FlagPort
F_FlagPort
D_PORT
F_PORT
D_PIN
F_PIN
D_Mem
F_Mem
D_Index
F_Index
D_Numero
F_Numero

=
=
=
=
=
=
=
=
=
=
=
=

&H1FE5
&H1FE8
&H1FE9
&H1FEC
&H1FED
&H1FF0
&H1FF1
&H1FF2
&H1FF3
&H1FF5
&H1FF6
&H1FFF

205

09_Ch 5.fm Page 206 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Tableau 5.28.
Cartographie
de la mmoire
eeprom
du PicBasic.

Adresse
HEX

Constante

Nature

0000

Premier octet mmoire programme

0740

Dernier octet mmoire programme

Espace

1 857 octets

0741

6 308 octets
non utiliss

1FE4
1FE5

D_FlagPort

1er octet (Flag Port n 0)

1FE6

2e octet (Flag Port n 1)

1FE7

3e octet (Flag Port n 2)

1FE8

F_FlagPort

4e octet (Flag Port n 3)

1FE9

D_PORT

1er octet (Port n 0)

1FEA

2e octet (Port n 1)

1FEB

3e octet (Port n 2)

1FEC

F_PORT

4e octet (Port n 3)

1FED

D_PIN

1er chiffre

1FEE

2e chiffre

1FEF

3e chiffre

1FF0

F_PIN

4e chiffre

1FF1

D_Mem

1er caractre

1FF2

2e caractre

4 octets

4 octets

4 octets

2 octets

206

09_Ch 5.fm Page 207 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

1FF3

D_Index

1er chiffre

1FF4

2e chiffre

1FF5

F_Index

3e chiffre

1FF6

D_Numero

1er chiffre

1FF7

2e chiffre

1FF8

3e chiffre

1FF9

4e chiffre

1FFA

5e chiffre

1FFB

6e chiffre

1FFC

7e chiffre

1FFD

8e chiffre

1FFE

9e chiffre

1FFF

F_Numero

10e chiffre

3 octets

10 octets

'Constantes ddies la gestion des E/S de la carte


'

La constante adresse reprsente le bloc de 8 bits numro 2


(I/O16 I/O23), la constante donnee reprsente le bloc
numro 1 (I/O8 I/O15). Ces deux constantes seront utilises
dans le corps du programme avec les instructions BYTEIN et
BYTEOUT.

DUNOD La photocopie non autorise est un dlit.

CONST adresse = 2
CONST donnee = 1

La constante MaskPort est une constante de type tableau qui


contient 8 valeurs reprsentes ici en binaire. Chaque valeur est
accessible par un indice, par exemple MaskPort(2)= 11010000bin.
Ces valeurs seront utilises par le bus dadresse pour slectionner un des 8 ports de la carte, par exemple MaskPort(2) slectionne le port numro 2, car le bit 5 correspondant la sortie
I/O21 est zro. Rappelons que les ports 0 3 sont actifs si les
lignes correspondantes du bus dadressage (I/O23 I/O20) sont
ltat bas. Alors que les ports 4 7 sont actifs si les lignes correspondantes du bus dadressage (I/O19 I/O16) passent de ltat
bas ltat haut (front montant).
CONST BYTE MaskPort= (&b01110000,&b10110000,&b11010000,
&b11100000,&b11111000,&b11110100,
&b11110010,&b11110001)

207

09_Ch 5.fm Page 208 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
'DECLARATION DES VARIABLES
'------------------------'Variable ddie au stockage SMS
'
DIM SMS(30) AS BYTE
'Variables ddies au pilotage des E/S de la carte
'
DIM i AS BYTE
DIM n AS BYTE
DIM k AS BYTE
DIM DATA AS BYTE
DIM ValPort(4) AS BYTE
DIM bin(8) AS BYTE
DIM FlagPort(4) AS BYTE
DIM j AS INTEGER
DIM h AS INTEGER
DIM j1 AS INTEGER
DIM j2 AS INTEGER
DIM V AS INTEGER
DIM V1 AS INTEGER
DIM V2 AS INTEGER
DIM V3 AS INTEGER
'INITIALISATION DU BUS DADRESSE ET DE DONNEES
'---------------------------------------------

Toutes les sorties de la carte sont positionnes ltat logique bas


(Ports 4 7).
BYTEOUT adresse,&b11110000
BYTEOUT donnee, &b00000000
BYTEOUT adresse,&b11111111
'INITIALISATION DE LA VARIABLE TABLEAU ValPort
'--------------------------------------------FOR i=0 TO 3
ValPort(i)=0
NEXT i
'TEST LIAISON SERIE
'------------------

Pour sassurer que la liaison entre le montage et le tlphone est


valide, nous allons envoyer la commande la plus simple qui soit :
AT<CR>, le ME doit rpondre par <CR><LF>OK<CR><LF> si la liaison
est correcte. Les caractres AT suivis du caractre <CR>=13dec
sont envoys par la commande SEROUT. Linstruction SERIN
permet dattendre lventuelle rponse OK pendant 2 000 ms

208

09_Ch 5.fm Page 209 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
(soit 2 s). Si les caractres OK sont rceptionns dans le temps
donn, le caractre suivant soit <CR> est plac dans la variable i.
Dans le cas contraire le programme saute la ligne repre par
ltiquette TEST car i est vide. Il suffit de tester le contenu de i
pour savoir si la liaison est tablie. En phase de paramtrage, le
montage est connect un PC, si la commande AT le PC
rpond par OK suivi de la lettre P le montage se place en
phase de programmation, si le PC rpond par la lettre L, cest la
phase de lecture qui est active.
i=0
TEST: SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST,[WAIT("OK"),i]
IF i=0 THEN GOTO TEST
IF i="P" THEN GOTO PROG_EE
IF i="L" THEN GOTO LECT_EE
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------

DUNOD La photocopie non autorise est un dlit.

En principe le code PIN qui autorise laccs aux fonctions du


tlphone doit tre compos chaque mise sous tension. Avec un
tlphone classique vous pouvez le saisir partir du clavier. Ce
qui nest plus possible si vous utilisez un terminal GSM intgr,
pour la simple et bonne raison quil ne dispose pas de clavier !
Linstruction AT+CPIN suivie de votre code PIN est dans ce
cas incontournable. Le code PIN est stock dans la mmoire
eeprom du PicBasic entre les adresses D_PIN et F_PIN.
SEROUT TXD,BDS,0,1,["AT+CPIN=",34]
j1=D_PIN:j2=F_PIN
GOSUB READ_EE
SEROUT TXD,BDS,0,1,[34,13]
DELAY 500
'MEMOIRE UTILISEE POUR LE STOCKAGE DES SMS
'-----------------------------------------

La mmoire utilise pour le stockage des SMS rceptionns


(<mem1>) est galement contenue dans la mmoire eeprom du
PicBasic entre les adresses D_MEM et F_MEM.
SEROUT TXD,BDS,0,1,["AT+CPMS=",34]
j1=D_MEM:j2=F_MEM

209

09_Ch 5.fm Page 210 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
GOSUB READ_EE
SEROUT TXD,BDS,0,1,[34,13]
DELAY 500
'INITIALISATION DU ME
'--------------------

Le ME est configur en mode TEXT.


SEROUT TXD,BDS,0,1,["AT+CMGF=1",13]
DELAY 500
'INITIALISATION DE LA VARIABLE TABLEAU FLAGPORT
'----------------------------------------------

Les 8 variables FlagPort sont charges avec les donnes lues entre
les adresses D_FlagPort et F_FlagPort de leeprom. (voir la partie
de programme SCRUT pour comprendre leur utilit).
i=0
FOR j=D_FlagPort TO F_FlagPort
FlagPort(i)=EEREAD(j)
i=i+1
NEXT j
'INITIALISATION DES VARIABLES
'---------------------------DEBUT:
'Initialisation du bus de donnes
'

Le bus dadresse est positionn de manire ce quaucun port ne


soit slectionn. Pour des raisons de scurit, on effectue une
lecture bidon du bus de donnes pour configurer les broches
correspondantes du PicBasic en entres, cette prcaution vite
les courts-circuits si par mgarde un des ports 0 3 est actif alors
que le bus de donnes est configur en sortie.
BYTEOUT adresse,&b11110000
DATA=BYTEIN(donnee)
'Initialisation de la variable de stockage SMS
'
FOR i=0 TO 29
SMS(i)=0
NEXT i
'ATTENTE SMS
'-----------

210

09_Ch 5.fm Page 211 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

La lecture du SMS est provoque par la commande


AT+CMGR=<index> , le paramtre Index est rcupr dans la
mmoire eeprom du PicBasic. Ds la rception des caractres !!
les 12 caractres suivants sont placs dans la variable SMS. Si les
deux points dexclamation ne sont pas rceptionns dans les 5 s,
le programme bascule sur ltiquette SCRUT.
SEROUT TXD,BDS,0,1,["AT+CMGR="]
j1=D_Index:j2=F_Index
GOSUB READ_EE_Index
SERIN RXD,BDS,0,5000,SUITE,[WAIT("!!"),SMS(0)~12]
SUITE: IF SMS(0)=0 THEN GOTO SCRUT

En ltat actuel du programme, si lon considre que le SMS


envoy tait de la forme !!E,1,154 , la variable tableau SMS
doit contenir ce qui est indiqu tableau 5.29 (ltat des variables
SMS(7) SMS(29) nous est dans ce cas indiffrent).
SMS(0)

SMS(1)

SMS(2)

SMS(3)

SMS(4)

SMS(5)

SMS(6)

SMS(0) contient lidentifiant de la commande, ici E pour


criture.
SMS(2) contient le numro du port sollicit.
SMS(4), SMS(5) et SMS(6) contiennent la donne crire sur le
port.

DUNOD La photocopie non autorise est un dlit.

'CONVERSION ASCII -> DECIMAL


'---------------------------

Les valeurs contenues dans la variable SMS sont codes sous


forme de caractres ASCII, pour calculer la valeur numrique
exprime en dcimal il suffit de retrancher la valeur 48dec qui est
le code ASCII du chiffre zro. Par exemple si SMS(2) = 4ascii = 52dec,
do SMS(2) 48dec = 52dec 48dec = 4dec. Attention cette conversion ne doit pas tre faite concernant les commandes
!!N,06xxxxxxxx et !!F,xxxx.
IF SMS(0)<>"N" AND SMS(0)<>"F" THEN
SMS(2)=SMS(2)-48
SMS(4)=SMS(4)-48
SMS(5)=SMS(5)-48
SMS(6)=SMS(6)-48
END IF
'AIGUILLAGE DU PROGRAMME EN FONCTION DU CONTENU DE SMS(0)
'--------------------------------------------------------

211

Tableau 5.29.

09_Ch 5.fm Page 212 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Le test du contenu de la variable SMS(0) nous indique vers quelle
partie le programme doit sorienter. Dans le cas o la commande
reue nest pas valide, le programme bascule sur ltiquette RAZ
ce qui provoque la suppression du SMS.
IF SMS(0)="L"
IF SMS(0)="E"
IF SMS(0)="S"
IF SMS(0)="R"
IF SMS(0)="C"
IF SMS(0)="T"
IF SMS(0)="V"
IF SMS(0)="N"
IF SMS(0)="F"
GOTO RAZ

THEN
THEN
THEN
THEN
THEN
THEN
THEN
THEN
THEN

GOTO
GOTO
GOTO
GOTO
GOTO
GOTO
GOTO
GOTO
GOTO

LECTURE
ECRITURE
SETBIT
RESETBIT
COMPLBIT
LECTURES
ANALOG
MAJNUM
FLAG

'LECTURE ENTREES DU PORT POINTE PAR SMS(2)


'-----------------------------------------

Envoi dun SMS contenant ltat logique du port spcifi. Le sousprogramme NUM compose le numro de tlphone du destinataire, LEC1PORT effectue la lecture de la valeur dcimale et
binaire prsente sur le port sollicit. Finalement le code ASCII
26dec=EOF est envoye sur la sortie TxD, ce qui dclenche lenvoi
du SMS sur le rseau GSM.
LECTURE:
GOSUB NUM
GOSUB LEC1PORT
SEROUT TXD,BDS,0,1,[26]
DELAY 5000
GOTO RAZ
'LECTURE DE TOUTES LES ENTREES
'-----------------------------

Effectue la lecture de tous les ports de la carte. Le sous-programme


NUM compose le numro de tlphone du destinataire du SMS.
Pour la lecture de tous les ports on fait appel 8 fois au sousprogramme LEC1PORT en incrmentant dune unit la variable
SMS(2) chaque appel. Finalement le code ASCII 26dec=EOF est
envoy sur la sortie TxD, ce qui dclenche lenvoi du SMS sur le
rseau GSM.
LECTURES:
GOSUB NUM
FOR i=0 TO 7
SMS(2)=i
IF i<>0 THEN SEROUT TXD,BDS,0,1,[" / "]
GOSUB LEC1PORT
NEXT i

212

09_Ch 5.fm Page 213 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
SEROUT TXD,BDS,0,1,[26]
DELAY 5000
GOTO RAZ
'ECRITURE SUR PORT CONCERNE
'-------------------------ECRITURE:
'Conversion de la valeur de consigne
'

SMS(4) contient le chiffre des centaines de la valeur de consigne,


SMS(5) le chiffre des dizaines et SMS(6) le chiffre des units. Les
3 lignes ci-dessous permettent de reconstituer facilement la valeur
de consigne qui est ensuite enregistre dans la variable DATA.
SMS(4)=SMS(4)*100
SMS(5)=SMS(5)*10
DATA=SMS(4)+SMS(5)+SMS(6)
'Mise jour du port concern
'

Lors dune opration dcriture, on commence par envoyer la


valeur de consigne contenue dans DATA sur le bus de donnes.
Le bus dadresse est ensuite positionn de manire ce que la
donne en question soit transfre sur le port point par SMS(2).
Notez que lon mmorise la valeur applique sur le port dans la
variable tableau ValPort.

DUNOD La photocopie non autorise est un dlit.

MAJBIT:
IF SMS(2)>=4 THEN
BYTEOUT donnee,DATA
BYTEOUT adresse,MaskPort(SMS(2))
n=SMS(2)-4
ValPort(n)=DATA
END IF
GOTO RAZ
'MISE A 1 DUN BIT SUR PORT CONCERNE
'-----------------------------------

Grce au sous-programme UnBIT, la variable j contient le bit


quil faut mettre 1. Pour ne mettre 1 que la sortie concerne, il
faut faire un OU logique entre j et la valeur en cours sur le port.
SETBIT:
GOSUB UnBIT
DATA=j OR ValPort(n)
GOTO MAJBIT

213

09_Ch 5.fm Page 214 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Exemple : dans cet exemple, seul le bit n 4 passe 1, tous les
autres bits conservent leur tat.

OU

ValPort(n)

DATA

'MISE A 0 DUN BIT SUR PORT CONCERNE


'-----------------------------------

Grce au sous-programme UnBIT, la variable j contient le bit


quil faut mettre 0. Pour ne mettre 0 que la sortie concerne,
il faut faire un ET logique entre le complment de j (obtenu par
255-j) et la valeur en cours sur le port.
RESETBIT:
GOSUB UnBIT
DATA=(255-j) AND ValPort(n)
GOTO MAJBIT

Exemple : dans cet exemple, seul le bit n 4 passe 0, tous les


autres bits conservent leur tat.

(255-j)

ValPort(n)

DATA

ET

'INVERSE LETAT DUN BIT SUR PORT CONCERNE


'-----------------------------------------

Grce au sous-programme UnBIT, la variable j contient le bit


quil faut mettre 0. Pour ne mettre 0 que la sortie concerne, il
faut faire un OU EXCLUSIF (XOR) entre j et la valeur en cours
sur le port.
COMPLBIT:
GOSUB UnBIT
DATA=j XOR ValPort(n)
GOTO MAJBIT

Exemple 1 : dans cet exemple, seul le bit n 4 change dtat et


passe 1, tous les autres bits conservent leur tat.

214

09_Ch 5.fm Page 215 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

XOR

ValPort(n)

DATA

Exemple 2 : dans cet exemple, seul le bit n 4 change dtat et


passe 0, tous les autres bits conservent leur tat.

XOR

ValPort(n)

DATA

'LECTURE DES 8 ENTREES ANALOGIQUES


'---------------------------------

Voici la partie de programme charge de lire les 8 entres analogiques de la carte et denvoyer le rsultat sous forme de SMS.
Lacquisition seffectue en deux parties car les entres analogiques
ne se suivent pas (broches I/O0 I/O4 puis I/O24 I/O26).
Le sous-programme CONVTENS permet de convertir la valeur
lue en dcimale code sur 8 bits en une valeur code en ASCII.

DUNOD La photocopie non autorise est un dlit.

ANALOG:
SEROUT TXD,BDS,0,1,["ETAT DES 8 ENTREES ANALOGIQUES : "]
FOR i=0 to 7
k=i
IF i>4 THEN k=i+19
DATA=ADIN(k)
GOSUB CONVTENS
n=i+48
SEROUT TXD,BDS,0,1,["E",n,"= +",V1,",",V2,V3,"v"," "]
NEXT i
SEROUT TXD,BDS,0,1,[26]
GOTO RAZ
'MISE A JOUR DU NUMERO UTILISE POUR LENVOI DES SMS
'--------------------------------------------------

Non seulement il est possible de modifier le numro grce au


logiciel ConfigES_GSM.exe (montage connect un PC) mais
aussi par SMS (montage connect un tlphone GSM). Le
numro contenu dans la commande !!N,06xxxxxxxx est sauvegard dans la mmoire eeprom du PicBasic aux adresses
D_Numero F_Numero. Cest ce numro qui sera utilis pour
lexpdition des SMS.

215

09_Ch 5.fm Page 216 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
MAJNUM:
i=2
FOR j= D_Numero TO F_Numero
EEWRITE j,SMS(i)
i=i+1
NEXT j
'POSITIONNEMENT DES FLAGS
'------------------------

Les variables FlagPort peuvent tre positionnes par lenvoi dun


SMS de la forme : !!F,f0f1f2f3. Si fx = 1 le port n x ne peut pas
dclencher lenvoi dun SMS. Si fx = 0 le port n x peut dclencher lenvoi dun SMS. Avec 0 x 3. Si fx = ? la valeur du flag
nest pas modifie (voir la partie de programme SCRUT pour
comprendre lutilit des flags).
FLAG:
n=2
FOR i=0 TO 4
If SMS(n)<>"?" THEN FlagPort(i)=SMS(n)
n=n+1
NEXT i
GOTO RAZ
'EFFACE LE SMS EN MEMOIRE
'------------------------

Le SMS est systmatiquement effac, laide de la commande


AT+CMGD suivie de lindex, pour viter une saturation de la
mmoire utilise, et une incrmentation de lindex. Du fait chaque
SMS reu aura le mme index.
RAZ:
SEROUT TXD,BDS,0,1,["AT+CMGD="]
j1=D_Index:j2=F_Index
GOSUB READ_EE_Index
DELAY 500
GOTO DEBUT
'SCRUTATION DES ENTREES
'----------------------

Aprs avoir vrifi si un nouveau SMS est prsent dans la


mmoire du tlphone et, le cas chant, trait celui-ci, le PicBasic
effectue une lecture des ports n 0 3 et compare les 4 valeurs
lues avec celles situes entre les adresses D_PORT et F_PORT.
En cas dgalit un SMS contenant ltat des entres du port est
envoy, un message entre parenthses indique quil sagit dun
message dalerte. Lenvoi ne peut se faire que si la variable

216

09_Ch 5.fm Page 217 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
FlagPort correspondante est zro. Lors du premier envoi la
variable FlagPort est mise systmatiquement 1 pour viter que
le port correspondant envoie dautres SMS. Le logiciel ConfigES
_GSM.exe permet lutilisateur de dfinir les valeurs qui dclenchent lenvoi dun SMS, il est galement possible dinhiber cette
fonction en positionnant les variables FlagPort 1.
SCRUT:
h=D_PORT
FOR k=0 TO 3
IF FlagPort(k)="0" THEN
BYTEOUT adresse,MaskPort(k)
DATA=BYTEIN(donnee)
IF EEREAD(h)=DATA THEN
FlagPort(k)="1"
GOSUB NUM
SMS(2)=k
GOSUB MESS1PORT
SEROUT TXD,BDS,0,1,[" (Ceci est un message dalerte
!)",26]
END IF
END IF
h=h+1
NEXT k
GOTO RAZ

DUNOD La photocopie non autorise est un dlit.

'****************************************************************
'PROGRAMMATION DE LA CARTE AVEC UN PC
'****************************************************************

Tous les paramtres utiliss par le montage peuvent tre


consults et modifis dans leeprom du PicBasic grce au logiciel
ConfigES_GSM.exe , la carte est dans ce cas connecte au port
srie dun PC. Deux parties de code trs simples permettent la
lecture et lcriture dans leeprom. Notez que les donnes sont
prserves lorsque le montage est hors tension.
'LECTURE DES PARAMETRES SITUES EN EEPROM
'---------------------------------------

Toutes les donnes situes entre les adresses D_FlagPort (1FE5hex)


et F_Numero (1FFFhex) sont envoyes au PC. Le logiciel
ConfigES_GSM.exe se charge dafficher clairement lcran
les diffrents paramtres (voir copie dcran).
LEC_EE:
j1=D_FlagPort:j2=F_Numero
GOSUB READ_EE
i=0
GOTO TEST

217

09_Ch 5.fm Page 218 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
'ECRITURE DES DONNEES DE PARAMETRAGE DANS LEEPROM
'-------------------------------------------------

En phase dcriture le logiciel ConfigES_GSM.exe envoie tous


les paramtres au PicBasic qui les mmorise dans son eeprom,
crasant ainsi les anciennes valeurs.
PROG_EE:
SERIN RXD,BDS,0,5000,TEST,[WAIT("!!"),SMS(0)~30]
i=0
FOR j=D_FlagPort TO F_Numero
EEWRITE j,SMS(i)
i=i+1
NEXT j
i=0
GOTO TEST
'****************************************************************
'SOUS - PROGRAMMES
'****************************************************************
'LECTURE ENTREES DU PORT POINTE PAR SMS(2)
'-----------------------------------------

Le sous-programme LEC1PORT effectue la lecture dun seul port.


Le numro du port concern est contenu dans la variable SMS(2).
Le texte du SMS est compos par le sous-programme
MESS1PORT. Notez que pour les ports 4 7 la lecture seffectue
dans la variable tableau ValPort.
LEC1PORT:
IF SMS(2)<4 THEN
BYTEOUT adresse,MaskPort(SMS(2))
DATA=BYTEIN(donnee)
ELSE
n=SMS(2)-4
DATA=ValPort(n)
END IF
GOSUB MESS1PORT
RETURN
'COMPOSITION DU TEXTE DU SMS
'---------------------------

Composition du SMS, on rappelle le numro du port contenu par


la donne SMS(2), la donne lue sur le port contenu par DATA
est affiche en dcimal et en binaire (tat logique pour chaque
entre, voir sous-programme CONVBIN). On affiche galement
la valeur du Flag.

218

09_Ch 5.fm Page 219 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
MESS1PORT:
SEROUT TXD,BDS,0,1,["PORT "]
n=SMS(2)+48
SEROUT TXD,BDS,0,1,[n," = ",DEC(DATA,3,1)," "]
GOSUB CONVBIN
IF SMS(0)<>"T" THEN
SEROUT TXD,BDS,0,1,["=> "]
FOR i=0 TO 7
n=i+48
SEROUT TXD,BDS,0,1,["S",n,"=",bin(i)]
IF i<>7 THEN SEROUT TXD,BDS,0,1,[", "]
NEXT i
END IF
IF SMS(2)<4 THEN SEROUT TXD,BDS,0,1,[" (Flag=",FlagPort
(SMS(2)),") "]
RETURN
'PREPARE LENVOI DU SMS (composition du numro de tlphone)
'-----------------------------------------------------------

Le numro de tlphone utilis est rcupr dans la mmoire


eeprom du PicBasic partir de ladresse D_Numero jusqu
F_Numero.
NUM:
SEROUT TXD,BDS,0,1,["AT+CMGS=",34]
j1=D_Numero:j2=F_Numero
GOSUB READ_EE
SEROUT TXD,BDS,0,1,[34,13]
DELAY 1000
RETURN

DUNOD La photocopie non autorise est un dlit.

'CONVERSION LOGIQUE DEC -> BIN -> ASCII


'--------------------------------------

Sous-programme qui convertit la donne contenue dans la


variable DATA en valeurs binaires : b(0) b(7). Notez la prsence
de linstruction j<<1 qui effectue une rotation gauche de la
donne j, ce qui est quivalent une multiplication par 2 de j.
CONVBIN:
j=1
FOR k=0 TO 7
n=DATA AND j
IF n=j THEN bin(k)="1" ELSE bin(k)="0"
j=(j<<1)
NEXT k
RETURN
'CONVERSION ANALOGIQUE DEC -> BIN -> ASCII
'-----------------------------------------

219

09_Ch 5.fm Page 220 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Ce sous-programme permet de convertir la valeur dcimale fournie par linstruction DATA=ADIN(i) en trois caractres ASCII. La
formule qui permet de calculer la tension correspondante est de
la forme V = (D 5)/28. Comme le PicBasic ne peut pas travailler
avec des nombres virgule, nous allons multiplier le rsultat
par 100, en simplifiant, la relation devient V = (100 D)/51. On
obtient alors un nombre entier compris entre 0 et 500. Pour
extraire le chiffre des units nomm V1 on divise le rsultat par
100, do la relation V1 = V/100. La premire dcimale nomme
V2 est obtenue par la formule V2 = (V 100 V1)/10. Enfin la
deuxime dcimale est obtenue par la formule
V3 = V (100 V1 + 10 V2), notez quil est ncessaire de
dcouper cette formule en 3 sous formules pour que le PicBasic
puisse effectuer le calcul de V3. Finalement on ajoute chacun
des chiffres le nombre 48dec pour obtenir le caractre ASCII correspondant.
CONVTENS:
V=(100*DATA)/51
V1=V/100
V3=100*V1
V2=(V-V3)/10
V3=V3+10*V2
V3=V-V3
V1=V1+48
V2=V2+48
V3=V3+48
RETURN
'MASQUE UTILISE POUR MODIFIER 1 BIT
'----------------------------------

Le masque utilis pour les oprations sur 1 seul bit est ralis par
un simple dcalage gauche dune variable j initialise 1. Le
nombre de dcalage est dfini par SMS(4) qui contient le numro
de la sortie modifier. La boucle produit un dcalage gauche
de trop, do la prsence de la formule j=j/2.
UnBIT:
j=&b00000001
FOR i=0 TO SMS(4)
j=(j<<1)
NEXT i
j=j/2
n=SMS(2)-4
RETURN
'LECTURE DE LEEPROM ENTRE LES ADRESSES j1 et j2
'-----------------------------------------------

220

09_Ch 5.fm Page 221 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
READ_EE:
FOR j=j1 TO j2
n=EEREAD(j)
SEROUT TXD,BDS,0,1,[n]
NEXT
RETURN
'LECTURE DE LA DONNEE INDEX ENTRE LES ADRESSES j1 et j2 DE
LEEPROM
'---------------------------------------------------------------

la diffrence du sous-programme READ_EE, celui-ci vite


denvoyer au tlphone des caractres indsirables lorsque la
donne Index est code sur 1 ou 2 chiffres.
READ_EE_Index:
FOR j=j1 TO j2
n=EEREAD(j)
IF (n>=48) AND (n<=57) THEN SEROUT TXD,BDS,0,1,[n]
NEXT
RETURN

DUNOD La photocopie non autorise est un dlit.

Programmation et configuration
Le programme CES.bas destin au PicBasic, une fois compil,
ne fait que 1 857 octets + 27 octets de paramtrage. Sachant que
leeprom du PICBASIC-2S est de 8 Ko, le programme est laise
puisquil occupe moins de 1/4 de lespace. Cela peut sembler du
luxe mais vu la simplicit du langage de programmation basic il
est plus que probable que vous allez ajouter de nouvelles fonctionnalits la carte. Voyons tout dabord comment transfrer
notre programme au PicBasic. La programmation ne se fait pas
via le port srie, mais par le port parallle laide dun cordon
spcifique fourni par Lextronic. Si celui-ci est dj monopolis
par limprimante vous pouvez utiliser le port LPT2. Si votre ordinateur dispose que dun seul port parallle pas de problme,
il suffit de dconnecter temporairement limprimante. Lautre
extrmit du cordon prend place dans le petit connecteur prsent
sur le module PicBasic, un dtrompeur vous vite toute erreur de
branchement. Attention, vous devez alimenter la carte une fois
que le PC est allum et que le logiciel PICBASIC-LAB est actif.
Consultez la documentation fournie par Lextronic pour linstallation et ltalonnage du logiciel PICBASIC-LAB. Copiez ensuite
le programme CES.bas sur votre disque dur et ouvrez ce fichier
partir du logiciel PICBASIC-LAB. Cliquez sur licne RUN ce
qui a pour effet de compiler le programme, de le transfrer dans
leeprom et de lexcuter. Attention, vous devez imprativement
couper lalimentation de la carte avant de dconnecter le PicBasic
du PC.

221

09_Ch 5.fm Page 222 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Maintenant que le PicBasic est programm vous pouvez relier la
carte au port srie de votre PC pour procder la configuration.
Les diffrents paramtres utiles au montage seront envoys par
lintermdiaire du logiciel ConfigES_GSM.exe . Slectionnez
le port com sur lequel le montage est connect (com2 par dfaut),
cliquez alors sur le bouton Ouvrir . Un voyant signalant que
la communication est tablie doit sallumer en rouge, en fait les
caractres AT envoys par la carte sont bien rceptionns par
le PC. Entrez le code PIN de votre tlphone, la mmoire utilise
pour stocker les SMS rceptionns, lindex du prochain SMS et le
numro de tlphone utilis pour envoyer les SMS. Pour chacun
des ports n 0 3, il est possible de dfinir une valeur qui va
dclencher lenvoi de SMS, condition davoir coch la case
Envoi SMS . Chaque case cocher n 0 7 correspond une
entre. Par exemple, avec la copie dcran ci-aprs, si une fois le
montage connect un tlphone, toutes les entres du port n 0
sont 1, un SMS est envoy. Une fois tous ces paramtres dfinis,
cliquez sur le bouton ECRITURE pour les transfrer dans la
mmoire eeprom du PicBasic. Le bouton LECTURE permet
de sassurer que les paramtres sont correctement mmoriss.

Figure 5.38.
Configuration
de la carte.

Essais
Pour faciliter le contrle de bon fonctionnement des diffrents
ports de la carte, deux montages trs simples vous sont proposs.
Le premier est une platine de visualisation qui comporte 8 bargraphs constitus de 10 Led rouges rectangulaires associes des
rsistances de 470 qui limitent le courant. Cette platine senfiche
directement dans les 4 ports utiliss en sortie. En effet le 74HCT541
peut dbiter un courant denviron 50 mA sur chacune de ses

222

09_Ch 5.fm Page 223 Thursday, February 18, 2010 11:26 AM

CHAPITRE

DUNOD La photocopie non autorise est un dlit.

RALISATIONS LECTRONIQUES

Figure 5.39.
Schma
des platines dessais.

sorties ce qui est amplement suffisant. Notez quune Led du


bargraph est relie au + 5 V pour signaler la prsence de la tension
dalimentation, il reste une Led qui est non connecte.
Le deuxime montage permet par lintermdiaire dun dip switch
de mettre indpendamment la masse chacune des lignes dun
port utilis en entre. Rappelons qu ltat de repos chacun des
8 bits dun port est mis ltat haut par un rseau de rsistance.
Une Led rectangulaire associe chacun des dip switch signale

223

09_Ch 5.fm Page 224 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
la prsence de la tension dalimentation. laide de ces deux
petits montages vous pourrez valider le bon fonctionnement de
chaque port de la carte, celle-ci ne comportant aucun rglage.
Pour le contrle du port analogique il est possible de cbler un
potentiomtre de 10 k qui viendra se connecter sur les plots de
lalimentation et sur les lignes de lecture analogique.

Interface de puissance
En bonus, nous vous proposons une interface de puissance
base de triacs qui permet notre carte de piloter 8 charges indpendantes, alimentes sous une tension de 220 V. Cette interface
se connecte sur lun des 4 ports de sortie de la carte (ports n 4, 5,
6 ou 7). En ralisant 4 exemplaires de cette interface vous aurez
la possibilit de commander 32 charges !

Figure 5.40.
Schma
de linterface
de puissance.

Lutilisation de la tension du secteur nous conduit raliser une


isolation galvanique afin de protger correctement llectronique
place en amont. Cette isolation est ralise laide dun optocoupleur (du type MOC3041), un tel circuit se compose de deux
parties distinctes (isolation galvanique de 7 500 V) : la premire
est constitue dune diode infrarouge qui va venir mettre en
conduction le triac contenu dans la deuxime partie. Il dispose
galement dun dispositif qui dtecte le passage zro de la
tension du secteur afin dviter de gnrer des parasites lors de
lalimentation de la charge. Le courant de lordre de 10 mA,

224

09_Ch 5.fm Page 225 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

DUNOD La photocopie non autorise est un dlit.

Figure 5.41.
Circuit imprim.

ncessaire lactivation de la diode infrarouge, est gnr par la


sortie du port, la limitation de lintensit est assure par une rsistance de 470 . Outre la scurit offerte par les optocoupleurs,
leur utilisation nous permet de se passer dune alimentation en
courant continu. En effet la diode de commutation est alimente
par la sortie du port de la carte E/S et le triac par la tension
secteur. Donc nul besoin de transformateur et autre rgulateur
de tension. La faible puissance du triac interne loptocoupleur
(Imax = 100 mA) ne permet pas une alimentation directe dune
charge importante. Un deuxime triac mis en cascade permet de
disposer dune puissance beaucoup plus importante. Toutefois,
compte tenu de la largeur des pistes de la carte, il est conseill de
ne pas dpasser 200 W par sortie. Le composant rfrenc VR est

225

09_Ch 5.fm Page 226 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

Figure 5.42.
Implantation
des composants.
Liste des composants
R : 16 rsistances 470
IC : 8 MOC3041
ou TLP3041
TR : 8 triacs BTA08-400B
VR : 8 varistances 220 V
CN : 9 connecteurs vis
2 bornes
FUS : porte fusible + fusible
C : connecteur HE10
mle 10 broches

une varistance qui permet de protger le montage lors du pilotage


dune charge inductive, les phnomnes dauto-induction lors
de ltablissement et la coupure du courant peuvent dtriorer le
triac. Chaque triac possde donc une varistance monte en parallle. Ce composant voit son impdance chuter trs fortement en
prsence dune surtension (tension > tension nominale de 250 V),
protgeant ainsi le circuit plac en aval, en loccurrence le triac.
Pour terminer, un fusible vient complter la protection de notre
montage, le calibre sera dtermin en fonction du courant maximum absorb par les 8 charges.

226

09_Ch 5.fm Page 227 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Rsum des points importants


Tableau 5.30.
CARTE E/S PILOTE PAR GSM
Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
Paramtrage de la carte (montage reli au port srie dun PC)
Tous les paramtres ci-dessous peuvent tre modifis grce au logiciel ConfigES_GSM.exe .
Code PIN
Mmoire utilise pour la lecture des SMS
Index du prochain SMS
Numro de tlphone pour lenvoi des SMS
Valeurs sur les ports 0 3 qui dclenchent lenvoi de SMS

DUNOD La photocopie non autorise est un dlit.

Utilisation de la carte (montage reli un tlphone ou terminal GSM)


Commande SMS reue

Action du montage

!!L, port

Lecture des 8 entres du port concern, avec 0 port 7

!!E, port, Data

criture de la donne data sur le port concern, avec 4 port 7. Data


doit toujours tre cod sur 3 chiffres, compltez par des zros si ncessaire, ex : E,4,001

!!S, port, NumBit

Mise 1 de la sortie NumBit du port concern, avec 4 port 7 et


0 NumBit 7

!!R, port, NumBit

Mise 0 de la sortie NumBit du port concern, avec 4 port 7 et


0 NumBit 7

!!C, port, NumBit

Complmente la sortie NumBit du port concern, avec 4 port 7 et


0 NumBit 7

!!T

Effectue la lecture de toutes les lignes logiques, le rsultat est envoy


sous forme de 8 octets correspondants respectivement aux 8 ports de la
carte

!!V

Effectue la lecture de toutes les entres analogiques, le rsultat est


envoy sous forme de 8 valeurs lues sur les entres AD0 AD7

!!N,06xxxxxxxx

Enregistre le numro de tlphone indiqu dans leeprom du PicBasic.


Cest ce numro qui sera utilis pour lenvoi des SMS

!!F,f0f1f2f3

Positionnement des flags. Si fx = 1 le port nx ne peut pas dclencher


lenvoi dun SMS. Si fx = 0 le port nx peut dclencher lenvoi dun SMS.
Si fx = ? le flag nest pas modifi. Avec 0 x 3

227

09_Ch 5.fm Page 228 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM

5.5 GOLOCALISATION PAR GSM


La plupart des terminaux GSM, tel que le TM2 de Teltonika,
possdent une commande spcifique qui permet de connatre
lidentifiant de la cellule en cours dutilisation, le fameux code
Cell-ID exprim sur 4 chiffres et cod en hexadcimal. En thorie
tous les tlphones portables sont pourvus de cette fonctionnalit, car elle est prvue dans la norme GSM07.07, il sagit de la
commande AT+CREG dtaille dans le chapitre Commandes
AT . Cette instruction indique si le mobile est connect au
rseau et sous certaines conditions le paramtre Ci quivalent
au code Cell-ID.

Cell Monitor
Il est important de noter que les oprateurs gardent secret les
numros didentification de leurs cellules. Dans un premier temps
nous allons reprogrammer le montage vu prcdemment dans la
partie Rcepteur/metteur SMS afin dafficher sur lcran LCD
les paramtres LAC et Cell-ID, ainsi il vous sera possible didentifier et de situer gographiquement les cellules de votre environnement plus ou moins proche afin de vous constituer une
petite base de donnes. Nous en profiterons pour afficher galement la puissance du signal reu.

Programme du PicBasic : monitor.bas


'DECLARATION DES CONSTANTES
'--------------------------

Pour faciliter la maintenance du programme nous avons dclar


trois constantes : TXD qui correspond la ligne I/O17 (broche
n 22) du PicBasic, RXD qui correspond ligne I/O16 (broche
n 21) et BDS pour bauds qui dfinit la vitesse de transmission ici
fixe 9 600 car BDS = 103.
Const BDS = 103
Const RXD = 17
Const TXD = 16
'DECLARATION DES VARIABLES
'-------------------------

La variable tableau Tampon qui peut contenir jusqu 16 octets


est utilise diverses reprises dans le programme, notamment
pour stocker les donnes LAC et Cell-ID en attendant leur transfert vers lcran LCD. La variable Rssi stocke la valeur de la puissance du signal reu par le tlphone.

228

09_Ch 5.fm Page 229 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
DIM
DIM
DIM
DIM

Tampon(16)
Rssi
i
n

AS
AS
AS
AS

BYTE
BYTE
BYTE
BYTE

'INITIALISATION DE LECRAN LCD


'-----------------------------

Il convient dinitialiser lcran LCD connect au PicBasic grce


aux instructions spcifiques ce type dafficheur. Linstruction
SET PICBUS HIGH ou LOW permet de paramtrer la vitesse de
communication du bus spcialis PICBUS . Par dfaut, ce type
dafficheur est configur pour travailler une vitesse de
19 200 bauds donc linstruction SET PICBUS sera suivie de
linstruction HIGH (LOW pour une vitesse de 4 800 bauds).
Linstruction LCDINIT initialise lcran LCD.
SET PICBUS HIGH
LCDINIT

DUNOD La photocopie non autorise est un dlit.

'TEST LIAISON SERIE


'------------------

Pour sassurer que la liaison entre le montage et le tlphone est


valide, nous allons envoyer la commande la plus simple qui soit :
AT<CR>, le ME doit rpondre par <CR><LF>OK<CR><LF> si la liaison
est correcte. Les caractres AT suivis du caractre <CR>=13dec
sont envoys par la commande SEROUT. Linstruction SERIN
permet dattendre lventuelle rponse OK pendant 2 000 ms
(soit 2 s). Si les caractres OK sont rceptionns dans le temps
donn, le caractre suivant soit <CR> est plac dans la variable i.
Dans le cas contraire le programme saute la ligne repre par
ltiquette TEST0, i est alors vide. Il suffit de tester le contenu de i
pour savoir si la liaison est tablie.
i=0
TEST0: SEROUT TXD,BDS,0,1,["AT",13]
SERIN RXD,BDS,0,2000,TEST1,[WAIT("OK"),i]
TEST1: IF i<>0 THEN
LOCATE 0,0
PRINT "Liaison OK"
LOCATE 0,1
PRINT "Test mode ..."
ELSE
LOCATE 0,0
PRINT "PB liaison !"
DELAY 5000
END IF

229

09_Ch 5.fm Page 230 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Tant que la liaison nest pas tablie le programme boucle sur
ltiquette TEST0. Lcran LCD affiche le message PB liaison ! .
Une fois la liaison tablie le programme suit son cours normal.
IF i=0 THEN GOTO TEST0
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------

En principe le code PIN qui autorise lutilisation du tlphone


doit tre compos chaque mise sous tension.
SEROUT TXD,BDS,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'MESSAGE LCD DATTENTE
'---------------------

linitialisation du montage un message daccueil saffiche sur


lcran LCD. Les paramtres LAC et Cell-ID seront affichs lors
du changement de cellule.
CLS
LOCATE 0,0
PRINT "Acquisition"
LOCATE 0,1
PRINT "en cours..."
'INITIALISATION DES VARIABLES
'----------------------------

Initialisation de la variable Tampon grce une boucle


FOR/NEXT.
DEBUT: FOR i=0 TO 15
Tampon(i)=0
NEXT i
'PROGRAMME PRINCIPAL
'-------------------

Voici la partie du code qui permet de connatre les champs LAC


et Cell-ID. Linstruction AT+CREG=2 lance la procdure
dacquisition, chaque changement de cellule le tlphone envoie
au PicBasic les nouvelles donnes <lac> et <ci> qui identifient la
BTS en cours dutilisation. Chaque envoi est prcd par les

230

09_Ch 5.fm Page 231 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
caractres +CREG , le PicBasic se contente de dtecter la paire
de caractres EG et de placer les 16 caractres suivants dans la
variable Tampon.
SEROUT TXD,BDS,0,1,["AT+CREG=2"]
DELAY 500
SEROUT TXD,BDS,0,1,[13]
ATT1: SERIN RXD,BDS,0,10000,ATT1,[WAIT("EG"),Tampon(0)~16]
SEROUT TXD,BDS,0,1,["AT+CREG=0",13]

Un exemple de ce que peut contenir la variable Tampon est indiqu tableau 5.31.

Tableau 5.31.

Tampon(0) Tampon(1) Tampon(2) Tampon(3) Tampon(4) Tampon(5) Tampon(6) Tampon(7) Tampon(8)


:

"

Tampon(2) contient la donne <stat> qui reprsente ltat denregistrement du tlphone sur le rseau :
<stat> :
0 tlphone non enregistr, pas de recherche doprateur en
cours
1 tlphone enregistr sur le rseau
2 tlphone non enregistr, recherche doprateur en cours
6 enregistrement interdit
7 inconnu

DUNOD La photocopie non autorise est un dlit.

8 enregistr, roaming
Tampon(5) Tampon(8) contiennent les 4 octets codifiant la
donne <lac>.

Tableau 5.32.

Tampon(9) Tampon(10) Tampon(11) Tampon(12) Tampon(13) Tampon(14) Tampon(15)


"

"

Tampon(12) Tampon(15) contiennent les 4 octets codifiant la


donne <ci>.
Il ne reste qu afficher sur lcran LCD les donnes Stat, LAC et
Cell-ID. Le buzzer est activ pour signaler le changement de
cellule. La donne Stat est affiche entre crochets sur la premire
ligne, les deux autres paramtres apparaissent sur la deuxime
ligne.

231

09_Ch 5.fm Page 232 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
BEEP 9
BEEP 9
CLS
LOCATE 0,0
PRINT "[",Tampon(2),"]"
LOCATE 0,1
PRINT "LAC:",Tampon(5) ,Tampon(6) ,Tampon(7) ,Tampon(8)
PRINT " CI:",Tampon(12),Tampon(13),Tampon(14),Tampon(15)

Maintenant le PicBasic interroge le tlphone pour connatre la


qualit du signal laide de la commande AT+CSQ . Le tlphone rpond au montage en dbutant par les caractres
+CSQ suivis du paramtre Rssi qui indique la puissance du
signal. Ds la rception du couple de caractres SQ le PicBasic
mmorise les 4 caractres suivants dans la variable Tampon.
ATT2: SEROUT TXD,BDS,0,1,["AT+CSQ"]
DELAY 500
SEROUT TXD,BDS,0,1,[13]
SERIN RXD,BDS,0,1000,ATT2,[WAIT("SQ"),Tampon(0)~4]

Un exemple de ce que peut contenir la variable Tampon est indiqu tableau 5.33.
Tableau 5.33.

Tampon(0) Tampon(1) Tampon(2) Tampon(3)


:

Attention la valeur Rssi est comprise entre 0 et 31, le programme


doit avant de convertir cette valeur en dcimal, vrifier si elle est
code sur un ou deux chiffres. Si la valeur Rssi est code sur
2 chiffres, Tampon(2) contient le chiffre des dizaines et Tampon(3)
le chiffre des units. Dans le cas contraire, Tampon(2) contient le
chiffre des units, Tampon(3) contient alors une virgule qui est
ignore par le programme. Si la valeur Rssi est suprieure 31
cela signifie que la puissance du signal reu nest pas quantifiable
un "?" est dans ce cas mmoris dans la variable Rssi. Dans le cas
contraire le programme calcule la puissance exprime en dBm.
Notez que les membres de lquation sont inverss afin dobtenir
un rsultat positif. Le signe moins sera ajout au moment de
laffichage de la valeur sur lcran LCD.
IF Tampon(3)>=48 AND Tampon(3)<=57 THEN
Tampon(2)=Tampon(2)-48
Tampon(2)=Tampon(2)*10
Tampon(3)=Tampon(3)-48
Rssi=Tampon(2)+Tampon(3)
ELSE

232

09_Ch 5.fm Page 233 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Tampon(2)=Tampon(2)-48
Rssi=Tampon(2)
END IF
IF Rssi<=31 THEN
Rssi=113-(2*Rssi)
ELSE
Rssi="?"
END IF

Affichage du rsultat sur la premire ligne de lcran LCD, droite


de la donne Stat.
LOCATE 5,0
PRINT "P= -",DEC(Rssi,3,1),"dBm "
GOTO DEBUT

Rsum des points importants

Tableau 5.34.
CELL MONITOR

Configuration
Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
lments du programme PicBasic modifier
Code PIN (7208 par dfaut)

DUNOD La photocopie non autorise est un dlit.

Tracker GPS
Nous vous proposons la ralisation dun montage capable
denvoyer par SMS sa propre position gographique. La grande
prcision est due la mise en uvre dun rcepteur GPS miniature. Une fois les coordonnes longitude et latitude rentres dans
les applications telles que Google Map ou Google Earth, vous
localiserez prcisment la position de votre montage sur une
carte et/ou une photo satellite.

Positionnement gographique
Dterminer une position gographique sur notre bonne vieille
plante revient dterminer les coordonnes dun point situ
la surface dune sphre. Qui dit coordonnes dit repre cartsien
constitu de deux plans perpendiculaires. Le premier passe par
les ples Nord et Sud et par lobservatoire de Greenwich prs de
Londres : on lappelle le mridien dorigine. Le deuxime est
quidistance des ples Nord et Sud : il sagit de lEquateur. Positionner un point sur la Terre revient dterminer la distance qui
le spare du mridien dorigine : cest la longitude, et la distance

233

09_Ch 5.fm Page 234 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
qui le spare de lEquateur : cest la latitude. Ces distances se
mesurent en degrs dangle avec une tendue de 180 (Ouest et
Nord) +180 (Est et Sud).
Oprationnel depuis 1995, le GPS (Global Positioning System)
permet un rcepteur utilisant cette technologie de dterminer
prcisment sa position gographique. Un tel rcepteur est
susceptible dutiliser les quelque 24 satellites en orbite autour de
la Terre. Chaque satellite met en permanence un signal radio
contenant diverses informations, dont un signal horaire, lheure
dmission du signal et la position du satellite. Afin de se situer
le rcepteur GPS mesure le temps que met ce signal lui parvenir. En effectuant cette opration avec au moins trois satellites
simultanment il est capable de calculer les donnes longitude et
latitude.

Rcepteur GPS
Le rcepteur mis en uvre dans cette ralisation est un GPS
OEM subminiature rfrenc EM-406 ; il est distribu en France
par la socit Lextronic (http://www.lextronic.fr) pour un prix
abordable mme pour llectronicien amateur (au sens noble du
terme).
Ce GPS est bas sur le chipset SiRF StarIII, un des plus apprci du march, ce qui lui confre une stabilit exceptionnelle. Il
est capable dutiliser jusqu 20 satellites, ce qui lui permet
davoir un bon temps de rponse et une prcision correcte.
Un des avantages de ce modle est quil dispose dune antenne
de rception intgre GPS USGlobalSat, ce qui permet la ralisation dun montage compacte et discret.

Principales caractristiques du rcepteur EM-406


Dimensions 30 X 30 X 10,5 mm (antenne incluse)
Alimentation +4,5 +6,5 Vcc
Consommation 70 mA
Canaux 20
Position 10 m, 2D RMS
Vlocit 515 m/s
Altitude maxi. 18000 m
Acclration < 4 g
Temps de r acquisition 0,1 s
Hot Start 1 s
Warm Start 38 s
Cold Start 42 s

Le rcepteur dlivre une fois par seconde des trames conformes


la norme NMEA0183 (National Marine Electronics Associa-

234

09_Ch 5.fm Page 235 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

tion). Les trames sont composes de caractres ASCII qui transitent sous forme srie sur la sortie nomme TX. Le protocole
utilis est conforme la norme RS232 avec une vitesse prdfinie
de 4 800 bits/s.

DUNOD La photocopie non autorise est un dlit.

Chaque trame dbute par les caractres $GP. Trois caractres


supplmentaires identifient le type de trame envoye. LEM-406
est capable de gnrer 6 sortes de trames :

Nom

Exemple

Message ID

$GPGGA

UTC Time

161229.487

hhmmss.sss

Latitude

3723.2475

ddmm.mmmm

N/S Indicator

Longitude

12158.3416

E/W Indicator

E=east or W=west

Position Fix
Indicator

0 : fix not available or invalid


1 : GPS SPS Mode, fix valid
2 : Diff. GPS, SPS Mode , fix
valid
3 : GPS PPS Mode, fix valid

Satellites
Used

07

Range 0 to 12

HDOP

1.0

Horizontal Dilution of
Precision

MSL Altitude1

9.0

mtre

Units

mtre

Geoid
Separation1
Units

Description
GGA protocol header

N=north or S=south
dddmm.mmmm

mtre
M

Age of Diff.
Corr.

mtre
seconde

Diff. Ref.
Station ID

0000

Checksum

*18

<CR><LF>

Unit

Null fields when DGPS is


not used

End of message termination

235

Tableau 5.35.
GGA : GPS fix et date

09_Ch 5.fm Page 236 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Tableau 5.36.
GLL : position
gographique
longitude-latitude.

Nom

Exemple

Message ID

$GPGLL

Latitude

3723.2475

N/S Indicator

Longitude

12158.3416

E/W Indicator

UTC Time

161229.487

Status

Checksum

*2C

Unit

GLL protocol header


ddmm.mmmm
N=north or S=south
dddmm.mmmm
E=east or W=west
hhmmss.sss
A=data valid or V=data not valid

<CR><LF>

Tableau 5.37.
GSA :
satellites actifs.

Description

End of message termination

Nom

Exemple

Message ID

$GPGSA

Unit

Description
GSA protocol header

Mode 1

M : Manual-forced to operate in
2D or 3D mode
A : 2Dautomatic-allowed to
automatically switch 2D/3D

Mode 2

1 : Fix not Available


2 : 2D
3 : 3D

Satellite used

07

Sv on Channel 1

Satellite used

02

Sv on Channel 2

...
Satellite used

Sv on Channel 12

PDOP

1.8

Position dilution of Precision

HDOP

1.0

Horizontal dilution of Precision

VDOP

1.5

Vertical dilution of Precision

Checksum

*33

<CR><LF>

End of message termination

Dans le cadre de notre application nous utiliserons exclusivement la trame RMC qui nous donne les informations ncessaires
et suffisantes compte tenu de notre application : la longitude et la
latitude.

236

09_Ch 5.fm Page 237 Friday, March 5, 2010 7:47 PM

CHAPITRE

RALISATIONS LECTRONIQUES
Nom

Exemple

Unit

Message ID

$GPGSV

Number of Messages

Range 1 to 3

Message Number1

Range 1 to 3

Satellites in View

07

Satellite ID

07

Elevation

79

degr

Channel 1 (Maximum 90)

Azimuth

048

degr

Channel 1 (True. Range 0


to 359)

SNR(C/No)

42

dBHz

Range 0 to 99. Null when


not tracking

Satellite ID

27

degr

Channel 4

Elevation

27

degr

Channel 4

Azimuth

138

degr

Channel 4

SNR(C/No)

42

dBHz

Checksum

*33

Description
GSA protocol header

Channel 1 (Range 1 to 32)

...

<CR><LF>

End of message
termination

Exemple de trame RMC :


$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,E,*10
DUNOD La photocopie non autorise est un dlit.

Les champs sont spars par des virgules. Un checksum optionnel peut tre prsent la fin de la trame (non utilis ici), il est
prcd du caractre *. Chaque trame se termine par les caractres <CR><LF> (retour chariot, retour la ligne).
Schma lectrique
La broche I/O11 est ddie la rcupration des trames mises sur
la sortie TX du GPS. Toutefois les niveaux de tension entre ces deux
broches ne sont malheureusement pas compatibles. Le PicBasic
attend des niveaux de 0v ou +5v alors que le GPS dlivre des
niveaux compris entre 0v et 3,3v. Plutt que de mettre en uvre un
circuit intgr pour adapter les niveaux de tension, nous avons
choisi la simplicit en utilisant deux transistors BC547 travaillant en
bloqu ou satur. Lorsque la base de T1 est soumise une tension de
3,3v on relve sur le collecteur de T2 une tension de +5v.

237

Tableau 5.38.
GSV : satelites
visibles.

09_Ch 5.fm Page 238 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
Tableau 5.38.
RMC : donnes
minimales
exploitables
specifications.
spcifiques.

Nom

Exemple

Unit

Message ID

$GPRMC

UTC Time

161229.487

Status

Latitude

3723.2475

N/S Indicator

Longitude

12158.3416

E/W Indicator

Speed Over
Ground

0.13

noeud

Course Over
Ground

309.62

degr

Date

120598

Magnetic
Variation

Checksum

*10

RMC protocol header


hhmmss.sss
A=data valid or V=data not valid
ddmm.mmmm
N=north or S=south
dddmm.mmmm
E=east or W=west

True
ddmmyy

degr

<CR><LF>

Tableau 5.39.
VTG : direction et
vitesse de
dplacement.
ifi

Description

E=east or W=west

End of message termination

Nom

Exemple

Message ID

$GPVTG

Course

309.62

Reference

Course

Unit

VTG protocol header


degr

Speed

0.13

Units

Speed

0.2

Units

Checksum

*6E

<CR><LF>

Measured heading
True

degr

Reference

Description

Measured heading
Magnetic

noeud

Measured horizontal speed


Knots

km/h

Measured horizontal speed


Kilometers per hour

End of message termination

238

09_Ch 5.fm Page 239 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
Particularit concernant la ralisation
Le rcepteur GPS est livr avec un petit cble muni de deux
connecteurs. Sectionnez le cble afin dliminer un connecteur et
remplacez-le par un morceau de barrette scable 6 points. Ainsi
il est facile de le relier au connecteur CN5 du montage. Attention
lorientation du connecteur car celui-ci na plus de dtrompeur
se reprer par rapport au conducteur de couleur grise.

Programme du picbasic trackerGPS.bas


'DECLARATION DES CONSTANTES
'--------------------------

Constantes utilises pour la liaison srie avec le tlphone GSM :


Const BDS_GSM = 103
Const RXD_GSM = 17

Constantes utilises pour la liaison srie avec le GPS. La vitesse


de communication est de 4800bds. Pas de constante concernant
une sortie TXD puisque le PicBasic se contente de recevoir des
donnes en provenance du GPS.
Const BDS_GPS = 207
Const RXD_GPS = 11
Const BUZZER = 10
'DECLARATION DES CONSTANTES
'--------------------------

DUNOD La photocopie non autorise est un dlit.

Nous verrons lutilit des variables ci-dessous au fur et mesure


du dtail du programme.
DIM Tampon(43) AS BYTE
DIM Index(3) AS BYTE
Const TXD_GSM = 16
DIM j
AS INTEGER
M num
AS BYTE
'TEST LIAISON SERIE
'--------------------------

Pour sassurer que la liaison entre le montage et le tlphone est


valide, nous allons envoyer la commande la plus simple qui soit,
AT<CR>, le ME doit rpondre par <CR><LF>OK<CR><LF> si
la liaison est correcte.
DEBUT2:
i=0
TEST:
SEROUT TXD_GSM,BDS_GSM,0,1,["AT",13]

239

09_Ch 5.fm Page 240 Thursday, February 18, 2010 11:26 AM

Figure 5.44.
Schma du tracker GPS.

INTERFACES GSM

240

09_Ch 5.fm Page 241 Friday, February 19, 2010 8:29 PM

CHAPITRE

RALISATIONS LECTRONIQUES

Figure 5.45.
Circuit imprim.

DUNOD La photocopie non autorise est un dlit.

Figure 5.46.
Implantation
des composants.
Liste des composants
R1 : 470 
R2, R3, R5, R6 : 10k 
R4 : 2,2k 
C1, C4 : 100nF (pas de 2,54mm)
C2, C3 : 22pF / cramique
C5, C6, C7, C8 : 1uF / tantale / 15v
C9 : 220uF / lectrolytique / 15v
D1 : diode 1N4004
D2 : diode 1N4148
L : Led standard
Q : quartz 20MHz
REG : rgulateur 7805

BUZ : buzzer piezzo (sans lectronique intgre)


J1 : barrette HE10 2 contacts + cavalier
CN1 : bornier vis 2 plots
CN2 : connecteur DB9 mle pour CI / coude 90
CN3 : connecteur pour cble de programmation
(LEXTRONIC)
CN4 : connecteur pour cran LCD (LEXTRONIC)
CN5 : barrette scable tulipe 6 points
T1, T2 : transistor BC547
IC1 : PicBasic PB-3B (LEXTRONIC) + support 28
broches
IC2 : MAX232 + support DIL 16 broches
IC3 : GPS OEM subminiature rfrenc EM-406
(Lextronic)

241

09_Ch 5.fm Page 242 Friday, February 19, 2010 8:30 PM

INTERFACES GSM
SERIN RXD_GSM,BDS_GSM,0,2000,TEST1,[WAIT("OK"),i]
TEST1:
IF i=0 THEN GOTO TEST
BEEP BUZZER
DELAY 1000
BEEP BUZZER
'SELECTION DE lALPHABET GSM
'--------------------------SEROUT TXD_GSM,BDS_GSM,0,1,["AT+CSCS=",34,"GSM",34,13]
DELAY 500
'CODE PIN
'--------

Noubliez pas de modifier le code pin par dfaut gale 7208 :


SEROUT TXD_GSM,BDS_GSM,0,1,["AT+CPIN=",34,"7208",34,13]
DELAY 500
'INITIALISATION DU ME
'--------------------

Le ME est configur en mode TEXT par la commande


AT+CMGF=1. La commande AT+CNMI=1,1 indique au ME que
chaque nouveau SMS reu doit tre signal au TE. Ainsi larrive
dun SMS sera signale par lenvoi au ME de la commande
+CMTI: <mem1>,<index> :
SEROUT TXD_GSM,BDS_GSM,0,1,["AT+CMGF=1",13]
DELAY 500
SEROUT TXD_GSM,BDS_GSM,0,1,["AT+CNMI=1,1",13]
DELAY 500
'INITIALISATION N TELEPHONE UTILISE
PAR DEFAUT POUR L'ENVOI DES SMS
'-----------------------------------

Le numro de tlphone utilis par dfaut pour envoyer des SMS


est initialis dans la mmoire EEPROM du PicBasic. Pour ne pas
interfrer avec la partie programme, le stockage se fait dans les
10 derniers emplacements de la mmoire de FF6hex FFFhex.
Cette mmorisation ne se ralise quune seule fois car le
programme teste avant si ladresse FF6hex est vide (notez quun
emplacement vide contient la donne FFhex).
IF EEREAD(&HFF6)=&HFF THEN
EEWRITE &HFF6,"0"
EEWRITE &HFF7,"6"
EEWRITE &HFF8,"x"
EEWRITE &HFF9,"x"
EEWRITE &HFFA,"x"
EEWRITE &HFFB,"x"

242

09_Ch 5.fm Page 243 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

EEWRITE &HFFD,"x"
EEWRITE &HFFE,"x"
EEWRITE &HFFF,"x"
END IF
'INITIALISATION DES VARIABLES
'----------------------------

Initialisation des
programme :

diffrentes

variables

utilises

par

le

DEBUT:
FOR i=0 TO 42
Tampon[i]=0
NEXT i
'ATTENTE RECEPTION SMS
'---------------------

Dsormais le uC scrute lentre RXD dans lattente des caractres


TI . Ds leur rception les 10 caractres suivants sont placs dans
la variable Tampon. Une srie de 11 bips signale larrive du SMS :
ATT_SMS:
SERIN RXD_GSM,BDS_GSM,0,10000,ATT_SMS, [WAIT("TI"),Tampon(0)~10]
FOR i=0 TO 10
BEEP BUZZER
DELAY 500
NEXT i

DUNOD La photocopie non autorise est un dlit.

Comme lindex sincrmente chaque nouveau message rceptionn, il est ncessaire dextraire cette donne pour savoir o
aller lire le message en mmoire. Dans ltat actuel des choses
admettons que la donne Tampon contient ceci :
On considre dans le programme que la valeur <index> sera
code au maximum sur 3 chiffres. Il est possible, comme le
montre cet exemple, que le stockage des SMS se fasse dans la
mmoire ME partir de lindex 900 :
'LECTURE DU SMS RECU
'-------------------

Le TE configure le ME pour que la lecture soit faite dans la


mmoire dfinie par Tampon(3) et Tampon(4) :
Tableau 5.40.
Tampon
(0)
:

Tampon
(1)

Tampon
(2)

Tampon
(3)

Tampon
(4)

Tampon
(5)

Tampon
(6)

Tampon
(7)

Tampon
(8)

Tampon
(9)

"

"

243

09_Ch 5.fm Page 244 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
SEROUT TXD_GSM,BDS_GSM,0,1,
["AT+CPMS=",34,Tampon(3),Tampon(4),34,13]
DELAY 500

La lecture du SMS est provoque par la commande


AT+CMGR=<index> . Au pralable nous stockons la donne
index dans la variable tableau du mme nom. Si la donne
<index> est code sur un ou deux chiffres, on rcupre des
donnes indsirables (<CR><LF>). Pour les liminer lors de la
reconstitution de lindex du message on sassure que les donnes
Index(0) Index(1) contiennent un caractre compris entre
0ASCII=48dec et 9ASCII=57dec :
Index(0)=Tampon(7)
Index(1)=Tampon(8)
Index(2)=Tampon(9)
SEROUT TXD_GSM,BDS_GSM,0,1,["AT+CMGR="]
FOR i=0 TO 2
IF Index(i)>=48 AND Index(i)<=57 THEN SEROUT
TXD_GSM,BDS_GSM,0,1,[Index(i)]
NEXT i
SEROUT TXD_GSM,BDS_GSM,0,1,[13]

Ds la rception des caractres !!, les 7 caractres suivants sont


placs dans la variable Tampon. Dans le cas o les caractres !! ne
sont pas dtects dans les 5 secondes, le programme passe au
label SUITE, comme la variable Tampon(0) est vide, le SMS est
effac. Si le SMS contient moins de 7 caractres, le programme
passe galement au label SUITE mais comme Tampon(0) est
dans ce cas diffrent de 0, le programme suit son cours :
SERIN RXD_GSM,BDS_GSM,0,5000,SUITE,[WAIT("!!"),Tampon(0)~13]
SUITE:
IF Tampon(0)=0 THEN GOTO RAZ

En ltat actuel du programme, si lon considre que le SMS


envoy tait de la forme !!G?, la variable tableau SMS doit contenir au minimum ceci :
Tableau 5.41.
Tampon
(0)

Tampon
(1)

IF Tampon(0)<>"G" OR Tampon(1)<>"?" THEN GOTO DEBUT


'PREPARATION ENVOI SMS : N TEL DESTINATAIRE
'-------------------------------------------

244

09_Ch 5.fm Page 245 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
Le numro utilis est celui situ dans la mmoire EEPROM du
PicBasic, aux adresses FF6hex FFFhex ou le cas chant celui
prcis dans le corps du SMS reu :
Tableau 5.42.
Tampon

10

11

12

Donne

SEROUT TXD_GSM,BDS_GSM,0,1,["AT+CMGS=",34]
IF Tampon(2)="," THEN
FOR i=3 TO 12
SEROUT TXD_GSM,BDS_GSM,0,1,[Tampon(i)]
NEXT i
ELSE
FOR j=&HFF6 TO &HFFF
num=EEREAD(j)
SEROUT TXD_GSM,BDS_GSM,0,1,[num]
NEXT j
END IF
SEROUT TXD_GSM,BDS_GSM,0,1,[34,13]
'ACQUISITION TRAME NMEA
'----------------------

Attente de lacquisition dune trame de type $GPRMC dans la


variable tableau Tampon :

DUNOD La photocopie non autorise est un dlit.

ATT_GPS:
SERIN RXD_GPS,BDS_GPS,0,1000, ATT_GPS,
[WAIT("$G"), Tampon(0)~42]

Comme linstruction WAIT nadmet que 2 caractres en argument, il nous faut ruser et contrler les caractres suivants afin
dexclure les trames inutilises :
IF
IF
IF
IF

Tampon(0)<>"P"
Tampon(1)<>"R"
Tampon(2)<>"M"
Tampon(3)<>"C"

THEN
THEN
THEN
THEN

GOTO
GOTO
GOTO
GOTO

ATT_GPS
ATT_GPS
ATT_GPS
ATT_GPS

Ainsi, lorsque les 4 premiers caractres mmoriss dans le variable


Tampon sont gaux "PRMC", le programme peut alors continuer
afin dextraire les fameuses donnes latitude et longitude.
Exemple de contenu de la variable tableau Tampon lorsque la
trame rceptionne est de type "RMC" :
Seuls les 42 premiers caractres de la trame sont mmoriss car ils
contiennent les informations utiles notre montage. Les diffrentes
informations sont extraites en accdant simplement aux donnes

245

09_Ch 5.fm Page 246 Friday, February 19, 2010 9:29 AM

INTERFACES GSM

Tampon

10

11

12

13

14

15

Donne

Type

Message ID

UTC Time

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

Status

Latitude

N/S

30

31

32

33

34

35

36

37

38

39

40

41

42

Longitude

Tableau 5.43.

E/W

contenues dans la variable tableau Tampon, chaque caractre est


accessible via son index de 0 41. La premire information extraite
lindex 16 est le status car il signale si la trame est valide par la lettre
"A". Une trame non valide est identifie par le status "V", cela se
produit lorsque le rcepteur na pas assez de satellites en vue (on
appelle cela le fix) pour dterminer ses coordonnes. Dans ce cas de
figure, la trame est ignore et le montage attend la prochaine trame.
Le programme est dirig vers le label ATT_GPS :
IF Tampon(16)<>"A" THEN GOTO ATT_GPS
'ENVOI SMS
'---------

Le message expdi sur le rseau GSM contient les donnes


heure, latitude et longitude fournies par le GPS :
SEROUT TXD_GSM,BDS_GSM,0,1,["RESULTAT GEOLOCALISATION",13]

Une boucle FOR parcoure les index 5 10 qui contiennent lheure


UTC :
SEROUT TXD_GSM,BDS_GSM,0,1,["Heure UTC : "]
FOR i=5 TO 10
SEROUT TXD_GSM,BDS_GSM,0,1,[ Tampon(i)]
IF i=6 OR i=8 THEN SEROUT TXD_GSM,BDS_GSM,0,1,[":"]
NEXT i
SEROUT TXD_GSM,BDS_GSM,0,1,[13,"Latitude : "]

Lindex 28 contient lindicateur Nord/Sud qui est transform en


signe positif ou ngatif avant dtre envoy :

246

09_Ch 5.fm Page 247 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES
IF Tampon(28)="N" THEN
SEROUT TXD_GSM,BDS_GSM,0,1,["+"]
ELSE
SEROUT TXD_GSM,BDS_GSM,0,1,["-"]
END IF

Une boucle FOR parcoure les index 18 26 qui contiennent la


donne Latitude, ainsi que le caractre de sparation (virgule) en
position 27 :
FOR i=18 TO 26
SEROUT TXD_GSM,BDS_GSM,0,1,[ Tampon(i)]
NEXT i
SEROUT TXD_GSM,BDS_GSM,0,1,[13,"Longitude : "]

Lindex 41 est lindicateur Est/Ouest (East/West) transform en


signe positif ou ngatif :
IF Tampon(41)="E" THEN
SEROUT TXD_GSM,BDS_GSM,0,1,["+"]
ELSE
SEROUT TXD_GSM,BDS_GSM,0,1,["-"]
END IF

Une boucle FOR parcoure les index 30 39 qui contiennent la


donne Longitude :
FOR i=30 TO 39
SEROUT TXD_GSM,BDS_GSM,0,1,[ Tampon(i)]
NEXT i

DUNOD La photocopie non autorise est un dlit.

SEROUT TXD_GSM,BDS_GSM,0,1,[26]
'EFFACE LE SMS EN MEMOIRE
'------------------------

Cette partie du programme permet de systmatiquement effacer


le SMS en mmoire, ainsi le prochain SMS rceptionn aura
toujours le mme index. Ceci vite de saturer la mmoire utilise.
Notez que cette partie de programme est appele mme si aucun
SMS nest effacer ; dans ce cas le ME rpond par un message
derreur qui est ignor par le programme :
RAZ:
SEROUT TXD_GSM,BDS_GSM,0,1,["AT+CMGD="]
FOR i=0 TO 2
IF Index(i)>=48 AND Index(i)<=57 THEN SEROUT
TXD_GSM,BDS_GSM,0,1,[Index(i)]
NEXT i

247

09_Ch 5.fm Page 248 Thursday, February 18, 2010 11:26 AM

INTERFACES GSM
SEROUT TXD_GSM,BDS_GSM,0,1,[13]
DELAY 5000
GOTO DEBUT

Interprtation du rsultat
Les coordonnes sont fournies en reprsentation sexagsimale. Il
est ncessaire de les convertir en dcimal afin de pouvoir les
utiliser dans Google Map et Google Earth :
Latitude: ddmm.mmmm = dd + mm.mmmm/60
Longitude : dddmm.mmmm = ddd + mm.mmmm/60
Exemple (il sagit des coordonnes extraites de la datasheet du EM406):
Latitude: = +3723,2475 = + (37+23,2475/60) = +37,387458
Longitude = -12158,3416 = -(121+58,3416/60) = -121,97236

Ensuite, laide de votre navigateur prfr, il suffit de vous


rendre ladresse http://maps.google.fr/maps pour saisir les
coordonnes Latitude et Longitude, spares par une virgule,
dans la zone de recherche et enfin cliquer sur le bouton Recherche Google Maps, pour localiser votre montage.
Nous avons ralis un petit logiciel maison intitul VisuTrackerGPS.exe qui convertit automatiquement les coordonnes et affiche le rsultat directement dans Google Map ou Google Earth.
Nota : vous devez au pralable tlcharger gratuitement Google
Earth ladresse http://earth.google.fr/. Petite astuce :
louverture dcocher loption Atmosphre dans le menu Affichage sinon on ne voit rien !
La figure 5.47 est une copie dcran du rsultat obtenu dans Google
Map.

Rsum des points importants.

Dernire minute
Parmi les fichiers tlchargeables via le site www.dunod.com,
vous trouverez une version 2 du programme (trackerGPS
V2.bas). Dans cette version lenvoi du SMS est dclench lorsque
le montage reoit un appel, condition que le numro de lappelant soit celui indiqu dans le programme. Ainsi il ny a pas de
frais de communication prvoir car il ny a pas de prise de
ligne, cest la sonnerie qui est le vecteur de la commande.
Attention, il faut tout de mme que la carte SIM utilise par le
tracker inclue la prsentation du numro.

248

09_Ch 5.fm Page 249 Thursday, February 18, 2010 11:26 AM

CHAPITRE

RALISATIONS LECTRONIQUES

Figure 5.47
TRACKER GPS
Configuration

DUNOD La photocopie non autorise est un dlit.

Cavalier J1 mettre en place uniquement si vous utilisez un cble DATA LINK du commerce
Elments du programme PicBasic modifier
Code PIN (7208 par dfaut)
Numro de tlphone utilis pour lenvoi des SMS (06xxxxxxxx par dfaut)
Utilisation
Commande SMS reue

Action du montage

!!G?

Acquisition des donnes Latitude et Longitude puis envoi de


celles-ci via SMS au numro programm.

!!G?,06xxxxxxxx

Acquisition des donnes Latitude et Longitude puis envoi de


celles-ci via SMS au numro indiqu.

249

09_Ch 5.fm Page 250 Thursday, February 18, 2010 11:26 AM

10_Annexes.fm Page 251 Thursday, February 18, 2010 11:28 AM

PAGE

ANNEXE

ANNEXES

A.1 Brochages circuits intgrs

252

A.2 Tables des caractres

259

Glossaire

261

Bibliographie

264

251

10_Annexes.fm Page 252 Thursday, February 18, 2010 11:28 AM

INTERFACES GSM

A.1 BROCHAGES CIRCUITS INTGRS


PicBasic 3B
Broche

Dsignation

Bloc

Fonction

RES

Reset

I/O 0-AD0

E/S ou CAN

I/O 1AD1

E/S ou CAN

I/O 2AD2

E/S ou CAN

I/O 3AD3

E/S ou CAN

CLKIN

Comptage

I/O 4-AD4

E/S ou CAN

GND

Masse
Quartz

OSCIN

10

OSCOUT

11

I/O 8

1 LSB

12

I/O 9-PWM0

E/S ou PWM

13

I/O 10-PWM1

E/S ou PWM

14

I/O 11

E/S

15

I/O 12

E/S

16

I/O 13

E/S

17

I/O 14

E/S

18

I/O 15

1 MSB

E/S

19

GND

Masse

20

+5V

Alimentation

21

I/O 16

E/S

22

I/O 17

E/S

23

I/O 18

E/S

24

I/O 19

E/S

Quartz
E/S

25

I/O 20

E/S

26

PICBUS

Afficheur

27

PCIN

Prog. PC

28

PCOUT

Prog. PC

Caractristiques :

Plage dalimentation : 4,5 5,5 V


Consommation typique : 15 mA
Courant maximum par sortie : 25 mA
Temprature de stockage : 40 + 80 C
Temprature dutilisation : 0 75 C

252

10_Annexes.fm Page 253 Thursday, February 18, 2010 11:28 AM

ANNEXES

DUNOD La photocopie non autorise est un dlit.

PicBasic 2S
Broche

Dsignation

Bloc

Fonction

+5V

Alimentation

RES

Reset

GND

I/O 0-AD0

0 LSB

E/S ou CAN

I/O 1AD1

E/S ou CAN

I/O 2AD2

E/S ou CAN

I/O 3AD3

E/S ou CAN

I/O 4-AD4

E/S ou CAN
E/S

Masse

I/O 5

10

I/O 6

E/S

11

I/O 7

0 MSB

E/S

12

I/O 8

1 LSB

E/S

13

I/O 9-PWM0

E/S ou PWM

14

I/O 10-PWM1

E/S ou PWM

15

I/O 11

E/S

16

I/O 12

E/S

17

I/O 13

E/S

18

I/O 14

E/S

19

I/O 15

1 MSB

E/S

20

I/O 16

2 LSB

E/S

21

I/O 17

E/S

22

I/O 18

E/S

23

I/O 19

E/S

24

I/O 20

E/S

25

I/O 21

E/S

26

I/O 22

E/S

27

I/O 23

2 MSB

E/S

28

I/O 24-AD5

3 LSB

E/S ou CAN

29

I/O 25-AD6

E/S ou CAN

30

I/O 26-AD7

3 MSB

E/S ou CAN

31

CLKIN

Comptage

32

PICBUS

Afficheur

33

NC

Non connecte

34

NC

Non connecte

Caractristiques :
Plage dalimentation : 4,5 5,5 V
Consommation typique : 15 mA

253

10_Annexes.fm Page 254 Thursday, February 18, 2010 11:28 AM

INTERFACES GSM
Courant maximum par sortie : 25 mA
Temprature de stockage : 40 + 80 C
Temprature dutilisation : 0 75 C

Adaptateur TTL/RS232 MAX232


Broche

Dsignation

C1+

V+

C1-

C2+

C2-

Fonction

Condensateurs 1 F pour lactivation


de la pompe de charge pour passage
du niveau de tension TTL un niveau
RS232

V-

TX2o

Sortie RS232 numro 2

RX2i

Entre RS232 numro 2

RX2o

Sortie TTL numro 2

10

TX2i

Entre TTL numro 2

11

TX1i

Entre TTL numro 1

12

RX1o

Sortie TTL numro 1

13

RX1i

Entre RS232 numro 1

14

TX1o

Sortie RS232 numro 1

15

GND

Masse

16

Vcc

Alimentation + 5 V

254

10_Annexes.fm Page 255 Thursday, February 18, 2010 11:28 AM

ANNEXES

Amplificateur ULN2803A
Broche

Dsignation

IN1

IN2

IN3

IN4

IN5

IN6

IN7

IN8

Fonction

Entres

GND

Masse

10

Vcc

Alimentation + 5 V

11

OUT8

12

OUT7

13

OUT6

14

OUT5

15

OUT4

16

OUT3

17

OUT2

18

OUT1

Sorties
(Courant maximum par sortie : 500 mA)

DUNOD La photocopie non autorise est un dlit.

Optocoupleur MOC3041
Broche

Dsignation

Fonction

ANODE

Anode diode mission IR

CATHODE

Cathode diode mission IR

NC

CHARGE

NC

CHARGE

Non connect
Charge max. 400 V/1 A *
Non connect
Charge max. 400 V/1 A *
(*)Dtection de passage au 0

255

10_Annexes.fm Page 256 Thursday, February 18, 2010 11:28 AM

INTERFACES GSM

Potentiomtre numrique AD8400


Broche

Dsignation

B1

GND

CS

Fonction
Bute B du potentiomtre numrique
Masse
Entre de slection du circuit (Chip Select)
active ltat bas

SDI

Entre de donne srie (Serial Data Input)

CLK

Entre dhorloge, active sur front montant

Vdd

Alimentation comprise entre + 3 V et + 5 V

W1

Curseur du potentiomtre numrique

A1

Bute A du potentiomtre numrique

Optocoupleur 4N33
Broche

Dsignation

ANODE

CATHODE

NC

Fonction
Anode diode IR
Cathode diode IR
Non connect

EMETTEUR

metteur transistor

COLLECTEUR

Collecteur transistor

BASE

Base transistor
(non connect)

Capteur de temprature DS1620


Broche

Dsignation

Fonction

DQ

CLK/CONV

RST

Reset (entres active ltat bas)

GND

Masse

THIGH

Indicateur dpassement seuil T


haute

TLOW

Indicateur dpassement seuil T


basse

TCOM

Passe ltat haut quand la T


dpasse le seuil TH, passe
ltat bas quand la T passe en
dessous du seuil TL

Vdd

Alimentation + 5 V

Entre/Sortie de donnes
Horloge/Conversion

256

10_Annexes.fm Page 257 Thursday, February 18, 2010 11:28 AM

ANNEXES

74HCT574
Broche

Dsignation

Fonction

CLK

Horloge
Sur un front montant appliqu sur CLK,
la valeur prsente sur les entres Dx et
recopie sur les sorties Qx

D0

D1

D2

D3

D4

D5

D6

D7

10

OE

11

GND

12

Q7

13

Q6

14

Q5

15

Q4

16

Q3

17

Q2

18

Q1
Q0

20

Vcc

Slection du circuit, actif ltat bas


Masse

Sorties logiques

Alimentation + 5 V

DUNOD La photocopie non autorise est un dlit.

19

Entres logiques

257

10_Annexes.fm Page 258 Thursday, February 18, 2010 11:28 AM

INTERFACES GSM

74HCT541
Broche

Dsignation

Fonction

G1

Si lentre G1 (et G2) est ltat bas la


valeur prsente sur les entres Dx est
recopie sur les sorties Qx

D0

D1

D2

D3

D4

D5

D6

D7

10

GND

11

Q7

12

Q6

13

Q5

14

Q4

15

Q3

16

Q2

17

Q1

18

Q0

19

G2

Si lentre G2 (et G1) est ltat bas la


valeur prsente sur les entres Dx est
recopie sur les sorties Qx

20

Vcc

Alimentation + 5 V

Entres logiques

Masse

Sorties Logiques

24LC32
Broche

Dsignation

A0

A1

Fonction
Entres dont ltat logique dfinit ladresse
du circuit

A2

Vss

Masse

SDA

Ligne de donnes

SCL

Ligne dhorloge

WP

Verrouille la mmoire en criture lorsque


WP = 1

Vcc

Alimentation + 5 V

258

10_Annexes.fm Page 259 Thursday, February 18, 2010 11:28 AM

ANNEXES

A.2 TABLES DES CARACTRES

DUNOD La photocopie non autorise est un dlit.

ASCII
b7

b6

b5

b4

b3

b2

b1

(nul)

(dle)

(sp)

(soh)

(dc1)

(stx)

(dc2)

"

(etx)

(dc3)

(eot)

(dc4)

(enq)

(nak)

(ack)

(syn)

&

(bel)

(etb)

(bs)

(can)

(tab)

(em)

10

(lf)

(eof)

11

(vt)

(esc)

12

(np)

(fs)

<

13

(cr)

(gs)

14

(so)

(rs)

>

15

(si)

(us)

Exemples de conversion :
CRASCII = 0001101bin = 13dec = Dhex
1ASCII = 0110001bin = 49dec = 31hex

259

10_Annexes.fm Page 260 Thursday, February 18, 2010 11:28 AM

INTERFACES GSM

GSM
b7

b6

b5

b4

b3

b2

b1

SP

&

10

(lf)

11

12

<

13

(cr)

14

>

15

260

11_Glossaire.fm Page 261 Thursday, February 18, 2010 11:29 AM

GLOSSAIRE

ASCII : American Standard Code for Information Interchange. Table


de code 7 lments permettant de reprsenter les lettres et les
chiffres sous forme de caractres et de codes (ISO 7).
BCD : Binary Coded Decimal. Systme de numration o chaque
groupe de 4 bits dun nombre reprsente un digit dun chiffre.
Bi-bande : Terminal capable de fonctionner indiffremment sur
le rseau GSM 1800 et GSM 900. Il sagit de la mme technologie
(GSM) utilise dans des bandes de frquences diffrentes :
900 MHz ou 1 800 MHz. Alors que les deux types de rseaux
imposaient lutilisation de terminaux diffrents, on voit dsormais sur le march des terminaux bi-bandes GSM 900/1800,
capables de fonctionner, soit sur un rseau GSM 900, soit sur un
rseau GSM 1800, soit sur un rseau bi-bandes GSM 900/1800.
BPS : Vitesse de transmission des donnes sur un rseau. La
norme GSM limite la vitesse de transmission de donnes
9 600 bps sur le rseau.
BSIC : Code regroupant le BCC et le NCC, il sert diffrencier
2 BTS utilisant le mme canal FCN.
BTS : Base Transeiver Station. quipement comprenant lantenne
et les metteurs/rcepteurs radio.
CAN : Convertisseur Analogique Numrique. lment lectronique
permettant de convertir un signal analogique (ex : tension) en
une valeur numrique (ex : octet).
Cell-ID : Numro cod sur deux octets qui identifie une cellule
(ou BTS).
DATA FAX : Cest la fonction des tlphones qui permet le transfert distance de donnes ou de fax, dordinateur portable
ordinateur. La vitesse de transfert des informations sexprime en
bauds.

261

11_Glossaire.fm Page 262 Thursday, February 18, 2010 11:29 AM

INTERFACES GSM
dBm : Unit de mesure exprimant un niveau rfrenc par
rapport une puissance de 1 mW.
E-GSM. : Extended GSM. Extension du systme GSM dautres
frquences que la zone de frquences standards.
ETS : European Telecommunication Standard. Nom de la norme
cre par lETSI, la norme provisoire est nomme I-ETS. Par
exemple les normes GSM 07.07 et GSM 07.05 sont des ETS.
ETSI : European Telecommunications Standard Institute. Organisme
cre par la Commission europenne et charg de la normalisation
des tlcommunications.
FCN : Frequency Chanel Number. Numro dsignant une porteuse
de faon unique dans le systme GSM.
GPRS : General Packet Radio Services. Systme de commutation de
donnes par paquets selon le protocole TCP/IP permettant
damliorer les dbits fournis par les rseaux GSM, on peut esprer un dbit de 115 kbits/s. Technologie standardise lETSI
(Institut Europen des Normes de Tlcommunication). On
trouve dsormais sur le march des tlphones utilisant le GPRS,
cest le cas du MY-X5 de Sagem. Le constructeur SIEMENS
propose le terminal MC35 qui dispose de cette fonction.
GSM : Global System for Mobile communications. Norme de tlphonie cellulaire numrique europenne dveloppe par lETSI.
Le GSM utilise une frquence de 900 MHz et atteint un taux de
transfert de 9 600 bits/s. Il existe aussi des versions drives du
GSM atteignant des frquences de 1 800 ou 1 900 MHz. Cette
norme de tlphone mobile est apparue en 1992 avec un premier
appel effectu en Finlande. Le GSM (Itinris, SFR) est la principale norme utilise en Europe avec le DCS (Bouygues Tlcom).
GSM Phase 1. : Premire phase de spcification du systme
GSM.
GSM Phase 2. : Deuxime phase de spcification du systme
GSM.
GSM Phase 2+ : Nouvelle phase de spcification du GSM, aprs
un codage plus efficace des donnes le dbit atteint 14,4 kbits/s.
IMEI : International Mobile Equipment Identity. Terme qui dsigne
le numro didentification dun mobile, et qui figure dans le corps
de lappareil ainsi que dans sa mmoire.
IMSI : International Mobile Subscriber Identity. Identit Internationale de labonn Mobile.

262

11_Glossaire.fm Page 263 Thursday, February 18, 2010 11:29 AM

GLOSSAIRE
ITU-T : International Telecommunication Union, Telecommunication
sector.
LAC : Location Area Code. Code attribu lensemble des cellules
dune mme zone.
ME : Mobile Equipement. quipement mobile qui permet lenvoi
et la rception de donnes sur le rseau GSM.
MODEM : Modulateur-Demodulateur. Il sagit dun dispositif, ou
dun priphrique de conversion des donnes qui transitent via
une ligne tlphonique RTC ou GSM. (conversion en mission
analogique vers numrique).
OPRATEUR : Compagnie offrant des services de tlcommunications.
PDU : Protocol Data Unit. Protocole qui dfinit la constitution
numrique de la trame dun SMS.
PIN : Personal Identification Number. Numro didentification
personnel. linverse des cartes bancaires, le code PIN du mobile
peut tre modifi par lutilisateur. Un code PIN2 permet galement de limiter des droits daccs lorsque lon prte son mobile
une autre personne.
PLMN : Public Land Mobile Network. Rseau GSM gr par un
oprateur.

DUNOD La photocopie non autorise est un dlit.

PUK : Lorsque 3 codes PIN errons ont t rentrs, la carte SIM


est bloque, et il faut le code PUK 8 chiffres pour la dbloquer.
ROAMING : Mcanisme permettant doffrir les mmes services
de tlcommunications mobiles des clients (roamers) abonns
dautres rseaux ou dans dautres pays.
SIM : Subscriber Identification Module. Module didentit dabonn.
La carte SIM est une carte puce contenant les informations sur
les droits daccs. La carte SIM permet dactiver le mobile, de
recevoir son numro de tlphone ainsi que le droit daccs au
rseau. Les appels durgence peuvent tre mis avec nimporte
quel mobile, mme sans carte SIM. Cette technologie est standardise lETSI.
SMS : Short Message Service. Service de messages courts permettant de transmettre et de recevoir de brefs messages de 160 caractres maximum.
SMS-DELIVER : Reprsente le protocole qui permet le transfert
dun SMS partir du SMSC destination dun tlphone portable.

263

11_Glossaire.fm Page 264 Friday, March 5, 2010 7:52 PM

INTERFACES GSM
SMS-SUBMIT : Reprsente le protocole qui permet le transfert
dun SMS partir dun tlphone portable destination dun
SMSC.
SMSC : Short Message Service Center. Centre de service de messages courts. Tous les messages courts sont tout dabord transmis
dans le SMSC. Le message est ensuite transmis au destinataire
depuis ce centre. Le SMSC stocke temporairement les messages
lorsque le destinataire nest pas disponible. Ds que le destinataire est nouveau disponible sur le rseau (par exemple en allumant son appareil), les messages en attente lui sont transmis.
TA : Terminal Adaptator. Assure la liaison entre le ME et le TE.
TE : Terminal Equipement. Reprsente un ordinateur ou un microcontrleur disposant dun port srie permettant de piloter le ME
travers le TA.
TEXT : Permet de constituer/lire un SMS en mode texte.
TTL : Transistor Transistor Logic. Famille de circuits logiques utilisant des transistors bipolaires. Ltat logique haut est fix entre 2
et 5 V, ltat logique bas entre 0 et 0,8 V. Le courant maximum
disponible par sortie est de 20 mA.

BIBLIOGRAPHIE
ETSI - ETS NORME GSM 07.07
ETSI - ETS NORME GSM 07.05
SIEMENS - DATA SHEET TC35 TERMINAL
LEXTRONIC. COMFILE Technologie - PICBASIC Manuel de
rfrence Vol.1.A
D. REY. Interfaces PC numro 08 Potentiomtres numriques sur
port srie
P. GUEULLE. Tlphones portables et PC 3e dition, Dunod, PARIS,
2006

Vous aimerez peut-être aussi