Cet appareil reçoit les messages SMS et les envoie au PC, à travers le port sériel, en indiquant la date et l’heure de réception.
Il fonctionne avec tout type de programme de communication sérielle, par exemple HyperTerminal et il peut être facilement intégré dans une application personnelle avec laquelle vous pourrez gérer, dans une base de données, les informations apportées par ceux qui vous envoient ces messages.
Nous avons pensé que, pour un usage professionnel ou même personnel, il vous serait commode de pouvoir visualiser sur un écran d’ordinateur les SMS que vous recevez. Le système que nous vous proposons de réaliser dans cet article utilise un module GSM (le modem Sony/Ericsson GR47 bien entendu !) et quelques autres composants comme le microcontrôleur PIC16F876 (déjà programmé en usine) lequel gère tout le fonctionnement et envoie sur la sérielle les messages et des informations supplémentaires.
Ces données peuvent être acquises au moyen d’un programme de communication (HyperTerminal va très bien) ou d’un programme ad hoc capable de remplir, en outre, d’autres fonctions. En ce qui concerne ce dernier aspect, nous laissons au lecteur l’éventuelle élaboration d’un programme plus complexe et pour cela nous mettons sur le site de la revue le programme résidant dans le micro. Quant à nous, cette fois, nous nous en tiendrons au programme HyperTerminal. Le système vous informe de l’arrivée d’un nouveau message en allumant en vert la LED bicolore et, après quelques secondes, pendant lesquelles le messages est lu, il l’envoie via le port sériel en un flux contenant en outre date, heure et numéro de téléphone appelant au format suivant :
MESSAGE : 01/05/10,07:00:00
Salut à tous +212666666666
MESSAGE : 02/05/10,11:58:15
Bonne journée +212555555555
Pour la visualisation des SMS, le logiciel de communication (pour nous HyperTerminal) est configuré pour une vitesse de transmission de 9 600 bits/s au format 8N1. En dehors de l’usage pour lequel il a été conçu, ce système peut être utilisé dans d’autres applications, par exemple pour la sécurité en liaison avec une station de base à laquelle parviennent une série de SMS envoyés par une unité distante de contrôle et alarme.
La mise en marche du module est opérée par le microcontrôleur U3 lequel, par son port RA0, habilite le second régulateur.
La tension fournie par ce dernier, filtrée et stabilisée par C5 et C6, est acheminée directement à la broche d’alimentation du module. C7 et R3 permettent d’allumer le module en connectant la tension d’alimentation sur sa broche ON/OFF. Après quelques secondes le script du module est lancé et ce dernier reste en attente de l’arrivée d’un nouveau SMS ou d’un appel. Cette dernière fonction n’est pas utilisée dans notre application mais, afin de rendre le système plus universel, le script prévoit que le port IO3 du module passe à l’état logique haut lorsqu’un appel arrive. Pour informer le micro de la présence d’un nouveau message, le GR47 met au niveau logique haut le port IO1.
Pour communiquer entre eux, les deux dispositifs utilisent deux lignes sérielles correspondant, pour le PIC, à l’UART interne et aux ports RB6 et RB4 et, pour le GR47, aux lignes TD, RD ainsi que TD3 et RD3. Les deux étant alimentés avec des tensions différentes, il est nécessaire d’utiliser une interface d’adaptation de niveau des signaux. En particulier pour la communication du micro au module il est nécessaire de réduire la gamme de tension de 0-5 V à 0-3,6 V. Pour l’obtenir on se sert d’une diode schottky (D2) et de R17 pour chaque ligne configurée comme le montre le schéma électrique. R17 est utilisée comme résistance de maintien au niveau logique haut : elle maintient en l’occurrence l’anode de D2 à un potentiel égal à celui présent sur la broche VIO du GSM, soit 3 V. Ainsi, quand RC6 est au niveau logique haut, D2 est interdite et la tension présente sur la broche TD est celle de VIO et quand RC6 est au niveau logique bas D2 conduit, ce qui met à la masse la broche TD. Même chose pour la seconde ligne sérielle avec D3 et R18.
Pour le transfert des données du GSM au PIC l’interface est légèrement plus complexe. Analysons la ligne relative à RD : quand la broche 42 du module passe à l’état logique haut, T2 est saturé, ce qui met R9 à la masse, sature le PNP T3 et achemine le 5 V présent sur l’émetteur de celui-ci vers la broche RC7 du micro. Quand le terminal RD est à la masse, T2 est interdit et R9 peut être négligée. Le 5 V présent aux extrémités de R10 permet de maintenir en interdiction T3, ce qui maintient une tension de 0 V sur le port RC7.
Pour la communication entre microcontrôleur et PC également il est nécessaire d’utiliser un adaptateur de tension pour convertir les 0-5 V de la sérielle du micro en –12 V / +12 V du port RS232. C’est le MAX232, avec quatre condensateurs externes seulement, qui s’en charge.
Le système que nous avons mis au point s’occupe de l’analyse des SMS arrivant au téléphone mobile. Toutefois, une configuration matérielle spéciale permet au micro d’envoyer des commandes AT particulières au GR47 : le circuit pourra donc être utilisé pour d’autres applications. C’est précisément pour vous permettre d’adapter le système à vos propres exigences que nous publions sur notre site le “listing” complet du programme résident que nous allons maintenant analyser.
Figure 1 : Schéma électrique du gestionnaire de SMS.
Figure 2a : Schéma d’implantation des composants du gestionnaire de SMS.
Figure 2b-1 : Dessin, à l’échelle 1, du circuit imprimé double face à trous métallisés du gestionnaire de SMS, côté soudures.
Figure 2b-2 : Dessin, à l’échelle 1, du circuit imprimé double face à trous métallisés du gestionnaire de SMS, côté composants.
Figure 3 : Photo d’un des prototypes du gestionnaire de SMS.
R2 ........... 100 kΩ 1 %
R3 ........... 4,7 kΩ
R4 ........... 4,7 kΩ
R5 ........... 4,7 kΩ
R6 ........... 470 Ω
R7 ........... 4,7 kΩ
R8 ........... 10 kΩ
R9~R12 ....... 4,7 kΩ
R13 .......... 10 kΩ
R14~R18 ...... 4,7 kΩ
R19 .......... 2,2 kΩ
R20 .......... 4,7 kΩ
R21~R24 ...... 470 Ω
R25 .......... 1 kΩ
R26 .......... 1 kΩ
C1 ........... 100 nF multicouche
C2 ........... 1 000 μF 25 V électrolytique
C3 ........... 100 nF multicouche
C4 ........... 1 000 μF 25 V électrolytique
C5 ........... 100 nF multicouche
C6 ........... 1000 μF 25 V électrolytique
C7 ........... 1 μF 100 V électrolytique
C8 ........... 10 pF céramique
C9 ........... 10 pF céramique
C10 .......... 100 nF multicouche
C11 .......... 100 nF multicouche
C12~C16 ...... 1 μF 100 V électrolytique
D1 ........... 1N4007
D2 ........... BAT85
D3 ........... BAT85
Q1 ........... quartz 20 MHz
U1 ........... 7805
U2 ........... MIC2941
U3 ........... PIC16F876-EF566A
U4 ........... MAX232
GSM .......... module GR47-EF566B
LD1 .......... LED 3 mm bicolore
LD2 .......... LED 3 mm verte
LD3 .......... LED 3 mm jaune
T1 ........... BC547
T2 ........... BC547
T3 ........... BC557
T4 ........... BC547
T5 ........... BC557
SRL .......... connecteur DB9 femelle
Divers :
1 ............ support 2 x 8
1 ............ support 2 x 14
1 ............ prise d’alimentation
1 ............ connecteur 60 pôles pour GR47
1 ............ porte-SIM
1 ............ adaptateur d’antenne MMCX/FME
1 ............ antenne bibande plate
2 ............ dissipateurs
2 ............ boulons 8 mm 3MA
Parmi les premières instructions nous trouvons la définition de paramètres comme la fréquence du quartz (20 MHz) et la configuration de l’UART (9 600 bits/s 8,N,1). Le flux @ DEVICE HS_OSC commande au programmateur de configurer automatiquement l’oscillateur en sélectionnant l’option HS (High Speed). Rappelons à ce propos que la plupart des configurations du logiciel de programmation sont automatiquement réglées par le compilateur PicBasicPro et donc, simplement en chargeant le fichier .hex avec le logiciel fourni avec le programmateur (par exemple Epic), les diverses options comme WatchDog, Power-Up Timer, Low Voltage Program etc. sont configurées correctement.
Dans le “listing” nous voyons que les instructions suivantes concernent l’attribution d’étiquettes aux différents ports. Ces derniers sont configurés comme entrées ou sorties selon leur utilisation et les variables temporaires sont déclarées. L’instruction HIGH POWERGSM (où POWERGSM est l’étiquette définissant le port RA0, soit celui pilotant le régulateur MIC2941) déshabilite le régulateur U2 et le GSM est réinitialisé par privation d’alimentation. Au bout d’une seconde (PAUSE 1000) cette broche est mise à la masse, ce qui provoque l’allumage du régulateur U2 et par conséquent du GSM. Ensuite, les convertisseurs A/N sont déshabilités afin que tous les ports du micro soient utilisés comme ports numériques.
Avec le cycle de FOR le micro allume et éteint cinq fois la LED jaune pour indiquer que le dispositif est opérationnel. La pause de trois secondes a été insérée pour donner au GSM le temps de se configurer pour permettre au script de paramétrer correctement ses lignes d’E/S.
L’instruction SEROUT2 permet d’utiliser n’importe quelle broche du micro comme si c’était une ligne sérielle : dans ce cas la broche est la TXPC (port RA1) et la vitesse de transmission est donnée par la valeur 84 correspondant à 9 600 bits/s. Avec cette instruction nous envoyons à la sérielle du PC la commande “SISTEM STARTUP” permettant de faire tout de suite un premier test de la communication effective du dispositif avec l’HyperTerminal.
Commence alors le programme principal (MAIN program), dans lequel le micro reste jusqu’à ce qu’un SMS arrive. La première instruction que nous trouvons dans cette section éteint la LED jaune et le flux suivant TOGGLE LEDV change l’état de la LED verte. Cette instruction, avec la suivante PAUSE 500, permet de faire clignoter continûment la LED afin d’informer que le micro continue de fonctionner correctement. La routine MAIN prévoit seulement deux sauts conditionnels testant les lignes IO1 et IO3 du module GSM. En fonction de l’état de la ligne IO3 la composante rouge de la LED bicolore est allumée ou éteinte, mais aucune autre action n’a lieu. Cette ligne indique en effet l’arrivée d’un appel (que notre application ne considère pas). Toutefois les plus experts d’entre vous pourront insérer en ce point les commandes AT à envoyer au modem pour exécuter des opérations déterminées, par exemple répondre à l’appel. La ligne IO1 notifie l’arrivée d’un SMS, ce que met en évidence l’allumage de la composante verte de la LED bicolore. Au cours de cette phase est appelée la subroutine LEGGISMS dans laquelle, tout d’abord, la LED jaune est allumée et la verte éteinte puis le message est lu pour être ensuite envoyé déjà formaté sur la ligne sérielle RX3. L’instruction SERIN2 RX3, 84, 2000, EXIT1, [WAIT (“>”), STR BUFFER \80] attend sur la ligne du micro le flux commençant par le caractère > (WAIT (“>”)) et devant avoir un maximum de 80 caractères. En effet, le flux envoyé par le GSM est inséré par commodité entre les caractères >flux< afin que son identification soit plus simple. Les paramètres 2000, EXIT1 indiquent que si pendant deux secondes le caractère < (signifiant que le flux est plus court que 80 caractères) n’arrive pas, l’instruction doit sauter directement à la routine EXIT1. Bien sûr, le message peut être plus long que 80 caractères et pour cela les deux instructions suivantes sont insérées (elles attendent 160 autres caractères). Un SMS peut avoir une longueur maximale de 160 lettres, toutefois le formatage prévu dans le script du GR47 prévoit que le flux envoyé au PIC contient déjà la date et l’heure d’envoi, le message et le numéro. C’est pourquoi les instructions pour l’acquisition du flux acceptent un maximum de 240 caractères. La raison de l’utilisation de trois “arrays” (tableaux) au lieu d’un seul de 240 caractères est une limitation du basic qui prévoit qu’un “array” d’octet ne peut contenir que 96 éléments au maximum.
Après avoir acquis le flux, le PIC doit communiquer au GSM la réception correcte des données et cela s’obtient en envoyant deux OK sur la sérielle TX3.
Maintenant que le flux a été chargé dans les trois “buffers” (tampons), il suffit de l’envoyer au PC à travers la ligne TXPC.
La mention MESSAGE est alors tout d’abord envoyée à l’ordinateur : ensuite chaque “buffer” (tampon) est analysé pour chercher le caractère <.
L’instruction
if tmp1=10 then
SEROUT2 TXPC,84,[13]
ENDIF
est utilisée pour insérer un “avancement ligne” quand un “à la ligne” est reçu, ce qui permet d’obtenir un formatage du texte.
Mais avec beaucoup de soin c’est tout à fait faisable. Montez tous les composants de la face “composants” (sur la figure 2a les composants dessinés en traits continus) puis celui du côté “soudures” (sur la figure 2a le porte-SIM dessiné en pointillé) en contrôlant bien les valeurs sur la liste des composants et en confirmant avec la photo de la figure 3. Attention à la polarité des composants polarisés.
Prenez le boîtier Teko COFFER 2 et percez-le pour laisser passer, sur l’un des petits côtés, la DB9 et la prise d’alimentation, sur l’autre la FME allant à l’antenne plate et sur le couvercle les trois LED (voir figures 4 et 6). Pour alimenter le circuit, prévoyez un bloc secteur 230 V fournissant 12 VDC sous 1 A.
Le micro et le GR47 sont disponibles déjà programmés en usine : sinon il faudra les programmer vous-même, bien entendu. Insérez une SIM valide dans le porte-SIM (avec un téléphone mobile, n’oubliez pas de déshabiliter au préalable la demande de code PIN).
Figure 4 : Les LED de signalisation.
Le système prévoit trois LED de signalisation, dont une bicolore. LD2, verte, clignote à intervalle régulier pour indiquer que le système est correctement alimenté et qu’il fonctionne normalement. Quand un appel est reçu, l’appareil allume LD1 en rouge, mais il n’exécute aucune opération.
En modifiant légèrement le programme résident, il est possible de lire, par exemple, l’ID de l’appelant, de manière à l’insérer dans une base de données ou d’envoyer au PC des commandes particulières permettant (par couplage à un logiciel adéquat) d’exécuter des opérations spécifiques. Si un SMS est reçu, LD1 devient verte et après avoir lu le message, le microcontrôleur allume aussi LD3 pour indiquer que les données reçues vont être envoyées au PC.
Figure 5 : La gestion des messages par HyperTerminal.
Pour visualiser sur le PC les données envoyées sur le port sériel par notre circuit, il est possible d’utiliser n’importe quel programme de communication sérielle comme HyperTerminal.
Ce programme est disponible dans Windows (Démarrer > Programmes > Accessoires > Communication).
Pour visualiser correctement les données, il faut configurer le programme à partir du menu Propriétés. Le paramétrage du port doit être :
- Bit par seconde : 9 600
- Bit de données : 8
- Parité : aucune
- Bit de stop : 1
- Contrôle de flux : aucun.
Parmi les propriétés de la sérielle vous trouverez les paramètres visualisés ci-contre. Nous vous conseillons, pour un formatage plus compréhensible du texte, de sélectionner les paramètres comme indiqué.
Les paramètres ASCII offrent des options permettant de visualiser le texte commodément comme on le voit sur le premier écran en haut.
Figure 6 : Le montage dans le boîtier.
Quand le montage de la platine est terminé, l’installation dans le boîtier plastique Teko Coffer2 est très facile : il suffit de percer le couvercle pour l’affleurement des trois LED, l’un des petits côtés pour la prise d’alimentation et le connecteur sériel. Sur le petit côté opposé on percera un trou pour le passage du socle MMCX/FME recevant le câble coaxial allant à l’antenne plate.
Il fonctionne avec tout type de programme de communication sérielle, par exemple HyperTerminal et il peut être facilement intégré dans une application personnelle avec laquelle vous pourrez gérer, dans une base de données, les informations apportées par ceux qui vous envoient ces messages.
Nous avons pensé que, pour un usage professionnel ou même personnel, il vous serait commode de pouvoir visualiser sur un écran d’ordinateur les SMS que vous recevez. Le système que nous vous proposons de réaliser dans cet article utilise un module GSM (le modem Sony/Ericsson GR47 bien entendu !) et quelques autres composants comme le microcontrôleur PIC16F876 (déjà programmé en usine) lequel gère tout le fonctionnement et envoie sur la sérielle les messages et des informations supplémentaires.
Ces données peuvent être acquises au moyen d’un programme de communication (HyperTerminal va très bien) ou d’un programme ad hoc capable de remplir, en outre, d’autres fonctions. En ce qui concerne ce dernier aspect, nous laissons au lecteur l’éventuelle élaboration d’un programme plus complexe et pour cela nous mettons sur le site de la revue le programme résidant dans le micro. Quant à nous, cette fois, nous nous en tiendrons au programme HyperTerminal. Le système vous informe de l’arrivée d’un nouveau message en allumant en vert la LED bicolore et, après quelques secondes, pendant lesquelles le messages est lu, il l’envoie via le port sériel en un flux contenant en outre date, heure et numéro de téléphone appelant au format suivant :
MESSAGE : 01/05/10,07:00:00
Salut à tous +212666666666
MESSAGE : 02/05/10,11:58:15
Bonne journée +212555555555
Pour la visualisation des SMS, le logiciel de communication (pour nous HyperTerminal) est configuré pour une vitesse de transmission de 9 600 bits/s au format 8N1. En dehors de l’usage pour lequel il a été conçu, ce système peut être utilisé dans d’autres applications, par exemple pour la sécurité en liaison avec une station de base à laquelle parviennent une série de SMS envoyés par une unité distante de contrôle et alarme.
Le schéma électrique
Le micro et le module visibles sur le schéma électrique de la figure 1 sont tous deux dûment programmés pour ce système de visualisation des SMS sur PC. Ils ont besoin d’une tension stabilisée d’alimentation de 5 V (pour le PIC, fournie par U1 7805) et de 3,6 V (pour le GR47, fournie par U2 MIC2941).La mise en marche du module est opérée par le microcontrôleur U3 lequel, par son port RA0, habilite le second régulateur.
La tension fournie par ce dernier, filtrée et stabilisée par C5 et C6, est acheminée directement à la broche d’alimentation du module. C7 et R3 permettent d’allumer le module en connectant la tension d’alimentation sur sa broche ON/OFF. Après quelques secondes le script du module est lancé et ce dernier reste en attente de l’arrivée d’un nouveau SMS ou d’un appel. Cette dernière fonction n’est pas utilisée dans notre application mais, afin de rendre le système plus universel, le script prévoit que le port IO3 du module passe à l’état logique haut lorsqu’un appel arrive. Pour informer le micro de la présence d’un nouveau message, le GR47 met au niveau logique haut le port IO1.
Pour communiquer entre eux, les deux dispositifs utilisent deux lignes sérielles correspondant, pour le PIC, à l’UART interne et aux ports RB6 et RB4 et, pour le GR47, aux lignes TD, RD ainsi que TD3 et RD3. Les deux étant alimentés avec des tensions différentes, il est nécessaire d’utiliser une interface d’adaptation de niveau des signaux. En particulier pour la communication du micro au module il est nécessaire de réduire la gamme de tension de 0-5 V à 0-3,6 V. Pour l’obtenir on se sert d’une diode schottky (D2) et de R17 pour chaque ligne configurée comme le montre le schéma électrique. R17 est utilisée comme résistance de maintien au niveau logique haut : elle maintient en l’occurrence l’anode de D2 à un potentiel égal à celui présent sur la broche VIO du GSM, soit 3 V. Ainsi, quand RC6 est au niveau logique haut, D2 est interdite et la tension présente sur la broche TD est celle de VIO et quand RC6 est au niveau logique bas D2 conduit, ce qui met à la masse la broche TD. Même chose pour la seconde ligne sérielle avec D3 et R18.
Pour le transfert des données du GSM au PIC l’interface est légèrement plus complexe. Analysons la ligne relative à RD : quand la broche 42 du module passe à l’état logique haut, T2 est saturé, ce qui met R9 à la masse, sature le PNP T3 et achemine le 5 V présent sur l’émetteur de celui-ci vers la broche RC7 du micro. Quand le terminal RD est à la masse, T2 est interdit et R9 peut être négligée. Le 5 V présent aux extrémités de R10 permet de maintenir en interdiction T3, ce qui maintient une tension de 0 V sur le port RC7.
Pour la communication entre microcontrôleur et PC également il est nécessaire d’utiliser un adaptateur de tension pour convertir les 0-5 V de la sérielle du micro en –12 V / +12 V du port RS232. C’est le MAX232, avec quatre condensateurs externes seulement, qui s’en charge.
Le système que nous avons mis au point s’occupe de l’analyse des SMS arrivant au téléphone mobile. Toutefois, une configuration matérielle spéciale permet au micro d’envoyer des commandes AT particulières au GR47 : le circuit pourra donc être utilisé pour d’autres applications. C’est précisément pour vous permettre d’adapter le système à vos propres exigences que nous publions sur notre site le “listing” complet du programme résident que nous allons maintenant analyser.
Figure 1 : Schéma électrique du gestionnaire de SMS.
Figure 2a : Schéma d’implantation des composants du gestionnaire de SMS.
Figure 2b-1 : Dessin, à l’échelle 1, du circuit imprimé double face à trous métallisés du gestionnaire de SMS, côté soudures.
Figure 2b-2 : Dessin, à l’échelle 1, du circuit imprimé double face à trous métallisés du gestionnaire de SMS, côté composants.
Figure 3 : Photo d’un des prototypes du gestionnaire de SMS.
Liste des composants
R1 ........... 200 kΩ 1 %R2 ........... 100 kΩ 1 %
R3 ........... 4,7 kΩ
R4 ........... 4,7 kΩ
R5 ........... 4,7 kΩ
R6 ........... 470 Ω
R7 ........... 4,7 kΩ
R8 ........... 10 kΩ
R9~R12 ....... 4,7 kΩ
R13 .......... 10 kΩ
R14~R18 ...... 4,7 kΩ
R19 .......... 2,2 kΩ
R20 .......... 4,7 kΩ
R21~R24 ...... 470 Ω
R25 .......... 1 kΩ
R26 .......... 1 kΩ
C1 ........... 100 nF multicouche
C2 ........... 1 000 μF 25 V électrolytique
C3 ........... 100 nF multicouche
C4 ........... 1 000 μF 25 V électrolytique
C5 ........... 100 nF multicouche
C6 ........... 1000 μF 25 V électrolytique
C7 ........... 1 μF 100 V électrolytique
C8 ........... 10 pF céramique
C9 ........... 10 pF céramique
C10 .......... 100 nF multicouche
C11 .......... 100 nF multicouche
C12~C16 ...... 1 μF 100 V électrolytique
D1 ........... 1N4007
D2 ........... BAT85
D3 ........... BAT85
Q1 ........... quartz 20 MHz
U1 ........... 7805
U2 ........... MIC2941
U3 ........... PIC16F876-EF566A
U4 ........... MAX232
GSM .......... module GR47-EF566B
LD1 .......... LED 3 mm bicolore
LD2 .......... LED 3 mm verte
LD3 .......... LED 3 mm jaune
T1 ........... BC547
T2 ........... BC547
T3 ........... BC557
T4 ........... BC547
T5 ........... BC557
SRL .......... connecteur DB9 femelle
Divers :
1 ............ support 2 x 8
1 ............ support 2 x 14
1 ............ prise d’alimentation
1 ............ connecteur 60 pôles pour GR47
1 ............ porte-SIM
1 ............ adaptateur d’antenne MMCX/FME
1 ............ antenne bibande plate
2 ............ dissipateurs
2 ............ boulons 8 mm 3MA
Le programme résident
Le programme a été écrit en utilisant comme éditeur le programme Micro-Code Studio et comme compilateur, le PicBasicPro, bien connu de nos lecteurs.Parmi les premières instructions nous trouvons la définition de paramètres comme la fréquence du quartz (20 MHz) et la configuration de l’UART (9 600 bits/s 8,N,1). Le flux @ DEVICE HS_OSC commande au programmateur de configurer automatiquement l’oscillateur en sélectionnant l’option HS (High Speed). Rappelons à ce propos que la plupart des configurations du logiciel de programmation sont automatiquement réglées par le compilateur PicBasicPro et donc, simplement en chargeant le fichier .hex avec le logiciel fourni avec le programmateur (par exemple Epic), les diverses options comme WatchDog, Power-Up Timer, Low Voltage Program etc. sont configurées correctement.
Dans le “listing” nous voyons que les instructions suivantes concernent l’attribution d’étiquettes aux différents ports. Ces derniers sont configurés comme entrées ou sorties selon leur utilisation et les variables temporaires sont déclarées. L’instruction HIGH POWERGSM (où POWERGSM est l’étiquette définissant le port RA0, soit celui pilotant le régulateur MIC2941) déshabilite le régulateur U2 et le GSM est réinitialisé par privation d’alimentation. Au bout d’une seconde (PAUSE 1000) cette broche est mise à la masse, ce qui provoque l’allumage du régulateur U2 et par conséquent du GSM. Ensuite, les convertisseurs A/N sont déshabilités afin que tous les ports du micro soient utilisés comme ports numériques.
Avec le cycle de FOR le micro allume et éteint cinq fois la LED jaune pour indiquer que le dispositif est opérationnel. La pause de trois secondes a été insérée pour donner au GSM le temps de se configurer pour permettre au script de paramétrer correctement ses lignes d’E/S.
L’instruction SEROUT2 permet d’utiliser n’importe quelle broche du micro comme si c’était une ligne sérielle : dans ce cas la broche est la TXPC (port RA1) et la vitesse de transmission est donnée par la valeur 84 correspondant à 9 600 bits/s. Avec cette instruction nous envoyons à la sérielle du PC la commande “SISTEM STARTUP” permettant de faire tout de suite un premier test de la communication effective du dispositif avec l’HyperTerminal.
Commence alors le programme principal (MAIN program), dans lequel le micro reste jusqu’à ce qu’un SMS arrive. La première instruction que nous trouvons dans cette section éteint la LED jaune et le flux suivant TOGGLE LEDV change l’état de la LED verte. Cette instruction, avec la suivante PAUSE 500, permet de faire clignoter continûment la LED afin d’informer que le micro continue de fonctionner correctement. La routine MAIN prévoit seulement deux sauts conditionnels testant les lignes IO1 et IO3 du module GSM. En fonction de l’état de la ligne IO3 la composante rouge de la LED bicolore est allumée ou éteinte, mais aucune autre action n’a lieu. Cette ligne indique en effet l’arrivée d’un appel (que notre application ne considère pas). Toutefois les plus experts d’entre vous pourront insérer en ce point les commandes AT à envoyer au modem pour exécuter des opérations déterminées, par exemple répondre à l’appel. La ligne IO1 notifie l’arrivée d’un SMS, ce que met en évidence l’allumage de la composante verte de la LED bicolore. Au cours de cette phase est appelée la subroutine LEGGISMS dans laquelle, tout d’abord, la LED jaune est allumée et la verte éteinte puis le message est lu pour être ensuite envoyé déjà formaté sur la ligne sérielle RX3. L’instruction SERIN2 RX3, 84, 2000, EXIT1, [WAIT (“>”), STR BUFFER \80] attend sur la ligne du micro le flux commençant par le caractère > (WAIT (“>”)) et devant avoir un maximum de 80 caractères. En effet, le flux envoyé par le GSM est inséré par commodité entre les caractères >flux< afin que son identification soit plus simple. Les paramètres 2000, EXIT1 indiquent que si pendant deux secondes le caractère < (signifiant que le flux est plus court que 80 caractères) n’arrive pas, l’instruction doit sauter directement à la routine EXIT1. Bien sûr, le message peut être plus long que 80 caractères et pour cela les deux instructions suivantes sont insérées (elles attendent 160 autres caractères). Un SMS peut avoir une longueur maximale de 160 lettres, toutefois le formatage prévu dans le script du GR47 prévoit que le flux envoyé au PIC contient déjà la date et l’heure d’envoi, le message et le numéro. C’est pourquoi les instructions pour l’acquisition du flux acceptent un maximum de 240 caractères. La raison de l’utilisation de trois “arrays” (tableaux) au lieu d’un seul de 240 caractères est une limitation du basic qui prévoit qu’un “array” d’octet ne peut contenir que 96 éléments au maximum.
Après avoir acquis le flux, le PIC doit communiquer au GSM la réception correcte des données et cela s’obtient en envoyant deux OK sur la sérielle TX3.
Maintenant que le flux a été chargé dans les trois “buffers” (tampons), il suffit de l’envoyer au PC à travers la ligne TXPC.
La mention MESSAGE est alors tout d’abord envoyée à l’ordinateur : ensuite chaque “buffer” (tampon) est analysé pour chercher le caractère <.
L’instruction
if tmp1=10 then
SEROUT2 TXPC,84,[13]
ENDIF
est utilisée pour insérer un “avancement ligne” quand un “à la ligne” est reçu, ce qui permet d’obtenir un formatage du texte.
La réalisation pratique
La réalisation pratique du circuit imprimé double face à trous métallisés de ce gestionnaire de SMS requiert un certain doigté ! La figure 2b-1 et 2 en donne les dessins à l’échelle 1. Insérez tout d’abord les supports des circuits intégrés et du module. Celui-ci utilise un connecteur CMS à 60 pôles : utilisez un fer de 20 W à pointe très fine pour le souder.Mais avec beaucoup de soin c’est tout à fait faisable. Montez tous les composants de la face “composants” (sur la figure 2a les composants dessinés en traits continus) puis celui du côté “soudures” (sur la figure 2a le porte-SIM dessiné en pointillé) en contrôlant bien les valeurs sur la liste des composants et en confirmant avec la photo de la figure 3. Attention à la polarité des composants polarisés.
Prenez le boîtier Teko COFFER 2 et percez-le pour laisser passer, sur l’un des petits côtés, la DB9 et la prise d’alimentation, sur l’autre la FME allant à l’antenne plate et sur le couvercle les trois LED (voir figures 4 et 6). Pour alimenter le circuit, prévoyez un bloc secteur 230 V fournissant 12 VDC sous 1 A.
Le micro et le GR47 sont disponibles déjà programmés en usine : sinon il faudra les programmer vous-même, bien entendu. Insérez une SIM valide dans le porte-SIM (avec un téléphone mobile, n’oubliez pas de déshabiliter au préalable la demande de code PIN).
Figure 4 : Les LED de signalisation.
Le système prévoit trois LED de signalisation, dont une bicolore. LD2, verte, clignote à intervalle régulier pour indiquer que le système est correctement alimenté et qu’il fonctionne normalement. Quand un appel est reçu, l’appareil allume LD1 en rouge, mais il n’exécute aucune opération.
En modifiant légèrement le programme résident, il est possible de lire, par exemple, l’ID de l’appelant, de manière à l’insérer dans une base de données ou d’envoyer au PC des commandes particulières permettant (par couplage à un logiciel adéquat) d’exécuter des opérations spécifiques. Si un SMS est reçu, LD1 devient verte et après avoir lu le message, le microcontrôleur allume aussi LD3 pour indiquer que les données reçues vont être envoyées au PC.
Figure 5 : La gestion des messages par HyperTerminal.
Pour visualiser sur le PC les données envoyées sur le port sériel par notre circuit, il est possible d’utiliser n’importe quel programme de communication sérielle comme HyperTerminal.
Ce programme est disponible dans Windows (Démarrer > Programmes > Accessoires > Communication).
Pour visualiser correctement les données, il faut configurer le programme à partir du menu Propriétés. Le paramétrage du port doit être :
- Bit par seconde : 9 600
- Bit de données : 8
- Parité : aucune
- Bit de stop : 1
- Contrôle de flux : aucun.
Parmi les propriétés de la sérielle vous trouverez les paramètres visualisés ci-contre. Nous vous conseillons, pour un formatage plus compréhensible du texte, de sélectionner les paramètres comme indiqué.
Les paramètres ASCII offrent des options permettant de visualiser le texte commodément comme on le voit sur le premier écran en haut.
Figure 6 : Le montage dans le boîtier.
Quand le montage de la platine est terminé, l’installation dans le boîtier plastique Teko Coffer2 est très facile : il suffit de percer le couvercle pour l’affleurement des trois LED, l’un des petits côtés pour la prise d’alimentation et le connecteur sériel. Sur le petit côté opposé on percera un trou pour le passage du socle MMCX/FME recevant le câble coaxial allant à l’antenne plate.
Les essais
Reliez alors l’appareil à la sérielle du PC et ouvrez le programme HyperTerminal, sélectionnez une vitesse de transmission de 9 600 bits/s, alimentez le circuit et après quelques secondes le système envoie sur la sérielle la mention SISTEM STARTUP qui s’affiche à l’écran. Vérifiez que les LED de signalisation s’allument comme on l’a vu précédemment et essayez d’envoyer un SMS : quelques secondes après l’envoi le SMS est reçu et affiché à l’écran formaté comme décrit plus haut.
Aucun commentaire:
Enregistrer un commentaire