133 19 6MB
French Pages 270 Year 2010
p001-002-9782100553341.fm Page I Friday, July 23, 2010 10:29 AM
DAVID REY
INTERFACES GSM 2e édition
Montages pour téléphones portables
EDITIONS TECHNIQUES ET SCIENTIFIQUES FRANÇAISES
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 MATIÈRES
CHA PITRE
P A GE
Téléchargez les fichiers du livre !
1
Introduction
1
Généralités
3
Codage des SMS 1.1 Introduction 1.2 Généralités 1.3 Mode PDU
5 6 6 6
1.4
2
7 16
Codage/décodage par logiciel
21 25 28
Description détaillée des commandes
29
Norme GSM07.05
41
Description détaillée des commandes
41
Matériels utilisés 3.1 Téléphones portables
3.2
4
SMS-SUBMIT SMS-DELIVER
Commandes « AT » 2.1 Norme GSM07.07 2.2
3
VII
55 56
Adaptateur TTL/RS232 Adaptateur pour FBUS/MBUS (ou M2BUS) Cordons DATA
56 59 61
Modules GSM intégrés
62
Le TM2 de TELTONIKA Pour aller plus loin…
62 70
Interfacer un téléphone GSM 4.1 Avec un PC Matériel Hyper Terminal Commandes générales Commandes SMS
V
73 74 74 75 78 83
p003-004-9782100553341.fm Page VI Friday, July 23, 2010 11:22 AM
INTERFACES GSM
4.2
5
Commandes spécifiques au TM2 de Teltonika Logiciel intégré pour la gestion des SMS Logiciel « WinGSM »
90 90 91
Avec un PicBasic
92
L’instruction SEROUT Envoi d’un SMS L’instruction SERIN Réception d’un SMS
93 94 95 95
Réalisations électroniques
101
5.1
5.2
5.3
5.4
5.5
Récepteur/émetteur SMS
102
Récepteur de SMS sur écran LCD Émetteur de SMS
102 116
Télécommandes par GSM
123
1 sortie sur relais 4 sorties sur relais 4 sorties sur triacs 4 sorties analogiques
123 131 142 152
Télémesures par GSM
163
4 entrées logiques 4 entrées analogiques Thermomètre
163 173 183
Carte Entrées/Sorties pilotée par GSM
194
PicBasic Schéma électrique Réalisation Programme PicBasic : « ces.bas » Programmation et configuration Essais Interface de puissance
194 195 204 205 221 222 224
Géolocalisation par GSM
228
Cell Monitor Tracker GPS Positionnement géographique
228 233 233
Annexes
251
Glossaire
261
Bibliographie
264
VI
02_Telechargez.fm Page VII Thursday, February 18, 2010 9:48 AM
TÉLÉCHARGEZ LES FICHIERS DU LIVRE !
Tous les circuits imprimés, programmes et logiciels des montages décrits dans cet ouvrage sont téléchargeables à partir du site : http://www.dunod.com Il faut tout d’abord rechercher l’ouvrage (par titre ou par auteur) puis, une fois sur la page dédiée à l’ouvrage, cliquer sur documents téléchargeables dans la rubrique Compléments en ligne. Un mot de passe, issu de l’ouvrage, vous sera alors demandé. L’impression directe sur transparent des circuits imprimés pourra ainsi être réalisée facilement. La meilleure qualité sera obtenue en utilisant une imprimante laser qui permet, de par sa précision, un rendu du tracé exceptionnel. Si l’on utilise une imprimante à jet d’encre, il conviendra de vérifier minutieusement le résultat car des micro-coupures apparaissent fréquemment sur les pistes. La dernière solution est de sortir une impression sur papier et d’effectuer une photocopie de ce dessin sur transparent. Dans ce cas, il est nécessaire de réaliser deux transparents et de les superposer, le tracé n’étant pas assez opaque pour l’insolation 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 réseau GSM français compte pas moins de 58 millions d’usagés. Le « portable » est devenu en quelques années un produit de consommation courante. Ce petit trésor de technologie ouvre la porte à de nombreuses applications électroniques sans fil à celui qui sait l’interfacer avec un PC ou un microcontrôleur. Il devient alors possible via l’envoi et la réception de SMS de piloter et de surveiller un processus quelconque. La distance n’est désormais plus un souci puisque le réseau GSM couvre 99 % du territoire français et ne cesse de progresser au niveau mondial.
1
03_Introduction.fm Page 2 Thursday, February 18, 2010 9:50 AM
04_Generalites.fm Page 3 Thursday, February 18, 2010 9:51 AM
GÉNÉRALITÉS
L’usage d’un téléphone portable est bien entendu destiné à l’être humain, aussi il dispose d’interfaces qualifiées d’hommemachine. Parmi ces interfaces citons le clavier qui permet par exemple la saisie du numéro de téléphone de la personne que l’on souhaite contacter. Une seconde interface l’écran permet de contrôler visuellement que le numéro saisi est correct. La dernière interface constituée par le micro et le haut-parleur permet de converser oralement avec son interlocuteur. Il existe un autre type d’interface machine- machine du fait peu connu de l’utilisateur. Physiquement cette interface prend la forme d’un connecteur multibroche. De nombreux accessoires prennent place sur ce connecteur, citons par exemple les kits mains libres ou piétons, le chargeur de batterie… Parmi ces accessoires un nous intéresse plus particulièrement, il s’agit d’un cordon d’adaptation RS232 qui permet d’accéder à toutes les fonctions du téléphone. Un simple PC muni lui aussi d’un port RS232 et équipé d’un logiciel terminal standard suffit alors à prendre le contrôle du processeur central du téléphone, encore faut-il « parler » le même langage que celui-ci…
3
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
1
CODAGE DES SMS
1.1 Introduction
6
1.2 Généralités
6
1.3 Mode PDU
6
1.4 Codage/décodage par logiciel
21
2
Commandes « AT »
25
3
Matériels utilisés
55
4
Interfacer un téléphone GSM
73
5
Réalisations électroniques
101
Annexes
251
Glossaire
261
Bibliographie
264
5
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 s’agit plus de la transmission de sons mais d’un texte limité théoriquement à 160 caractères. Chaque message envoyé transite vers un centre de messagerie baptisé SMSC (Short Message Service Centre) où il est temporairement stocké. Dès que le destinataire est disponible, c’est-à-dire lorsque le mobile est sous tension et présent dans une zone couverte par le réseau GSM, le message est transmis. Le message peut exceptionnellement rester sur le SMSC durant plusieurs jours, ce qui est le cas notamment en fin d’année où le nombre de SMS envoyés atteint des records, vœux de bonne année oblige… En situation normale on peut considérer que l’envoi d’un SMS est instantané à condition que le mobile de destination soit opérationnel. Les SMSC sont identifiés par un numéro d’appel spécifique à chaque opérateur. Il est possible d’envoyer un SMS autrement qu’avec un téléphone portable. On trouve sur Internet des logiciels qui permettent à un PC muni d’un modem d’accéder à un SMSC. Le moyen le plus simple et le moins onéreux consiste à passer par le Web. Certains providers comme AOL proposent à leurs abonnés un service SMS en ligne. Il existe même des sites qui permettent l’envoi gratuit de SMS au prix tout de même d’un message publicitaire qui vient se greffer à votre message.
1.2 GÉNÉRALITÉS Il y a deux façons 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 caractères hexadécimaux qui codifient le SMS, le mode TEXT n’est rien d’autre qu’une représentation sous forme de texte des données qui composent le SMS. Il y a différents types d’alphabets utilisés pour passer du mode PDU au mode TEXT. Par exemple votre téléphone portable affiche en mode TEXT sur son écran les données d’un éventuel SMS reçu, c’est lui qui détermine automatiquement quel type d’alphabet à utiliser. Attention, il faut savoir que certains téléphones portables ne supportent pas le mode TEXT lorsqu’ils sont interfacés avec un PC. Il est donc utile de connaître en détail le mode PDU.
1.3 MODE PDU Lorsqu’un mobile A envoie un SMS au mobile B, le message transite obligatoirement par un centre de messagerie baptisé SMSC. Dans son message l’utilisateur du mobile A doit définir deux adresses, celle du SMSC qu’il souhaite utiliser et celle du mobile B.
6
05_Ch 1.fm Page 7 Thursday, February 18, 2010 11:22 AM
CHAPITRE
CODAGE DES SMS
1
Figure 1.1.
L’acheminement du dit message du mobile A à destination du SMSC est baptisé SMS-SUBMIT. Une fois le message traité par le SMSC il est délivré 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 d’autres, d’importance moindre, qui permettent de signaler des éventuelles erreurs d’acheminement : • SMS-DELIVER-REPORT : le cas échéant, il indique une défaillance lors du transfert du SMS par le SMSC au destinataire ; • SMS-SUBMIT-REPORT : le cas échéant, il indique une défaillance lors du transfert du SMS par le mobile au SMSC ; • SMS-STATUS-REPORT : le SMSC envoie un rapport d’état au mobile émetteur du SMS ;
© DUNOD – La photocopie non autorisée est un délit.
• SMS-COMMAND : le mobile envoie une commande au SMSC. Les trames codant le SMS sont différentes suivant le type de PDU mis en œuvre. Dans la partie qui va suivre nous nous contenterons de décrire les deux principaux protocoles : SMS-SUBMIT et SMS-DELIVER.
SMS-SUBMIT Téléphone GSM vers SMSC. La taille maximale de la trame d’un 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 l’adresse du SMSC et DA qui codifie l’adresse de l’émetteur. 1-10 octets
SCA
1 octet 1 octet
PDU
MR
2-12 octets
1 octet
0-7 octets
DA
PID
DCS
7
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
Numéro SMSC
Le champ SCA ne possède pas une taille fixe, elle dépend de la longueur du numéro du SMSC utilisé, ce paramètre est stocké dans le champ LEN. LEN : nombre d’octets nécessaires pour codifier le numéro du SMSC. Type Number : indique le format du numéro de téléphone du SMSC. 7
6
1
5
4
Type number
3
2
1
0
Numbering Plan Identification
Type number : spécifie le type de numéro de téléphone utilisé. La valeur la plus utilisée est 001bin qui signale un numéro de type international (tableau 1.1). Tableau 1.1.
Bit 6 Bit 5 Bit 4
Description
0
0
0
Format non spécifié
0
0
1
Numéro international
0
1
0
Numéro national
0
1
1
Numéro spécifique au réseau
1
0
0
Numéro d’abonné
1
0
1
Codification en accord avec la norme GSM TS 03.38 alphabet par défaut sur 7 bit
1
1
0
Numéro abrégé
1
1
1
X
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 réservés. Pour adresser n’importe quelle entité, le numbering plan identification doit être égal à 0001bin (tableau 1.2).
8
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
0
0
0
0
X
0
0
0
1
ISDN/téléphone numbering plan (E.164/E.163)
0
0
1
1
Data numbering plan (X.121)
0
1
0
0
Telex numbering plan
1
0
0
0
National numbering plan
1
0
0
1
Private numbering plan
1
0
1
0
ERMES numbering plan (ETSI DE/PS 3 01-3)
1
1
1
1
X
Compte tenu de ce que nous avons dit plus haut, le Type Number le plus utilisé est : 91hex. 7
6
5
4
3
2
1
0
1
0
0
1
0
0
0
1
Numéro du SMSC (service de centre de messagerie) : attention, le codage est effectué en décimal codé binaire (BCD). Un octet contient donc deux quartés codés en BCD et qui plus est de poids inversés. Le nombre de semi-octet devant être obligatoirement paire il est parfois nécessaire de compléter par Fhex.
© DUNOD – La photocopie non autorisée est un délit.
Digit2
Digit1
Digit4
Digit3
1
…
Digit n
Digit n–1
Voici les principaux numéros utilisés en France pour contacter un SMSC, le signe « + » signale qu’il s’agit d’un numéro international : • +33609001390 (SFR) • +33689004000 (Orange) • +33660003000 (Bouygues Télécom) Par exemple codons le numéro du SMSC utilisé par les abonnés d’Orange de France Télécom : le nombre de chiffres étant impair il est nécessaire d’ajouter un Fhex à la fin. Ensuite il suffit de permuter chaque chiffre comme le montre le tableau ci-après.
9
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
3
3
6
0
9
0
0
1
3
9
0
F
3
3
0
6
0
9
1
0
9
3
F
0
Finalement le numéro +33660003000 une fois codé devient : 3306091093F0. Remarque : le champ SCA est optionnel, de ce fait lorsqu’il est positionné à 00hex cela signifie que le SMSC utilisé est celui stocké dans la mémoire du téléphone, correspondant en principe à l’opérateur auquel vous avez souscrit votre abonnement.
Type de PDU Le champ PDU toujours codé sur 1 seul octet a pour fonction principale de définir s’il s’agit d’un SMS-DELIVER ou d’un SMSSUBMIT (bits 0 et 1) – tableau 1.3.
Tableau 1.3.
7
6
5
RP
UDHI
SRR
Champ
Bit 7
4
3
VPF
2
RD
1
0
MTI
Description
0
Il n’existe pas de chemin de repli
1
Il existe un chemin de repli
RP
Champ
Bit 6
Description
0
Le champ UD contient uniquement un message
1
Le champ UD contient un en-tête en plus du message
UDHI
Champ
Bit 5
Description
0
Un rapport d’état ne sera pas retourné
1
Un rapport d’état sera retourné
SRR
Champ
VPF
Bit4
Bit 3
Description
0
0
Le champ VP n’est pas présent
0
1
X
1
0
Le champ VP existe, il est codifié en entier (relatif)
1
1
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
0
Indique au SMSC qu’il ne doit pas recevoir un nouvel SMS portant le même MR et la même adresse de destination
1
Indique au SMSC qu’il peut accepter la réception d’un nouvel SMS portant le même MR et la même adresse de destination
RD
Champ
Bit1
Bit 0
MTI
0
1
Description SMS-SUBMIT : Achemine le SMS du mobile vers le SMSC
MR : Message référence Chaque message envoyé par le mobile au SMSC est identifié par un numéro compris entre 0 et FFhex baptisé MR (Référence du Message). Le fait de positionner MR à 0 indique au mobile que c’est lui qui doit définir automatiquement ce champ. Dans ce cas il s’incrémente pour chaque nouveau message envoyé pour un même destinataire. Ce champ est lié au bit RD du champ PDU. 1 octet
MR
DA : Destination Adress Le codage de l’adresse de l’émetteur est sur le principe semblable au codage de l’adresse du SMSC (voir champ SCA).
© DUNOD – La photocopie non autorisée est un délit.
1
1 octet
2 octets
0 - 8 octets
LEN
Type Number
Numéro du destinataire
LEN : longueur du numéro du destinataire correspondant cette fois au nombre de chiffres et pas au nombre de semi-octets utilisés pour sa codification comme c’est le cas pour le SMSC.
PID : Protocol Identifier 1 octet
PID
Le champ PID codé sur un octet indique à quel type de service télématique est destiné le message. Dans notre cadre d’utilisation ce champ sera toujours positionné à 00hex. Attention, s’il 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 traitée comme un message court
11hex
La trame est traitée comme un telex
02hex
La trame est traitée comme un telefax de groupe 3
03hex
La trame est traitée comme un telefax de groupe 4
12hex
La trame est traitée comme un e-mail
Pour plus d’informations vous pouvez consulter la norme GSM 03.40 chapitre 9.2.3.9.
DCS : Data Coding Scheme Le champ DCS indique de quelle manière est codé le champ UD qui correspond au corps du message. Il peut aussi indiquer une classe du message (bits 4 à 7 positionnés à 1). Dans la pratique, tous les bits sont positionnés à zéro (tableau 1.5). 7
6
5
4
Coding Group
Tableau 1.5.
3
2
1
0
0
X
X
X
Bit7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Description 0
0
0
0
0
0
0
0
Indique que le champ UD est codé avec l’alphabet GSM, aucune classe n’est spécifiée
0
0
0
0
0
0
0
1
0
0
0
0
…
…
…
…
0
0
0
1
1
1
1
1
1
1
1
1
0
0
x
x
Indique que le champ UD est codé avec l’alphabet par défaut, chaque caractère est codé sur 7 bits, une classe est spécifiée
1
1
1
1
0
1
x
x
Indique que le champ UD est codé en ASCII sur 8 bits
1
1
1
1
0
x
0
0
Classe 0 : le message s’affiche immédiatement à l’écran
1
1
1
1
0
x
0
1
Classe 1 : spécifique au mobile (ME)
1
1
1
1
0
x
1
0
Classe 2 : spécifique à la carte SIM
1
1
1
1
0
x
1
1
Classe 3 : spécifique à l’équipement terminal (TE)
Réservé
12
05_Ch 1.fm Page 13 Thursday, February 18, 2010 11:22 AM
CHAPITRE
CODAGE DES SMS
1
Avec l’alphabet GSM chaque caractère est codé sur 7 bits (voir Annexes). Avec ce type d’alphabet il est donc possible de coder 8 caractères avec 7 octets. Le champ UD peut dans ce cas codifier un total de 160 caractères. Dans la pratique, le plus simple consiste à positionner tous les bits du champ DCS à zéro, ce qui sélectionne l’alphabet GSM, aucune classe n’est mentionnée ainsi c’est le mobile de destination qui choisira le stockage adéquat du SMS.
VP : Validity Period Permet d’indiquer au SMSC la durée de validité du SMS à condition que les bits 3 et 4 (champ VPF) de l’octet PDU soient correctement positionnés. Si VPF (voir champ PDU) est à 0, le champ VP sera ignoré par le SMSC, le SMS aura une durée de vie illimitée. Cette durée peut être relative (VPF = 10bin), si le SMSC n’a pas réussi à transmettre le SMS au destinataire dans la durée définie par VP, le SMS est détruit (tableau 1.6). 1 octet
JOUR
VPdec
© DUNOD – La photocopie non autorisée est un délit.
0 … 143
Tableau 1.6.
Durée 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 durée peut être absolue (VPF = 11bin), le SMSC à jusqu’à la date définie par VP pour délivrer le SMS au destinataire, passé cette date le message est détruit. 1 octet
1 octet
1 octet
1 octet
1 octet
1 octet
1 octet
Année
Mois
Jour
Heure
Minute
Seconde
Fuseau
En codage absolu le champ VP se compose de 7 octets, contenant chacun deux champs codés en BCD et de poids inversés. Le champ Fuseau exprimé en quart d’heure indique la différence entre l’heure locale et l’heure 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 utilisés pour codifier le message dans UD.
Exemple de codage À titre d’exemple, essayons de constituer la trame qui permettrait d’envoyer un SMS ayant une validité de 4 jours, contenant le message « TEST » au numéro « 0612345678 » en utilisant le centre de messagerie « +33609001390 ». Numéro du SMSC utilisé : +33609001390. Le signe « + » indique qu’il s’agit d’un numéro international, on à donc Type Number = 91hex. 7
6
5
4
3
2
1
0
1
0
0
1
0
0
0
1
Numéro international
ISDN / Telephone numbering plan
Pour chacun des octets qui composent le numéro, on inverse les deux groupes composés de 4 bits chacun. Le nombre de chiffres étant impair, il est nécessaire d’ajouter l’octet Fhex à la fin du numéro. On obtient le numéro suivant : 3306091093F0. 3
3
6
0
9
0
0
1
3
9
0
F
3
3
0
6
0
9
1
0
9
3
F
0
Le nombre d’octets utilisés pour coder le numéro du SMSC est de 07dec d’où LEN = 07hex (Type Number inclus). Finalement SCA = 07913306091093F0. 7
6
5
RP
UDHI
SRR
0
0
0
4
3
VPF 1
1
RD 0
RP = 0. Il n’existe pas de chemin de repli.
14
2
0
0
MTI 0
1
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 d’état ne sera retourné au mobile. VPF = 10. Le champ VP et codé en relatif. MTI = 01. SMS-SUBMIT (Envoi). On a donc PDU = 11hex. Référence du SMS, MR = 00hex, indique que c’est le mobile qui doit définir cette valeur. Le numéro de téléphone du destinataire est « 0612345678 », la codification est identique à celle du champ SCA. Dans le cas présent le nombre de chiffres étant pair il n’est pas utile d’ajouter Fhex à la fin. 0
6
1
2
3
4
5
6
7
8
6
0
2
1
4
3
6
5
8
7
On obtient le numéro : 6021436587. Nous allons utiliser un format de numéro non spécifié donc Type of Number = 81hex. 7
6
5
4
3
2
1
0
1
0
0
0
0
0
0
1
Le numéro comporte 10 chiffres donc LEN = 0Ahex.
© DUNOD – La photocopie non autorisée est un délit.
D’où DA = 0A816021436587. Le message doit être traité par le SMSC comme un SMS donc PID = 00hex. Le champ UD est codé avec l’alphabet par défaut, aucune classe n’est spécifiée donc DCS = 00hex. La durée de validité du message est limitée à 4 jours. On applique la formule nb jours = VP – 166, avec nb jours = 4 cela implique que VP = AAhex. Corps du message : « TEST », comme spécifié par le champ DCS le codage est réalisé avec l’alphabet GSM. Pour chacun des caractères composant le message on cherche la correspondance en binaire dans le tableau alphabet GSM (voir Annexes). Un caractère correspond à un bloc de 7 bits. Ensuite on regroupe les bits par paquet de 8 en commençant par la droite, remarquez qu’il est nécessaire d’ajouter 4 zéros pour compléter le dernier paquet.
15
1
05_Ch 1.fm Page 16 Thursday, February 18, 2010 11:22 AM
INTERFACES GSM Chaque octet est finalement converti en un nombre hexadécimal, pour ce faire vous pouvez utiliser la calculatrice scientifique de Windows (tableau 1.7). Tableau 1.7.
T
S
E
T
0000 1010100
1010011
1000101
1010100
00001010
10010100
11100010
11010100
0A
94
E2
D4
Chaque lettre est codée sur 7 bits, pour former la trame composée d’octets on regroupe les bits par bloc de 8 on en déduit alors la valeur en hexadécimal. 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 numéro « 0612345678 » en utilisant le centre de messagerie « +33609001390 » il faut constituer la trame : 07913306091093F011000A8160214365870000AA04D4E294OA Pour utiliser le centre de messagerie associé au téléphone, il suffit de remplacer les octets concernant le SMSC par 00 : 0011000A8160214365870000AA04D4E2940A
SMS-DELIVER SMSC vers téléphone GSM. La taille maximale de la trame d’un 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 l’adresse du SMSC et OA qui codifie l’adresse 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
1
Le codage est identique à celui présenté dans la partie SMSSUBMIT. Dans le cas présent il indique quel est le SMSC qui a traité le SMS.
PDU : Protocol Data Unit 7
6
5
4
3
2
RP
UDHI
SRI
X
X
MMS
Champ
Bit 7
1
0
MTI
Tableau 1.8.
Description
0
Il n’existe pas de chemin de repli
1
Il existe un chemin de repli
RP
Champ
Bit 6
Description
0
Le champ UD contient uniquement un message
1
Le champ UD contient un en-tête en plus du message
UDHI
Champ
Bit 5
Description
0
Aucun rapport d’état ne sera retourné au mobile
1
Un rapport d’état sera retourné au mobile
SRI
Champ
Bit 2
Description
0
Des messages supplémentaires pour le MS sont en attente dans le SMSC
1
Pas de message supplémentaire en attente pour le MS dans le SMSC
© DUNOD – La photocopie non autorisée est un délit.
MMS
Champ MTI
Bit 1 Bit 0 0
0
Description SMS-DELIVER : Achemine le SMS du mobile vers le SMSC
Le champ MTI est le plus important, dans le cas d’un SMS-DELIVER il est positionné à 00.
OA : Originator Adress Le codage de l’adresse de l’émetteur est sur le principe semblable au codage de l’expéditeur dans la partie SMS-SUBMIT. 1 octet
2 octets
0 - 8 octets
LEN
Type Number
Numéro de l’émetteur 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 présenté 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
Année
Mois
Jour
Heure
Minute
Seconde
Fuseau
Le champ SCTS se compose de 7 octets, contenant chacun deux champs codés en BCD et de poids inversés. Il indique au destinataire la date et l’heure à laquelle le SMS est arrivé au SMSC. Le champ Fuseau exprimé en quart d’heure indique la différence entre l’heure locale et l’heure GMT.
UDL : User Data Length, UD : User Data 1 octet
0 - 140 octets
UDL
UD
Exemple de décodage Imaginons que nous devions décoder la trame suivante : 07913306091093F0000A81609121436500009920215075032104D4E 2940A Le premier octet « 07 » nous indique que l’adresse du SMSC utilisé pour acheminer le SMS est codée sur 7 octets. On extrait donc les 7 octets suivants afin de déterminer le numéro du SMSC, soit 913306091093F0. Le premier octet « 91 » nous indique qu’il s’agit d’un numéro international. 7
6
5
4
3
2
1
0
1
0
0
1
0
0
0
1
Numéro international
Les 6 octets suivants contiennent le numéro 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 numéro on inverse les deux groupes composés de 4 bits chacun. 3
3
0
6
0
9
1
0
9
3
F
0
3
3
6
0
9
0
0
1
3
9
0
F
L’avant dernier octet F ne correspond à aucun chiffre, il n’est là que pour avoir un nombre de chiffres pair. Le numéro du SMSC utilisé pour convoyer le message est donc : +33609001390. L’octet suivant « 00 » indique le PDU utilisé : 7
6
5
4
3
2
1
RP
UDHI
SRI
X
X
MMS
0
0
0
0
0
0
0
MTI 0
0
RP = 0. Il n’existe pas de chemin de repli. UDHI = 0. Le champ UD contient uniquement un message. SRI = 0. Aucun rapport d’état ne sera retourné au mobile. MMS = 0. Pas de message supplémentaire en attente pour le MS dans le SMSC.
© DUNOD – La photocopie non autorisée est un délit.
MTI = 0. SMS-DELIVER. L’octet suivant 0Ahex = 10dec indique le nombre de chiffres composant le numéro de l’émetteur du message. Attention on ne comptabilise pas l’octet utilisé pour le champ Type Number. D’où OA = 0A816091214365. 6
0
9
1
2
1
4
3
6
5
0
6
1
9
1
2
3
4
5
6
Après permutation des chiffres on obtient le numéro : 0619123456. PID = 00hex donc il s’agit d’un message SMS. DCS = 00hex donc le champ UD est codé avec l’alphabet par défaut, aucune classe n’est spécifiée. Les 7 octets suivants 99202150750321 codifient le champ SCTS (tableau 1.9).
19
1
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
Année
Mois
Jour
Heure
Minute
Seconde
Fuseau
9
9
2
0
2
1
5
0
7
5
0
3
2
1
9
9
0
2
1
2
0
5
5
7
3
0
1
2
12 février 1999
05 : 57 : 03
GMT+3h
Le SMS a donc été expédié par le SMSC le 12 février 1999 à 05 :57 :03 (GMT+3h). Il reste à décoder le dernier morceau de la trame : 04D4E294OA. L’octet 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
T
S
E
T
Chaque octet exprimé en hexadécimal est converti en un nombre binaire composé de 8 bits. D’après le champ DCS on sait que UD est codé avec l’alphabet GSM. On regroupe les bits par paquets de 7 en commençant par la gauche. En s’aidant du tableau de conversion de l’alphabet GSM (voir Annexes) on en déduit le caractère 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 qu’il s’agit d’un SMS contenant le message « TEST » envoyé par « 0619123456 » traité par le SMSC « +33609001390 » le 12 février 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
1.4 CODAGE/DÉCODAGE PAR LOGICIEL
© DUNOD – La photocopie non autorisée est un délit.
Comme vous pouvez le constater le codage/décodage manuel d’une trame PDU est assez fastidieux. Dans la pratique ceci est heureusement totalement transparent pour l’utilisateur du téléphone portable. D’une part le numéro du SMSC utilisé est celui figurant dans la mémoire du mobile, définit par l’opérateur, il est donc inutile de le mentionner lors de la rédaction du message. Le numéro du correspondant peut être sélectionné dans le répertoire ou alors saisie manuellement en mode TEXT. Le corps du message est également saisi en mode TEXT à l’aide du clavier. Rien de plus simple en somme pour rédiger un SMS. Tous les autres champs que nous avons vus précédemment sont gérés par le processeur du mobile. Le mobile se charge ensuite de convertir chacun des champs en valeurs hexadécimales pour constituer la trame qui sera finalement envoyée sur le réseau. Le mobile destinataire du SMS fera le cheminement inverse pour restituer à l’utilisateur seulement les informations pertinentes sur son écran. Malheureusement pour certains téléphones lorsque le port série est relié par exemple à un PC, le mode TEXT n’est plus supporté. Les trames SMS affichées/constituées à l’écran du PC sont obligatoirement en mode PDU ce qui complique fortement les manipulations. Heureusement nous allons faire en sorte grâce au logiciel « ConvertSMS.exe » (figures 1.2 et 1.3) que ce soit le PC qui prenne en charge le codage/décodage des données SMS. Le logiciel développé avec Delphi 4 est relativement simple, le code fait largement appel aux fonctions de manipulation de chaînes de caractères.
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 paramètres correspondant au codage d’un SMS sont présents dans l’onglet nommé : « TEXT -> PDU ». Pour faciliter le codage d’un SMS nous allons figer certains champs (grisés). Le champ SCA est positionné à 00, ainsi le numéro du SMSC utilisé est celui présent dans la mémoire du portable, inutile de s’en soucier. Le champ PDU est à 11hex pour indiquer qu’il s’agit d’un SMS-SUBMIT et que le champ VP est codé en relatif (bit 3 = 0 et bit 4 = 1). Le champ MR est figé à zéro, ainsi l’identification du message est confiée au mobile. Comme il s’agit d’un SMS, le champ PID est à zéro. Le champ DCS est aussi à zéro, ainsi le champ UD doit être codé avec l’alphabet GSM et aucune classe n’est spécifiée. Les autres champs devront être renseignés par l’utilisateur, sauf le champ UDL qui est calculé par le logiciel. Le champ DA correspond au numéro du destinataire du SMS. Le champ VP indique la durée de validité du SMS, sa valeur est comprise entre 0 et 255dec, la durée correspondante s’affiche à côté, par exemple avec VP = 170dec le message aura une durée de validité de 4 jours. Le champ UD correspond au texte du message. Le bouton « convertir » permet d’afficher la trame au format PDU correspondante aux informations saisies. Dans la copie d’écran nous avons repris l’exemple vu précédemment.
22
05_Ch 1.fm Page 23 Thursday, February 18, 2010 11:22 AM
CHAPITRE
CODAGE DES SMS Algorithme de décodage Le deuxième onglet nommé « PDU -> TEXT » permet le décodage d’un SMS réceptionné. On considère que la trame commence toujours par les caractères « 0791 », en effet le numéro 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 décoder les différents champs correspondant à la trame saisie ; attention lors de la saisie de la trame à ne pas insérer de saut de ligne qui viendrait gêner le décodage. Dans la copie d’écran nous avons repris l’exemple vu précédemment.
ConvertSMS.dll Ceux qui pratiquent un langage autre que Delphi ne sont pas oubliés, les fonctions de codage/décodage ont été compilées dans le fichier « ConvertSMS.dll ». Les deux fonctions à déclarer et à appeler dans votre programme sont : Function PduToText(pdu: string):TTEXTE;
L’argument pdu contient la trame à convertir.
© DUNOD – La photocopie non autorisée est un délit.
La fonction retourne la variable typée TTEXTE constituée 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;
L’argument SCA_PDU_MR contient les 3 champs concaténés SCA, PDU et MR, par exemple : « 001100 ». targetms contient le numéro du destinataire, par exemple : « 0601020304 ». PID_DCS contient les champs concaténés PID et DCS. VP est un nombre entier compris entre 0 et 255. text contient le texte du message.
23
1
05_Ch 1.fm Page 24 Thursday, February 18, 2010 11:22 AM
INTERFACES GSM La fonction retourne la variable typée TPDU constituée ainsi : type TPDU=record Len:string[12]; Trame:string[255]; end;
Le formalisme de déclaration et d’appel des fonctions contenues dans la DLL « ConvertSMS.dll » s’effectuera bien évidemment suivant le type de langage utilisé.
24
06_Ch 2.fm Page 25 Thursday, February 18, 2010 11:23 AM
PAGE
CHAPITRE
2
COMMANDES « AT »
2.1 Norme GSM07.07
28
2.2 Norme GSM07.05
41
3
Matériels utilisés
55
4
Interfacer un téléphone GSM
73
5
Réalisations é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 télécommunication européen (ETS) qui spécifie une liste de commandes AT qui permettent l’accès aux fonctions d’un téléphone portable par l’intermédiaire d’un terminal. Ces commandes s’inspirent fortement du standard Hayes, du nom de la société américaine qui dans les années 1970 a défini une liste de commandes universelles permettant de piloter un modem. Chaque instruction débute par les caractères ASCII « AT » tirés de l’abréviation « ATtention » et se termine par un retour chariot, CR : Carriage Return, d’où le nom souvent donné à cette série de commandes : instructions « AT ». On peut effectivement comparer un téléphone portable à un modem sans fil, il est donc logique qu’il utilise des instructions semblables au modem fixe qui équipe nos PC. Les constructeurs se doivent de fabriquer des téléphones portables qui respectent ces normes. La première baptisée GSM07.07 permet l’accès aux fonctions générales du téléphone, la deuxième 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 téléphone portable, TE pour Terminal Equipement qui physiquement peut être un ordinateur ou un microcontrôleur et TA pour Terminal Adaptator qui assure la liaison entre le ME et le TE, à ne pas confondre avec le câble série. Dans la pratique il y a trois possibilités concernant la disposition des différents éléments (figure 2.1) : • TA, ME et TE sont trois entités distinctes ; • TA et ME forment une seule entité, ce qui est le cas le plus fréquent. Par exemple un téléphone portable standard ou un terminal GSM contient dans son boîtier à la fois le TA et le ME. Le TE forme une entité à part, par exemple il peut s’agir d’un ordinateur de type PC qui dispose d’un port série ou d’un circuit électronique basé sur un µC qui implémente un port série ; • 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 »
2
Paramètres Liste des différents paramètres qui sont utilisés avec les commandes AT :
Indique que xxx est un paramètre de la commande AT associée. []
Indique que le paramètre est facultatif.
Carriage Return (retour chariot) = 13dec = 0Dhex
Line Feed = 10dec = 0Ahex
Touche CTRL plus touche Z équivalent au code ASCII EOF pour End Of File ; en informatique c’est un caractère qui signale la fin d’un fichier, ici il signale la fin d’une instruction. = 26dec = 1Ahex OU Touche ESC ou Escape permet de sortir de la commande en cours de frappe sans qu’elle ne soit exécutée. = 27dec = 1Bhex
© DUNOD – La photocopie non autorisée est un délit.
Comme le montre le tableau 2.1, il existe trois manières d’envoyer une même commande AT.
Tableau 2.1.
Commande de test
AT+CXXX=?
Retourne la liste des paramètres utilisables avec la commande CXXX.
Commande de lecture
AT+CXXX?
Retourne le ou les paramètres en cours associés à la commande CXXX.
Commande d’écriture
AT+CXXX=
Applique le ou les paramètres à la commande CXXX.
Dans tous les cas le téléphone doit répondre, favorablement ou non, à la commande envoyée. Si la commande est acceptée, la réponse retournée est de la forme : OK. Si la commande n’est pas reconnue, ou que le ME rencontre un problème lors de son exécution, un message d’erreur est retourné : ERROR, accompagné éventuellement d’un message décrivant la nature de l’erreur (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 d’accéder à toutes les fonctions du ME. Nous n’allons pas détailler la totalité de ces commandes mais seulement celles qui seront susceptibles de nous intéresser dans les chapitres suivants (tableau 2.2). Tableau 2.2.
Commandes
Fonction
Page
AT+CGMI
Identification fabricant
29
AT+CGMM
Identification modèle
29
AT+CGMR
Identification version
29
AT+CGSN
Identification numéro de série (IMEI)
30
AT+CIMI
Information d’identité internationale du mobile (IMSI)
30
AT+CLIP
Présentation du numéro
31
AT+CSCS
Alphabet utilisé par le TE
32
AT+CPAS
État d’activité du téléphone
32
AT+CPIN
Entre le code PIN
33
AT+CBC
État de charge batterie
33
Enregistrement sur le réseau
34
AT+CSQ
Qualité du signal
35
AT+CIND
Indicateurs de contrôle
35
AT+CPBS
Sélectionne un répertoire téléphonique
36
AT+CPBR
Lecture du répertoire téléphonique
37
AT+CPBF
Recherche une entité dans le répertoire téléphonique
37
AT+CPBW
Écriture dans le répertoire téléphonique
38
AT+CCLK
Horloge
38
AT+CALA
Alarme
39
AT+CMEE
Signalisation d’une erreur
39
AT+CREG
28
06_Ch 2.fm Page 29 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
Description détaillée des commandes AT+CGMI : Identification fabricant Commande de test AT+CGMI=?
Réponse OK si erreur +CME ERROR:
Commande de lecture AT+CGMI (exceptionnellement pas de point d’interrogation)
Réponse +CGMI: Renvoi des informations (2 048 caractères au maximum) concernant le fabriquant du ME. si erreur +CME ERROR:
AT+CGMM : Identification modèle Commande de test AT+CGMM=?
Réponse OK si erreur +CME ERROR:
Commande de lecture AT+CGMM (exceptionnellement pas de point d’interrogation)
Réponse +CGMM: Retourne le modèle du ME. si erreur +CGMI ERROR:
© DUNOD – La photocopie non autorisée est un délit.
AT+CGMR : Identification version Commande de test AT+CGMR=?
Réponse OK si erreur +CME ERROR:
Commande de lecture AT+CGMR (exceptionnellement pas de point d’interrogation)
Réponse +CGMR: Retourne la version du ME. si erreur +CGMI ERROR:
29
06_Ch 2.fm Page 30 Thursday, February 18, 2010 11:23 AM
INTERFACES GSM
AT+CGSN : Identification numéro de série (IMEI) Commande de test AT+CGSN=?
Réponse OK si erreur +CME ERROR:
Commande de lecture AT+CGSN (exceptionnellement pas de point d’interrogation)
Réponse +CGSN: Retourne le numéro de série du ME nommé IMEI (International Mobile station Equipment Identity ; voir norme GSM 03.03). si erreur +CGMI ERROR:
AT+CIMI : Information d’identité internationale du mobile (IMSI) Commande de test AT+CGMI=?
Réponse OK si erreur +CME ERROR:
Commande de lecture AT+CIMI (exceptionnellement pas de point d’interrogation)
Réponse
Retourne le numéro IMSI : International Mobile Subscriber Indentity. Permet au TE d’identifier la carte SIM liée au ME. si erreur +CGMI ERROR:
30
06_Ch 2.fm Page 31 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
AT+CLIP : Présentation du numéro Réponse +CLIP: (liste des s supportés) si erreur +CGMI ERROR:
Commande de lecture AT+CLIP?
Réponse +CLIP= , Paramètres : paramètre qui active/désactive la présentation du numéro au TE 0 inactif (valeur par défaut) 1 actif : paramètre qui indique l’état de la fonctionnalité « présentation du numéro » 0 L’opérateur ne fournit pas ce service (non prévu dans l’abonnement) 1 L’opérateur fournit ce service 2 Inconnu (ex : connexion au réseau impossible…) si erreur +CGMI ERROR:
Commande d’écriture AT+CLIP=[]
Réponse OK Paramètre Voir commande de lecture si erreur +CGMI ERROR: Remarque : Si la présentation du numéro est active (AT+CLIP=1) et à condition que l’appelant ne soit pas en mode secret, le numéro est envoyé au TE : +CLIP: ,[,] : numéro de téléphone : type de numéro (national/international) : nom provenant du répertoire, correspondant au numéro de téléphone
© DUNOD – La photocopie non autorisée est un délit.
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?
Réponse OK si erreur +CME ERROR:
Commande de lecture AT+CSCS=?
Réponse +CSCS: Indique au TA quel est l’alphabet utilisé par le TE. Ainsi le TA peut correctement convertir les chaînes de caractères entre le TE et le ME. si erreur +CGMI ERROR:
Commande d’écriture AT+CSCS=
Réponse OK Paramètre : "GSM" GSM alphabet par défaut "HEX" chaîne de nombre hexadécimal 00 à FF "IRA" alphabet de référence international (ITU-T T.50 [13]) si erreur +CGMI ERROR:
AT+CPAS : État d’activité du téléphone Commande de test AT+CPAS=?
Réponse +CPAS: (liste des s supportés)
Commande de lecture AT+CPAS?
Réponse +CPAS : Paramètre Retourne l’état d’activité du ME 0 prêt 1 indisponible 2 indéfini 3 sonnerie (le ME est prêt pour le transfert de commandes entre TA/TE, mais la sonnerie est active) 4 appel en cours (le ME est prêt pour le transfert de commandes entre TA/TE, mais un appel est en cours) 5 en veille si erreur +CGMI ERROR:
32
06_Ch 2.fm Page 33 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
AT+CPIN : Entre le code PIN Commande de test AT+CPIN=?
Réponse OK si erreur +CGMI ERROR:
Commande de lecture AT+CPIN?
Réponse +CPIN= Paramètre : READY ME aucun mot de passe à donner SIM PIN ME attente du SIM PIN SIM PUK ME attente SIM PUK si erreur +CGMI ERROR:
Commande d’écriture AT+CPIN=
Réponse OK Permet de rentrer le code PIN si erreur +CGMI ERROR:
Commande d’écriture AT+CPIN= ,
Réponse OK Permet de modifier le code PIN, est le nouveau code. +CGMI ERROR:
© DUNOD – La photocopie non autorisée est un délit.
AT+CBC : Charge de la batterie Commande de test AT+CBC=?
Réponse +CBC: (liste des s),(liste des s) si erreur +CGMI ERROR:
Commande de lecture AT+CBC?
Réponse +CBC: , Paramètres : état de connexion de la batterie 0 le ME est alimenté par la batterie 1 le ME est connecté à une batterie, mais il n’est pas alimenté par celle-ci 2 le ME n’est pas connecté à une batterie 3 défaut d’alimentation : niveau de charge de la batterie 0 la batterie est déchargée, ou le ME ne dispose pas de batterie 1..100 capacité de la batterie entre 1 et 100 % si erreur +CGMI ERROR:
33
06_Ch 2.fm Page 34 Thursday, February 18, 2010 11:23 AM
INTERFACES GSM
AT+CREG : Enregistrement sur le réseau Commande de test AT+CREG=?
Réponse +CREG: (liste des s supportés) si erreur +CGMI ERROR:
Commande de lecture AT+CREG?
Réponse +CREG: ,[,,] Paramètres : indique dans quel mode la commande AT+CREG est utilisée 0 commande inactive (valeur par défaut) retourne un code indiquant si le téléphone est enregistré sur le réseau +CREG: retourne un code indiquant si le téléphone est enregistré sur le réseau et les informations et : 0 téléphone non enregistré, pas de recherche d’opérateur en cours 1 téléphone enregistré sur le réseau 2 téléphone non enregistré, recherche d’opérateur en cours 3 enregistrement interdit 4 inconnu 5 enregistré, roaming : Location Aera Code, deux octets codés en hexadécimal : Cell-ID, deux octets codés en hexadécimal si erreur +CGMI ERROR:
Commande d’écriture AT+CREG=[]
Réponse OK Paramètre Voir commande de lecture si erreur +CGMI ERROR:
34
06_Ch 2.fm Page 35 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
AT+CSQ : Qualité du signal Commande de test AT+CSQ=?
Réponse +CSQ: (liste des s supportés),(liste des s supportés) si erreur +CGMI ERROR:
Commande de lecture AT+CSQ?
Réponse +CSQ: , Paramètres : 0 – 113 dBm ou moins 1 – 111 dBm 2..30 - 109... – 53 dBm 31 – 51 dBm ou plus 99 inconnu ou non détectable : 0..7 RXQUAL 99 inconnu ou non détectable si erreur +CGMI ERROR:
© DUNOD – La photocopie non autorisée est un délit.
AT+CIND : Indicateurs de contrôle Commande de test AT+CIND=?
Réponse +CIND: (,(liste des s supportés)) [,(, (liste des s supportés))[,...]] si erreur +CGMI ERROR:
Commande de lecture AT+CIND?
Réponse +CIND: [,[,...]] Paramètres : niveau correspondant au : "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 reçu (0-1) "call" appel en cours (0-1) "vox" transmission activée par activité vocale (0-1) "roam" indicateur de roaming (0-1) "smsfull" la mémoire de stockage des sms est pleine (1), ou disponible (0) si erreur +CGMI ERROR:
35
06_Ch 2.fm Page 36 Thursday, February 18, 2010 11:23 AM
INTERFACES GSM
AT+CPBS : Sélectionne un répertoire téléphonique Commande de test AT+CPBS=?
Réponse +CPBS: (liste des s supportés) OK si erreur +CGMI ERROR:
Commande de lecture AT+CPBS?
Réponse +CPBS: [,,] Paramètres Voir commande d’écriture si erreur +CPBS ERROR:
Commande d’écriture AT+CPBS=
Réponse OK Paramètres : "DC" : liste des numéros appelés "EN" : numéro d’urgence stocké dans mémoire SIM ou ME "FD" : répertoire fixe "LD" : dernier numéro appelé "MC" : liste des numéros appelés, mais sans réponse "ME" : répertoire du ME "MT" : répertoire combiné, ME et SIM "ON" : numéros propres à la carte SIM / ME (MSISDNs) "RC" : liste des appels reçus "SM" : répertoire de la carte SIM "TA" : répertoire du TA : indique l’espace utilisé dans la mémoire : taille de la mémoire si erreur +CGMI ERROR:
36
06_Ch 2.fm Page 37 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
AT+CPBR : Lecture du répertoire téléphonique Commande de test AT+CPBR=?
Réponse +CPBR: (liste des s supportés),[],[] Paramètres : taille maximum du champ : taille maximum du champ si erreur +CGMI ERROR:
Commande d’écriture AT+CPBR= [,]
Réponse +CPBR: ,,,[[...] +CPBR: ,,,]] Cette commande affiche le contenu du répertoire situé entre les emplacements et Paramètres : numéro de téléphone : type de numéro : nom de la personne si erreur +CGMI ERROR:
© DUNOD – La photocopie non autorisée est un délit.
AT+CPBF : Recherche une entité dans le répertoire téléphonique Commande de test AT+CPBF=?
Réponse +CPBF: [],[] OK Paramètres : taille maximum du champ : taille maximum du champ si erreur +CGMI ERROR:
Commande de lecture AT+CPBF=
Réponse +CPBF: ,,,[[...] +CBPF: ,,,]] Recherche un élément dans le répertoire courant (celui sélectionné par la commande +CPBS) qui commence par les caractères spécifiés par Paramètres : numéro de téléphone : type de numéro : nom de la personne si erreur +CGMI ERROR:
37
06_Ch 2.fm Page 38 Thursday, February 18, 2010 11:23 AM
INTERFACES GSM
AT+CPBW : Écriture dans le répertoire téléphonique Commande de test AT+CPBW=?
Réponse +CPBW: (liste des s supportés),[],[] Paramètres : taille maximum du champ : taille maximum du champ si erreur +CGMI ERROR:
Commande d’écriture AT+CPBW= [] [, [,[,]]]
Réponse OK Paramètres : numéro de téléphone : type de numéro : nom de la personne si erreur +CGMI ERROR:
AT+CCLK : Date / Heure Commande de test AT+CCLK?
Réponse +CCLK: Retourne la date et l’heure au format "aa/mm/jj","hh:mm:ss" si erreur +CGMI ERROR:
Commande d’écriture AT+CCLK=
Réponse OK mise à jour de la date et de l’heure si erreur +CGMI ERROR:
38
06_Ch 2.fm Page 39 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
AT+CALA : Alarme Commande de test AT+CALA=?
Réponse +CALA: (liste des s supportés),(liste des s supportés),
Paramètres Voir commande de lecture si erreur +CGMI ERROR:
Commande de lecture AT+CALA?
Réponse +CALA: ,,,[] [+CALA: ,,,[][…]]] Paramètre l’alarme horaire du ME. Il est possible de programmer plusieurs alarmes, chaque alarme affiche un message différent sur l’écran du ME. Paramètres : date et heure au format "aa/mm/jj","hh:mm:ss" , , : nombre entier spécifiant l’index de l’alarme (spécifique au fabriquant) : nombre entier qui indique le type d’alarme, son, volume, Led… : texte qui doit s’afficher sur l’écran du ME lorsque l’alarme est active : taille maximum du champ si erreur +CGMI ERROR:
Commande d’écriture AT+CALA= [, [, [, ]]]
Réponse OK Programmation d’une alarme si erreur +CGMI ERROR:
© DUNOD – La photocopie non autorisée est un délit.
AT+CMEE : Signalisation d’une erreur Commande de test AT+CMEE=?
Réponse +CMEE: (liste des s supportés)
Commande de lecture AT+CMEE?
Réponse +CMEE:
Commande d’écriture AT+CMEE=[]
Paramètres : 0 seul le code "ERROR" est retourné 1 retourne le code "ERROR" plus une valeur numérique 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 d’erreur Lorsqu’une commande échoue, un code d’erreur peut être renvoyé au TE (voir commande AT+CMEE) : 0......... échec du téléphone 1......... pas de connexion au téléphone 2......... "phone-adaptor link reserved" 3......... opération interdite 4......... opération non supportée 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 occupée 15....... SIM fausse 16....... mot de passe incorrect 17....... SIM PIN2 requis 18....... SIM PUK2 requis 20....... mémoire pleine 21....... index invalide 22....... non trouvé 23....... échec de mémoire 24....... chaîne de texte trop longue 25....... caractère invalide dans la chaîne 26....... numéro de téléphone trop long 27....... caractère invalide dans le numéro 30....... pas de réseau 31....... timeout réseau 32....... pas de réseau, appel d’urgence seulement 40....... code PIN d’identification sur le réseau requis 41....... code PUK d’identification sur le réseau requis 42....... code PIN second d’identification sur le réseau requis 43....... code PUK second d’identification sur le réseau requis 44....... code PIN d’identification sur l’opérateur requis 45....... code PUK d’identification sur l’opérateur requis 46....... code PIN requis pour une identification 47....... code PUK requis pour une identification 100..... inconnu Attention, certains éléments présentés ci-avant sont extraits d’un document officiel de l’ETSI et par conséquent ils sont soumis à un copyright :
40
06_Ch 2.fm Page 41 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
« © 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 spécifie les commandes AT permettant la gestion des SMS (tableau 2.3).
© DUNOD – La photocopie non autorisée est un délit.
Commande
Fonction
Page
AT+CSMS
Sélection du service de messagerie
45
AT+CPMS
Sélection de la zone mémoire pour le stockage des SMS
46
AT+CMGF
Sélection du format du SMS (PDU ou TEXT)
46
AT+CSCA
Définition de l’adresse du centre de messagerie
47
AT+CSDH
Affiche en mode TEXT le paramétrage des SMS
47
AT+CSAS
Sauvegarde du paramétrage
48
AT+CRES
Restauration du paramétrage par défaut
48
AT+CNMI
Indication concernant un nouveau SMS
49
AT+CMGL
Liste les SMS stockés en mémoire
50
AT+CMGR
Lecture d’un SMS
50
AT+CMGS
Envoie un SMS
51
AT+CMSS
Envoie d’un SMS stocké en mémoire
51
AT+CMGW
Écriture d’un SMS
52
AT+CMGD
Efface un SMS
52
Description détaillée des commandes Paramètres concernant le stockage
Nombre entier indiquant l’emplacement du SMS dans la mémoire associée.
Mémoire dans laquelle les messages sont lus ou effacés. Les commandes utilisant ce paramètre
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 d’un message et +CMGD qui efface un message.
Mémoire utilisée pour rédiger ou envoyer un message. Les commandes utilisant ce paramètre sont +CMSS qui envoie le message situé dans cette mémoire et +CMGW qui écrit un message dans cette mémoire.
Mémoire utilisée pour stocker les messages reçus. Les messages reçus peuvent éventuellement être directement transmis au TE, voir commande +CNMI. Les paramètres , et peuvent théoriquement prendre les valeurs suivantes :
Description
ME
Stockage dans la mémoire du mobile
MT
Tous les stockages associés au mobile
SM
Stockage dans la carte SIM
TA
Stockage dans le TA (Terminal Adaptator)
Si le mobile est utilisé en mode PDU ce paramètre est un nombre entier compris entre 0 et 4. En mode TEXT il s’agit alors d’une chaîne de caractères. Dans les deux cas il indique l’état du message situé en mémoire :
Mode PDU
Mode TEXT
0
REC UNREAD
Message reçu non lu
1
REC READ
Message reçu lu
2
STO UNSENT
Message stocké non envoyé
3
STO SENT
Message stocké déjà envoyé
4
ALL
Tous les messages (voir commande +CMGL)
Signification
nombre entier indiquant le nombre de messages qu’il est possible de stocker dans la mémoire .
42
06_Ch 2.fm Page 43 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
nombre entier indiquant le nombre de messages qu’il est possible de stocker dans la mémoire .
nombre entier indiquant le nombre de messages qu’il est possible de stocker dans la mémoire .
nombre entier indiquant le nombre de messages stockés dans la mémoire .
nombre entier indiquant le nombre de messages stockés dans la mémoire .
nombre entier indiquant le nombre de messages stockés dans la mémoire .
© DUNOD – La photocopie non autorisée est un délit.
Paramètres concernant les données On retrouve bien entendu des paramètres communs à ceux que nous avons détaillés dans le chapitre « Codage des SMS ».
Il s’agit d’une chaîne de caractères représentant le nom du destinataire ou de l’expéditeur du message correspondant à une entrée trouvée dans le répertoire du mobile (voir commande associée +CSCS).
Adresse du destinataire du message. Le type d’adresse utilisé est donné par .
Correspond au champ User Data qui stocke le corps du message.
Data Coding Scheme, indique l’alphabet utilisé pour composer le champ et la classe du message.
Discharge Time respectant le format : "yy/MM/dd, hh:mm:ss±zz", où les caractères indiquent l’année (deux derniers chiffres), mois, jour, heure, minutes, secondes et le décalage horaire.
Indique le type de massage :
Description
17dec
SMS-DELIVER ou SMS-SUBMIT
2dec
SMS-STATUS-REPORT ou SMS-COMMAND
Indique la longueur du champ . En mode TEXT il indique le nombre de caractères, en mode PDU il indique le nombre d’octets.
43
2
06_Ch 2.fm Page 44 Thursday, February 18, 2010 11:23 AM
INTERFACES GSM
Référence du message (nombre entier compris entre 0 et 255dec).
Adresse de l’émetteur du message.
Contient les informations relatives au type de PDU.
Protocole Identifier, indique à quel type de service télématique est destiné le message, par défaut, il est à 0, le message est donc traité comme un SMS.
Adresse du centre de messagerie.
Service Centre Time Stamp contient la date et l’heure à laquelle le SMS est arrivé au SMSC (voir ).
Type de l’adresse de destination, quand le premier caractère de est + on a =145dec (numéro international) sinon =129dec (numéro national).
Type de l’adresse de l’émetteur du message, quand le premier caractère de est + on a =145dec (numéro international) sinon =129dec (numéro national).
Format de codage de l’adresse du centre de messagerie, ce paramètre est facultatif, s’il est omis les numéros téléphoniques nationaux/internationaux sont reconnus par le caractère « + » qui précède le numéro.
Nombre compris entre 0 et 255dec indiquant la durée de validité du message.
44
06_Ch 2.fm Page 45 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
Commandes AT pour la gestion des SMS AT+CSMS : Sélection du service de messagerie Réponse +CSMS: (liste des s supportés) Paramètres Voir commande d’écriture si erreur +CMS ERROR
Commande de lecture AT+CSMS?
Réponse +CSMS: ,, Retourne les types de messages supportés par le ME : pour le mobile qui reçoit le message, pour le mobile qui émet le message. Paramètres Voir commande d’écriture si erreur +CMS ERROR
Commande d’écriture AT+CSMS=
Réponse +CSMS: , Paramètres : 0 GSM 03.40 et 03.41 1...127 réservé 128... spécifique au constructeur , : 0 type non supporté 1 type supporté si erreur +CMS ERROR
© DUNOD – La photocopie non autorisée est un délit.
Commande de test AT+CSMS=?
45
06_Ch 2.fm Page 46 Thursday, February 18, 2010 11:23 AM
INTERFACES GSM
AT+CPMS : Sélection de la zone mémoire pour le stockage des SMS Commande de test AT+CPMS=?
Réponse +CPMS: (liste des s supportées),(liste des s supportées), (liste des s supportées) Liste pour chaque type de mémoire si erreur +CMS ERROR
Commande de lecture AT+CPMS?
Réponse +CPMS: ,,,,,, ,, Affiche pour chaque type de mémoire l’espace utilisé et la capacité de stockage si erreur +CMS ERROR:
Commande d’écriture +CPMS=
[,[,]]
Réponse +CPMS: ,,,,, Affecte une mémoire aux paramètres , et si erreur +CMS ERROR
AT+CMGF : Sélectionne le format des SMS (PDU ou TEXT) Commande de test AT+CMGF=?
Réponse +CMGF: liste des s supportés OK Paramètre Voir commande d’écriture si erreur +CMS ERROR
Commande de lecture AT+CMGF?
Réponse +CMGF: OK Paramètre Voir commande d’écriture si erreur +CMS ERROR
Commande d’écriture AT+CMGF= []
Réponse OK sélectionne le format de dialogue utilisé Paramètre :0 mode PDU (mode disponible sur tous les types de mobile) 1 mode TEXT si erreur +CMS ERROR
46
06_Ch 2.fm Page 47 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
AT+CSCA : Adresse du centre de messagerie (SMSC) Commande de test AT+CSCA=?
Réponse OK si erreur +CMS ERROR
Commande de lecture AT+CSCA?
Réponse +CSCA: , OK si erreur +CMS ERROR
Commande d’écriture Si mode TEXT (+CMGF=1) : AT+CSCA= [,]
Réponse OK Définit l’adresse du centre de messagerie à utiliser pour l’envoi des SMS si erreur +CMS ERROR
© DUNOD – La photocopie non autorisée est un délit.
AT+CSDH : Affiche en mode TEXT le paramétrage des SMS Commande de test AT+CSDH=?
Réponse +CSDH: (liste des s supportés) Paramètre Voir commande d’écriture si erreur +CMS ERROR
Commande de lecture AT+CSDH?
Réponse +CSDH: Paramètre Voir commande d’écriture si erreur +CMS ERROR
Commande d’écriture AT+CSDH= []
Réponse OK Paramètre : 0 n’affiche pas tout le paramétrage du SMS, concerne les commandes +CSCA et +CSMP (, , , , et ) sinon , ou pour +CMT, +CMGL, +CMGR 1 affiche tout le paramétrage du SMS si erreur +CMS ERROR
47
06_Ch 2.fm Page 48 Thursday, February 18, 2010 11:23 AM
INTERFACES GSM
AT+CSAS : Sauvegarde du paramétrage en cours Commande de test AT+CSAS=?
Réponse +CRES: liste des s supportés si erreur +CMS ERROR
Commande d’écriture AT+CSAS= []
Sauvegarde en mémoire du paramétrage du service de messagerie en cours (concerne la commande +CSCA). Un mobile peut contenir dans sa mémoire volatile jusqu’à 255 profiles différents. si erreur +CMS ERROR
AT+CRES : Restauration du paramétrage par défaut Commande de test AT+CRES=?
Réponse +CRES: liste des s supportés si erreur +CMS ERROR
Commande d’écriture AT+CRES= []
Restauration d’un des paramétrages du service de messagerie (concerne la commande +CSCA) stockés en mémoire. Un mobile peut contenir dans sa mémoire volatile jusqu’à 255 profiles différents définis à l’aide de la commande +CSAS. si erreur +CMS ERROR
48
06_Ch 2.fm Page 49 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
© DUNOD – La photocopie non autorisée est un délit.
AT+CNMI : Indication concernant un nouveau SMS Commande de test AT+CNMI=?
Réponse +CNMI: (liste des s supportés), (liste des s supportés) Paramètres Voir commande d’écriture si erreur +CMS ERROR
Commande de lecture AT+CNMI?
Réponse +CNMI: , Paramètres Voir commande d’écriture si erreur +CMS ERROR
Commande d’écriture +CNMI= [ [,]]
Réponse OK Détermine comment le mobile doit informer le TE lorsqu’un nouveau SMS arrive du réseau. : 0 Les indications concernant la réception d’un nouveau message sont stockées dans le TA. 1 Rejette les indications concernant la réception d’un nouveau message lorsque la liaison entre le TA et le TE est réservée. Sinon les indications sont directement transférées vers le TE. 2 Sauvegarde dans le TA les indications concernant la réception d’un nouveau message lorsque la liaison entre le TA et le TE est réservée. Lorsque la liaison est libre, les indications sont transférées vers le TE. 3 Les indications concernant la réception d’un nouveau message sont directement transférées vers le TE. : 0 Aucune indication concernant le SMS-DELIVER n’est envoyée au TE. 1 Si le SMS-DELIVER est stocké dans le mobile, les indications concernant l’emplacement en mémoire du message sont envoyées au TE en utilisant le code +CMTI: , 2 Les SMS-DELIVERs sont directement acheminés au TE en utilisant le code +CMT : [], 3 Les SMS-DELIVERs de classe 3 sont directement acheminés au TE en utilisant le code : +CMT: [], si erreur +CMS ERROR
49
06_Ch 2.fm Page 50 Thursday, February 18, 2010 11:23 AM
INTERFACES GSM
AT+CMGL : Liste les SMS stockés en mémoire Commande de test AT+CMGL=?
Réponse +CMGL: liste des s supportés OK si erreur +CMS ERROR
Commande d’écriture AT+CMGL= []
Réponse Si mode PDU (AT+CMGF=0) et commande réussie +CMGL: ,,[], [+CMGL:,,[], [...]] Si mode TEXT (AT+CMGF=1) et commande réussie +CMGL: ,,,[],[] [,,][ +CMGL: ,,,[],[] [,,][...]] Retourne tous les messages stockés avec leur état depuis la mémoire Si l’état d’un message est « received unread » il devient « received read » si erreur +CMS ERROR
AT+CMGR : Lecture d’un SMS Commande de test +CMGR=?
Réponse OK si erreur +CMS ERROR
Commande d’écriture +CMGR=
Réponse Si mode PDU (AT+CMGF=0) et commande réussie +CMGR: ,[], Si mode TEXT (AT+CMGF=1), commande réussie et SMS-DELIVER +CMGR: ,,[], [,,,,,,,]
Si mode TEXT (AT+CMGF=1), commande réussie et SMS-SUBMIT +CMGR: ,,[] [,,,,,[],,,]
Retourne le message ayant pour emplacement dans la mémoire Si l’état d’un message est « received unread » il devient « received read » si erreur +CMS ERROR
50
06_Ch 2.fm Page 51 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT »
2
AT+CMGS : Envoi d’un SMS Commande de test AT+CMGS=?
Réponse OK si erreur +CMS ERROR
Commande d’écriture Si mode PDU (+CMGF=0) : +CMGS=
trame PDU
Si mode TEXT (+CMGF=1) : +CMGS= [,]
texte
Réponse +CMGS: [,] OK Envoi du SMS sur le réseau (SMS-SUBMIT). La référence du message est retournée au terminal émetteur si le message est correctement envoyé. Si erreur : +CMS ERROR: Note : La fin du message est signalée par CTRL Z ESC annule l’envoi du message en cours, bien que le terminal retourne OK, le SMS n’est pas envoyé. Envoi d’e-mail par SMS : certains providers ne reconnaissent pas le symbole @, il est possible dans certains cas de le remplacer par !
AT+CMSS : Envoi d’un SMS stocké en mémoire Réponse OK si erreur +CMS ERROR
Commande d’écriture +CMSS= [,[,]]
Si l’envoi est réussi : +CMSS: Cette commande envoie le SMS (SMS-SUBMIT), situé à l’emplacement de la mémoire La référence du message est retournée au terminal émetteur si le message est correctement envoyé. si erreur +CMS ERROR
© DUNOD – La photocopie non autorisée est un délit.
Commande de test AT+CMSS=?
51
06_Ch 2.fm Page 52 Thursday, February 18, 2010 11:23 AM
INTERFACES GSM
AT+CMGW : Écriture d’un SMS en mémoire Commande de test AT+CMGW=?
Réponse OK si erreur +CMS ERROR
Commande d’écriture Si mode PDU (+CMGF=0) : +CMGW= [,stat]
trame PDU
Si mode TEXT (+CMGF=1) : +CMGW= [, [,]] texte
Réponse +CMGW: L’exécution de cette commande effectue le stockage dans la mémoire d’un message (SMS-DELIVER ou SMS-SUBMIT). L’emplacement du message dans la mémoire est retourné. Par défaut l’état du message sera « stored unsent », mais le paramètre qui est facultatif autorise les autres valeurs possibles. si erreur +CMS ERROR
AT+CMGD : Efface un SMS Commande de test AT+CMGD=?
Réponse OK si erreur +CMS ERROR
Commande d’écriture AT+CMGD=
Réponse OK Efface le message situé dans la mémoire à l’emplacement définit par si erreur +CMS ERROR
52
06_Ch 2.fm Page 53 Thursday, February 18, 2010 11:23 AM
CHAPITRE
COMMANDES « AT » Codes d’erreur Lorsqu’une commande échoue, un code d’erreur peut être renvoyé au TE (voir commande AT+CMEE) : 300 ...............échec ME 301 ...............service SMS du ME réservé 302 ...............opération non autorisée 303 ...............opération non supportée 304 ...............paramètre invalide (mode PDU) 305 ...............paramètre invalide (mode TEXT) 310 ...............SIM non insérée 311 ...............SIM PIN nécessaire 312 ...............PH-SIM PIN nécessaire 313 ...............échec SIM 314 ...............SIM occupée 315 ...............SIM faux 320 ...............échec mémoire 321 ...............index mémoire non valide 322 ...............mémoire pleine 330 ...............adresse SMSC inconnue 331 ...............pas de réseau 332 ...............timeout réseau 500 ...............erreur inconnue 501 à 511 .....réservé 512 ...............spécifique au constructeur Attention, certains éléments présentés ci avant sont extraits d’un document officiel de l’ETSI et par conséquent ils sont soumis à un copyright :
© DUNOD – La photocopie non autorisée est un délit.
« © 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
2
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
3
MATÉRIELS UTILISÉS
3.1 Téléphones portables
56
3.2 Modules GSM intégrés
62
4
Interfacer un téléphone GSM
73
5
Réalisations é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 TÉLÉPHONES PORTABLES La majorité des téléphones portables disposent en interne d’un TA, dans ce cas il est possible de récupérer les lignes TxD et RxD disponibles sur un connecteur multibroche, propre à chaque modèle de téléphone. Un simple circuit adaptateur de niveau de tension TTL/RS232 permet alors de relier le téléphone au port série d’un PC. Bien entendu tout portable normalement constitué se doit de reconnaître les normes GSM07.07 et GSM07.05, ainsi il est possible via l’ordinateur d’accéder à toutes les fonctions du téléphone à l’aide des commandes AT que nous avons vues précédemment. Il est important de noter que certains modèles de portables ne supportent pas le mode TEXT, la gestion des SMS entre l’ordinateur et le mobile se fait uniquement en mode PDU. Rappelons que la commande AT+CMGF=? permet de lister les modes supportés par le mobile, si la réponse est +CMGF : (0,1) cela signifie que les modes TEXT (0) et PDU (1) sont supportés. Si la réponse est +CMGF : (0), seul le mode PDU peut être utilisé.
Adaptateur TTL/RS232
Figure 3.1. Schéma de l’adaptateur TTL/RS232.
Nous allons faire appel au célèbre circuit intégré MAX232 qui, câblé avec ces 4 condensateurs au tantale de 1 µF, permet d’adapter
56
07_Ch 3.fm Page 57 Thursday, February 18, 2010 11:24 AM
CHAPITRE
MATÉRIELS UTILISÉS
3
les niveaux de tension entre le PC et le téléphone. Paradoxalement le plus compliqué consiste à se procurer le connecteur pour relier le téléphone au montage. Il est possible de modifier un kit piéton encore faut-il que les broches qui nous intéressent soient présentes. Quelques exemples de brochages récupérés sur Internet vont vous permettre d’identifier les lignes à relier au montage. Attention les brochages présentés ici n’ont pas été vérifiés, leur utilisation est sous votre entière responsabilité. L’alimentation du montage peut se faire à partir des sorties DTR et RTS de l’ordinateur, dans ce cas le cavalier J1 est en position B. Comme certains PC ne disposent pas d’une puissance suffisante sur leur
Figure 3.2. Circuit imprimé. Figure 3.3. Implantation des composants. © DUNOD – La photocopie non autorisée est un délit.
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 : régulateur 78L05 J1 : barrette HE10 3 contacts + cavalier CN1 : bornier à vis 2 plots CN2 : connecteur DB9 mâle pour CI/coudé 90° CN3 : connecteur spécifique au modèle de téléphone 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. Différents brochages.
58
07_Ch 3.fm Page 59 Thursday, February 18, 2010 11:24 AM
CHAPITRE
MATÉRIELS UTILISÉS
3
port série, c’est le cas notamment des portables, il est possible de connecter sur le bornier CN1 une alimentation externe délivrant une tension de 12 V, dans ce cas le cavalier J1 est en position A. Dans les deux cas le régulateur 78L05 se charge de réguler à + 5 V la tension destinée au MAX232 mais aussi au téléphone, certains modèles ont besoin de cette tension pour activer leur port série. Il est possible de tester le montage avant même de l’avoir connecté au téléphone. Pour cela, reliez momentanément les lignes TXD et RXD, ainsi les données transmises sur TXD sont recopiées sur RXD. Un simple logiciel comme Hyper Terminal suffira à vérifier que le texte saisi à l’écran est renvoyé comme un écho par le montage.
© DUNOD – La photocopie non autorisée est un délit.
Adaptateur pour FBUS/MBUS (ou M2BUS)
Certains téléphones, notamment ceux de la marque Nokia, nécessitent une électronique légèrement différente 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 privilégié de l’utilisateur, il permet le transfert de données à une vitesse maximale de 115 kbauds, on retrouve les broches TXD et RXD mais les niveaux de tension ne doivent pas dépasser 3 V, d’où la présence des diodes zener DZ1
59
Figure 3.5. Schéma de l’adaptateur pour FBUS/MBUS.
07_Ch 3.fm Page 60 Thursday, February 18, 2010 11:24 AM
INTERFACES GSM et DZ2 qui possèdent une tension de seuil de 2,7 V. Le MBUS est plutôt réservé au personnel technique de Nokia pour effectuer le paramétrage système du téléphone, bien qu’il puisse être aussi utilisé pour le transfert de données mais avec une vitesse limitée à 9 600 bauds. La transmission et la réception se font sur une seule broche nommée MBUS. Le montage présenté 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 même de l’avoir relié au téléphone. En effet, lorsque rien n’est connecté au bus, les lignes RXD et TXD se trouvent reliées par la diode D4 de sorte que toute information envoyée 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 : régulateur 78L05 J1 : barrette HE10 3 contacts + cavalier J2 : barrette HE10 2 contacts + cavalier CN1 : bornier à vis 2 plots CN2 : connecteur DB9 mâle pour CI coudé 90° CN3 : connecteur spécifique au modèle de téléphone utilisé IC1 : MAX232 + support DIL 16 broches
60
07_Ch 3.fm Page 61 Thursday, February 18, 2010 11:24 AM
CHAPITRE
MATÉRIELS UTILISÉS
© DUNOD – La photocopie non autorisée est un délit.
Remarque : pour relier l’adaptateur TTL/RS232 ou l’adaptateur pour FBUS/MBUS (ou M2BUS) au port série d’un ordinateur il faut utiliser un câble RS232 « droit », la ligne TXD de l’adaptateur doit être connectée sur la ligne TXD du PC et la ligne RXD de l’adaptateur doit être connectée sur la ligne RXD du PC (voir figure 3.9).
3
Figure 3.8. Brochages concernant les téléphones de la marque NOKIA.
Figure 3.9. Câble adaptateur.
Cordons DATA Si vous n’êtes pas convaincu du brochage trouvé sur Internet et que vous avez peur d’abîmer votre téléphone, il est possible d’acheter un câble tout prêt. Ces câbles appelés 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 câble correspondant à votre modèle de téléphone, avec la possibilité de commander par correspondance si le paiement en ligne vous rebute. Ces câbles disposent en interne de toute la circuiterie permettant une liaison directe entre votre téléphone et
61
07_Ch 3.fm Page 62 Thursday, February 18, 2010 11:24 AM
INTERFACES GSM le port série du PC. L’énergie nécessaire à la mise à niveaux des signaux est prélevée, en principe, de la ligne DTR, ce qui rend le câble totalement autonome. Notez qu’il existe des câbles permettant de connecter simultanément une alimentation externe afin de recharger la batterie du téléphone.
3.2 MODULES GSM INTÉGRÉS On trouve désormais sur le marché des téléphones GSM intégrés débarrassés 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 puisqu’ils supportent les normes GSM07.07 et GSM07.05 décrites précédemment et permettent de ce fait l’échange de données, de SMS, d’emails et même de télécopies (FAX) via le réseau de téléphonie mobile. Leur simplicité de mise en œuvre ouvre des perspectives très intéressantes concernant la réalisation de montages électroniques sans fil. La société Lextronic propose à la vente via son site Internet plusieurs modèles de modules GSM intégrés l’adresse http://www.lextronic.fr/R203-modules-gsm--gprs.html
Le TM2 de TELTONIKA Parmi les différents modèles proposés par Lextronic notre choix s’est porté sur le TM2 fabriqué par la société Teltonika. Il s’agit d’un modèle quadri bandes qui utilise les fréquences 850, 900, 1 800 et 1 900 MHz. Il est capable de fonctionner dans les modes voix, données, FAX et surtout, le plus intéressant pour nous, dans le mode SMS. Le module dispose d’un support destiné à recevoir l’indispensable carte SIM et un connecteur MMCX permettant de relier une petite antenne RF également fournie par Lextronic. Toutes les entrées et sorties utiles au pilotage du module sont disponibles sur un connecteur comportant 60 points en CMS. Inutile d’espérer souder vous-même un tel composant. Heureusement Lextronic propose un adaptateur qui répartit l’ensemble des connexions sur 4 rangées 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 série d’un PC et surtout à toutes les réalisations présentées dans le chapitre 5. Une fois de plus nous faisons donc appel au traditionnel MAX232 pour l’adaptation 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 autorisée est un délit.
MATÉRIELS UTILISÉS
Transmission
Voix, données et SMS
Alimentation
3.5 V à 4.2 V, typiquement 3.8 V
Bandes de fréquences
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 d’émission
Class 4 (2 W) pour bandes GSM/EGSM Class 1 (1 W) pour bandes DCS/PCS
Lecteur de carte SIM
Intégré 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 série de type UART
Normes respectées
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
Température d’utilisation
– 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 d’abaisser la tension fournie par la sortie TXD du MAX232 à l’aide d’un simple pont diviseur de tension constitué par les résistances R1 et R2. L’entrée KIN2 est reliée au GND ainsi le TM2 devient actif dès sa mise sous tension. Le module TM2 doit être alimenté par une tension de +3,8v via ses entrées VBAT. Nous utilisons un régulateur de tension LM317 (REG2) qui délivre une tension fonction de la résistance du potentiomètre P1. Avant même d’insérer le module TM2 il est impératif de régler le potentiomètre P1 jusqu’à l’obtention d’une tension de +3,8v entre la broche VBAT et la broche GND.
63
3
Tableau 3.1. Caractéristiques 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 d’aluminium fera office de dissipateur thermique pour REG2. Un deuxième régulateur 78L05 (REG1) est nécessaire pour alimenter le circuit MAX232 avec une tension plus conventionnelle de +5v.
Figure 3.11. Le module TM2 avec son antenne sur sa platine d’adaptation.
Compte tenu de l’intensité absorbée par le module GSM notamment lors des phases de recherche de réseau, il conviendra d’utiliser un bloc alimentation secteur délivrant au moins une intensité de 1A pour une tension continue comprise entre 9 et 12v. Une prise jack (CN1) femelle permet de relier facilement n’importe quel bloc du commerce. L’alimentation est reprise sur le connecteur CN2 afin d’alimenter le montage hôte, un de ceux présentés dans le chapitre 5.
64
07_Ch 3.fm Page 65 Thursday, February 18, 2010 11:24 AM
CHAPITRE
MATÉRIELS UTILISÉS
3
Figure 3.12. Schéma électrique.
© DUNOD – La photocopie non autorisée est un délit.
Seules les broches utiles au montage sont reliées à la carte d’adaptation via 4 connecteurs CN4 à CN7 de type HE10. Comme les broches VBAT et GND sont déjà interconnectées sur la carte d’adaptation il n’est pas utile de toutes les reliées à 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 (précision 1 %) P1 : potentiomètre 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 d’adaptation + 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
MATÉRIELS UTILISÉS
3
Mise en œuvre Le montage peut être connecté au port série d’un 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 s’effectuer directement au port série du PC ou par l’intermédiaire d’un câble « droit » constitué de deux connecteurs DB9 mâle et femelle.
Figure 3.15. Câble « droit » constitué de deux connecteurs DB9 mâle et femelle.
Le montage peut également être directement connecté au port série d’une des 5 réalisations présentées au chapitre 5.
Commandes AT spécifiques au module TM2 En supplément des commandes AT présentées au chapitre 2, il est nécessaire de connaître les commandes détaillées ci-après. Elles nous serons utiles à la fin du chapitre suivant afin de paramétrer la vitesse de transmission entre le module TM2 (TA) et le montage hôte (TE).
© DUNOD – La photocopie non autorisée est un délit.
AT+IpR : Définit la vitesse de transmission série Commande de test AT+IPR=?
Réponse +IPR : liste des supportées pour la transmissions des données entre la TA et le TE 0, 2400, 4800, 9600, 19200, 38400, 57600, 115200 bps. 115200 est le réglage sortie d’usine. 0 signifie que le TA se synchronise automatiquement sur la vitesse du TE
Commande de lecture AT+IPR?
Réponse +IPR : OK Retourne la vitesse de transmission en cours si erreur +CME ERROR :
Commande d’écriture AT+IPR=
Réponse OK Définit la vitesse de transmission si erreur +CME 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 d’écriture AT&W []
Réponse OK Cette commande enregistre en mémoire la configuration active du TA dans un des deux profiles utilisateurs. =0 premier profile (valeur par défaut) =1 deuxième profile si erreur +CME ERROR : Nota : cette commande doit être utilisée conjointement avec la commande AT+CPWROFF pour que la mémorisation du profile soit effective Liste des paramètres mémorisés 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
MATÉRIELS UTILISÉS
3
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[]
Réponse 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 autorisée est un délit.
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 stockées dans les profiles utilisateurs. si erreur +CME ERROR :
69
07_Ch 3.fm Page 70 Thursday, February 18, 2010 11:24 AM
INTERFACES GSM Tableau 3.5.
AT&Y : Définit le profile chargé à la suite d’un RESET AT&Y[]
Réponse OK =0 premier profile (valeur par défaut) =1 deuxiéme profile si erreur +CME 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 d’ouvrir des sockets permettant le transfert de données suivant le protocole TCP/IP. La configuration en mode client ou serveur se fait à l’aide de commandes AT propres au module TM2. Sans trop rentrer dans les détails nous vous présentons deux exemples de configuration tirés de la datasheet du constructeur Teltonika AT commands.
Configuration du profile GPRS Tout d’abord il faut configurer un profile GPRS à partir des informations de votre opérateur téléphonique (SFR dans cet exemple). Tableau 3.6.
at+npsd=0,1,"websfr" OK
Création d’un 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 d’utilisateur (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
MATÉRIELS UTILISÉS
3
Création d’un 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 qu’il existe 28 octets en provenance du client Lecture de ces 28 octets
at+nsord=1,28
Création d’un soket 0 = n° du soket TCP Association du socket au port 80 Affichage de l’adresse IP du client qui tente de se connecter
Réponse 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 autorisée est un délit.
+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 d’une 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 Création d’un 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 Création d’un soket TCP 0 = n° du soket Adresse IP serveur=151.9.34.66 et port=80 associés au socket n°0 Ecriture de 18 octets à destination du serveur Confirmation d’écriture Notification de réception de 18 octets émis par le serveur Lecture des 8 premiers octets Notification qu’il existe 10 octets restant Lecture des 10 octets Fermeture du socket 0 Fermeture du profile GPRS n° 0
Pour plus d’informations sur la mise en œuvre de montages autonomes utilisant la technologie TCP/IP pour communiquer, nous vous renvoyons à l’ouvrage Contrôle, 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
4
INTERFACER UN TÉLÉPHONE GSM
5
73
4.1 Avec un PC
74
4.2 Avec un PicBasic
92
Réalisations é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 téléphone (ou terminal) GSM. Dans un premier temps nous utiliserons un ordinateur de type PC en guise de TE (Terminal Equipement), les commandes AT vues précédemment saisies à partir du logiciel Hyper Terminal seront envoyées via le port série. Dans un deuxième temps c’est un simple microcontrôleur PicBasic beaucoup plus compacte qui nous permettra, en matière d’envoi et de réception de SMS, d’atteindre les mêmes résultats que le PC.
4.1 AVEC UN PC Le logiciel Hyper Terminal livré en standard avec Windows est utilisé pour envoyer les commandes AT tirées des normes GSM07.05 et GSM07.07. Un logiciel maison développé sous DELPHI vous permettra d’envoyer, de recevoir, et de consulter facilement vos SMS.
Matériel Téléphone GSM standard • un câble spécifique, du commerce, ou que vous fabriquerez vous-même (adaptateur RS232/TTL), comme nous l’avons vu dans le chapitre 3 ; • une carte SIM pour vous connecter au réseau GSM (vous pouvez utiliser une carte prépayée telle que mobicarte) ; • un PC disposant d’un port série libre (exemple : COM2 ou COM1). Nota : si votre ordinateur n’a pas de port série vous pouvez utiliser un convertisseur USB-Série 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 réseau GSM (vous pouvez utiliser une carte prépayée telle que mobicarte) ; • une antenne GSM (fournie par le fabriquant) ; • un bloc secteur pour l’alimentation (9 à 12 v / 1 A) ; • un PC disposant d’un port série libre (exemple : COM2 ou COM1). Nota : si votre ordinateur n’a pas de port série vous pouvez utiliser un convertisseur USB-Série 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 TÉLÉPHONE GSM
4
Attention, veillez à mettre le téléphone ou le terminal hors tension avant d’insérer ou de retirer la carte SIM de son lecteur.
Hyper Terminal Ouvrez une session du logiciel Hyper Terminal généralement situé sous le répertoire « C:\Program Files\Windows ». Vous pouvez créer un raccourci sur le bureau pour un accès ultérieur plus rapide.
Figure 4.1. Description de la connexion.
© DUNOD – La photocopie non autorisée est un délit.
Dans la fenêtre « Description de la connexion » (figure 4.1) spécifiez un nom pour la connexion que vous allez créer. Choisissez également une icône qui sera associée à la connexion. Dans la fenêtre « Numéro de téléphone » (figure 4.2) sélectionnez dans la liste déroulante « Se connecter en utilisant » le port COM1 ou COM2. Les autres listes de la fenêtre qui sont utilisées uniquement avec un modem doivent se griser. La fenêtre Propriétés de COMx (figure 4.3) permet de configurer le protocole de transfert. La vitesse de transmission définie en bits par seconde (ou bauds) est fixée à 9 600. Cette valeur n’est, en principe, pas primordiale pour un téléphone GSM car celui-ci est prévu pour se synchroniser sur la vitesse de transmission du TE. Nous avons volontairement choisi une vitesse ni trop rapide ni trop lente, susceptible d’être acceptée par tous les modèles de téléphone. Les autres paramètres 8 bits de données, pas de parité et 1 bit de stop correspondent à la configuration par défaut. Aucun contrôle de flux n’est spécifié, il suffira d’attendre la confirmation de traitement de la commande saisie avant d’envoyer 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. Numéro de téléphone.
Attention : concernant le module GSM TM2 vous devez utiliser une vitesse de 115 200 bds. Nous verrons dans le paragraphe « Commandes spécifiques au TM2 de Teltonika » comment ramener cette vitesse à 9 600 bds. Remarque : il n’est pas utile de paramétrer le logiciel pour que les commandes saisies au clavier s’affichent à l’écran car chaque caractère saisi est automatiquement renvoyé par le ME en écho.
Figure 4.3. Propriétés de COM2.
76
08_Ch 4.fm Page 77 Thursday, February 18, 2010 11:25 AM
CHAPITRE
INTERFACER UN TÉLÉPHONE GSM
4
Ceci permet de contrôler que la commande est correctement réceptionnée par le ME. On constate d’ailleurs un très léger retard entre la saisie d’une commande et son affichage à l’écran. On constate aussi que si une nouvelle commande ne commence pas par les caractères "AT+" les caractères saisis ne sont pas affichés à l'écran, donc refusés 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 caractère , à l’écran il se traduit par un retour à la ligne. Si la liaison est établie le mobile doit simplement répondre par : OK
© DUNOD – La photocopie non autorisée est un délit.
Figure 4.4. Hyper Terminal.
Lorsque l’on utilise un logiciel informatique comme Hyper Terminal pour envoyer ou recevoir des données via le port série du PC, les caractères saisis à l’écran sont codés suivant la table des caractères ASCII. Par exemple si vous tapez la lettre majuscule A c’est le code 1000001bin qui est envoyé au système connecté sur le port série. Il est donc impératif que ce système utilise la même table pour convertir la donnée réceptionnée. Dans notre cas, le téléphone GSM peut utiliser différents alphabets citons par exemple : IRA, GSM, HEX… malheureusement l’alphabet ASCII n’est pas supporté. Cependant, si l’on se limite à l’utilisation des caractères « usuels » (A…Z, a…z, 0…9,…) la compatibilité est assurée. Il faut rester prudent dans l’utilisation des autres caractères, notamment les caractères accentués. 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 caractères non compatibles, il faut saisir un anti-slash suivi du caractère ASCII ; voir quelques exemples au tableau 4.1.
Caractère GSM
Valeur hexa. du caractère GSM
Caractère ASCII
Caractères ASCII de remplacement
Codes hexa. des caractères de remplacement
@
00
(null)
\00
5C 30 30
$
02
\02
5C 30
ù
06
\
5C
à
7F
\
5C
Remarque : pour connaître tous les caractères incompatibles entre l’alphabet GSM et l’alphabet ASCII il suffit de comparer les deux tableaux situés en Annexes. La commande AT+CSCS permet de sélectionner un alphabet. Il est recommandé d’utiliser l’alphabet GSM (en principe c’est l’alphabet configuré par défaut par les fabricants) qui est théoriquement supporté par tous les téléphones. Alphabets supportés par le téléphone : AT+CSCS=? +CSCS: ("GSM","UCS2")
Commande pour sélectionner l’alphabet « GSM » : AT+CSCS="GSM" OK
Commandes générales Nous allons tester dans cette partie uniquement les commandes de la norme GSM07.05. Pour être tranquille dans nos expérimentations, nous allons de suite entrer le code PIN pour déverrouiller la carte SIM, grâce à la commande AT+CPIN : AT+CPIN="xxxx" OK
Les caractères xxxx doivent bien entendu être remplacés par le code PIN de votre téléphone. Si le code saisi est valide le téléphone doit répondre par OK.
78
08_Ch 4.fm Page 79 Thursday, February 18, 2010 11:25 AM
CHAPITRE
INTERFACER UN TÉLÉPHONE GSM Caractéristiques du module GSM En principe lorsque le TE commence à établir une communication avec le TA et le ME, celui-ci demande leurs caractéristiques grâce aux commandes +GMI, +GMM, +GMR et +GSN, c’est ce que nous allons faire : Retourne le nom du fabriquant : AT+CGMI SAGEM OK
Retourne le modèle : AT+CGMM MY X-5 GPRS OK
Retourne la version : AT+CGMR 1.00 OK
Retourne le numéro de série :
© DUNOD – La photocopie non autorisée est un délit.
AT+CGSN 987612345-123 OK
Tout le monde connaît le fameux code *#06# qui une fois composé sur le clavier du téléphone permet d’afficher son identifiant international (IMEI). On obtient le même résultat avec la commande AT+CGSN : AT+CGSN 351030358226964 OK
Pour information déchiffrons ce code qui sert de base pour le calcul du code de déverrouillage… Les deux premiers chiffres (33) indiquent le pays d’origine du mobile, selon le code international de la numérotation téléphonique, dans cet exemple il s’agit de la France. Les quatre chiffres suivants (1030) représentent le TAC (Type Approval Code) qui identifie le modèle de poste au regard de la procédure d’agrément.
79
4
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 précise le lieu d’assemblage final de l’appareil, donc en Bretagne dans cet exemple. Les six chiffres suivants (822696) sont le numéro de série du mobile (SNR). Le dernier chiffre est une clef dont le codage est similaire au dernier chiffre des numéros de cartes bancaires.
Indicateurs et contrôles État d’activité : Cette commande peut être utilisée pour interroger le ME avant de faire effectuer une action au téléphone : AT+CPAS +CPAS: 0 OK
Le zéro indique que le ME est prêt à recevoir des commandes de la part du TE. Charge de la batterie indique l’état 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 qui indique la puissance du signal reçu. 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 définit l’équation suivante : P = 2rssi – 113. Donc en injectant dans l’équation rssi = 7 on obtient une puissance égale à – 99 dBm pour cet exemple. Rappelons que le dBm est une unité de mesure exprimant un niveau référencé par rapport à une puissance de 1 mW. En réalité la valeur obtenue par l’équation précédente est le gain (G). Si l’on considère que la station d’émission GSM envoie un signal d’une puissance égale à 1 mW et que le téléphone mobile reçoit une puissance Ps, le gain est donné par l’équation suivante : G = 10 log(Ps/1 × 10–3). On obtiendra toujours un gain négatif
80
08_Ch 4.fm Page 81 Thursday, February 18, 2010 11:25 AM
CHAPITRE
INTERFACER UN TÉLÉPHONE GSM car bien évidemment la puissance reçue par le téléphone est toujours plus faible que le signal émis par la station, au mieux on peut avoir puissance reçue = puissance émise auquel cas le gain est égal à zéro. Pour calculer la puissance reçue en mW, on utilise l’équation : Ps = 10G/10. Par exemple avec G = – 99 dBm on obtient Ps = 125 × 10–12 mW. La deuxième valeur 99 correspondant au champ indique que le taux d’erreur de bit est inconnu ou non détectable. La commande +CIND regroupe les 3 commandes vues précédemment. Demande la liste des indicateurs supportés 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 chargée à 80 %, que la qualité du signal est de 60 %, que le téléphone est en service et qu’il n’y a pas d’appel en cours.
© DUNOD – La photocopie non autorisée est un délit.
Lecture de la date et de l’heure du ME : AT+CCLK? +CCLK: "03/04/15,10:43:49"
Attention, le jour et l’année sont permutés, il faut lire : 15/04/03. Programmation d’une alarme. L’alarme peut produire différents effets, écrire un message à l’écran du ME, émettre un son… Les effets sont spécifiques au fabricant du téléphone, pour connaître ceux disponibles sur votre téléphone tapez la commande suivante : AT+CALA=? +CALA: (1),(sound)
Le chiffre « 1 » indique le nombre d’alarme qu’il est possible de programmer. Le deuxième paramètre « sound » signale l’effet de l’alarme, en l’occurrence d’émettre un son.
81
4
08_Ch 4.fm Page 82 Thursday, February 18, 2010 11:25 AM
INTERFACES GSM Exemple de programmation d’une alarme. Le ME émettra un son le 15 mars 2003 à 11:50. AT+CALA="03/03/15,11:50:00" OK
Gestion des répertoires téléphonique La saisie des numéros mais surtout des noms dans un répertoire téléphonique n’est pas des plus aisées d’autant que la taille des touches du clavier ne cesse de diminuer à chaque nouveau modèle. Désormais plus de soucis grâce aux commandes +CPBR et +CPBW qui permettent de lire et de rajouter des entrées dans votre répertoire. Un téléphone peut contenir, au maximum, 15 répertoires. La commande +CPBS permet de savoir quels sont ceux disponibles sur votre téléphone : AT+CPBS=? +CPBS: ("DC","ME","SM")
Ensuite il faut sélectionner un répertoire parmi ceux proposés, prenons le cas le plus courant, celui placé sur la carte SIM. Souvent le répertoire utilisateur est mémorisé sur la carte SIM, ce qui évite de ressaisir son contenu lorsque l’on change de téléphone. AT+CPBS="SM" OK
Chaque répertoire possède un espace mémoire fixe. La commande +CPBS utilisée en mode lecture permet d’obtenir cette information : AT+CPBS? +CPBS: "SM",2,50
Dans cet exemple, la mémoire possède une capacité de 50 enregistrements, dont 2 sont utilisés. Chaque enregistrement est accessible via son index, le premier enregistrement ne possède pas forcément un index égal à 1. De plus les champs numéro et nom sont limités en terme de nombre de caractères. Consultons ces paramètres avec la commande +CPBR : AT+CPBR=? +CPBR: (1-150),10,12
La carte SIM dispose de 150 enregistrements encadrés par les index 1 à 150, il n’y a donc pas d’offset dans cet exemple. Le champ numéro peut contenir 10 caractères et le champ nom 12 caractères.
82
08_Ch 4.fm Page 83 Thursday, February 18, 2010 11:25 AM
CHAPITRE
INTERFACER UN TÉLÉPHONE GSM Il est possible de lire tous les enregistrements en une seule fois : AT+CPBR=1,150
Seuls les enregistrements non vides sont affichés à l’écran. Une ligne correspondant à un enregistrement, voici le résultat obtenu : +CPBR: 1,"0600000001",145,"Julien" +CPBR: 2,"0600000002",129,"stéphanie"
On retrouve le champ index puis le champ numéro, le chiffre 129dec (soit 81hex) indique qu’il s’agit d’un numéro national, le chiffre 145dec (soit 91hex) indique un numéro international, pour finir on trouve le champ nom. Il existe même une fonction qui permet de rechercher dans le répertoire en cours le ou les enregistrements qui ont un champ texte qui commence par la chaîne de caractères spécifiée : AT+CPBF="st"
La commande retourne l’enregistrement correspondant : +CPBR: 2,"0600000002",129,"stéphanie"
Terminons par la commande +CPBW qui permet d’ajouter un enregistrement au répertoire. Si le champ index n’est pas spécifié, le nouvel enregistrement sera positionné au premier emplacement de libre trouvé. Si l’on utilise un index contenant déjà un enregistrement, celui-ci sera écrasé. AT+CPBW=,"0600000003",129,"jacques"
© DUNOD – La photocopie non autorisée est un délit.
On aurait obtenu le même effet avec la commande : AT+CPBW=3,"0600000003",129,"jacques"
Si la commande est utilisée seulement avec le paramètre index, l’enregistrement correspondant est effacé. Par exemple pour effacer l’enregistrement numéro 3 : AT+CPBW=3
Commandes SMS Sélection de la zone mémoire pour lecture/écriture des SMS Avant d’utiliser les commandes relatives aux SMS, il faut savoir quels sont les types de mémoires disponibles sur votre téléphone : AT+CPMS=? +CPMS: ("ME","SM"),("ME","SM"),("ME","SM")
83
4
08_Ch 4.fm Page 84 Thursday, February 18, 2010 11:25 AM
INTERFACES GSM D’après cet exemple les mémoires ME et SIM peuvent être utilisées aussi bien pour la lecture () que pour l’écriture ( et ). 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 d’écriture se font sur la mémoire « ME « propre au téléphone qui dispose ici de 100 emplacements. La mémoire « ME » contient actuellement 7 messages. Pour travailler sur la mémoire de la carte SIM il suffit d’envoyer la commande suivante : AT+CPMS="SM","SM","SM" +CPMS: "SM",1,12,"SM",1,12,"SM",1,12
Désormais, l’écriture et la lecture des SMS se fera exclusivement dans la mémoire de la carte SIM qui dispose de 11 emplacements libres. Certains téléphones supportent l’option « MT », ainsi les commandes de lecture et d’écriture des SMS peuvent être utilisées sur toutes les mémoires disponibles sur le téléphone. Voici à titre d’exemple ce que renvoie un MYX-5 de SAGEM : AT+CPMS=? +CPMS: ("ME","SM","MT")
On remarque que seule la mémoire utilisée par les commandes de lecture est disponible. Il est possible d’affecter à la mémoire de la carte SIM : AT+CPMS="SM" +CPMS : "SM",1,12
Affectons maintenant à la mémoire du téléphone : AT+CPMS="ME" +CPMS : "ME",7,100
Dernière possibilité, affectons à les deux mémoires : AT+CPMS="MT" +CPMS : "MT",8,112
On remarque que l’espace mémoire disponible est bien la somme de l’espace mémoire ME et du SM (100 + 12 = 112). Il en va de même 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 TÉLÉPHONE GSM Envoi d’un SMS En Mode PDU Première chose il faut s’assurer que le mode PDU est supporté par le module GSM, c’est normalement le cas quel que soit le modèle utilisé : AT+CMGF=?
Le module retourne la liste des modes qu’il supporte : +CMGF: (0,1)
Dans le cas présent le mode PDU est supporté (0) de même 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. L’action des touches [CONTROL] et [Z] valide la saisie et envoie le SMS directement sur le réseau, il ne sera pas stocké sur le téléphone : >0011000A8160102030400000AA04D4E2940A
Si tout s’est bien déroulé, le module GSM doit retourner la réponse suivante :
© DUNOD – La photocopie non autorisée est un délit.
+CMGS: O OK
Le chiffre « 0 » correspond au champ MR qui est la référence du message comprise entre 0 et 255, cette référence est générée automatiquement par le mobile et signale également que le message est correctement envoyé. Par exemple, si on envoie un nouveau message au même destinataire, la référence sera incrémentée d’une unité. Pour constituer la trame il est bien entendu fortement recommandé d’utiliser le logiciel « ConvertSMS.exe » détaillé dans le chapitre 1, sélectionnez la trame constituée par le logiciel puis faite un copier/coller pour l’importer dans Hyper Terminal. En Mode TEXT Première chose, il faut s’assurer que le mode TEXT est supporté par le module GSM : AT+CMGF=?
85
4
08_Ch 4.fm Page 86 Thursday, February 18, 2010 11:25 AM
INTERFACES GSM Le module retourne la liste des modes qu’il supporte : +CMGF: (0,1)
Dans le cas présent le mode PDU est supporté (0) de même que le mode TEXT (1). Activons donc le mode TEXT : AT+CMGF=1 OK
Comme nous l’avons vu pour envoyer un SMS il faut indiquer le numéro du SMSC que l’on souhaite utiliser. Ce paramètre est normalement déjà dans la mémoire du mobile, il correspond à celui de l’opérateur auquel vous avez souscrit votre abonnement. Pour s’en assurer demandons les paramètres associés à la commande +CSCA : AT+CSCA? +CSCA: "+33689004000"
Vous pouvez bien entendu modifier ce paramètre : AT+CSCA="+61418706700" OK
Il faut entrer le numéro de téléphone du destinataire du message : AT+CMGS="0601020304"
Entrez le texte du message par exemple « TEST » et validez la saisie par l’action simultanée des touches [CTRL] et [Z] qui provoque l’envoi du SMS sur le réseau GSM. > TEST
Si tout s’est bien déroulé, le module GSM doit retourner la réponse suivante : +CMGS: 0 OK
Le chiffre « 0 » correspond au champ MR qui est la référence du message comprise entre 0 et 255dec, cette référence est générée automatiquement par le mobile et signale également que le message est correctement envoyé. Par exemple si on envoie un nouveau message au même destinataire, la référence sera incrémentée d’une unité.
86
08_Ch 4.fm Page 87 Thursday, February 18, 2010 11:25 AM
CHAPITRE
INTERFACER UN TÉLÉPHONE GSM Autre méthode d’envoi d’un SMS Dans le cas précédent le message constitué n’est pas stocké en mémoire mais directement expédié sur le réseau. Il est également possible de le sauvegarder temporairement en mémoire grâce à la commande +CMGW afin de l’expédier au moment opportun. Par exemple si l’on souhaite que ="ME", il faut utiliser la commande suivante : AT+CPMS="ME","ME"
Le premier paramètre qui correspond à est obligatoire. Dans cette configuration la lecture des messages reçus et stockés non envoyés est sauvegardée dans la même mémoire. 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 l’emplacement mémoire où est stocké le message : +CMGW: 900
© DUNOD – La photocopie non autorisée est un délit.
La commande +CMSS permet d’envoyer un message stocké en mémoire par exemple à l’emplacement 900, ce qui provoquera l’envoi du message saisi précédemment : AT+CMSS=900
Si l’envoi est réussi : +CMSS: 0
Le chiffre « 0 » correspond au champ MR qui est la référence du message comprise entre 0 et 255dec, cette référence est générée automatiquement par le mobile et signale également que le message est correctement envoyé. Par exemple, si on envoie un nouveau message au même destinataire, la référence sera incrémentée d’une unité.
Réception/lecture/suppression d’un SMS En Mode PDU (AT+CMGF=0)
87
4
08_Ch 4.fm Page 88 Friday, March 5, 2010 7:44 PM
INTERFACES GSM La manière dont le ME indique au TE qu’il vient de recevoir un nouveau SMS dépend du paramétrage de la commande +CNMI : AT+CNMI=1,1
Avec cette configuration le ME signalera au TE la réception d’un nouveau SMS en envoyant le code : +CMTI: ,
Par exemple voici le code affiché sur l’écran du PC signalant qu’un nouveau message est reçu et qu’il est sauvegardé à l’emplacement 1 de la mémoire de la carte SIM +CMTI: "SM",1
Pour lire le message en question il faut utiliser la commande +CMGR suivie du paramètre index, on considère que la mémoire utilisée pour la lecture est celle de la carte SIM (="SM", voir commande AT+CPMS) : AT+CMGR=1
Le module GSM doit retourner le contenu du message sous forme d’une trame PDU : +CMGR: 1,23 07913306091093F0040B913316502193F100003050616124430004D4E2940A OK
Où 1 est le code état qui indique que le message a déjà été lu, 23hex indique la longueur du message. En Mode TEXT (AT+CMGF=1) Les instructions utilisées pour configurer la réception et effectuer la lecture d’un SMS sont identiques à celles du mode PDU. La différence réside dans l’affichage du contenu du message. Le module GSM retourne l’état du message, le numéro de l’émetteur 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 mémoire La commande AT+CMGL (ou AT+CMGL=4) permet de lister tous les messages stockés dans la mémoire (voir commande AT+CPMS) : AT+CMGL
88
08_Ch 4.fm Page 89 Thursday, February 18, 2010 11:25 AM
CHAPITRE
INTERFACER UN TÉLÉPHONE GSM Il est possible d’utiliser le paramètre facultatif pour afficher certains types de messages, par exemple si =1, seuls les messages reçus non lus seront affichés. La commande de test AT+CMGL= ? renvoie la liste des s supportés par le ME. L’affichage à l’écran du message dépend du mode sélectionné PDU ou TEXT. En Mode PDU (AT+CMGF=0) Les 3 paramètres qui suivent le texte +CMGL correspondent respectivement aux champs , au format numérique et qui est la taille de la trame PDU affichée sur la deuxième ligne. +CMGL: 1,2,25 000011FF0281603200A712EDF27C1E3E97416537284CA797DDF432 +CMGL: 2,1,23 07913306091093F0040B913316502193F100003050616124430004D4E2940A OK
En Mode TEXT (AT+CMGF=1) Les paramètres qui suivent le texte +CMGL correspondent respectivement aux champs , au format texte, qui est le numéro de l’expéditeur du message (si SMS-DELIVER) ou qui est le numéro du destinataire (si SMS-SUBMIT) et la date d’envoi du SMS (si SMS-DELIVER). Sur la deuxième ligne on trouve le corps du message.
© DUNOD – La photocopie non autorisée est un délit.
+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 d’effacer périodiquement les messages reçus afin de ne pas saturer la mémoire . La commande +CMGD efface le SMS situé, par exemple, à l’emplacement = 1 AT+CMGD=1
Le module doit confirmer l’effacement par la réponse : OK
Notez qu’il n’existe pas de commande AT qui permet d’effacer en une seule fois tous les messages stockés en mémoire.
89
4
08_Ch 4.fm Page 90 Thursday, February 18, 2010 11:25 AM
INTERFACES GSM
Commandes spécifiques au TM2 de Teltonika Par défaut la vitesse de transmission des données série est de 115 200 bauds. Comme les montages présentés dans le chapitre suivant intitulé « Réalisations électroniques » utilisent tous une vitesse de 9 600 bauds, il est nécessaire de modifier le paramétrage d’usine du TM2. La commande AT+IPR permet de modifier cette vitesse de transmission : AT+IPR=9600
Dès lors il faut modifier le paramétrage d’Hyper Terminal. Cliquez sur Déconnexion puis dans le menu Fichier sélectionnez Propriétés enfin cliquez sur le bouton Configurer et sélectionnez une vitesse de 9 600 bds. Cliquer sur Connexion . La vitesse de transmission s’effectue bien à 9 600 bds mais au prochain RESET elle reviendra par défaut à 115 200 bds. Il faut donc mémoriser cette configuration dans un profil utilisateur. Tout d’abord il faut paramétrer le TM2 pour qu’il charge le profil utilisateur n° 0 à chaque RESET : AT&Y0 OK
Il faut maintenant mémoriser la configuration en cours dans le profil utilisateur n° 0 : AT&W0 OK
Une dernière commande est obligatoire pour que la mémorisation soit effective : AT+CPWROFF
À l’issue de cette dernière commande le TM2 est automatiquement placé en mode veille. Désormais à 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 l’ensemble des réalisations électroniques présentées dans le chapitre suivant.
Logiciel intégré 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 TÉLÉPHONE GSM
4
Figure 4.5. ConvertSMS2.
nom le laisse supposer, est une évolution de celui présenté dans le chapitre « Codage SMS ». Désormais il intègre une partie qui gère la liaison série. Le paramétrage par défaut est COM2, avec un débit de 9 600 bauds, 8 bits de données, pas de parité. Le port est actif une fois que vous avez cliqué sur le bouton Ouvrir. Au même instant une deuxième fenêtre plus petite s’affiche, vous demandant de saisir votre code PIN.
© DUNOD – La photocopie non autorisée est un délit.
Après avoir constitué la trame PDU dans l’onglet « TEXT->PDU », il suffit de cliquer sur le bouton « envoi » pour que le message soit directement expédié sur le réseau via le ME, notez que le bouton « SMSC ? » indique le centre de messagerie utilisé. Il est aussi possible de lire un SMS spécifique, dans la mémoire spécifiée par , identifié par son index en cliquant sur « Lecture », ou lire tous les messages situés en mémoire grâce au bouton « Tous », le résultat s’affiche dans la zone de texte nommée « Tampon de réception du port série », sélectionnez alors la trame que vous souhaitez décoder puis cliquez sur le bouton « Convertir trame sélectionnée », le SMS s’affiche alors en mode text sur la fenêtre de gauche dans l’onglet « PDU->TEXT ».
Logiciel « WinGSM » Si l’on fait abstraction des logiciels qui permettent de « déverrouiller » son portable, bien loin des préoccupations de cet ouvrage, il existe très peu de softs dédiés à la gestion des SMS. L’auteur a décidé de mettre fin à cette pénurie en développant son propre logiciel baptisé WinGSM qui permet de gérer et d’archiver sur le disque dur de son PC les SMS mémorisés sur son téléphone portable, et ce n’est pas tout :
91
08_Ch 4.fm Page 92 Thursday, February 18, 2010 11:25 AM
INTERFACES GSM Muni d’un cordon ad ok permettant de relier votre téléphone portable au port série de votre PC et du logiciel WinGSM vous avez la possibilité de : • Gérer/Archiver vos SMS Lorsque la mémoire de votre téléphone (ME) ou de votre carte SIM (SM) est pleine, vous êtes obligé de supprimer définitivement certains SMS. Grâce à WinGSM vous pouvez les transférer sur le disque dur de votre ordinateur (fichier SMS.gsm) et les consulter ultérieurement à votre convenance, même lorsque le téléphone n’est plus connecté au PC. Vous pouvez également composer facilement un nouveau SMS et l’expédier directement sur le réseau GSM ou le mémoriser pour l’envoyer au moment opportun. • Gérer/Sauvegarder votre répertoire téléphonique En cas de perte ou de vol de votre téléphone, vous êtes contraint de ressaisir les noms et les numéros de téléphones présents dans la mémoire de votre téléphone et/ou de votre carte SIM. Si vous avez pris soin, grâce à WinGSM, de faire une copie de sauvegarde sur le disque dur de votre PC (fichier répertoire .gsm), vous pouvez transférer, d’un click, toutes les entités de votre répertoire téléphonique vers votre nouveau mobile GSM. Vous pouvez bien entendu ajouter/modifier/supprimer facilement des numéros/noms dans le répertoire déjà en mémoire sur votre téléphone. • Visualiser à l’écran les paramètres de fonctionnement de votre téléphone WinGSM affiche de nombreuses données de paramétrage, souvent inaccessibles à l’utilisateur conventionnel. • Utiliser votre téléphone comme un modem Avec WinGSM vous pouvez réaliser le transfert, à travers le réseau GSM, de données (DATA) à destination d’un modem fixe (RTC) ou à destination d’un autre téléphone GSM (figure 4.6). WinGSM est compatible avec tous les téléphones GSM du marché et même avec les modules GSM intégrés 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 microcontrôleur choisi, pour jouer le rôle du TE, est un PicBasic du constructeur Coréen COMFILE TECHNOLOGY. Il existe 3 familles de PicBasic, celui que nous avons choisi, le PICBASIC3B, appartient à la deuxième famille, il est un bon compromis
92
08_Ch 4.fm Page 93 Thursday, February 18, 2010 11:25 AM
CHAPITRE
INTERFACER UN TÉLÉPHONE GSM
4
Figure 4.6. WinGSM.
entre le coût et les possibilités offertes. Disponible en boîtier au format DIP 18 broches, il intègre un PIC 16C74A-04, un quartz de 4,19 MHz et une mémoire eeprom série d’une capacité de 4 Ko.
© DUNOD – La photocopie non autorisée est un délit.
Que tous ceux qui sont allergiques au langage assembleur se rassurent, comme son nom le laisse présager, le PicBasic se programme en basic. Le logiciel PICBASIC-LAB fourni par le fabricant permet, à l’aide d’un PC, une conception vraiment très aisée du programme. Le puissant compilateur intégré permet de traduire les lignes basic en instructions spécifiques compréhensibles par le microcontrôleur. Le programme compilé peut ensuite être implanté dans la mémoire eeprom du PicBasic par le biais d’un cordon relié au port imprimante d’un PC. Notez qu’en phase de conception la fonction debug vous permettra de suivre pas à pas l’exécution du programme par le PicBasic. Il est notamment possible de consulter l’état de toutes les variables utilisées par le programme. Une fois le programme au point il suffit de déconnecter le cordon pour rendre le PicBasic autonome. Le langage Basic reconnu par le compilateur se compose une cinquantaine d’instructions. Celles qui nous intéressent fortement sont les instructions SERIN et SEROUT qui assurent la gestion d’un port série, elles nous permettront de communiquer facilement avec un module GSM.
L’instruction SEROUT SEROUT Port, Param1, Mode, Param2, [Var1]
Cette instruction permet de transmettre des données sous forme série selon le protocole RS232. Une fois exécutée, 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 données Var1 à une vitesse définie par Param1, selon la correspondance du tableau précédent. Le paramètre Mode permet d’instaurer une temporisation entre chaque caractère émis dont la durée en millisecondes est fonction de Param2. Les données envoyées doivent être de type « BYTE » c’est-à-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 d’un SMS Dans cet exemple nous allons montrer comment envoyer un SMS contenant le texte « TEST » au numéro « 0600000000 » à l’aide de la commande SEROUT. On considère que la sortie I/O17 (broche n° 22) du PICBASIC est utilisée et que la vitesse de transmission s’effectue à 9 600 bauds. Dans ce cas Port = 17, Param1 = 103, Mode = 0 ; la temporisation entre chaque caractère et fixée à 1 ms donc Param2 = 1. Comme nous l’avons déjà vu, la commande AT à utiliser est « AT+CMGS ».
Mode TEXT (AT+CMGF=1) Premièrement il faut définir le numéro 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 numéro sont là uniquement pour indiquer au compilateur qu’il doit traiter le numéro 0600000000 comme une chaîne de caractères, même chose pour la commande AT+CMGS. Alors que le code ASCII 34dec ne sera pas interprété par le compilateur donc envoyé tel quel sur la sortie série. 13dec est le code ASCII du retour chariot , qui déclenche l’exécution de la commande. Ensuite il faut une temporisation d’au moins 1/2 seconde (500 ms) avant d’entrer 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 TÉLÉPHONE GSM 26dec est le code ASCII du caractère EOF (End Of File) équivalent à la combinaison des touches CTRL+Z, qui provoque l’envoi du SMS sur le réseau GSM.
Mode PDU (AT+CMGF=0) En mode PDU la première 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-même est envoyée : SEROUT 17,103,0,1,["0011000A8160000000000000AA04D4E2940A",26]
26dec est le code ASCII du caractère EOF (End Of File) équivalent à la combinaison des touches CTRL+Z, qui provoque l’envoi du SMS sur le réseau GSM.
L’instruction SERIN SERIN Port, Param1, Mode, Param2, Adress, [Var1]
© DUNOD – La photocopie non autorisée est un délit.
Cette instruction permet d’attendre la réception de données sous forme série selon le protocole RS232. Une fois exécutée, la broche Port du PICBASIC attendra la ou les données Var1 à une vitesse définie par Param1, selon la correspondance du tableau vu précédemment. Durant cette phase le PICBASIC ne pourra pas effectuer d’autres tâches et attendra en permanence les données pendant une durée définie en millisecondes par Param2. Si la durée d’attente est dépassée, sans qu’aucune donnée ne soit reçue, le programme passera à l’adresse indiquée par Adress. Le paramètre Mode n’est pas utilisé et doit être positionné à 0.
Réception d’un SMS La méthode présentée ici consiste à mettre en œuvre la commande AT+CNMI afin de configurer le ME (téléphone) pour qu’il signale au TE (PicBasic) l’arrivée d’un SMS. Rappelons que cette commande utilise les paramètres et voir norme GSM07.05. Lorsque =1 les indications concernant la réception d’un nouveau message sont directement transférées au TE. Les dites indications, si le message est du type SMS-DELIVER, sont de la forme +CMTI: , à condition que =1, contient la référence de la mémoire utilisée pour stocker le message et son emplacement au sein de cette mémoire. En langage PicBasic nous devons utiliser dans un premier temps l’instruction SEROUT pour configurer le ME à l’aide de la com-
95
4
08_Ch 4.fm Page 96 Thursday, February 18, 2010 11:25 AM
INTERFACES GSM mande AT+CNMI suivie des paramètres et et du code ASCII 13dec qui déclenche l’exécution de la commande : SEROUT 17,103,0,1,["AT+CNMI=1,1",13]
Désormais le ME signalera systématiquement au TE l’arrivée d’un nouveau SMS en envoyant sur la ligne série RxD l’instruction +CMTI: ,. Le PicBasic doit donc en permanence scruter la ligne RxD dans l’espoir de recevoir cette instruction. L’instruction SERIN associée à WAIT place le µC dans une phase de scrutation de l’entrée série, correspondant ici à l’entrée I/O16 (broche 21), qui dure 1 000 ms (1 s), dès que la chaîne « TI » est reconnue, les caractères qui suivent sont placés dans la variable tableau Tampon qui peut contenir jusqu’à 8 valeurs de type BYTE. Si la chaîne attendue n’est pas reçue durant cette seconde le programme boucle sur l’étiquette ATT (pour ATTente). Le simple fait de placer l’étiquette ATT sur la même ligne que l’instruction SERIN permet de reconduire indéfiniment la phase d’attente. ATT: serin 16,103,0,1000,ATT,[WAIT("TI"),Tampon(0)~8]
Imaginons maintenant que le ME vient de recevoir un SMS et qu’il a stocké dans la mémoire de la carte SIM à l’emplacement numéro 1. Aussitôt l’instruction +CMTI: "SM",1 est envoyée au PicBasic qui va placer les 8 caractères 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
"
S
M
"
,
1
34dec
83dec
77dec
34dec
44dec
49dec
Il serait plus judicieux d’utiliser par exemple l’instruction WAIT("+CMTI: ") mais cette combinaison n’est malheureusement pas acceptée par le compilateur, l’instruction WAIT ne peut contenir que deux caractères. Parmi les 8 octets contenus par la variable Tampon, les données Tampon(2) à Tampon(5) contiennent le nom de la mémoire où est stocké le message et Tampon(7) contient la fameuse donnée , ici égale à 1 qui correspond à l’emplacement du message dans la mémoire. On considère dans cet exemple que est compris entre 0 et 9, en pratique ce n’est pas toujours le cas, mais il sera temps de voir cela dans le chapitre 5. Par contre le nom de la mémoire est toujours codé sur quatre caractères.
96
08_Ch 4.fm Page 97 Thursday, February 18, 2010 11:25 AM
CHAPITRE
INTERFACER UN TÉLÉPHONE GSM Premièrement nous allons paramétrer le téléphone pour que la commande de lecture des SMS se fasse sur la mémoire précisée par les variables Tampon(2) à Tampon(5), grâce à 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"
Remarque : comme les données 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 paramètre contenu dans la variable Tampon(7) permet d’effectuer la lecture du SMS en question, lecture qui va se faire, pour cet exemple, à l’emplacement numéro 1 dans la mémoire de la carte SIM grâce à la commande précédente. SEROUT 14,51,0,1,["AT+CMGR=",Tampon(7),13]
Cette ligne de code est équivalente à la commande : AT+CMGR=1. Temporisation de 500 ms (0,5 s) pour laisser le temps au ME d’exécuter la commande.
© DUNOD – La photocopie non autorisée est un délit.
DELAY 500
Pour contenir le message nous imaginons qu’il existe une deuxième donnée baptisée SMS de type tableau limitée à 70 valeurs de type BYTE. La RAM du PicBasic 3B peut contenir 80 octets, 7 sont utilisés par la variable Tampon, on se garde donc une marge de 3 octets. L’instruction SERIN permet de capturer les 70 caractères envoyés par le ME sur la ligne RxD du PicBasic. Si le SMS comporte plus de 70 caractères il sera tronqué. À l’inverse, si le SMS contient moins de 70 caractères, le programme basculera sur l’étiquette SUITE au bout de 1 000 ms (1 s). serin 16,103,0,1000,SUITE,[SMS(0)~70]
Le contenu de la variable SMS dépend du mode utilisé PDU ou TEXT.
97
4
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 décodage de la trame PDU n’est pas évidente pour le PicBasic, c’est pour cela que nous allons privilégier l’utilisation 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 première ligne contient l’en-tête du message, le premier paramètre « REC READ » indique qu’il s’agit d’un message non lu, le deuxième paramètre donne le numéro de l’expéditeur du message, le dernier paramètre indique la date à laquelle le message a été envoyé. Le texte du message qui nous intéresse est situé sur la deuxième ligne soit « TEST », on constate qu’il n’est pas évident à première vue d’extraire cette donnée. Il serait judicieux de placer dans la variable SMS uniquement le mot « TEST ». Malheureusement l’instruction WAIT ne peut pas être utilisée pour détecter le caractère afin de mémoriser uniquement la donnée située sur la deuxième ligne. La solution consiste à faire précéder le corps du message d’une paire de caractères spécifiques qui déclencherait la mémorisation dans la variable SMS. Il faut choisir des caractères qui ne devront jamais apparaître dans l’en-tête du message sous peine de récupérer des données inutiles. Deux points d’exclamations « !! » semble être une bonne solution. Voici donc l’instruction basic à utiliser : ATT1: serin 16,103,0,1000,ATT1,[WAIT("!!"),SMS(0)~70]
En admettant cette fois que le SMS réceptionné 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 TÉLÉPHONE GSM
4
La variable SMS est constituée comme le montre le tableau 4.4. Les données SMS(0) à SMS(3) contiennent les données souhaitées. Il suffirait de faire tester ces 4 variables au PicBasic pour que celui-ci effectue une action en fonction de leur contenu, c’est ce que nous allons maintenant mettre en pratique dans le chapitre suivant. SMS(1)
SMS(2)
SMS(3)
T
E
S
T
48dec
69dec
83dec
48dec
SMS(4)
© DUNOD – La photocopie non autorisée est un délit.
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
5
RÉALISATIONS ÉLECTRONIQUES
5.1 Récepteur/émetteur SMS
102
5.2 Télécommandes par GSM
123
5.3 Télémesures par GSM
163
5.4 Carte Entrées/Sorties pilotée par GSM
194
5.5 Géolocalisation 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 réalisation d’une application sans fil, la portée est le paramètre le plus important. Avec les modules HF intégrés Aurel ou Mipot du commerce il est difficile d’assurer une transmission correcte sur une distance supérieure à 100 m et ceci même dans les conditions les plus favorables, temps clair, terrain dégagé… Même si la portée est liée à la puissance d’émission, il existe une limite fixée par la réglementation. Voilà pourquoi les modules vendus dans le commerce délivrent une puissance d’émission ne dépassant pas quelques dizaines de milliwatts. Avec la technologie GSM, la portée n’est plus un problème. Un téléphone portable possède certes une puissance de quelques watts mais celle-ci est largement suffisante pour accéder au réseau téléphonique via les antennes relais quadrillant notre territoire. Il devient alors possible par l’envoi et la réception de commandes sous forme de SMS de piloter et de surveiller un processus quelconque se déroulant sur un site distant, voire même mobile (automobile). La mise en œuvre de ce procédé nécessite le développement d’une électronique autonome capable de s’interfacer avec un téléphone et de communiquer avec celui-ci via les commandes AT que nous avons décrites précédemment, et disposant d’actionneurs et de capteurs pour interagir avec son environnement. C’est le but que nous allons atteindre dans ce dernier chapitre. Tous les montages présentés ci-après peuvent s’utiliser avec un téléphone portable GSM supportant le mode TEXT connecté à l’aide d’un cordon DATA ; ou avec n’importe quel terminal GSM supportant les standards GSM07.07 et GSM07.05, comme le TM2 de Teltonika pour ne citer que lui.
5.1 RÉCEPTEUR/ÉMETTEUR SMS Les deux premiers montages ont surtout une vocation pédagogique. Il est certainement plus simple de lire directement le SMS reçu sur l’écran LCD de votre téléphone ; ou de composer sur le clavier le message à envoyer. Cependant ceci est moins évident sur les terminaux GSM (par exemple TM2) qui ne disposent d’aucune interface homme-machine…
Récepteur de SMS sur écran LCD Dès que le téléphone portable ou le terminal GSM connecté à ce montage reçoit un nouveau SMS, un buzzer interpelle l’utilisateur pour qu’il consulte le contenu du message affiché sur l’écran LCD.
Schéma électrique Voir figure 5.1.
102
Figure 5.1. Schéma du récepteur de SMS sur écran LCD.
© DUNOD – La photocopie non autorisée est un délit.
09_Ch 5.fm Page 103 Thursday, February 18, 2010 11:26 AM
RÉALISATIONS ÉLECTRONIQUES
CHAPITRE
103
5
09_Ch 5.fm Page 104 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM Le cœur du montage est comme convenu un PicBasic PB-3B. Les lignes I/O16 (broche 21) et I/O17 (broche 22) sont mises à contribution pour l’acquisition des données séries. Le circuit IC2, un Max232 d’adapte le niveau de tension des signaux en provenance et à destination du téléphone GSM relié au circuit par l’intermédiaire d’un câble adaptateur que nous avons décrit dans la première partie du chapitre 3. Si vous utilisez un terminal GSM tel que le TC35 de siemens qui dispose d’une sortie RS232 normalisée, la liaison se fera avec un câble RS232 standard. Le Max232 est câblé avec 4 condensateurs au tantale nécessaires à l’activation de sa pompe de charge interne qui permet de passer la tension d’alimentation de 5 à 12 V. L’entrée RXD (broche 2) qui récupère les données en provenance du téléphone est reliée à l’entrée RX1i, si sur cette entrée une tension de + 12 V est appliquée on aura sur la sortie correspondante RX1o une tension nulle qui sera appliquée sur la ligne I/O16 configurée pour l’occasion en entrée. Si l’entrée RX1i est soumise à une tension de – 12 V, on aura sur l’entrée I/O16 une tension de + 5 V. La ligne I/O17 (broche 22) est configurée en sortie pour l’envoi des données à destination du téléphone, elle est reliée à l’entrée TX1i. Une tension nulle appliquée 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 l’alimentation du câble utilisé conjointement avec un téléphone portable. En effet les câbles DATA LINK du commerce utilisent cette sortie pour alimenter leur électronique interne. Comme l’entrée TX2i est reliée à 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 mâle pour une connexion directe. Comme tout microcontrôleur qui se respecte, le PicBasic utilise un quartz, de 20 MHz, associé aux condensateurs de découplage C2 et C3 de 22 pF, pour cadencer l’exécution du programme. L’entrée RES qui est en logique inversée, est reliée directement au + 5 V, ainsi à chaque mise sous tension du montage le PicBasic est remis à zéro. L’alimentation se fait par la broche 20, deux broches 8 et 19 sont utilisées pour la mise à la masse. Le PicBasic dispose d’instructions spécialement dédiées pour le pilotage d’un afficheur LCD à commande série. Une seule ligne nommée PICBUS (broche 26) suffit à piloter l’afficheur 2 × 16 caractères que nous avons choisi. Un buzzer constitué d’un simple disque piezzo est connecté sur la sortie I/O9 (broche 12), là encore une instruction Basic délivre un signal carré d’une
104
09_Ch 5.fm Page 105 Thursday, February 18, 2010 11:26 AM
CHAPITRE
RÉALISATIONS ÉLECTRONIQUES
© DUNOD – La photocopie non autorisée est un délit.
fréquence de 4 kHz pour faire émettre un « bip ». Deux boutons poussoirs BP1 et BP2 respectivement reliés aux lignes I/O0 (broche 2) et I/O1 (broche 3) permettent à l’utilisateur d’agir sur le déroulement du programme. Lorsque le bouton poussoir est inactif, l’entrée correspondante est à la masse via une résistance de 10 kΩ. Les résistances R2 et R3 de 10 kΩ associées à la diode D1 permettent, par l’intermédiaire du cordon spécifique (fourni par Lextronic) connecté sur le port imprimante d’un PC, de transférer le programme dans l’eeprom du PicBasic. L’alimentation de l’ensemble est confiée à un traditionnel régulateur de tension 7805 en boîtier TO220 capable de débiter une tension régulée de + 5 V avec une intensité maximale de 1 A. Le condensateur électrolytique de 220 µF assure un filtrage efficace de la tension d’alimentation provenant, par exemple, d’un bloc secteur délivrant une tension maximale continue de 15 V. La diode D1 protégera le montage dans le cas d’une malencontreuse inversion de polarité. Pour terminer, une Led associée à une résistance de 470 Ω signale visuellement la présence de la tension d’alimentation.
Réalisation L’impression du circuit sur du papier transparent avec une imprimante à jet d’encre ou laser permet d’obtenir un masque de bonne qualité. Pour avoir une opacité correcte des pistes, il est conseillé de superposer deux masques lors de l’insolation. Le temps d’exposition aux UV peut ainsi être augmenté pour une révélation sans surprise. Après gravure, rinçage et perçage, les différents composants seront soudés conformément au schéma d’implantation. Attention à l’orientation des composants polarisés. La borne positive du buzzer correspond au disque gris de plus faible dimension. La borne positive pour chacun des condensateurs est signalée par un signe « + » gravé côté cuivre. Soyez également vigilant sur l’orientation du connecteur du câble de programmation et celui de l’afficheur LCD (voir figure 5.4). Programme du PicBasic : « recep.bas » Le programme implanté dans la mémoire eeprom du PicBasic est largement aussi important que la partie électronique, puisque c’est de lui que dépend le fonctionnement correct du montage. Il n’est donc pas inutile de le détailler surtout pour ceux qui désireront par la suite ajouter des fonctionnalités au montage. 'DECLARATION DES CONSTANTES '--------------------------
Pour faciliter la maintenance nous avons déclaré 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
5
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 / céramique 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 : régulateur 7805
BUZ : buzzer piezzo (sans électronique intégrée) BP1, BP2 : bouton poussoir type D6 J1 : barrette HE10 2 contacts + cavalier CN1 : bornier à vis 2 plots CN2 : connecteur DB9 mâle pour CI / coudé à 90° CN3 : connecteur pour câble 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 série 2 × 16 caractères (LEXTRONIC)
106
09_Ch 5.fm Page 107 Thursday, February 18, 2010 11:26 AM
CHAPITRE
RÉALISATIONS ÉLECTRONIQUES
5
Figure 5.4.
bauds qui définit la vitesse de transmission ici fixée à 9 600 car BDS = 103. L’utilisation de constantes évite de parcourir tout le programme lorsque l’on désire modifier un des paramètres. CONST BDS = 103 CONST RXD = 17 CONST TXD = 16
© DUNOD – La photocopie non autorisée est un délit.
'DECLARATION DES VARIABLES '-------------------------
Comme dans n’importe quel autre programme nous avons besoin de variables pour stocker dans la mémoire RAM des données et les récupérer ultérieurement. La première variable nommée Tampon contient la mémoire et l’index du SMS. Il n’est pas possible d’utiliser des variables de type texte (string), les seuls types supportés 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 qu’un caractère ASCII se code sur 8 bits, il est possible de stocker une chaîne de caractères 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 deuxième variable nommée SMS stocke le contenu du SMS, limité ici à 16 caractères. 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 L’ECRAN LCD '------------------------------------------------
Il convient d’initialiser l’écran LCD connecté au PicBasic grâce aux instructions spécifiques à ce type d’afficheur. L’instruction SET PICBUS HIGH ou LOW permet de paramétrer la vitesse de communication du bus spécialisé « PICBUS ». Par défaut ce type d’afficheur est configuré pour travailler à une vitesse de 19 200 bauds, donc l’instruction SET PICBUS sera suivie de l’instruction HIGH (LOW pour une vitesse de 4 800 bauds). L’instruction LCDINIT initialise l’écran LCD. SET PICBUS HIGH LCDINIT 'TEST LIAISON SERIE '-----------------------------
Pour s’assurer que la liaison entre le montage et le téléphone est valide, nous allons envoyer la commande la plus simple qui soit : AT, le ME doit répondre par OK si la liaison est correcte. Les caractères « AT » suivis du caractère =13dec sont envoyés par la commande SEROUT. L’instruction SERIN permet d’attendre l’éventuelle réponse « OK » pendant 2 000 ms (soit 2 s). Si les caractères OK sont réceptionnés dans le temps donné, le caractère suivant soit est placé dans la variable i. Dans le cas contraire le programme saute à la ligne repérée par l’étiquette 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 i0 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 n’est pas établie le programme boucle sur l’étiquette TEST0. L’écran 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
RÉALISATIONS ÉLECTRONIQUES 'SELECTION DE l’ALPHABET GSM '----------------------------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13] DELAY 500 'CODE PIN '--------------
En principe le code PIN qui autorise l’utilisation du téléphone doit être composé à chaque mise sous tension. Avec un téléphone classique vous pouvez le saisir à partir du clavier. Ce qui n’est plus possible si vous utilisez un terminal GSM intégré, pour la simple et bonne raison qu’il ne dispose pas de clavier ! L’instruction « AT+CPIN » suivie de votre code PIN est dans ce cas incontournable. 13dec est le code ASCII du retour chariot , qui déclenche l’exécution 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 d’initialiser les variables, en particulier Tampon et SMS.
© DUNOD – La photocopie non autorisée est un délit.
DEBUT: FOR i=0 TO 9 Tampon(i)=0 NEXT i FOR i=0 TO 15 SMS(i)=0 NEXT i 'INITIALISATION ME '-----------------
On considère 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 l’envoi d’une commande par une temporisation d’au moins 500 ms (0,5 s) ceci afin de laisser le temps au ME de réceptionner, de traiter et éventuellement de répondre à 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 i0 then LOCATE 0,0 PRINT "Mode TEXT"
109
5
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 l’arrivée d’un nouveau SMS, pour cela utilisons la commande « AT+CNMI=1,1 ». Ainsi l’arrivée d’un SMS sera signalée par l’envoi au ME de la commande +CMTI: "SM",1. Ceci dans le cas où le message serait stocké dans la carte SIM à l’emplacement n° 1. SEROUT TXD,BDS,0,1,["AT+CNMI=1,1",13] DELAY 1000 'ATTENTE RECEPTION SMS '---------------------
Le µC est placé dans une phase d’attente. Dès que les caractères « TI » sont reçus, les 10 caractères suivants sont stockés dans la variable Tampon, le buzzer retentit et le texte « Message reçu » s’affiche sur la première ligne de l’écran LCD, sur la deuxième ligne apparaît la mémoire contenant le SMS et son index. Notez que l’instruction WAIT ne peut pas être utilisée avec une chaîne de plus de 2 caractères. L’index est obtenu après la concaténation des variables Tampon(7), Tampon(8) et Tampon(9) à condition que leur contenu soit compris entre 48dec=0ASCII et 57dec=9ASCII. Ceci élimine les caractères indésirables du style ou qui s’enregistrent dans la variable Tampon lorsque l’index 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)=48 AND Tampon(i)=48 AND Tampon(i) ALERTE",26] OUT4,1 DELAY 5000 END IF RETURN 'ENVOI ETAT DES ENTREES '----------------------
Appel du sous-programme ENV pour la composition du SMS spécifiant l’état des 4 entrées. Le caractère 26dec soit déclenche l’envoi du SMS.
© DUNOD – La photocopie non autorisée est un délit.
ETAT: GOSUB ENV SEROUT TXD,BDS,0,1,[26] DELAY 5000 RETURN 'Modification du numéro utilisé pour l’envoi des SMS '---------------------------------------------------
Le numéro contenu dans la commande !!N,06xxxxxxxx est sauvegardé dans la mémoire eeprom du PicBasic aux adresses FF6hex à FFFhex. C’est ce numéro qui sera utilisé pour l’expédition des SMS. MAJNUM: i=2 FOR j=&HFF6 TO &HFFF EEWRITE j,SMS(i) i=i+1 NEXT j 'ENVOI D’UN SMS CONTENANT L’ETAT DES 4 ENTREES '---------------------------------------------
171
5
09_Ch 5.fm Page 172 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM Si la variable SMS(2) contient une virgule, c’est qu’il s’agit de la commande !!E?,06xxxxxxxx, le programme envoie alors le SMS au numéro indiqué par les variables SMS(3) à SMS(12). Pour tous les autres cas, le numéro utilisé est celui situé dans la mémoire eeprom du PicBasic, aux adresses FF6hex à FFFhex. Le message expédié sur le réseau GSM contient l’état logique en cours des 4 entrées 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 systématiquement effacer le SMS en mémoire, ainsi le prochain SMS réceptionné aura toujours le même index. Ceci évite de prévoir une incrémentation de la variable index et surtout de saturer la mémoire utilisée. Notez que cette partie de programme est appelée même si aucun SMS n’est à effacer, le ME répond par un message d’erreur 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) ALERTE ». À la prochaine apparition de la commande AT+CMGR=900 vous pouvez tester la commande « !!RA » qui doit provoquer l’extinction de la Led L5.
© DUNOD – La photocopie non autorisée est un délit.
Si tout fonctionne correctement vous pouvez relier votre téléphone ou terminal GSM au montage.
Résumé des points importants Voir Tableau 5.22.
4 entrées analogiques Voici une carte capable de convertir 4 tensions analogiques en 4 données numériques codées sur 8 bits et d’envoyer le résultat par SMS sur demande de l’utilisateur. La carte envoie également un SMS d’alerte lorsqu’une tension dépasse un seuil préalablement programmé.
Schéma électrique Voir Figure 5.25. Le PicBasic 3B possède 5 entrées analogiques disponibles sur les broches AD0 à AD4. Dans le cadre de notre application nous nous limiterons à l’acquisition de 4 tensions analogiques sur les
173
5
09_Ch 5.fm Page 174 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM Tableau 5.22. 4 ENTRÉES LOGIQUES Configuration Cavalier J1 à mettre en place uniquement si vous utilisez un câble DATA LINK du commerce 4 mini-interrupteurs, lorsque l’état logique est égal à celui des 4 entrées un SMS d’alerte est envoyé Parties du programme PicBasic à modifier • • • •
Code PIN (7208 par défaut) Mémoire lecture SMS (ME par défaut) Index du prochain SMS reçu (900 par défaut) Numéro de téléphone utilisé par défaut pour l’envoi des SMS
Commande SMS reçue
Action du montage
!!E?
Un SMS contenant l’état logique des 4 sorties est envoyé au numéro présent dans la mémoire eeprom du PicBasic
!!N,06xxxxxxxx
Modifie dans la mémoire eeprom du PicBasic le numéro utilisé pour l’envoi des SMS
!!E?,06xxxxxxxx
Un SMS contenant l’état logique des 4 sorties est envoyé au numéro indiqué
!!RA
Autorise le montage à envoyer d’autres SMS d’alerte
entrées AD0 (broche2) à AD3 (broche5). La valeur de la tension à lire doit être comprise entre 0 et + 5 V. Il est impératif que la tension ne dépasse pas la barre des + 5 V, sous peine d’endommager le PicBasic. Pour l’acquisition de tensions supérieures à + 5 V il est prévu sur la carte des emplacements pour ajouter les résistances R12 à R15, chaque résistance associée à celle existante forme un pont diviseur de tension. À titre d’exemple étudions le cas de l’entrée E1 (figure 5.26). Le raisonnement est bien entendu similaire pour les trois autres entrées de la carte. La tension AD0 appliquée au CAN du PicBasic se calcule ainsi : AD0 = [R12/(R12 + R8)] × E1. Pour chaque valeur de E1 en entrée on souhaite connaître la résistance 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 déduit la formule suivante : R12 = (5 × R8)/(E1 – 5). Par exemple si l’on souhaite mesurer une tension comprise entre 0 et + 10 V, on aura R12 = (5 × R8)/(10 – 5) d’où R12 = R8. Pour une tension comprise entre 0 et + 15 V on aura R12 = R8/10. Notez la présence d’un condensateur de 22 nF qui élimine les variations brusques de la tension à mesurer (filtre passe bas).
174
Figure 5.25. Schéma de la télécommande à 4 entrées analogiques.
© DUNOD – La photocopie non autorisée est un délit.
09_Ch 5.fm Page 175 Thursday, February 18, 2010 11:26 AM
RÉALISATIONS ÉLECTRONIQUES
CHAPITRE
175
5
09_Ch 5.fm Page 176 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM
Figure 5.26. Entrée E1.
Avec la version du PicBasic que nous utilisons, la résolution du convertisseur est de 10 bits ; cela signifie que le PicBasic convertit une tension en un nombre binaire composé de 10 bits. La précision 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 mesurée exprimée en volts, D est la donnée exprimée en décimal calculée par le PicBasic. Par exemple si D = 512 cela signifie que la tension mesurée est égale à 2,5 V. L’instruction basic qui permet de réaliser une conversion est ADIN(port), avec port compris entre 0 et 3. Comme nous l’avons dit dans l’introduction, la carte doit envoyer un SMS dès lors que la tension mesurée dépasse un seuil préalablement programmé par l’utilisateur. Dans un premier temps pour signaler le dépassement du seuil sur chacune des entrées, nous utilisons 4 Led, associées bien entendu à des résistances de limitation, sur les broches I/O8 à I/O11 utilisées en sorties.
Programme PICBASIC : « 4ea.bas » Comme le PicBasic doit à la fois traiter l’arrivée d’un éventuel SMS, et envoyer un SMS dans le cas où une tension dépasse le seuil défini par l’utilisateur, nous allons utiliser la méthode de programmation mise en œuvre pour le montage « 4 sorties sur triacs ». Comme le PicBasic ne possède pas d’interruption programme lors de l’arrivée d’une donnée sur son entrée série, il est nécessaire qu’il scrute en permanence la ligne RxD dans l’attente du signal envoyé par le ME concernant l’arrivée d’un SMS, ce qui n’est pas possible dans notre application. Périodiquement, c’est le TE qui va consulter la mémoire du ME pour savoir si un nouveau SMS y est stocké. Entre deux consultations le PicBasic vérifiera que chacune des tensions mesurées est inférieure au seuil correspondant. Le programme ci-après est prévu pour l’acquisition de tensions comprises entre 0 et + 5 V. Il est donc inutile d’implanter les résistances R12 à R15 sur la carte. Toutefois si les résistances en question sont en place il suffirait de multiplier le résultat 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 résultat obtenu par le CAN du PicBasic pour retrouver la tension d’entrée.
176
09_Ch 5.fm Page 177 Thursday, February 18, 2010 11:26 AM
CHAPITRE
© DUNOD – La photocopie non autorisée est un délit.
RÉALISATIONS ÉLECTRONIQUES
Liste des composants R1, R4 à R7 : 470 Ω R2, R3 : 10 kΩ R8 à R11 : 47 kΩ R12 à R15 : résistance à prévoir si la tension à mesurer est supérieure à + 5 V C1 : 100 nF (pas de 2,54 mm) C2, C3 : 22 pF / céramique 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 / céramique D1 : diode 1N4002 D2 : diode 1N4148 L, L1 à L4 : Led standard Q : quartz 20 MHz REG : régulateur 7805
5
Figure 5.27. (en haut) Circuit imprimé. Figure 5.28. (en bas) Implantation des composants. BUZ : buzzer piezzo (sans électronique intégrée) J1 : barrette HE10 2 contacts + cavalier CN1 : bornier à vis 2 plots CN2 : connecteur DB9 mâle pour CI / coudé à 90° CN3 : connecteur pour câble 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 l’ALPHABET 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 l’avons dit plus haut, la mémoire de stockage et l’index sont figés. Il faut donc déterminer ces deux paramètres à l’avance. Concernant la mémoire , on considère que les SMS envoyés par les particuliers ne possèdent pas de classe. Cela signifie que le mobile qui reçoit ce genre de SMS le stocke dans la mémoire ME. Les autres types de mémoire sont surtout utilisés
178
09_Ch 5.fm Page 179 Thursday, February 18, 2010 11:26 AM
CHAPITRE
RÉALISATIONS ÉLECTRONIQUES par les opérateurs. Si votre téléphone le permet vous pouvez utiliser le paramètre MT qui permet aux commandes de lecture de SMS de travailler avec toutes les mémoires. Ici nous avons choisi la mémoire du téléphone d’où « AT+CPMS= ME ». De même, la variable index doit être initialisée avec l’index que portera le prochain SMS réceptionné. Il correspond au premier emplacement de libre dans la mémoire sélectionnée. Pour le déterminer, vous pouvez utiliser le logiciel « convertSMS2 », après avoir sélectionné la mémoire soit « ME » dans notre cas, cliquez sur le bouton « Tous » il suffit de relever l’index du premier emplacement de libre. L’index par défaut utilisé ici est fixé à 900. Si vous avez un index codé sur un ou deux chiffres, il suffit de mettre les variables non utilisées à 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 définir également les seuils des tensions qui déclencheront l’envoi d’un SMS. Chaque entrée possède son propre seuil exprimé en décimal. Attention comme il n’est pas possible de déclarer 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 décimale codée sur 8 bits en fonction de la tension : D = (V × 28)/5, par exemple si vous désirez qu’un SMS d’alerte soit envoyé si la tension mesurée sur l’entrée E1 dépasse 2,5 V, il vous faut initialiser la variable seuil(0) à 127.
© DUNOD – La photocopie non autorisée est un délit.
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 L’ENVOI DES SMS '---------------------------------------------------------------
Le numéro de téléphone utilisé par défaut pour envoyer des SMS est initialisé dans la mémoire eeprom du PicBasic. Pour ne pas interférer avec la partie programme, le stockage se fait dans les 10 derniers emplacements de la mémoire de FF6hex à FFFhex. Cette mémorisation ne se réalise qu’une seule fois car le programme teste avant si l’adresse FF6hex est vide (notez qu’un emplacement vide contient la donnée FFhex). IF EEREAD(&HFF6)=&HFF THEN EEWRITE &HFF6,"0" EEWRITE &HFF7,"6" EEWRITE &HFF8,"x"
179
5
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 programmés est dépassé. Si cette condition est vérifiée 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 D’UN SMS '-----------------------------
Le programme grâce à la commande « AT+CMGR » regarde si l’emplacement mémoire indiqué par l’index contient un SMS. Si l’emplacement est vide le programme saute à l’étiquette RAZ. Dans le cas contraire si le texte contient les caractères « !! », les 13 caractères suivants, qui contiennent la commande, sont stockés dans la variable SMS, sinon le programme saute à l’étiquette RAZ. SEROUT TXD,BDS,0,1,["AT+CMGR="] FOR i=0 to 2 IF index(i)>=48 AND index(i) seuil atteint » est ajouté. La Led de signalisation correspondante est activée pour éviter l’envoi d’autres SMS. Rappelons que la commande « !!RA » permet de remettre à zéro 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
5
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 décimale fournie par l’instruction D=ADIN(i) en trois caractères ASCII. Le résultat contenu dans la variable D est codé sur 10 bits. Pour faciliter l’écriture de notre programme nous allons travailler sur 8 bits, ce qui revient à diviser le résultat par 4. La précision de la mesure est donc égale à 5/28 = 0,02 V ce qui n’est déjà 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 résultat 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 unités nommé V1 on divise le résultat par 100, d’où la relation V1 = V/100. La première décimale nommée V2 est obtenue par la formule V2 = (V – 100 × V1)/10. Enfin la deuxième décimale est obtenue par la formule V3 = V – (100 × V1 + 10 × V2), notez qu’il est nécessaire de découper 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 caractère ASCII correspondant. Le sous-programme ENV se chargera d’intercaler 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
RÉALISATIONS ÉLECTRONIQUES V3=V3+(10*V2) V3=V-V3 V1=V1+48 V2=V2+48 V3=V3+48 RETURN 'MISE À JOUR DU NUMÉRO POUR L’ENVOI DES SMS '------------------------------------------
Le numéro contenu dans la commande !!N,06xxxxxxxx est sauvegardé dans la mémoire eeprom du PicBasic aux adresses FF6hex à FFFhex. C’est ce numéro qui sera utilisé pour l’expédition 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 systématiquement effacer le SMS en mémoire, ainsi le prochain SMS réceptionné aura toujours le même index. Ceci évite de prévoir une incrémentation de la variable index et surtout de saturer la mémoire du téléphone. Notez que cette partie de programme est appelée même si aucun SMS n’est à effacer, le ME répond par un message d’erreur qui est ignoré par le programme.
© DUNOD – La photocopie non autorisée est un délit.
RAZ:
SEROUT TXD,BDS,0,1,["AT+CMGD="] FOR i=0 TO 2 IF index(i)>=48 AND index(i)=48 AND index(i) 255) ou THP pour la conversion d’une température 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 d’alerte : "] 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 à zéro des flags '°°°°°°°°°°°°°°°°°°°°°°°
190
09_Ch 5.fm Page 191 Thursday, February 18, 2010 11:26 AM
CHAPITRE
RÉALISATIONS ÉLECTRONIQUES Si les deux premières lettres de la commande réceptionnée sont « T » et « R » la mémorisation des seuils de dépassement FLAG_TH et FLAG_TB sont mis à zéro. 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 température haut '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Il est possible de programmer par SMS la valeur du seuil haut qui déclenche l’envoi d’un message d’alerte. La commande est de la forme !!TH,temp, la donnée 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=(THTH THEN GOSUB INC END IF SEROUT TXD,BDS,0,1,[26] DELAY 5000 RETURN 'NUMEROTATION POUR L’ENVOI D’UN SMS '----------------------------------
Si la commande envoyée est de la forme !!T?,06xxxxxxxx le numéro utilisé pour l’envoi des SMS est celui spécifié par la commande. Pour les autres commandes le numéro utilisé est celui inscrit dans la mémoire 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
RÉALISATIONS ÉLECTRONIQUES DELAY 1000 RETURN 'MESSAGES D’ALERTES '------------------
Voici les sous-programmes GEL et INC qui font eux-mêmes appel aux sous-programmes THM et THP qui réalisent la conversion de la température. On notera la mise à 1 des variables FLAG_TB et FLAG_TH afin d’éviter que d’autres SMS d’alertes ne soient envoyés tant que ces mêmes variables ne seront pas remises à zéro 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 autorisée est un délit.
Voici les sous-programmes, THM qui est chargé de la conversion d’une température négative et THP chargé de la conversion d’une température 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
Résumé des points importants Voir Tableau 5.25.
193
5
09_Ch 5.fm Page 194 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM Tableau 5.25. THERMOMÈTRE Configuration Cavalier J1 à mettre en place uniquement si vous utilisez un câble DATA LINK du commerce Éléments du programme PicBasic à modifier • • • • •
Code PIN (7208 par défaut) Mémoire lecture SMS (ME par défaut) Index du prochain SMS reçu (900 par défaut) Numéro de téléphone par défaut pour l’envoi des SMS Seuil de température haute TH. Lorsque température > TH un SMS d’alerte est envoyé.
Commande SMS reçue
Action du montage
!!T?
Un SMS contenant la température mesurée est envoyé au numéro spécifié dans l’eeprom du PicBasic à l’aide de la commande !!N,06xxxxxxxx
!!T?,06xxxxxx
Un SMS contenant la température mesurée est envoyé au numéro indiqué
!!N, 06xxxxxx
Enregistre le numéro de téléphone indiqué dans l’eeprom du PicBasic. C’est ce numéro qui sera utilisé pour l’envoi des SMS d’alertes. Par défaut le numéro utilisé est celui en dur dans le programme
!!TH,temp
Fixe le seuil de température haute à la valeur spécifiée par la donnée temp (125 ≥ temp ≥ 001)
!!TR
Autorise le montage à envoyer d’autres SMS d’alerte, si la température est négative ou supérieure au seuil TH programmé
5.4 CARTE ENTRÉES/SORTIES PILOTÉE PAR GSM La carte présentée ici est en quelque sorte une compilation des montages précédents. Elle permet la commande de 32 sorties logiques réparties sur 4 ports ainsi que la lecture de 32 entrées logiques réparties aussi sur 4 ports et de 8 entrées analogiques réparties sur 1 port. Le pilotage de ces 72 lignes est entièrement réalisé par l’envoi et la réception de SMS sur le réseau de téléphonie mobile.
PicBasic Le cœur de notre carte est là encore un microcontrôleur PicBasic du constructeur Coréen COMFILE TECHNOLOGY. Il existe 3 familles de PicBasic, celui que nous avons choisi ici, le PICBASIC-2S, appartient à la deuxième famille, il est un bon compromis entre le coût et les possibilités offertes. Ce petit module hybride au format DIP 34 broches est constitué d’un PIC 16C74A-04, d’un quartz de 4,19 MHz, d’une mémoire eeprom
194
09_Ch 5.fm Page 195 Thursday, February 18, 2010 11:26 AM
CHAPITRE
RÉALISATIONS ÉLECTRONIQUES
24LC64 d’une capacité de 8 Ko et d’un petit connecteur qui permet l’implantation en mémoire du programme. Sans avoir branché le fer à souder, on dispose déjà d’une minicarte tout à fait fonctionnelle. Comparativement au PicBasic 3B, le 2H dispose de 2 fois plus de mémoire programme, de 9 entrées logiques et 3 entrées analogiques supplémentaires. Toutefois le nombre d’instructions traitées par seconde est beaucoup plus faible, 56 000 pour le 3B seulement 1 000 pour le 2S, mais cette différence n’est pas du tout pénalisante dans le cadre de notre application.
© DUNOD – La photocopie non autorisée est un délit.
Schéma électrique Le schéma électrique (Figure 5.33) peut sembler complexe, au premier coup d’œil. Nous allons voir qu’il n’en est rien.
Port série Le PicBasic dispose d’instructions qui permettent d’utiliser deux de ses lignes I/O pour simuler une liaison RS232. Le format des données transférées est 8 bits de données avec 1 bit de start, 1 bit de stop et sans bit de parité. L’instruction SERIN Port, Param1, Mode, Param2, Adress, [Var1] permet d’attendre la réception de données sous forme série selon le protocole RS232. La broche Port attend la ou les données Var1 à une vitesse définie par Param1 (voir tableau 5.26). Durant cette phase le PicBasic ne peut pas effectuer d’autres tâches et attend la réception des données pendant une durée définie par Param2.
195
5
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 autorisée est un délit.
RÉALISATIONS ÉLECTRONIQUES
5
Figure 5.33. Schéma de la carte E/S pilotée 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 série.
Si la durée d’attente est dépassée, sans qu’aucune donnée ne soit reçue, le programme passera directement à l’adresse définie par Adress. Le paramètre Mode n’est pas utilisé et doit être positionné à 0. L’instruction SEROUT Port, Param1, Mode, Param2, Adress, [Var1] permet de transmettre des données également sous forme série et au format RS232. La broche Port transmet la ou les données Var1 à une vitesse définie par Param1. Le paramètre Mode permet d’instaurer une temporisation entre chaque caractère émis dont la durée en millisecondes est fonction de Param2. Les données reçues et envoyées par ces deux instructions doivent être de type byte, c’est-à-dire comprises entre 0 et 255. Si une donnée de type integer, comprise entre 0 et 65 535, est envoyée, seuls les 8 bits de poids faible seront transmis. La broche I/O5 (broche n° 9) sera utilisée pour recevoir les données série, et la broche I/O6 (broche n° 10) pour effectuer des transmissions. La vitesse de transmission a été fixée à 9 600 bauds, la valeur attribuée au paramètre Param1 est donc 30. Comme notre carte doit pouvoir dialoguer avec le téléphone via le port série, 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 autorisée est un délit.
RÉALISATIONS ÉLECTRONIQUES
5
Figure 5.34. Circuit imprimé carte principale, réduit 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, réduite de 10 %. Liste des composants carte principale R1 : 470 Ω R2 à R9 : 220 Ω C1 à C8 : 100 nF / céramique 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 : réseau de résistance 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 : régulateur 7805 + dissipateur thermique CN1 : DB9 mâle pour CI coudé à 90° CN2 : bornier à vis 2 plots 8 barrettes femelles HE14 10 broches 2 barrettes femelles HE14 17 broches 2 barrettes mâles HE14 10 broches 1 barrette mâle HE14 3 broches (facultatif) 1 connecteur pour écran LCD série (facultatif)
200
09_Ch 5.fm Page 201 Thursday, February 18, 2010 11:26 AM
CHAPITRE
© DUNOD – La photocopie non autorisée est un délit.
RÉALISATIONS ÉLECTRONIQUES
Liste des composants platines d’essais 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 résistances 470 Ω C : 8 connecteurs HE10 mâles 10 broches 8 barrettes mâles HE14 10 broches
201
5
Figure 5.36. (en haut) Circuit imprimé platines d’essais. Figure 5.37. (en bas) Implantation des composants platines d’essais.
09_Ch 5.fm Page 202 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM du type MAX232 (IC9 sur le schéma) câblé 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. Différentes 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 envoyées sous forme de SMS à travers le réseau GSM sont réceptionnées par le téléphone puis transmises à la carte via le port série. Les commandes débutent toujours par les caractères « !! » suivis d’une lettre qui identifie la commande, par exemple « L » pour lecture, « E » pour écriture… puis vient le numéro du port concerné par la commande et finalement la donnée (dans le cas d’une opération d’écriture). Chaque paramètre est séparé par une virgule (tableau 5.27).
Commande
Action
!!L, port
Lecture des 8 entrées du port concerné, avec 0 ≤ port ≤ 7
!!E, port, Data
Écriture de la donnée 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
Complémente la sortie NumBit du port concerné, avec 4 ≤ port ≤ 7 et 0 ≤ NumBit ≤ 7
!!T
Effectue la lecture de toutes les entrées logiques, le résultat est envoyé sous forme de 4 octets correspondants respectivement aux ports 0, 1, 2 et 3
!!V
Effectue la lecture de toutes les entrées analogiques, le résultat est envoyé sous forme de 8 tensions lues sur les entrées AD0 à AD7
Ports E/S La carte possède pas moins de 8 ports parallèles comportant chacun 8 lignes, 4 sont utilisables en entrée et sont numérotés de 0 à 3, 4 sont utilisables en sortie et sont numérotés de 4 à 7. Chacun des 8 ports est relié à 8 lignes du PicBasic. Il existe deux instructions spécifiques qui permettent de travailler simultanément avec des blocs de 8 lignes. L’instruction BYTEIN(Param1)
202
09_Ch 5.fm Page 203 Thursday, February 18, 2010 11:26 AM
CHAPITRE
RÉALISATIONS ÉLECTRONIQUES
© DUNOD – La photocopie non autorisée est un délit.
permet de récupérer la valeur de 8 entrées dans un mot binaire 8 bits dont chaque bit est l’image de chacune des entrées. Il est possible avec le PICBASIC-2S d’accéder à 3 blocs différents. L’instruction BYTEOUT Port, Val permet de sortir la valeur binaire 8 bits d’une donnée Val sur 8 sorties du PicBasic. Le paramètre port qui peut prendre les valeurs 1, 2 ou 3 permet d’accéder aux 3 blocs. Le bloc n° 1 que nous utilisons comme un bus de données bidirectionnel à l’aide des instructions BYTEIN et BYTEOUT est constitué des lignes I/O8 (broche n° 12) à I/O15 (broche n° 19). Dans le cas d’une opération d’écriture, la donnée est d’abord lue sur le port série puis recopiée sur le bus de données qui est alors configuré en sortie (instruction BYTEOUT). Dans le cas d’une opération de lecture, la donnée est d’abord lue par le bus de données qui est alors configuré en entrée (instruction BYTEIN), puis envoyée au téléphone via le port série. Il est évident qu’un seul port est utilisé à la fois, cette sélection s’effectuant par l’intermédiaire 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 d’adressage. Notez que la configuration des lignes du PicBasic en entrée ou en sortie est automatiquement réalisée. Par exemple si vous utilisez une instruction d’écriture comme BYTEOUT, les lignes concernées sont configurées en sortie. Avec l’instruction de lecture BYTEIN les lignes concernées sont configurées en entrée. Sur chacune des 8 lignes du bus de données on trouve une résistance de 220 Ω chargée de protéger la ligne du PicBasic contre d’éventuelles mauvaises manipulations. Imaginons que vous effectuez une opération d’écriture sur le bus de données alors que le bus d’adressage rend actif, par exemple, le port n° 0. Si par malheur une sortie du bus de données qui est à l’état haut est reliée à une entrée du port qui est à l’état bas on obtient un court circuit qui à pour conséquence de détruire le PicBasic ! Mais, comme nous avons pris le soin d’insérer une résistance, la tension débitée par la sortie du PicBasic ne dépassera pas les 20 mA préconisés par le fabricant et le circuit sera sauvé, ouf ! Entrées Chaque port d’entrée utilise un circuit 74HCT541. La sélection des ports 0, 1, 2 et 3 s’effectue par les bits G1 et G2 qui sont reliés respectivement à I/O23 (broche 27), I/O22 (broche 26), I/O21 (broche 25) et I/O20 (broche 24). Si une de ces lignes est à l’état bas l’octet présent sur l’entrée du 74HCT541 correspondant est recopié sur sa sortie et envoyé de ce fait sur le bus de données qui est alors configuré en entrée. Si les bits G1 et G2 sont à l’état haut, les sorties du 74HCT541 sont à l’état de haute impédance, ce qui
203
5
09_Ch 5.fm Page 204 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM revient à dire que le circuit est déconnecté du bus de données. Les entrées du 74HCT541 sont reliées à des résistances de rappel. Si l’entrée n’est pas utilisée, elle est mise à l’état haut par une résistance de 10 kΩ. Sorties Chaque port de sortie utilise un circuit 74HCT574. La sélection des ports 4, 5, 6 et 7 s’effectue par les broches CLK (clock) qui sont reliées respectivement à I/O19 (broche 23), I/O18 (broche 22), I/O17 (broche 21) et I/O16 (broche 20). Chacune des 8 entrées de chaque 74HCT574 est reliée au bus de données qui est alors configuré en sortie. Si une des entrées CLK est soumise à un front montant, la donnée présente en entrée du 74HCT574 correspondant est recopiée sur sa sortie. L’état de la sortie étant mémorisé dans un tampon jusqu’à la prochaine écriture. Port analogique Le PICBASIC-2S dispose d’origine de 8 entrées analogiques AD0 à AD7 possédant une résolution de 8 bits, soit une précision de 20 mV sur la mesure. L’instruction très simple comme ADIN(port) permet de connaître la valeur de la tension présente sur une broche précise. La valeur à lire doit être impérativement comprise entre 0 et + 5 V sous peine de détériorer le circuit. Pour la lecture de niveaux supérieurs il faudra avoir recours par exemple à des ponts diviseurs de tensions ou à des amplis OP câblés en diviseurs de tension. Le paramètre port correspond à la broche du module qui reçoit la valeur à mesurer : broches 0 à 4 et 24 à 26. La valeur de la lecture est de type byte (comprise entre 0 et 255), l’équation 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.
Réalisation Il faudra un minimum de vigilance lors de la réalisation, la carte comporte de nombreuses pistes proches les une des autres et relativement fines. La majorité des pastilles seront à percer à l’aide d’un foret de 0,8 mm de diamètre. Seules les pastilles du bornier et du régulateur seront à percer à 1,5 mm. Concernant le montage des composants, on commencera par la mise en place des 13 straps. On soudera ensuite les résistances puis les condensateurs dont il faudra impérativement respecter la polarité, particulièrement pour ceux destinés 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
RÉALISATIONS ÉLECTRONIQUES respectifs, il est conseillé de mettre le montage sous tension et de vérifier la tension d’alimentation à l’aide d’un voltmètre qui doit être égale à + 5 V à ± 5 % près.
Programme PicBasic : « ces.bas » Étudions maintenant en détail le programme destiné au PicBasic. 'DECLARATION DES CONSTANTES '--------------------------
Il ne faut surtout pas se priver de l’utilisation des constantes qui facilitent la compréhension et la maintenance d’un programme. De plus les constantes ne sont utilisées que par le compilateur, elles ne prennent donc pas de place dans la mémoire du PicBasic. 'Constantes dédiées à la gestion du port série '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Déclaration des constantes utilisées par les instructions SERIN et SEROUT. TXD correspond à la ligne I/O6 du PicBasic, RXD correspond à ligne I/O5. BDS (pour bauds) définit la vitesse de transmission ici fixée à 9 600 car BDS = 30. CONST BDS = 30 CONST RXD = 5 CONST TXD = 6
© DUNOD – La photocopie non autorisée est un délit.
'Constantes utilisées pour l’adressage de l’eeprom '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
De nombreux paramètres utiles à la carte (code PIN, Mem, Index, Numéro…) sont sauvegardés dans la mémoire eeprom du PicBasic. Les plages d’adresses sont identifiées par des constantes, D_x définit l’adresse de début, F_x définit l’adresse 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
5
09_Ch 5.fm Page 206 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM Tableau 5.28. Cartographie de la mémoire eeprom du PicBasic.
Adresse HEX
Constante
Nature
0000
_
Premier octet mémoire programme
…
_
…
…
_
…
0740
_
Dernier octet mémoire programme
Espace
1 857 octets
0741
6 308 octets non utilisés
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 caractère
1FF2
_
2e caractère
4 octets
4 octets
4 octets
2 octets
206
09_Ch 5.fm Page 207 Thursday, February 18, 2010 11:26 AM
CHAPITRE
RÉALISATIONS É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 dédiées à la gestion des E/S de la carte '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
La constante « adresse » représente le bloc de 8 bits numéro 2 (I/O16 à I/O23), la constante « donnee » représente le bloc numéro 1 (I/O8 à I/O15). Ces deux constantes seront utilisées dans le corps du programme avec les instructions BYTEIN et BYTEOUT.
© DUNOD – La photocopie non autorisée est un délit.
CONST adresse = 2 CONST donnee = 1
La constante MaskPort est une constante de type tableau qui contient 8 valeurs représentées ici en binaire. Chaque valeur est accessible par un indice, par exemple MaskPort(2)= 11010000bin. Ces valeurs seront utilisées par le bus d’adresse pour sélectionner un des 8 ports de la carte, par exemple MaskPort(2) sélectionne le port numéro 2, car le bit 5 correspondant à la sortie I/O21 est à zéro. Rappelons que les ports 0 à 3 sont actifs si les lignes correspondantes du bus d’adressage (I/O23 à I/O20) sont à l’état bas. Alors que les ports 4 à 7 sont actifs si les lignes correspondantes du bus d’adressage (I/O19 à I/O16) passent de l’état bas à l’état haut (front montant). CONST BYTE MaskPort= (&b01110000,&b10110000,&b11010000, &b11100000,&b11111000,&b11110100, &b11110010,&b11110001)
207
5
09_Ch 5.fm Page 208 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM 'DECLARATION DES VARIABLES '------------------------'Variable dédiée au stockage SMS '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° DIM SMS(30) AS BYTE 'Variables dédiées 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 D’ADRESSE ET DE DONNEES '---------------------------------------------
Toutes les sorties de la carte sont positionnées à l’état 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 s’assurer que la liaison entre le montage et le téléphone est valide, nous allons envoyer la commande la plus simple qui soit : AT, le ME doit répondre par OK si la liaison est correcte. Les caractères « AT » suivis du caractère =13dec sont envoyés par la commande SEROUT. L’instruction SERIN permet d’attendre l’éventuelle réponse « OK » pendant 2 000 ms
208
09_Ch 5.fm Page 209 Thursday, February 18, 2010 11:26 AM
CHAPITRE
RÉALISATIONS ÉLECTRONIQUES (soit 2 s). Si les caractères OK sont réceptionnés dans le temps donné, le caractère suivant soit est placé dans la variable i. Dans le cas contraire le programme saute à la ligne repérée par l’étiquette TEST car i est vide. Il suffit de tester le contenu de i pour savoir si la liaison est établie. En phase de paramétrage, le montage est connecté à un PC, si à la commande « AT » le PC répond par « OK » suivi de la lettre P le montage se place en phase de programmation, si le PC répond par la lettre L, c’est la phase de lecture qui est activée. 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 l’ALPHABET GSM '--------------------------SEROUT TXD,BDS,0,1,["AT+CSCS=",34,"GSM",34,13] DELAY 500 'CODE PIN '--------
© DUNOD – La photocopie non autorisée est un délit.
En principe le code PIN qui autorise l’accès aux fonctions du téléphone doit être composé à chaque mise sous tension. Avec un téléphone classique vous pouvez le saisir à partir du clavier. Ce qui n’est plus possible si vous utilisez un terminal GSM intégré, pour la simple et bonne raison qu’il ne dispose pas de clavier ! L’instruction « AT+CPIN » suivie de votre code PIN est dans ce cas incontournable. Le code PIN est stocké dans la mémoire 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 mémoire utilisée pour le stockage des SMS réceptionnés () est également contenue dans la mémoire 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
5
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 chargées avec les données lues entre les adresses D_FlagPort et F_FlagPort de l’eeprom. (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 données '°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Le bus d’adresse est positionné de manière à ce qu’aucun port ne soit sélectionné. Pour des raisons de sécurité, on effectue une lecture « bidon » du bus de données pour configurer les broches correspondantes du PicBasic en entrées, cette précaution évite les courts-circuits si par mégarde un des ports 0 à 3 est actif alors que le bus de données 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
RÉALISATIONS ÉLECTRONIQUES
5
La lecture du SMS est provoquée par la commande « AT+CMGR= », le paramètre Index est récupéré dans la mémoire eeprom du PicBasic. Dès la réception des caractères « !! » les 12 caractères suivants sont placés dans la variable SMS. Si les deux points d’exclamation ne sont pas réceptionnés dans les 5 s, le programme bascule sur l’étiquette 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 l’état actuel du programme, si l’on considère que le SMS envoyé était de la forme « !!E,1,154 », la variable tableau SMS doit contenir ce qui est indiqué tableau 5.29 (l’état des variables SMS(7) à SMS(29) nous est dans ce cas indifférent). SMS(0)
SMS(1)
SMS(2)
SMS(3)
SMS(4)
SMS(5)
SMS(6)
E
,
4
,
1
5
4
• SMS(0) contient l’identifiant de la commande, ici « E » pour Écriture. • SMS(2) contient le numéro du port sollicité. • SMS(4), SMS(5) et SMS(6) contiennent la donnée à écrire sur le port.
© DUNOD – La photocopie non autorisée est un délit.
'CONVERSION ASCII -> DECIMAL '---------------------------
Les valeurs contenues dans la variable SMS sont codées sous forme de caractères ASCII, pour calculer la valeur numérique exprimée en décimal il suffit de retrancher la valeur 48dec qui est le code ASCII du chiffre zéro. Par exemple si SMS(2) = 4ascii = 52dec, d’où 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 s’orienter. Dans le cas où la commande reçue n’est pas valide, le programme bascule sur l’étiquette 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 d’un SMS contenant l’état logique du port spécifié. Le sousprogramme NUM compose le numéro de téléphone du destinataire, LEC1PORT effectue la lecture de la valeur décimale et binaire présente sur le port sollicité. Finalement le code ASCII 26dec=EOF est envoyée sur la sortie TxD, ce qui déclenche l’envoi du SMS sur le réseau 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 numéro de téléphone du destinataire du SMS. Pour la lecture de tous les ports on fait appel 8 fois au sousprogramme LEC1PORT en incrémentant d’une unité la variable SMS(2) à chaque appel. Finalement le code ASCII 26dec=EOF est envoyé sur la sortie TxD, ce qui déclenche l’envoi du SMS sur le réseau GSM. LECTURES: GOSUB NUM FOR i=0 TO 7 SMS(2)=i IF i0 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
RÉALISATIONS É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 unités. Les 3 lignes ci-dessous permettent de reconstituer facilement la valeur de consigne qui est ensuite enregistrée 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 d’une opération d’écriture, on commence par envoyer la valeur de consigne contenue dans DATA sur le bus de données. Le bus d’adresse est ensuite positionné de manière à ce que la donnée en question soit transférée sur le port pointé par SMS(2). Notez que l’on mémorise la valeur appliquée sur le port dans la variable tableau ValPort.
© DUNOD – La photocopie non autorisée est un délit.
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 D’UN BIT SUR PORT CONCERNE '-----------------------------------
Grâce au sous-programme UnBIT, la variable j contient le bit qu’il faut mettre à 1. Pour ne mettre à 1 que la sortie concernée, 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
5
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
j
0
0
0
1
0
0
0
0
ValPort(n)
1
1
0
0
1
1
0
0
DATA
1
1
0
1
1
1
0
0
'MISE A 0 D’UN BIT SUR PORT CONCERNE '-----------------------------------
Grâce au sous-programme UnBIT, la variable j contient le bit qu’il faut mettre à 0. Pour ne mettre à 0 que la sortie concernée, il faut faire un ET logique entre le complément 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.
j
0
0
0
1
0
0
0
0
(255-j)
1
1
1
0
1
1
1
1
ValPort(n)
1
1
0
1
1
1
0
0
DATA
1
1
0
0
1
1
0
0
ET
'INVERSE L’ETAT D’UN BIT SUR PORT CONCERNE '-----------------------------------------
Grâce au sous-programme UnBIT, la variable j contient le bit qu’il faut mettre à 0. Pour ne mettre à 0 que la sortie concernée, 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 d’état 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
RÉALISATIONS ÉLECTRONIQUES
XOR
j
0
0
0
1
0
0
0
0
ValPort(n)
1
1
0
0
1
1
0
0
DATA
1
1
0
1
1
1
0
0
Exemple 2 : dans cet exemple, seul le bit n° 4 change d’état et passe à 0, tous les autres bits conservent leur état.
XOR
j
0
0
0
1
0
0
0
0
ValPort(n)
1
1
0
1
1
1
0
0
DATA
1
1
0
0
1
1
0
0
'LECTURE DES 8 ENTREES ANALOGIQUES '---------------------------------
Voici la partie de programme chargée de lire les 8 entrées analogiques de la carte et d’envoyer le résultat sous forme de SMS. L’acquisition s’effectue en deux parties car les entrées 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 décimale codée sur 8 bits en une valeur codée en ASCII.
© DUNOD – La photocopie non autorisée est un délit.
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 L’ENVOI DES SMS '--------------------------------------------------
Non seulement il est possible de modifier le numéro grâce au logiciel « ConfigES_GSM.exe » (montage connecté à un PC) mais aussi par SMS (montage connecté à un téléphone GSM). Le numéro contenu dans la commande !!N,06xxxxxxxx est sauvegardé dans la mémoire eeprom du PicBasic aux adresses D_Numero à F_Numero. C’est ce numéro qui sera utilisé pour l’expédition des SMS.
215
5
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 positionnées par l’envoi d’un SMS de la forme : !!F,f0f1f2f3. Si fx = 1 le port n° x ne peut pas déclencher l’envoi d’un SMS. Si fx = 0 le port n° x peut déclencher l’envoi d’un SMS. Avec 0 ≤ x ≤ 3. Si fx = ? la valeur du flag n’est pas modifiée (voir la partie de programme SCRUT pour comprendre l’utilité 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 systématiquement effacé, à l’aide de la commande AT+CMGD suivie de l’index, pour éviter une saturation de la mémoire utilisée, et une incrémentation de l’index. Du fait chaque SMS reçu aura le même 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 '----------------------
Après avoir vérifié si un nouveau SMS est présent dans la mémoire du téléphone et, le cas échéant, traité celui-ci, le PicBasic effectue une lecture des ports n° 0 à 3 et compare les 4 valeurs lues avec celles situées entre les adresses D_PORT et F_PORT. En cas d’égalité un SMS contenant l’état des entrées du port est envoyé, un message entre parenthèses indique qu’il s’agit d’un message d’alerte. L’envoi ne peut se faire que si la variable
216
09_Ch 5.fm Page 217 Thursday, February 18, 2010 11:26 AM
CHAPITRE
RÉALISATIONS ÉLECTRONIQUES FlagPort correspondante est à zéro. Lors du premier envoi la variable FlagPort est mise systématiquement à 1 pour éviter que le port correspondant envoie d’autres SMS. Le logiciel « ConfigES _GSM.exe » permet à l’utilisateur de définir les valeurs qui déclenchent l’envoi d’un SMS, il est également possible d’inhiber 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 d’alerte !)",26] END IF END IF h=h+1 NEXT k GOTO RAZ
© DUNOD – La photocopie non autorisée est un délit.
'**************************************************************** 'PROGRAMMATION DE LA CARTE AVEC UN PC '****************************************************************
Tous les paramètres utilisés par le montage peuvent être consultés et modifiés dans l’eeprom du PicBasic grâce au logiciel « ConfigES_GSM.exe », la carte est dans ce cas connectée au port série d’un PC. Deux parties de code très simples permettent la lecture et l’écriture dans l’eeprom. Notez que les données sont préservées lorsque le montage est hors tension. 'LECTURE DES PARAMETRES SITUES EN EEPROM '---------------------------------------
Toutes les données situées entre les adresses D_FlagPort (1FE5hex) et F_Numero (1FFFhex) sont envoyées au PC. Le logiciel « ConfigES_GSM.exe » se charge d’afficher clairement à l’écran les différents paramètres (voir copie d’écran). LEC_EE: j1=D_FlagPort:j2=F_Numero GOSUB READ_EE i=0 GOTO TEST
217
5
09_Ch 5.fm Page 218 Thursday, February 18, 2010 11:26 AM
INTERFACES GSM 'ECRITURE DES DONNEES DE PARAMETRAGE DANS L’EEPROM '-------------------------------------------------
En phase d’écriture le logiciel « ConfigES_GSM.exe » envoie tous les paramètres au PicBasic qui les mémorise 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 d’un seul port. Le numéro 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 s’effectue dans la variable tableau ValPort. LEC1PORT: IF SMS(2)
N
^
n
~
1
1
1
1
15
(si)
(us)
/
?
O
_
o
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
0
0
0
0
1
1
1
1
b6
0
0
1
1
0
0
1
1
b5
0
1
0
1
0
1
0
1
0
1
2
3
4
5
6
7
b4
b3
b2
b1
0
0
0
0
0
@
Δ
SP
0
-
P
¨
p
0
0
0
1
1
£
_
!
1
A
Q
a
q
0
0
1
0
2
$
Φ
″
2
B
R
b
r
0
0
1
1
3
¥
Γ
#
3
C
S
c
s
0
1
0
0
4
è
Λ
4
D
T
d
t
0
1
0
1
5
é
Ω
%
5
E
U
e
u
0
1
1
0
6
ù
Π
&
6
F
V
f
v
0
1
1
1
7
ì
Ψ
‘
7
G
W
g
w
1
0
0
0
8
ò
Σ
(
8
H
X
h
x
1
0
0
1
9
ç
Θ
)
9
I
Y
i
y
1
0
1
0
10
(lf)
Ξ
*
:
J
Z
j
z
1
0
1
1
11
∅
Ξ
+
;
K
Ä
k
ä
1
1
0
0
12
∅
Æ
,
N
Ü
n
ü
1
1
1
1
15
å
É
/
?
O
§
o
à
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 éléments permettant de représenter les lettres et les chiffres sous forme de caractères et de codes (ISO 7). BCD : Binary Coded Decimal. Système de numération où chaque groupe de 4 bits d’un nombre représente un digit d’un chiffre. Bi-bande : Terminal capable de fonctionner indifféremment sur le réseau GSM 1800 et GSM 900. Il s’agit de la même technologie (GSM) utilisée dans des bandes de fréquences différentes : 900 MHz ou 1 800 MHz. Alors que les deux types de réseaux imposaient l’utilisation de terminaux différents, on voit désormais sur le marché des terminaux bi-bandes GSM 900/1800, capables de fonctionner, soit sur un réseau GSM 900, soit sur un réseau GSM 1800, soit sur un réseau bi-bandes GSM 900/1800. BPS : Vitesse de transmission des données sur un réseau. La norme GSM limite la vitesse de transmission de données à 9 600 bps sur le réseau. BSIC : Code regroupant le BCC et le NCC, il sert à différencier 2 BTS utilisant le même canal FCN. BTS : Base Transeiver Station. Équipement comprenant l’antenne et les émetteurs/récepteurs radio. CAN : Convertisseur Analogique Numérique. Élément électronique permettant de convertir un signal analogique (ex : tension) en une valeur numérique (ex : octet). Cell-ID : Numéro codé sur deux octets qui identifie une cellule (ou BTS). DATA FAX : C’est la fonction des téléphones qui permet le transfert à distance de données ou de fax, d’ordinateur portable à ordinateur. La vitesse de transfert des informations s’exprime en bauds.
261
11_Glossaire.fm Page 262 Thursday, February 18, 2010 11:29 AM
INTERFACES GSM dBm : Unité de mesure exprimant un niveau référencé par rapport à une puissance de 1 mW. E-GSM. : Extended GSM. Extension du système GSM à d’autres fréquences que la zone de fréquences standards. ETS : European Telecommunication Standard. Nom de la norme créée par l’ETSI, la norme provisoire est nommée I-ETS. Par exemple les normes GSM 07.07 et GSM 07.05 sont des ETS. ETSI : European Telecommunications Standard Institute. Organisme crée par la Commission européenne et chargé de la normalisation des télécommunications. FCN : Frequency Chanel Number. Numéro désignant une porteuse de façon unique dans le système GSM. GPRS : General Packet Radio Services. Système de commutation de données par paquets selon le protocole TCP/IP permettant d’améliorer les débits fournis par les réseaux GSM, on peut espérer un débit de 115 kbits/s. Technologie standardisée à l’ETSI (Institut Européen des Normes de Télécommunication). On trouve désormais sur le marché des téléphones utilisant le GPRS, c’est 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 téléphonie cellulaire numérique européenne développée par l’ETSI. Le GSM utilise une fréquence de 900 MHz et atteint un taux de transfert de 9 600 bits/s. Il existe aussi des versions dérivées du GSM atteignant des fréquences de 1 800 ou 1 900 MHz. Cette norme de téléphone mobile est apparue en 1992 avec un premier appel effectué en Finlande. Le GSM (Itinéris, SFR) est la principale norme utilisée en Europe avec le DCS (Bouygues Télécom). GSM Phase 1. : Première phase de spécification du système GSM. GSM Phase 2. : Deuxième phase de spécification du système GSM. GSM Phase 2+ : Nouvelle phase de spécification du GSM, après un codage plus efficace des données le débit atteint 14,4 kbits/s. IMEI : International Mobile Equipment Identity. Terme qui désigne le numéro d’identification d’un mobile, et qui figure dans le corps de l’appareil ainsi que dans sa mémoire. IMSI : International Mobile Subscriber Identity. Identité Internationale de l’abonné 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é à l’ensemble des cellules d’une même zone. ME : Mobile Equipement. Équipement mobile qui permet l’envoi et la réception de données sur le réseau GSM. MODEM : Modulateur-Demodulateur. Il s’agit d’un dispositif, ou d’un périphérique de conversion des données qui transitent via une ligne téléphonique RTC ou GSM. (conversion en émission analogique vers numérique). OPÉRATEUR : Compagnie offrant des services de télécommunications. PDU : Protocol Data Unit. Protocole qui définit la constitution numérique de la trame d’un SMS. PIN : Personal Identification Number. Numéro d’identification personnel. À l’inverse des cartes bancaires, le code PIN du mobile peut être modifié par l’utilisateur. Un code PIN2 permet également de limiter des droits d’accès lorsque l’on prête son mobile à une autre personne. PLMN : Public Land Mobile Network. Réseau GSM géré par un opérateur.
© DUNOD – La photocopie non autorisée est un délit.
PUK : Lorsque 3 codes PIN erronés ont été rentrés, la carte SIM est bloquée, et il faut le code PUK à 8 chiffres pour la débloquer. ROAMING : Mécanisme permettant d’offrir les mêmes services de télécommunications mobiles à des clients (roamers) abonnés à d’autres réseaux ou dans d’autres pays. SIM : Subscriber Identification Module. Module d’identité d’abonné. La carte SIM est une carte à puce contenant les informations sur les droits d’accès. La carte SIM permet d’activer le mobile, de recevoir son numéro de téléphone ainsi que le droit d’accès au réseau. Les appels d’urgence peuvent être émis avec n’importe quel mobile, même sans carte SIM. Cette technologie est standardisée à l’ETSI. SMS : Short Message Service. Service de messages courts permettant de transmettre et de recevoir de brefs messages de 160 caractères maximum. SMS-DELIVER : Représente le protocole qui permet le transfert d’un SMS à partir du SMSC à destination d’un téléphone portable.
263
11_Glossaire.fm Page 264 Friday, March 5, 2010 7:52 PM
INTERFACES GSM SMS-SUBMIT : Représente le protocole qui permet le transfert d’un SMS à partir d’un téléphone portable à destination d’un SMSC. SMSC : Short Message Service Center. Centre de service de messages courts. Tous les messages courts sont tout d’abord transmis dans le SMSC. Le message est ensuite transmis au destinataire depuis ce centre. Le SMSC stocke temporairement les messages lorsque le destinataire n’est pas disponible. Dès que le destinataire est à nouveau disponible sur le réseau (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. Représente un ordinateur ou un microcontrôleur disposant d’un port série 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. L’état logique haut est fixé entre 2 et 5 V, l’état 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 référence Vol.1.A D. REY. Interfaces PC numéro 08 – Potentiomètres numériques sur port série P. GUEULLE. Téléphones portables et PC 3e édition, Dunod, PARIS, 2006