Un amplificateur téléphonique sans capteur

Sans aucun capteur, cet appareil permet pourtant l’écoute sur haut-parleur des conversations effectuées avec un téléphone fixe. Le câblage est des plus simples et le circuit peut être alimenté par pile. Un contrôle de volume sonore est, bien sûr, prévu.


Le circuit dont il est question dans ces lignes est un peu différent de la plupart de ceux que l’on trouve dans le commerce : il n’utilise pas de capteur téléphonique, mais il prélève l’audio en parallèle sur la ligne téléphonique elle-même. Avantage au coût et à la simplicité de construction !

Le schéma électrique
Comme le montre la figure 1, le schéma du circuit est composé d’un translateur de ligne et d’un étage amplificateur.
Le premier bloc est constitué de R1, R2, R4, C1, C2, D1 et D2, en plus du transformateur de couplage : les condensateurs bloquent la composante continue et laissent passer seulement les signaux variables, c’est-à-dire les signaux audio. R1 et R4 forment avec R4 un pont résistif réduisant l’amplitude du signal afin d’obtenir une composante audio acceptable par l’amplificateur de puissance. D1 et D2, montées tête-bêche, servent de limiteur de crêtes (ou écrêteur) : elles empêchent que, pendant la réception des appels, le courant alternatif excitant la sonnerie ne puisse, à travers C1 et C2, produire, aux extrémités du primaire du transformateur, un signal d’amplitude trop élevée pouvant endommager l’étage suivant. La limitation d’amplitude permet aussi d’éviter de saturer l’amplificateur BF quand arrive le courant alternatif de sonnerie, ce qui, de plus, pourrait faire entendre un ronflement désagréable dans le haut-parleur. D’autant que cet étage est dimensionné pour traiter des signaux relativement faibles (0,5 V maximum).
A ce propos, du fait de la structure du circuit, si le dispositif est alimenté quand le téléphone, auquel il est relié en parallèle, reçoit un appel, on entend dans le haut-parleur et l’écouteur un ronflement, de niveau acceptable toutefois : en effet, le circuit amplifie tout ce qui se présente entre les deux fils du cordon.
Quant à l’amplificateur, il est constitué du seul circuit intégré (spécifique) LM386N, contenant le final BF de puissance (1 W sur 8 ohms sous 12 V) capable de piloter directement tout haut-parleur d’impédance comprise entre 8 et 16 ohms. Ici, nous l’avons monté dans la configuration classique préconisée par le fabricant : gain en tension 200, ce dont s’occupe C8, bypassant la résistance de rétroaction interne du circuit intégré (broches 1 et 8). Le signal d’entrée est prélevé aux extrémités du secondaire du transformateur de couplage, de rapport 1:1, restituant une tension égale à celle présente aux bornes de D1 et D2 : en effet, TF1 est un simple transformateur de découplage utilisé en téléphonie pour transférer la composante audio et bloquer d’éventuelles tensions continues.
Ici, il garantit l’isolation galvanique de l’amplificateur par rapport à la ligne téléphonique. R3/C4 forment un filtre passe-bas limitant la bande passante du circuit aux 4 kHz servant en téléphonie.
C3, en revanche, forme avec le potentiomètre R7 une cellule passe haut faisant obstacle aux ronflements du secteur 230 V pendant les appels : ce filtre garantit cependant un bon rendu des fréquences les plus basses de la bande téléphonique (autour de 300 Hz). R7 sert au contrôle de volume en agissant sur l’entrée de U1 : le niveau minimal a lieu quand le curseur est presque entièrement côté masse, le niveau maximal quand le curseur est côté R3. Que dire du circuit intégré ? C7 s’occupe du “bootstrap” (amorce), alors que R6/C5, en parallèle sur la sortie, compensent les variations d’impédance du hautparleur au gré des variations de fréquence du signal, ce qui prévient toute rotation de phase et d’éventuelles auto-oscillations. La charge, hautparleur ou casque, est appliquée aux points LINE OUT : notez l’électrolytique C9, en série, pour permettre le transit du signal audio et bloquer la composante continue (environ la moitié de la tension d’alimentation) présente au repos entre la broche 5 et la masse sous l’effet de la polarisation interne. R5 est une sorte de charge fictive ser vant essentiellement à décharger le condensateur de sortie C9 quand aucun haut-parleur n’est relié aux bornes de sortie : c’est un classique “anti-bump”, surtout utile si on se sert d’un casque à la place du haut-parleur.
L’appareil fonctionne sous une tension continue, de préférence stabilisée, entre 12 et 15 V, à appliquer entre les points +12 V et GND : le circuit consomme 400 mA au volume maximum sur charge (haut-parleur) de 8 ohms d’impédance. D3 protège le circuit contre les méfaits d’une inversion accidentelle de polarité. R8, avec C6 et C10 forment un filtre passebas éliminant de la ligne d’alimentation d’éventuels résidus d’alternatif ou d’impulsions HF.

Figure 1 : Schéma électrique de l’amplificateur téléphonique sans capteur.

Liste des composants
R1 = 10 kΩ
R2 = 10 kΩ
R3 = 10 kΩ
R4 = 1 kΩ
R5 = 1 kΩ
R6 = 10 Ω
R7 = 10 kΩ potentiomètre
R8 = 560 Ω
C1 = 22 nF multicouche pas 10
C2 = 22 nF multicouche pas 10
C3 = 18 nF multicouche
C4 = 47 nF multicouche
C5 = 47 nF multicouche
C6 = 100 nF céramique
C7 = 1 μF 63 V électro.
C8 = 47 μF 25 V électro.
C9 = 100 μF 25 V électro.
C10 = 470 μF 25 V électro.
D1 = 1N4148
D2 = 1N4148
D3 = 1N4000
U1 = LM386
TF1 = Transformateur télé phonique rapport 1:1**

Divers :
1 Support 2 x 4 broches
1 Circuit imprimé EF467*

* Le circuit imprimé est disponible en téléchargement sur le site de la revue.

** En fonction du transformateur qui sera utilisé, il pourra être nécessaire de modifier le circuit imprimé.


La réalisation pratique
Une fois que l’on a réalisé le circuit imprimé par la méthode décrite dans l'article : "Comment fabriquer vos circuits imprimés facilement ?" (la figure 2b en donne le dessin à l’échelle 1), ou qu’on se l’est procuré, on monte tous les composants dans un certain ordre en regardant fréquemment la figure 2a et la liste des composants.
Montez tout d’abord le support du circuit intégré : vérifiez bien les soudures (ni court-circuit entre pistes et pastilles, ni soudure froide collée).
Enfoncez puis soudez les 9 picots d’interconnexions.
Montez ensuite toutes les résistances, sans les intervertir. Montez les 2 diodes tête-bêche et la diode seule, bagues repère-détrompeurs orientées dans le bon sens montré par la figure 2a. Montez tous les condensateurs en respectant bien la polarité des électrolytiques (la patte la plus longue est le +). Montez le potentiomètre R7. Montez enfin le transformateur TF1.
Vous pouvez maintenant enfoncer avec délicatesse le circuit intégré dans son support en orientant bien son repère-détrompeur en U vers C8.
Aux points LINE OUT +/–, ou aux points SPK, vous pouvez relier un petit haut-parleur de 8 ohms 1 W, avec deux morceaux de fils de cuivre soudés.
Aux points LINE OUT LR masse un casque à écouteurs, par l’intermédiaire d’un jack stéréo 3,5 ou 6,35 mm. Les points PHONE AB sont à relier aux deux fils d’arrivée de votre ligne téléphonique.
Un seul réglage : celui du volume, avec le potentiomètre R7 !

Figure 2a : Schéma d’implantation des composants.

Figure 2b : Dessin, à l’échelle 1, du circuit imprimé.

Figure 3 : Photo de l’amplificateur téléphonique sans capteur, une fois les composants en place.

Figure 4 : Les connexions extérieures et la commande de volume.

Un localiseur GPS/GSM à mémoire pour Siemens série 35 "Deuxième partie et fin :L’interface à 8 entrées et le logiciel"

Ce localiseur GPS/GSM est doté d’une mémoire capable de mémoriser jusqu’à 8 000 points ! La localisation peut se faire en temps réel ou, dans un second temps, par déchargement des données mémorisées. Il dispose d’une entrée “Enable” habilitant l’enregistrement et de deux lignes de I/O au format bus I2C. Après l’avoir analysé et réalisé au cours de la première partie, nous nous occupons aujourd’hui de construire l’inter face à 8 entrées à relier à l’unité distante et d’utiliser le logiciel.


Rappelons simplement que l’unité de base du localiseur est fixe et qu’elle reçoit les données de position, tandis que la ou les unités distantes sont montées à bord des véhicules et envoient par GSM leurs données GPS. Chacune de ces dernières est dotée d’un récepteur GPS, d’un téléphone portable Siemens 35 et d’une interface gérant la liaison : celle-ci contient des blocs de mémoire EEPROM utilisés pour enregistrer les coordonnées spatiales. En effet, le localisation peut avoir lieu soit en temps réel, soit en différé par mémorisation des informations. Toujours à l’intérieur de l’interface distante se trouve une entrée “Enable” laquelle, connectée à la masse, habilite la mémorisation des coordonnées.
Cette entrée pourrait très bien être reliée à un capteur de mouvement activant l’enregistrement de la localisation seulement quand le véhicule roule. Enfin, un connecteur RJ45 fournit en sortie deux lignes bus-I2C, dont une sert à la liaison avec une interface à 8 entrées, présentée dans cette seconde partie de l’article.
Quant à l’unité de base, en revanche, elle reçoit les données de localisation de la ou des unités distantes qu’elle envoie à un PC sur lequel tourne le logiciel cartographique.
L’unité de base est également dotée d’un téléphone portable Siemens 35 et d’une interface de celui-ci avec l’ordinateur : cette dernière est en outre constituée d’un logiciel gérant par ordinateur la liaison avec la ou les unités distantes, le chargement des données mémorisées, leur sauvegarde dans des fichiers, etc. Ce logiciel aussi va être analysé dans cette seconde partie de l’article.
Nous allons donc voir dans les pages qui suivent, d’abord comment est conçue l’interface à 8 entrées et comment la construire et ensuite comment utiliser le logiciel de gestion de l’unité de base.

Figure 1 : Fonctionnement du localiseur.

L’unité distante montée sur le véhicule reçoit sa propre position du localiseur GPS. Ces données peuvent être envoyées en temps réel à l’unité de base, ou bien mémorisées et transmises en différé. En outre, l’interface à 8 entrées, envoyant un SMS, si une entrée change d’état, est reliée à l’unité distante. La liaison entre les deux unités se fait par le canal des données GSM. L’unité de base est reliée à un PC sur lequel tourne le logiciel de gestion et le programme cartographique Fugawi 3, permettant la localisation du véhicule.

Figure 2 : Liaison de l’interface à 8 entrées à l’unité distante.

La liaison entre l’interface à 8 entrées et l’unité distante se fait par port de type RJ45. De l’autre côté de l’interface à 8 entrées se trouve un second port RJ45 pouvant être utilisé pour relier un second dispositif capable de se servir d’une seconde ligne bus-I2C. Les deux ports sont reliés en parallèle.
L’adressage, de la part de l’unité distante, des divers dispositifs reliés se fait par paramétrage correct des trois cavaliers.

L’interface à 8 entrées
Le but de cette interface est d’étendre l’unité distante par l’ajout de 8 signaux d’entrée. Le microcontrôleur de l’unité distante est en mesure de détecter le changement d’état de l’une de ces entrées, auquel cas l’envoi d’un SMS, mémorisé dans la carte SIM du portable, est prévu. Précisément, si l’entrée 1 change d’état, le SMS mémorisé en position 1 est envoyé, si c’est l’entrée 2 qui change d’état, c’est le SMS mémorisé en position 2 qui est envoyé et ainsi de suite. Pendant la mémorisation du SMS dans la carte SIM, outre le texte, il faut mémoriser le numéro du portable à qui envoyer le message. A partir de l’unité de base, il est possible d’aller lire l’état logique des 8 entrées, de spécifier quelles entrées habiliter et, pour chaque entrée habilitée, d’indiquer quel est l’état devant activer l’envoi des SMS. Les utilisations possibles des 8 entrées sont variées : par exemple, il est possible de relier une entrée à un système antivol de véhicule, afin d’être averti en cas de tentative de vol. Ou bien une seconde entrée peut être reliée à un système de détection d’ouverture de coffre du véhicule, toujours afin de détecter une tentative de vol, mais de matériel cette fois. Etc.
La liaison entre l’interface à 8 entrées et l’unité distante se fait par bus-I2C, grâce à deux broches : SCL transporte le signal d’horloge et SDA les données émises au format sériel. Le protocole bus-I2C offre la possibilité de connecter à chaque ligne (couplée à SCL et SDA) un certain nombre de dispositifs, chacun étant caractérisé par son propre code. L’envoi des commandes au bon dispositif se fait en indiquant, à chaque émission, l’adresse de destination.
Les données émises arrivent donc à tous les dispositifs connectés à la ligne, mais c’est seulement celui qui a l’adresse spécifiée qui se reconnaît comme destinataire et qui donc l’élabore. Chaque système utilisant une ligne bus-I2C est muni d’un certain nombre de cavaliers utilisés pour spécifier l’adresse : chacun d’eux peut prendre l’état logique 0 ou l’état logique 1 (selon qu’il est fermé ou ouvert).
L’émission des données se fait de manière sérielle par la broche SDA. Le protocole prévoit l’envoi d’un caractère de “start” (S) suivi de l’adresse (A2, A1 et A0) du dispositif de destination.
Ensuite sont transmises les données subdivisées en blocs de 8 bits : avant de transmettre un nouveau bloc, il est cependant nécessaire que le précédent soit “confirmé” par un caractère de “Acknowledge”, reconnaissance (A).
Enfin, la communication est fermée par l’envoi d’un caractère de “stop” (P).
Pour une extension possible, l’interface à 8 entrées que nous proposons dispose de deux ports RJ45 en parallèle (soit : toutes les données entrant par un port sont reportées sur le second). Un port est utilisé pour la liaison à l’unité distante, le second peut en revanche être connecté à un autre dispositif. Par exemple, il pourra être connecté à l'extension bus I2C à 8 relais : cette dernière permettrait d’ajouter à l’unité distante 8 sorties pouvant être commandées directement par le logiciel de gestion de l’unité de base. A ce sujet, remarquons une particularité : l’inter face à 8 entrées comme l’inter face à 8 sorties sont caractérisées par la même adresse (on le verra plus loin : sur le schéma électrique se trouvent 3 cavaliers pour régler l’adresse et sur les deux interfaces tous seront fermés afin de sélectionner l’adresse 000). La communication est en effet réalisée en mettant à profit deux lignes bus-I2C distinctes (l’une gère l’interface à 8 entrées, l’autre l’inter face à 8 sorties).
En effet, si nous regardons le schéma électrique de l’unité distante (première partie de l’article), nous voyons que la liaison RJ45 vers l’extérieur est constituée de 4 lignes (plus la masse et l’alimentation) réalisant justement les deux lignes utilisées (couplées à SCL et SDA).

Le schéma électrique de l’interface à 8 entrées
Il se trouve figure 3. L’alimentation en 12 V en est fournie directement par l’unité distante, par la broche 5 du connecteur RJ45. Le régulateur U2 7805 fournit le +5 V, utilisé par les circuits intégrés TTL, à partir du 12 V. Toute la logique de fonctionnement de l’interface est basée sur l’extenseur d’I/O U1 Philips PCF8574A : celui-ci est en mesure de se connecter d’un côté à la ligne bus-I2C par les broches 14 et 15 (respectivement SCL et SDA) et de l’autre de s’interfacer (par les broches P0 à P7) aux 8 entrées. Comme le montre le schéma électrique de la figure 3, chaque entrée est maintenue au niveau logique haut par le réseau de résistances R6. Lorsque, en revanche, un bornier est court-circuité, l’entrée correspondante est mise à la masse à travers la diode de protection. Le PCF8574A est capable de reconnaître le changement d’état et de transmettre au microcontrôleur de l’unité distante les commandes convenables. Le PIC du dispositif distant reçoit donc ces commandes et exécute l’envoi des SMS mémorisés dans le portable.
Considérons enfin les 3 cavaliers J1, J2 et J3 : ils sont reliés aux broches A0, A1 et A2 et, on l’a vu, ils sont utilisés pour paramétrer l’adresse du dispositif. Pour que l’interface puisse être correctement utilisée avec l’unité distante, il est nécessaire de spécifier l’adresse 000, correspondant à la fermeture des 3 cavaliers.

Figure 3 : Schéma électrique de l’interface à 8 entrées.

Liste des composants
R1 = 4,7 kΩ
R2 = 4,7 kΩ
R3 = 10 kΩ
R4 = 10 kΩ
R5 = 10 kΩ
R6 = réseau résistif 10 kΩ
C1 = 100 nF multicouche
C2 = 220 μF 25 V électrolytique
C3 = 100 nF multicouche
C4 = 220 μF 25 V électrolytique
D1 = 1N4007
D2 = 1N4007
D3 = 1N4007
D4 = 1N4007
D5 = 1N4007
D6 = 1N4007
D7 = 1N4007
D8 = 1N4007
D9 = 1N4007
U1 = PCF8574A
U2 = 7805

Les résistances sont des 1/4 de W, 5 %.

Divers :
8 borniers 2 pôles enfichables
1 support 2 x 8
2 connecteurs RJ45
1 circuit imprimé cod. S0488.

La réalisation pratique de l’interface à 8 entrées
Rien de plus facile ni de plus rapide si on a l’oeil sur les figures 4 (avec la liste des composants) et 5. On réalisera d’abord le circuit imprimé à l’aide du dessin à l’échelle 1 donné par la figure 4b, ou on se le procurera. Lorsque le circuit imprimé, gravé et percé, est en votre possession, montez les quelques composants, par exemple dans l’ordre conseillé ci-dessous.
Montez en premier le support du circuit intégré U1 et vérifiez bien vos soudures (ni court-circuit entre pistes ou pastilles ni soudure froide collée), puis les 5 résistances et le réseau R6. Montez ensuite les 9 diodes, sans avoir à les distinguer, bagues blanches repère-détrompeurs orientées comme le montre la figure 4a.
Montez les condensateurs multicouches et les électrolytiques, en respectant bien la polarité +/– de ces derniers (la patte la plus longue est le + et le – est inscrit sur le côté du boîtier cylindrique). Montez le régulateur U2 debout sans dissipateur, semelle métallique vers C4. Montez les 3 cavaliers.
Montez enfin les 2 prises femelles RJ45 et les 8 borniers enfichables et c’est presque terminé : il ne vous reste qu’à enfoncer délicatement le circuit intégré U1 dans son support, en orientant bien le repère-détrompeur en U vers la gauche, soit vers les cavaliers.

Figure 4a : Schéma d’implantation des composants de l’interface à 8 entrées.

Figure 4b : Dessin, à l’échelle 1, du circuit imprimé de la platine interface à 8 entrées.

Figure 5 : Photo d’un des prototypes de la platine interface à 8 entrées.

Figure 6 : Paramétrage de l’adresse.

L’adresse de l’interface à 8 entrées (et aussi celle à 8 sorties "Une extension bus I2C à 8 relais") est paramétrée par les 3 cavaliers J1, J2 et J3. Un cavalier fermé correspond à état logique 0. Si en revanche on le laisse ouvert, il correspond à l’état logique 1. Pour un fonctionnement correct des deux interfaces avec l’unité distante, il est nécessaire de paramétrer l’adresse 000 (fermer tous les cavaliers).

Le logiciel de gestion de l’unité de base
La principale fonction de ce logiciel est de décharger les données mémorisées à l’intérieur des différentes unités distantes, ce qui permet de les sauvegarder dans un fichier texte et ensuite une exportation dans le logiciel cartographique Fugawi.
Le programme offre néanmoins d’autres opportunités majeures : par exemple, il permet de constituer une base de données de tous les numéros de portables des diverses unités distantes, de contrôler ou modifier l’état des 8 sorties ou 8 entrées des éventuelles interfaces connectées, etc.
Première action pour rendre le logiciel opérationnel et l’installer sur le PC dédié : insérez le CDROM dans le lecteur. Lancez le programme d’installation setup.exe et suivez les indications à l’écran (on vous proposera en particulier un onglet d’installation).
Quand la procédure est terminée, lancez le fichier REM_Siemens.exe : l’écran de gestion générale apparaît.
Elle se compose principalement de deux parties : côté droit se trouve une fenêtre de texte où sont visualisées des informations générales, en haut se trouvent 18 poussoirs activant toutes les fonctions du logiciel.
Avant de voir, une à une, en partant de la gauche, quelles sont les procédures activées par chaque touche, apportons deux précisions concernant le mot de passe et la sécurité. Une caractéristique importante du logiciel est en effet de disposer d’un mot de passe (de 6 lettres/chiffres) ne permettant l’accès à des fonctions particulières du programme qu’à certaines personnes connaissant ce mot de passe. On évite ainsi que quelqu’un d’indélicat n’accède au dispositif, n’en modifie le mot de passe, etc. En outre, l’accès à chaque unité distante est aussi gardé par un autre mot de passe : pour accéder aux données mémorisées dans l’unité distante et à celles émises en temps réel, ou pour paramétrer/lire les états des éventuelles interfaces reliées, il est nécessaire de connaître ces mots de passe.

Analysons maintenant les fonctions liées aux 18 poussoirs :
– Le premier poussoir à gauche indique l’ouverture ou la fermeture du port COM gérant la communication unité de base/PC : une fois la connexion physique entre l’unité de base et l’ordinateur exécutée, vous devez ouvrir un port COM afin de permettre la communication (on vous demandera de spécifier la vitesse de transmission, paramétrez-la à 19 200 bits/s). Bien sûr, si en revanche le port COM est fermé, la communication ne peut avoir lieu.
– Le deuxième poussoir permet d’entrer dans la gestion de la base de données (mémorisées) dans l’unité distante. A l’intérieur de cette fonction, il est possible d’ajouter, d’éliminer ou de modifier les enregistrements (dits “anagraphiques”) de l’unité distante, ou bien de sélectionner une unité avec laquelle activer une communication. Notez bien que, pour modifier la base de données, il est nécessaire d’avoir inséré le mot de passe correct du programme. Ce dernier peut être inséré par pression sur la touche 16 : si le mot de passe correspond à celui mémorisé, en revenant à la gestion de la base de données, des informations supplémentaires, permettant justement de modifier les données mémorisées dans la base de données, sont visualisées. Chaque anagraphique est identifié par le numéro du portable composant l’unité distante, par le mot de passe de cette unité (devant être composé de 6 chiffres et qui est par défaut 123456) et par un nom permettant d’identifier plus facilement les diverses unités. Une fois qu’à l’intérieur de la liste des bases de données on a sélectionné l’unité à appeler, la liaison GSM a lieu en pressant la touche 3. Si en revanche on presse la 4, la liaison s’interrompt.
– Le cinquième poussoir indique la fonction Temps Réel : sous ce mode les données de localisation de l’unité distante sont transmises en temps réel à l’unité de base et donc elles sont visualisées à l’intérieur de la fenêtre de texte, à droite. Quand on est entré dans ce mode, il est possible de fermer le programme (la clôture du programme n’interrompt cependant pas la communication base/distante) et d’ouvrir le logiciel cartographique : il est ainsi possible de visualiser sur la carte la position du véhicule. Notez que les deux logiciels (cartographique et de gestion) utilisent le même port COM pour communiquer avec l’unité de base. Il n’est donc pas possible de les ouvrir tous les deux en même temps, au risque d’un conflit d’accès.
– Le sixième poussoir permet d’indiquer à l’unité distante, avec laquelle on est en liaison, d’effacer les données mémorisées dans son EEPROM.
– Le septième poussoir permet en revanche d’interroger l’unité distante pour lui demander combien de points de localisation ont été effectivement mémorisés. Grâce à ce mode on peut éviter d’exécuter le transfert d’informations mémorisées alors qu’elles ne sont pas en nombre suffisant pour être significatives.
– Les huitième et neuvième poussoirs permettent respectivement d’interroger l’unité distante sur le temps de “polling” paramétré et de spécifier une nouvelle valeur. Rappelez-vous en effet que, lorsque les données sont mémorisées à l’intérieur de l’EEPROM, il est possible de spécifier un temps d’échantillonnage de la localisation.
Par exemple, si l’on spécifie une valeur de 10, la mémoire d’une coordonnée sera faite sur un temps d’échantillonnage d’environ 10 secondes.
– Le dixième poussoir permet d’activer le chargement des données. Quand il a été pressé, l’unité de base demande à l’unité distante d’envoyer toutes les données mémorisées. Ces informations sont sauvegardées dans un fichier de texte dont il est possible de spécifier le nom et l’onglet, ce fichier pouvant être ensuite exporté vers le logiciel cartographique Fugawi. L’écriture dans le fichier n’est cependant pas immédiate : le programme écrit initialement les données dans un “buffer RAM” et c’est seulement à la fin d’un transfert qu’elles sont inscrites dans le fichier spécifié. Ce qui signifie que si durant un transfert la communication GSM devait être coupée, les données entre-temps déchargées ne seraient pas encore disponibles : il faudrait alors ré--exécuter la procédure depuis le début. Souvenez-vous que la logique de l’unité distante prévoit qu’une fois la mémoire EEPROM remplie à ras bord, l’écriture des nouvelles informations efface les anciennes depuis le début. L’envoi des informations a lieu cependant séquentiellement, en partant de la première cellule de mémoire. C’est pourquoi, après le transfert, il peut arriver que les données n’arrivent pas dans l’ordre temporel.
Cet ordre peut toutefois être déterminé simplement en analysant les informations horaires et de date de chaque enregistrement. Dernière remarque concernant la possibilité de coupure de communication GSM pendant un transfert : si cela arrive, il faut attendre quelques minutes avant de rappeler l’unité distante et d’effectuer un nouveau téléchargement, parce que l’unité distante serait occupée à terminer la procédure interrompue.
– Le onzième poussoir permet d’aller contrôler l’état des 8 lignes “out” présentes dans l’interface à 8 sorties éventuellement reliée. Dans la fenêtre, 8 touches sont disponibles pour modifier l’état des relais commandant les sorties : pour chaque sortie une “LED” indique l’état logique. Une touche de “reset” permet en outre de remettre à zéro toutes les sorties et une touche Demande de réclamer la mise à jour des états des 8 sorties.
– Le douzième poussoir permet en revanche de contrôler l’état logique des entrées de l’éventuelle interface à 8 entrées. A l’intérieur de cette fenêtre il est possible de spécifier s’il faut activer ou non l’envoi du SMS d’alarme relatif à chaque entrée et, pour chaque entrée active, de spécifier quel est l’état logique devant donner l’alarme.
A propos de l’envoi des SMS, donnons une petite précision : le SMS doit avoir été mémorisé dans la carte SIM et il est envoyé quand une entrée prend la valeur logique spécifiée. Par exemple, si nous spécifions que l’entrée 1 est active au niveau logique 0, le SMS mémorisé en position 1 est envoyé quand l’état logique de l’entrée 1 passe du niveau logique 1 au niveau logique 0. Ainsi, même si le niveau logique 0 est maintenu pendant un certain temps, les SMS ne sont pas envoyés l’un après l’autre en continu (ce qui serait inutile, un suffit !) : un nouvel envoi n’aura lieu que si l’entrée redevient haute et ensuite redevient à nouveau basse. Dans la même fenêtre, pour chaque entrée (habilitée ou non à l’alarme), l’état logique aussi est visualisé, avec le même procédé à “LED” utilisé pour la propriété des sorties.
Sont enfin présentes deux touches exécutant la mise à jour des états des entrées et l’envoi des paramètres spécifiés. Une ultime note concerne le cas où, pour une raison quelconque, la liaison physique entre l’interface à 8 entrées et l’unité distante serait coupée (par exemple, si le câble RJ45 était détaché accidentellement). Dans ce cas, le PIC de l’unité distante lit l’état des entrées comme étant tous au niveau logique 0. Par conséquent, pour toutes les entrées pour lesquelles avait été paramétré comme état d’alarme l’état logique 0, les SMS d’alarme sont envoyés.
– Le treizième poussoir permet en revanche le transfert automatique des données. Ainsi, quand certaines conditions sont vérifiées, c’est la dernière unité distante qui se connecte automatiquement à l’unité de base et commence le transfert des données.
Par la fenêtre de configuration, il est possible de spécifier, en partant d’un horaire de “start”, la cadence temporelle avec laquelle exécuter le transfert, ou bien de spécifier 8 horaires différents auxquels, chaque jour, on veut exécuter le transfert des données.
Il est en outre possible d’indiquer s’il faut effacer la mémoire après le transfert et le nombre de tentatives de liaison à effectuer pour chaque téléchargement.
– Les quatorzième et quinzième poussoirs sont en revanche utilisés pour gérer le mot de passe des dispositifs distants. Le quatorzième permet à l’usager de demander le mot de passe correspondant à l’unité distante reliée, le quinzième permet en revanche de modifier ce mot de passe.
– Les fonctions des seizième et dixseptième poussoirs, nous les avons déjà données en substance en présentant le logiciel : elles permettent d’insérer ou de modifier le mot de passe du programme, utilisé pour gérer l’accès à certaines fonctions du logiciel.
– Le dernier poussoir à droite est en revanche utilisé pour régler les paramètres du port COM : il est possible de spécifier quel port sériel et quelle vitesse sont utilisés pour établir la liaison. A propos de la vitesse, rappelons que pour un fonctionnement correct, il est nécessaire de spécifier une vitesse de transmission de 19 200 bits/s.

Figure 7a : Ecran principal du programme. Dans la partie supérieure se trouvent 18 poussoirs permettant d’activer les diverses fonctions du logiciel. Dans la partie inférieure, certaines informations de localisation sont visualisées (date, horaire, latitude, longitude, vitesse du véhicule et nombre de satellites reçus).

Figure 7b : Ecran correspondant à la liste des unités distantes mémorisées. Pour chaque anagraphique les données qu’il est possible d’insérer sont le numéro du portable et le mot de passe d’accès à l’unité distante. Chaque enregistrement est en outre caractérisé par un nom permettant une identification plus simple de la part de l’usager.

Figure 7c : Cet écran, correspondant au mode temps réel. Les données de localisation sont transmises par l’unité distante et donc sont visualisées dans la fenêtre principale. Dans cette situation, il est en outre possible d’ouvrir le logiciel cartographique Fugawi, ce qui permet une visualisation, en temps réel, de la position du véhicule sur la carte.

Figure 7d : Ecran correspondant aux paramètres de transfert des données. Il est possible de spécifier le fichier où seront sauvegardées les informations mémorisées. Notez que, pour accélérer l’opération, les données ne sont pas écrites immédiatement dans le fichier, mais temporairement emmagasinées dans un “buffer” en mémoire RAM et, seulement à la fin du processus, inscrites sur le disque dur.

Figure 7e : Ecran correspondant au contrôle des lignes de “out” présentes dans "l'extension bus I2C à 8 relais" (optionnelle). Il est possible, en cliquant sur les 8 touches, d’agir sur les relais de l’interface. L’état des relais est visualisé par l’allumage/extinction des “LED” rouges de la fenêtre. Il est possible de remettre à zéro les 8 entrées et de réclamer la mise à jour de l’état actuel.

Figure 7f : Ecran correspondant au contrôle des lignes de “in” de l’interface à 8 entrées (optionnelle). Il est possible de sélectionner quelle entrée habiliter pour l’envoi du SMS d’alarme et de spécifier quel état logique doit donner l’alarme.

L’état des 8 entrées est visualisé par l’allumage/extinction des “LED” rouges de la fenêtre.

Figure 7g : Ecran de paramétrage du téléchargement automatique des données. Il est possible, en partant d’un horaire de “start”, de spécifier 8 horaires auxquels, chaque jour, on veut exécuter le chargement des données. Il est en outre possible d’indiquer si l’on veut effacer la mémoire après le transfert et le nombre maximum de tentatives de connexions.

Figure 7h : Ecran correspondant aux paramètres du port sériel utilisé pour la communication unité de base/PC.

Il est possible de spécifier le numéro du port COM et la vitesse de transmission à utiliser (19 200 bits/s, c’est la vitesse à laquelle le PIC de l’unité de base communique).

1er partie : Le matériel.

Un localiseur GPS/GSM à mémoire pour Siemens série 35 "Première partie :Le matériel"

Ce localiseur GPS/GSM est doté d’une mémoire capable de mémoriser jusqu’à 8 000 points ! La localisation peut se faire en temps réel ou après coup, par déchargement des données mémorisées. Il dispose d’une entrée “Enable” habilitant l’enregistrement et de deux lignes entrée/sortie (I/O) au format bus-I2C.


Les derniers numéros de votre revue présentaient déjà des modèles de localiseurs GPS : "Un localiseur GPS/GSM à faible coût", "Un traqueur GPS automatique avec mémoire et interface de transfert sur PC" et "Un localiseur GPS avec téléphone portable Siemens pour données".
Le premier constituait un système complet de localisation à distance et en temps réel, le deuxième mémorisait périodiquement les coordonnées spatiales de la position, avec possibilité de les décharger ensuite dans un PC et le troisième, utilisant le canal données d’un téléphone portable Siemens, se passait de la voie audio et des tons DTMF pour transmettre les informations de localisation. Chaque modèle, en fait, est caractérisé par des propriétés et des performances distinctives : nous avons, en effet, préféré réaliser divers dispositifs au lieu d’un seul afin de permettre à chaque usager de choisir le modèle le plus adapté à son projet d’utilisation et à son budget. Par exemple, il est inutile de choisir un appareil doté d’un système de mémorisation des points quand on n’a besoin que d’une localisation en temps réel. Quant à nous, nous nous devons de vous offrir les appareils aux fonctions les plus évoluées de manière à satisfaire aussi les usagers qui les attendent.

Notre réalisation
C’est dans cette perspective de différentiation de l’offre que nous vous proposons dans cet article de construire un localiseur GPS/GSM à mémoire, capable de fournir aussi les données en temps réel. Parmi les propositions disponibles, celle-ci se caractérise par l’étendue de ses possibilités d’utilisation. Le montage se compose, bien sûr, de deux unités (distante et de base), plus un logiciel de gestion par ordinateur. Cette première partie s’occupe de décrire et de réaliser le matériel, soit les deux unités, la seconde s’occupera du logiciel à installer sur l’ordinateur.

L’unité distante
L’unité distante est montée sur le véhicule dont on veut suivre la trace : elle contient un module GPS utilisé pour la localisation, un téléphone portable Siemens 35 utilisé pour l’envoi et la réception des données (le fonctionnement est garanti avec les modèles C35, S35, M35, mais pas avec le A35 dépourvu de modem interne) et quelques blocs d’EEPROM mémorisant les coordonnées spatiales du GPS. Le système fonctionne avec tout récepteur GPS à sortie standard NMEA-0183, à une vitesse de 4 800 ou 9 600 bits/s et doté d’un port sériel RS232.
Notre prototype utilise le GPS910 travaillant à 4 800 bauds : il est muni d’un port PS2, prélevant directement l’alimentation sur le circuit, et d’une antenne incorporée. Cette unité distante dispose d’un côté d’un port sériel et d’un connecteur PS2 pour la liaison avec le dispositif de localisation GPS, de l’autre d’un socle jack stéréo utilisé comme entrée “Enable”, d’un connecteur RJ45 utilisé comme sortie vers la ligne bus-I2C, d’un câble servant à la connexion avec le GSM et d’un autre câble alimentant une LED de signalisation.
Mais pénétrons un peu plus avant dans la logique de cette unité : on l’a dit, la localisation peut se faire en temps réel ou après coup. L’unité contient en effet une mémoire interne pouvant enregistrer jusqu’à 8 000 points : ces coordonnées peuvent être ensuite transférées via GSM d’un portable à l’autre entre les deux unités. La durée d’échantillonnage des coordonnées spatiales peut être modifiée par voie logicielle : il est possible de spécifier un intervalle de mémorisation de 1 à 999 secondes, de façon à l’adapter à vos besoins. Par exemple, pour un TIR (transporteur itinérant routier) voyageant à travers l’Europe, il peut être superflu d’avoir à sa disposition une donnée de position par seconde : un intervalle d’échantillonnage de 60 à 180 secondes peut constituer une précision plus que suffisante. En revanche, pour un véhicule se déplaçant en ville, une précision supérieure est sans doute nécessaire : on aura donc besoin dans ce cas d’une fréquence d’échantillonnage plus grande.
Dans l’unité distante, toujours, se trouve une entrée “Enable” (autorisation) servant à régler la mémorisation des données de localisation : la mémorisation n’est activée que lorsque “Enable” est à la masse, quand en revanche elle en est coupée, la mémorisation s’arrête. Cette entrée peut donc être connectée à un capteur de mouvement, de manière à ne mémoriser que les données considérées comme utiles, c’est-à-dire relatives au mouvement proprement dit du véhicule, ou bien elle peut être reliée à la clé de contact afin d’obtenir un enregistrement seulement quand le moteur du véhicule est en marche. Nous le verrons par la suite, le circuit électrique comporte un cavalier spécial qui, fermé, habilite la mémorisation de la position en continu.
Le connecteur RJ45 sert à connecter, par deux lignes bus-I2C, deux dispositifs externes. Sur la première ligne, nous avons prévu d’utiliser une interface à 8 entrées (voir seconde partie) : contentons-nous ici de souligner que l’unité distante est en mesure de détecter si ces entrées changent d’état logique, auquel cas l’envoi d’un SMS pré-enregistré dans le portable a lieu.
Par conséquent, si l’entrée numéro 1 change d’état, l’unité distante envoie le SMS mémorisé dans la localisation numéro 1 de la carte SIM, si c’est l’entrée 2 qui a changé d’état, le SMS de la localisation numéro 2 est envoyé et ainsi de suite. Via logiciel de l’unité de base il est possible d’aller lire les états de ces entrées et de spécifier quelles entrées habiliter ou non et, pour chaque entrée habilitée, de spécifier quel état doit donner l’alarme. Les utilisations de cette interface sont variées : par exemple, une entrée peut être connectée à un système antivol de manière à ce qu’il soit informé en cas de tentative d’effraction. Ou bien, une deuxième entrée peut être reliée à un système détectant la mauvaise fermeture du capot du véhicule. Troisième suggestion : une troisième entrée peur être reliée à un détecteur de mouvement comme ci-dessus, afin que nous soyons informés du déplacement du véhicule.
La seconde ligne bus-I2C peut être aussi reliée à "l’extension bus I2C à 8 relais" : cela permet d’ajouter 8 sorties commandées par autant de relais à une ligne bus-I2C existante.
Par conséquent si cette ligne est reliée à l’unité distante, il est possible, à partir de la station de base (toujours par voie logicielle), d’agir sur l’état de ces sorties. Ainsi, par exemple, on peut prévoir de relier une sortie à un système d’alarme constitué par une sirène, ou bien une deuxième sortie peut très bien être reliée à un dispositif d’arrêt du véhicule. On peut par là agir sur les relais à partir de la station de base, afin d’immobiliser le véhicule surveillé.

L’unité de base
Elle reçoit les données de localisation transmises par l’unité distante concernant le véhicule surveillé. Elle aussi comporte un portable Siemens 35 dont on utilise le canal des données et elle peut en outre être connectée à un PC de façon à envoyer les données à un logiciel cartographique et à visualiser le parcours à l’écran. L’unité de base est dotée d’un port sériel RS232 via lequel on peut réaliser cette liaison à l’ordinateur et d’un connecteur pour le portable Siemens 35. Un jack pour l’alimentation et une LED pour la signalisation ont été également prévus. Une caractéristique importante du montage est que l’accès de l’unité distante est géré par mot de passe : pour recevoir les données de localisation (en temps réel comme mémorisées), il est nécessaire de connaître, outre le numéro du portable, le mot de passe. On évite ainsi qu’une personne indiscrète puisse accéder aux données de localisation qui ne la regardent pas !

Le canal des données
La liaison entre les deux unités se fait par le canal GSM des données : il faut donc, en agissant sur le logiciel gérant l’unité de base, appeler le téléphone portable de l’unité distante. Quand la liaison est établie, la transmission des données de localisation peut avoir lieu : elle est aussi gérée par le logiciel permettant de recevoir les données en temps réel ou de récupérer celles déjà mémorisées. Ces données peuvent ensuite être envoyées au logiciel cartographique Fugawi (ou un autre). Une fois toutes les informations reçues, toujours via le logiciel, il est possible d’interrompre la communication et éventuellement de se connecter à d’autres dispositifs distants montés sur d’autres véhicules.

Figure 1 : Interface de l’unité de base.

Figure 2 : Interface de l’unité distante.

Figure 3 : Unité de base composée du module d’interface à construire et du téléphone portable Siemens 35. La liaison entre le dispositif et le PC se fait par le port sériel au format RS232.

Figure 4 : Fonctionnement du localiseur.

L’unité distante montée sur le véhicule reçoit sa propre position par le localiseur GPS. Ces données peuvent être envoyées en temps réel à l’unité de base, ou bien mémorisées et transmises après coup. La liaison met à profit le canal des données GSM. L’unité de base est reliée à un PC sur lequel tourne un logiciel cartographique permettant la localisation du véhicule.

Le schéma électrique du système localiseur GPS/GSM
L’unité distante
Le schéma électrique de l’unité distante est figure 5a. Le premier bloc, en haut, est celui de l’alimentation : le circuit a besoin d’une tension continue de 12 V (entrant en PWR), ce niveau de tension est utilisé tel quel par un relais et par les interfaces reliées aux lignes bus-I2C (connecteur RJ45). U1 LM317 fournit le +6 V utilisé pour recharger la batterie du portable (par l’excitation de RL1) quand est détectée la chute de sa charge au dessous d’une certaine valeur. U2 7805 fournit, à partir du 12 V, le +5 V alimentant, par le port PS2, le récepteur GPS externe. Enfin, ce 5 V abaissé par D2 et D3 en série, devenu +3,6 V, alimente tous les circuits intégrés TTL de l’unité distante : on a choisi 3,6 V au lieu du classique 5 V car les lignes sérielles de communication du Siemens 35 fonctionnent sous cette tension.
Mais entrons un peu dans le détail du circuit : le coeur en est le microcontrôleur U3 PIC16F876, c’est lui qui s’interface avec le localiseur GPS (connexion GPS Serial Port), avec le port sériel du téléphone portable (broches RX et TX connectées aux ports RC6 et RC7 du microcontrôleur) et avec les blocs de mémoire (U5 à U8). En outre, c’est encore ce microcontrôleur qui, par l’intermédiaire des ports RB0 à RB3, s’interface vers les deux lignes bus-I2C utilisées pour connecter deux interfaces externes (parmi lesquelles l’interface à 8 entrées analysée dans la seconde partie de l’article).
U4 MAX3232 (figure 5b) sert à convertir les niveaux de tension du module GPS (+/–12 V) en niveaux utilisés par le microcontrôleur (0 V et +3,6 V). On a préféré le MAX3232 au MAX232 car le second convertit le +/–12 V en 0 V et +5 V, alors que nous devons le convertir en 0 et +3,6 V, ce que le premier est capable de faire.
L’entrée “Enable” est réalisée à partir de la broche EN (port RB4 du microcontrôleur) : on le voit, ce port est normalement au niveau logique haut, quand elle est mise à la masse (par connexion externe ou par le cavalier J1), le microcontrôleur le détecte et commence à mémoriser les points de localisation.
Analysons maintenant la section des mémoires : elle est constituée d’une banque de 4 EEPROM à accès sériel bus-I2C. Les informations de localisation sont écrites progressivement, en partant du premier bloc U5 et en passant aux suivants quand les premiers sont pleins. Quand tout l’espace de mémoire est occupé, le microcontrôleur recommence à écrire dans le premier bloc, remplaçant les anciennes informations par les nouvelles.
Quand les informations sont retirées des mémoires, elles sont transférées en mode séquentiel en partant du premier bloc : l’ordre de la localisation est de toute façon garanti par la mémorisation de la donnée et de l’heure. Chaque point de localisation a une dimension de 16 octets, chaque EEPROM a une capacité de 256 kilobits : par conséquent la capacité maximale de mémorisation est de 8 192 points. La ligne bus-I2C des mémoires est réalisée par les ports RA4 et RA5 du microcontrôleur : la première balaye l’horloge de communication (canal SCL), la seconde réalise en revanche le canal des données SDA. Pour l’adressage de chaque bloc de mémoire on utilise des flux contenant une adresse univoque (de 1 à 8 binaire), pouvant être paramétrée en mettant à la masse ou à +3,6 V les broches A0, A1 et A2 de chaque puce U5 à U8.
Dernier détail concernant le schéma électrique : la LED, gérée par voie logicielle par le microcontrôleur, signale à l’usager l’effectuation de certaines opérations.

Figure 5a : Schéma électrique de l’unité distante du localiseur GPS/GSM.

Liste des composants
R1 = 1,2 kΩ
R2 = 5,6 kΩ
R3 = 1,2 kΩ
R4 = 4,7 kΩ
R5 = 4,7 kΩ
R6 = 33 kΩ
R7 = 33 kΩ
R8 = 470 Ω
R9 = 4,7 kΩ
R10 = 4,7 kΩ
R11 = 10 Ω 1/2 W
R12 = 10 kΩ
C1 = 100 nF multicouche
C2 = 100 nF multicouche
C3 = 100 nF multicouche
C4 = 100 nF multicouche
C5 = 470 μF 25 V électro.
C6 = 220 μF 16 V électro.
C7 = 220 μF 16 V électro.
C8 = 220 μF 16 V électro.
C9 = 100 nF multicouche
C10 = 1 μF 100 V électrolytique
C11 = 1 μF 100 V électrolytique
C12 = 1 μF 100 V électrolytique
C13 = 1 μF 100 V électrolytique
LD1 = LED 3 mm rouge
Q1 = Quartz 20 MHz
D1 = 1N4007
D2 = 1N4007
D3 = 1N4007
D4 = 1N4007
D5 = 1N4007
U1 = LM317
U2 = 7805
U3 = PIC16F876-EF484 programmé en usine
U4 = MAX3232
U5 = 24LC256
U6 = 24LC256
U7 = 24LC256
U8 = 24LC256
T1 = BC547
RL1 = Relais miniature 12 V
J1 = Cavalier 2 pôles

Sauf spécification contraire, les résistances sont des 1/4 de W à 5 %.

Divers :
1 Bornier 2 pôles
1 Connecteur DB9 mâle
1 Connecteur PS2
1 Connecteur RJ45
1 Support 2 x 14
1 Support 2 x 8
4 Supports 2 x 4
2 Boulons 3MA 8 mm
2 Dissipateurs ML26
1 Prise socle jack stéréo
1 Connecteur Siemens


Figure 5b : Schéma synoptique et brochage du MAX3232.

L’unité de base
Le schéma électrique de l’unité de base est figure 6. En ce qui concerne l’alimentation, en haut, ce qui a été dit pour l’unité distante vaut encore ici : entrée 12 V continu utilisé par RL1, U1 fournit le +6 V utilisé pour la charge du téléphone commandée par RL1, U4, D2 et D3 fournissent le +3,6 V. Ici aussi le 3,6 V est utilisé à la place du 5 V pour s’accorder avec la tension des lignes de transmission vers le téléphone. Pour les mêmes motifs que pour l’unité distante, l’interfaçage vers le port sériel du PC est exécuté par U2 MAX3232. Le coeur du circuit est encore le microcontrôleur U3, un PIC16F628 cette fois, gérant tous les dispositifs et leur communication.
Un aspect intéressant à approfondir est la présence du relais à deux contacts RL2 et de la connexion de la broche 4 du port sériel (broche RTSReady To Send) au microcontrôleur, réalisé au moyen de D5 et du pont R9/R10. Comme le montre la figure 6, RL2 généralement ne relie pas le MAX3232 au microcontrôleur : c’est seulement quand la connexion effective du port sériel a un ordinateur est détectée que RL2 est excité et que le microcontrôleur est connecté à U2. La détection de cette connexion se fait par la broche RTS : en effet, quand RTS est au niveau logique haut, la connexion au PC a bien eu lieu. Cette broche est reliée au port RB3 du microcontrôleur (le niveau de tension est abaissé de +12 à +3,6 V grâce au pont R9/R10) de telle façon que le PIC soit en mesure de détecter la connexion vers le PC. C11 est inséré pour obtenir un effet stabilisateur. Ceci a été mis en oeuvre pour éviter de maintenir liés constamment le microcontrôleur et le port sériel : la liaison n’est réalisée que lorsque c’est effectivement nécessaire, soit quand la présence d’un ordinateur est détectée.
Ce circuit aussi comporte une LED LD1 (commandée par le microcontrôleur via le port sériel RB4) pour indiquer à l’usager des informations sur l’état de l’unité.

Figure 6 : Schéma électrique de l’unité de base du localiseur GPS/GSM.

Liste des composants
R1 = 1,2 kΩ
R2 = 5,6 kΩ
R3 = 1,2 kΩ
R4 = 4,7 kΩ
R5 = 470 Ω
R6 = 33 kΩ
R7 = 33 kΩ
R8 = 10 Ω 1/2 W
R9 = 10 kΩ
R10 = 4,7 kΩ
R11 = 4,7 kΩ
C1 = 100 nF multicouche
C2 = 220 μF 16 V électro.
C3 = 100 nF multicouche
C4 = 220 μF 16 V électro.
C5 = 100 nF multicouche
C6 = 100 μF 25 V électro.
C7 = 1 μF 100 V électro.
C8 = 1 μF 100 V électro.
C9 = 1 μF 100 V électro.
C10 = 1 μF 100 V électro.
C11 = 1 μF 100 V électro.
LD1 = LED 3 mm rouge
T1 = BC547
T2 = BC547
Q1 = Quartz 20 MHz
D1 = 1N4007
D2 = 1N4007
D3 = 1N4007
D4 = 1N4007
D5 = 1N4007
D6 = 1N4007
RL1 = Relais miniature 12 V
RL2 = Relais miniature 12 V 2 RT
U1 = LM317
U2 = MAX3232
U3 = PIC16F628-MF485 programmé en usine
U4 = 78L05

Sauf spécification contraire, les résistances sont des 1/4 de W à 5 %.

Divers :
1 Prise d’alimentation
1 Connecteur DB9 femelle
1 Support 2 x 9
1 Support 2 x 8
1 Boulon 3MA 8 mm
1 Dissipateur ML26
1 Connecteur Siemens


La réalisation pratique du localiseur GPS/GSM
L’unité distante
Elle ne présente aucune difficulté, surtout si, au cours du montage, vous regardez attentivement les figures 7a et 7b associées à la liste des composants.
Tout d’abord, procurez-vous ou réalisez (par la méthode préconisée et décrite dans l'article : "Comment fabriquer vos circuits imprimés facilement ?") le circuit imprimé dont la figure 7c donne le dessin à l’échelle 1.
Une fois le circuit imprimé gravé et percé en mains, placez et soudez les 6 supports des circuits intégrés DIL, à 2 x 4, 2 x 8 et 2 x 14 broches et vérifiez immédiatement ces premières soudures (pas de court-circuit entres pistes ou pastilles ni soudure froide collée) : vous mettrez en place les circuits intégrés après la dernière soudure du dernier composant et avoir tout vérifié encore une fois.
Montez et soudez toutes les résistances après les avoir triées par valeurs et puissances (R11 est une 1/2 W) et les 5 diodes (bagues repère-détrompeurs orientées dans le bon sens montré par la figure 7a), puis les condensateurs (pour les électrolytiques n’inversez pas la polarité : la patte la plus longue est le +, là encore contrôlez sur la figure 7a) et la petite LED rouge (en respectant la polarité : l’anode + est la patte la plus longue).
Montez et soudez le quartz de 20 MHz (couché et maintenu par un fil dénudé soudé des deux côtés à la masse), le transistor (méplat repère-détrompeur orienté dans le bon sens, soit vers le bornier), les 2 régulateurs de tension, sans les confondre, (couchés dans leurs dissipateurs en U ML26 et maintenus par des petits boulons 3MA) et le relais miniature 12 V (on ne peut le monter que dans le bon sens). N’oubliez pas le cavalier J1.
Montez et soudez enfin, à droite, le bornier d’alimentation à deux pôles et la prise femelle RJ45 et, à gauche, le connecteur sériel DB9 mâle et le connecteur PS2 pour circuit imprimé : ces deux derniers sont pour le récepteur GPS.
Avant de souder les fils du connecteur pour le téléphone portable Siemens, procédez à l’installation de la platine dans le boîtier : pour cela, faites une ouverture dans le côté antérieur pour le port sériel et PS2 du GPS, dans le côté postérieur pour le connecteur RJ45 et 4 trous : un pour les deux fils d’alimentation, un pour le câble allant au téléphone portable Siemens (connecteur spécifique), un pour la prise jack socle utilisée pour relier le capteur “Enable” et enfin un pour LD1.
Faites passer le câble du téléphone par le trou et soudez les fils dans les trous du circuit imprimé, à droite : fil marron au pôle TX, fil blanc au pôle RX, fil jaune au pôle +V et enfin tresse de blindage à la masse. Faites la liaison par fils entre la platine et le socle jack stéréo monté sur le panneau : 3 fils, un pour le +12 V, un pour l’entrée EN et un pour la masse. Regardez bien la photo figure 7b et le schéma d’implantation des composants figure 7a : pas d’interversion.
Tout ayant été soigneusement vérifié (ni inversion de polarité ni interversion de composants, ni mauvaise soudure), vous pouvez enfoncer, avec beaucoup de soin, les 6 circuits intégrés (repère-détrompeurs en U orientés dans le bon sens montré par la figure 7a).
Reliez l’alimentation et vérifiez que la LED signale un fonctionnement correct de l’appareil.

Figure 7a : Schéma d’implantation des composants de l’unité distante.

Figure 7b : Photo de l’un des prototypes de l’unité distante.

Figure 7c : Dessin, à l’échelle 1, du circuit imprimé de l’unité distante.
Il pourra être réalisé par la méthode décrite dans l'article : "Comment fabriquer vos circuits imprimés facilement ?".


L’unité de base
Elle ne présente aucune difficulté non plus, surtout si, au cours du montage, vous regardez attentivement les figures 8a et 8b associées à la liste des composants.
Tout d’abord, procurez-vous ou réalisez (par la méthode préconisée et décrite dans l'article : "Comment fabriquer vos circuits imprimés facilement ?") le circuit imprimé dont la figure 8c donne le dessin à l’échelle 1.
Une fois le circuit imprimé gravé et percé en mains, placez et soudez les 2 supports des circuits intégrés DIL, à 2 x 8 et 2 x 9 broches et vérifiez immédiatement ces premières soudures (pas de court-circuit entres pistes ou pastilles ni soudure froide collée) : vous mettrez en place les circuits intégrés après la dernière soudure du dernier composant et avoir tout vérifié encore une fois.
Montez et soudez toutes les résistances après les avoir triées par valeurs et puissances (R8 est une 1/2 W) et les 6 diodes (bagues repère-détrompeurs orientées dans le bon sens montré par la figure 8a), puis les condensateurs (pour les électrolytiques n’inversez pas la polarité : la patte la plus longue est le +, là encore contrôlez sur la figure 8a) et la petite LED rouge (en respectant la polarité : l’anode + est la patte la plus longue).
Montez et soudez le quartz de 20 MHz (debout, broches bien enfoncées), les 2 transistors et le régulateur U4 (méplats repère-détrompeurs orientés dans le bon sens, soit vers le bas), le régulateur de tension U1 (couché dans son dissipateur en U ML26 et maintenu par un petit boulon 3MA) et les 2 relais miniatures 12 V dont un à 2 contacts (on ne peut les monter que dans le bon sens).
Montez et soudez enfin, en haut, la prise d’alimentation pour circuit imprimé et, à gauche, le connecteur sériel DB9 mâle.
Avant de souder les fils du connecteur pour le téléphone portable Siemens, procédez à l’installation de la platine dans le boîtier : pour cela, faites une ouverture dans le côté antérieur pour la prise DB9, dans le côté haut pour la prise d’alimentation et 2 trous : un dans le côté postérieur pour le câble allant au téléphone portable Siemens (connecteur spécifique), un dans la face avant pour LD1. Faites passer le câble du téléphone par le trou et soudez les fils dans les trous du circuit imprimé, à droite : fil marron au pôle TX, fil blanc au pôle RX, fil jaune au pôle +V et enfin tresse de blindage à la masse. Regardez bien la photo figure 8c et le schéma d’implantation des composants figure 8a : pas d’inter version.
Tout ayant été soigneusement vérifié (ni inversion de polarité ni interversion de composants, ni mauvaise soudure), vous pouvez enfoncer, avec beaucoup de soin, les 2 circuits intégrés (repère-détrompeurs en U orientés dans le bon sens montré par la figure 8a, soit vers le haut).
Reliez l’alimentation et vérifiez que la LED signale un fonctionnement correct de l’appareil.

Figure 8a : Schéma d’implantation des composants de l’unité de base.

Figure 8b : Photo d’un des prototypes de la platine de l’unité de base.

Figure 8c : Dessin, à l’échelle 1, du circuit imprimé de l’unité de base.

Figure 9 : Position du cavalier activant / désactivant la mémorisation de la position de l’unité distante en continu.

Les essais et à suivre
Pour procéder aux essais du dispositif, il est nécessaire d’avoir à sa disposition et de connaître le logiciel : c’est pourquoi nous vous donnons rendez-vous pour la seconde partie, ultérieurement.
Nous verrons ensemble le schéma électrique de l’interface à 8 entrées, le fonctionnement du logiciel pour PC gérant l’unité de base et un exemple pratique d’utilisation de tout le système.

2ème partie : L’interface à 8 entrées et le logiciel.

"PromoBox" Un annonceur vocal à détecteur de mouvement

C’est un reproducteur numérique vocal basé sur le ChipCorder ISD, s’activant lorsque son capteur optique détecte un mouvement (l’approche d’une personne, précédée ou non de son chariot) et diffusant alors dans son haut-parleur un message vocal. Conçu pour la promotion de produits sur les gondoles des grands magasins, il peut également servir d’avertisseur acoustique de sécurité.


Rien de complexe dans le principe ni dans la réalisation de ce dispositif utilisant les nouvelles puces pour synthèse vocale, de plus en plus répandues. Notre PromoBox va vous le montrer : ce lecteur numérique reproduit un message préalablement enregistré de 12 secondes maximum, lorsque quelqu’un ou quelque chose est détecté par le capteur optique de mouvement.

Le schéma électrique de l’annonceur vocal
Il est donné figure 1. La section vocale est un module de quelques centimètres carrés, un tout petit circuit imprimé sur lequel on a monté un ISD1212 en CMS : ce composant Information Storage Devices (spécialiste des puces de synthèse vocale) est un “ChipCorder”, c’est-à-dire un enregistreur/lecteur numérique complet dont les fonctions peuvent être commandées directement avec des signaux logiques appliqués sur des broches spécifiques. Le circuit comporte une ligne pour l’enregistrement et deux pour la lecture, correspondant à des broches de la puce.
Le capteur détecte le mouvement grâce aux variations de luminosité à sa surface, dues aux changements affectant son environnement frontal. Ce choix a été fait pour réduire les coûts au maximum : en effet, une photorésistance couplée à un microcontrôleur suffit. Ici, le PIC lit la valeur de la photorésistance et l’échantillonne périodiquement, de façon à détecter quand elle s’écarte significativement de la valeur de repos. Le schéma électrique de la figure 1 montre que FT1 est insérée dans un dipôle comprenant un condensateur : le tout est relié à la broche 3 du microcontrôleur U2, un PIC12C672. Pour la mesure de la photorésistance, on a recours à la fonction POT du compilateur PIC Basic Pro : le dipôle R/C est alimenté de telle façon que le condensateur se charge, ensuite on mesure la durée de sa décharge. Bref, le PIC lit la courbe de décharge de C4, dont la pente dépend exponentiellement de la valeur résistive prise par FT1 en fonction de son illumination : plus grande est la valeur résistive, plus longue est la durée de décharge et vice versa.
Mais comment le microcontrôleur fait-il pour savoir que la luminosité a varié ? Il mémorise une valeur résistive de référence et il recherche ensuite quand la valeur sort d’une fourchette prédéterminée.
Cette lecture a lieu 10 fois par seconde environ : le PIC lit l’état du dipôle contenant la photorésistance et il fait une moyenne toutes les dix lectures (soit à chaque seconde), ce qui lui donne la valeur moyenne de la résistance en fonction de la constante de temps de décharge du réseau R/C.
Il se fait donc une idée de la condition stable, soit de la luminosité ambiante quand aucun corps réfléchissant ne s’approche du champ de FT1. Quand cette condition varie et qu’une ou plusieurs lectures de la valeur de la résistance montre qu’on est sorti de la plage paramétrée par le programme, soit de la tolérance autour de la valeur moyenne calculée à partir des dernières lectures, la condition d’alarme est détectée et le programme lance une routine de temporisation mettant la broche 5 au niveau logique haut, polarisant T1 jusqu’à saturation et faisant conduire T2. En même temps, une impulsion de niveau logique bas se présente sur la ligne GP1, normalement haute. Le tout dure un temps déterminé par la position du curseur du trimmer R1 : pendant ce temps le module U5 diffuse le message vocal.
Revenons au capteur proprement dit : après chaque détection, le programme inhibe l’entrée correspondant à la photorésistance, ce qui fait que, pendant un certain temps, la sortie reste inactive indépendamment de ce qui se passe en face de la photorésistance.
Ce temps est paramétré, de 1 à 180 secondes, avec le trimmer R2.
L’utilité de cette fonction relève de la nécessité d’espacer deux lectures du message vocal. A noter que, pendant l’intervalle d’inhibition, aucune lecture de la part du microcontrôleur n’a lieu et que le circuit est au repos
La durée étant écoulée, le microcontrôleur reprend ses lectures et détermine à nouveau la valeur moyenne de référence au repos : si la variation ayant déterminé l’alarme demeure, le microcontrôleur la prend comme nouvelle valeur moyenne de référence ou condition stable. Par conséquent, aucun problème dû à l’allumage et à l’extinction de l’éclairage n’est à craindre : avec la variation initiale le capteur se déclenche, puis il s’adapte à la nouvelle condition normale et ne se déclenche à nouveau que si une nouvelle variation est détectée. Un mot encore sur R1 : ce trimmer sert à régler la sensibilité du capteur, c’est-à-dire le décalage entre la luminosité au repos et la luminosité réfléchie par unobjet frontal en mouvement proche, déterminant la commande des lignes GP1 et GP2 et le déclenchement concomitant du lecteur vocal.
Passons maintenant à l’examen de la section de reproduction du message vocal : il s’agit essentiellement du circuit intégré ISD1212 monté sur une petite platine et possédant comme seules connexions le positif et le négatif d’alimentation, la sortie BF, l’entrée microphone et les lignes de commande pour enregistrement et la lecture. Cette dernière correspond à la broche “PLAY” et permet de faire lire au composant ce qui a été préalablement enregistré, simplement en passant un instant (il suffit d’une impulsion de 20 ms) du niveau logique 1 au niveau logique 0. Alors, le convertisseur N/A interne au ISD1212 transforme les données présentes dans l’EEPROM interne et synthétise le signal audio correspondant. Notez que les “chipcorders” ont une sortie en pont, par conséquent il y a deux broches où l’on prélève l’audio (le circuit intégré est conçu pour piloter directement un petit haut-parleur de 16 ou 32 ohms), toutefois, disposant d’un amplificateur externe, U3, nous avons envoyé à la sortie du module U5 la composante BF prélevée sur une seule broche. Le signal qui en sort est envoyé sur un petit amplificateur final audio LM386 auquel nous faisons délivrer 1 W de puissance dans un haut-parleur de 8 ohms d’impédance, connecté aux points SPK.
Le trimmer R7 permet un réglage du niveau sonore facile.
Mais, bien entendu, pour diffuser le message celui-ci doit préalablement avoir été enregistré. Pour effectuer cette opération, U5 doit d’abord être inséré dans un enregistreur spécial : ce dernier, l’Enregistreur copieur pour “chipcorder” ET198, est doté d’un support accueillant le module “chipcorder” à enregistrer. Un poussoir permet l’enregistrement du signal arrivant du microphone intégré et un autre le transfert du message enregistré dans le “chipcorder” de la base dans le module inséré dans le connecteur de programmation (U5 pour nous).
Revenons maintenant à notre circuit pour analyser comment le microcontrôleur gère effectivement le module vocal U5 : nous l’avons dit, quand un mouvement est détecté, le PIC met au niveau logique 1 sa ligne GP2 de manière à saturer T1, dont le collecteur porte à presque 0 V R4, ce qui fait pleinement conduire T2.
Ce dernier, un PNP, est monté en interrupteur statique et son collecteur conduit le courant à l’amplificateur BF et, à travers le régulateur U4 7805 fournissant le 5 V stabilisé, à U5. Environ 40 ms après avoir donné le niveau logique haut à la broche 5, le microcontrôleur fait passer brièvement la broche 6 au niveau logique bas, de façon à donner l’impulsion de mise en route à la reproduction.
Quand la durée paramétrée est écoulée, le microcontrôleur fait repasser GP2 au niveau logique 0 et laisse s’éteindre la section audio, étant assuré que le message est terminé : T1 repasse en interdiction, ainsi que T2 et le circuit ne consomme ainsi que quelques mA, consommés à vide par U1. Le tout fonctionne sous une tension continue entre 12 et 15 V, à appliquer sur les bornes + et – PWR.

Figure 1 : Schéma électrique de l’annonceur de message.

Liste des composants
R1 = 4,7 kΩ trimmer
R2 = 4,7 kΩ trimmer
R3 = 47 kΩ
R4 = 1 kΩ
R5 = 15 kΩ
R6 = 100 Ω
R7 = 4,7 kΩ trimmer
C1 = 100 μF 25 V électro.
C2 = 100 μF 25 V électro.
C3 = 100 nF multicouche
C4 = 330 nF 63 V polyester
C5 = 100 nF 63 V polyester
C6 = 100 nF 63 V polyester
C7 = 100 μF 25 V électro.
C8 = 22 μF 25 V électro.
C9 = 220 μF 25 V électro.
C10 = 1 μF 100 V électro.
C11 = 100 nF multicouche
D1 = 1N4007
U1 = 78L05
U2 = PIC12C672-EF466 déjà programmé en usine
U3 = LM386
U4 = 78L05
U5 = Module ET199
T1 = BC547
T2 = BC557
FT1 = Photorésistance 1 kΩ à 2 MΩ
SPK = Haut-parleur 8 Ω 1 W

Divers :
2 Supports 2 x 4
2 Borniers 2 pôles
1 Barrette tulipe 8 pôles femelle
1 Programmateur ET198

La réalisation pratique de l’annonceur vocal
Une fois que l’on a réalisé le circuit imprimé par la méthode préconisée et décrite dans l'article : "Comment fabriquer vos circuits imprimés facilement ?" (la figure 3b en donne le dessin à l’échelle 1), ou qu’on se l’est procuré, on monte tous les composants dans un certain ordre en regardant fréquemment la figure 3a et la liste des composants.
Montez tout d’abord les 2 supports des circuits intégrés et la barrette tulipe à 8 pôles femelles au pas de 2,54 mm, devant ensuite recevoir le module U5 ET199 : vérifiez bien les soudures (ni court-circuit entre pistes et pastilles, ni soudure froide collée).
Le module ET199 est fourni avec 1 barrette tulipe mâle à 8 pôles. Vous l’installerez à la toute fin.
Montez ensuite toutes les résistances sans les intervertir, puis les 3 trimmers à plat. Montez tous les condensateurs en respectant bien la polarité des électrolytiques (la patte la plus longue est le +). Montez la diode D1, bague repère-détrompeur vers C2.
Montez les 2 régulateurs 78L05 et les 2 transistors BC547 et BC557 méplats repère-détrompeurs orientés comme le montre la figure 3a.
Montez les 2 borniers à 2 pôles pour l’alimentation (PWR) et le haut-parleur (SPK). Montez la photorésistance (de 1 kilohm à 2 mégohms maximum) au fond d’un tube plastique opaque, de façon à la rendre directive (à rendre plus étroit son diagramme de détection).
De la gaine thermorétractable irait très bien (voir photo de première page) : placez la photorésistance à plus de 1,5 cm de la bouche du tube. Reliez par les borniers correspondants l’alimentation et le haut-parleur.
Enfoncez délicatement les 2 circuits intégrés restants dans leurs supports en orientant bien leur repère-détrompeur en U dans le sens indiqué par la figure 3a. Installez enfin dans la barrette tulipe femelle au pas de 2,54 mm le module U5 ET199, dûment enregistré à l’aide du programmateur ET198, par-dessus le circuit imprimé principal (voir figures 2, 3 et 4 et photo de première page).
Le circuit est prêt à l’usage : réglez la sensibilité et l’intervalle entre deux alarmes (pause d’inhibition du capteur) après avoir installé le dispositif à sa place définitive, protégé ou non par un boîtier plastique, éventuellement à l’intérieur d’un distributeur, etc. Avant d’alimenter le montage, réglez R1 et R7 à mie course et R2 au minimum (sens anti-horaire). Reliez l’alimentation et, sans passer devant la photorésistance, vérifiez que le lecteur de message est au repos : s’il est activé, modifiez la position du curseur de R1.
A ce propos, notez ces règles simples valables pour R1 et R2 : en tournant le curseur dans le sens horaire, on augmente respectivement la sensibilité et l’intervalle d’inhibition, dans le sens opposé on les diminue. Pour R1, donc, la plus grande résistance équivaut à la plus grande sensibilité et la résistance minimale à la sensibilité la plus faible du capteur. Pour R2, le résistance insérée est inversement proportionnelle à la durée paramétrée.

Figure 2 : Le module vocal et son programmateur enregistreur.

Le module U5 ET199 doit être programmé (le message doit y être enregistré) à l’aide du programmateur (enregistreur) ET198.

Figure 3a : Schéma d’implantation des composants de l’annonceur de message.

Figure 3b : Dessin, à l’échelle 1, du circuit imprimé de l’annonceur de message.

Figure 4 : Photo d’un des prototypes de la platine de l’annonceur de message.

Figure 5 : Photo d’un des prototypes assemblé et relié au haut-parleur.

L’élément sensible à la variation de lumière (la photorésistance) doit être introduit dans un morceau de gaine thermorétractable : ainsi, les variations de luminosité détectées seront exclusivement celles produites par le mouvement d’un objet frontal.

Figure 6 : Le réglage des trimmers.

Les trimmers permettent de régler la durée d’inhibition entre un message et le suivant (R2), la sensibilité du capteur de mouvement (R1) et le volume de l’écoute audio du message (R7).

Figure 7 : Le montage peut être utilisé comme messager de bienvenue dans un magasin ou pour attirer l’attention des clients sur une promotion, etc.

Conclusion et rappel
Le module U5 ET199 doit être programmé (le message doit y être enregistré) à l’aide du programmateur (enregistreur) ET198.

Des lecteurs de transpondeurs commandés par ordinateur "Deuxième partie : Le logiciel"

Cet appareil permet de contrôler avec un programme simple, exécutable sous Windows, jusqu’à 16 lecteurs de transpondeurs passifs, de créer la liste des personnes habilitées et d’attribuer à chacune la possibilité d’effectuer des actions locales comme l’activation d’un ou plusieurs relais en mode impulsionnel ou bistable. Nous avons, dans la première partie, monté les platines et nous les avons interconnectées et interfacées avec le PC, dans cette seconde partie nous allons apprendre à installer et à nous servir du logiciel de gestion.


Dans la première partie nous avons analysé et construit ce ou ces lecteurs de transpondeurs et l’interface ce communication : vous vous souvenez que nous avions ensuite fait allusion au logiciel de gestion, eh bien nous le décrirons et nous apprendrons à nous en servir dans la présente seconde partie.
Mais auparavant, revoyons quelques concepts de base du système : la principale caractéristique du montage est qu’il ne se compose pas d’un seul lecteur de transpondeurs, mais qu’il peut en comporter jusqu’à 16, afin de contrôler plusieurs points d’accès. Un PC fait partie du système (et il permet de faire tourner le logiciel de gestion, bien sûr), mais aussi, évidemment, les différents lecteurs et l’interface de communication, se chargeant de les relier à l’ordinateur. Chaque lecteur de transpondeurs comporte 2 relais pouvant être reliés à divers dispositifs (par exemple, une serrure électrique, un contrôle d’accès, etc.) dont l’activation/désactivation est commandée par voie logicielle. La connexion interface de communication/ordinateur se fait par une liaison sérielle RS232, alors que celles entre les lecteurs de transpondeurs et cette interface sont constituées d’un bus divisé au format RS485.
La logique de fonctionnement est la suivante : quand un badge à transpondeur passe devant un lecteur, le code d’identification est lu puis transmis, par l’intermédiaire du bus divisé, à l’interface de communication. Cette dernière convertit les niveaux RS485 en RS232 et ensuite passe les données au PC. Le logiciel recevant le code le compare à ceux mémorisés et éventuellement commande dans le lecteur concerné l’activation ou la désactivation de l’un ou des deux relais. La gestion de la communication se fait en “polling” (décision confiée à l’ordinateur) : le PC interroge séquentiellement les divers lecteurs de transpondeurs et éventuellement commande l’activation/désactivation du/des relais. Nous vous rappelons que les lecteurs peuvent travailler en deux modes, paramétrables par le cavalier J1 : J1 fermé, le fonctionnement est autonome et le lecteur envoie le code lu sans attendre que l’ordinateur l’interroge, J1 ouvert, le lecteur mémorise dans un “buffer” (tampon) interne les codes lus et les transmet au PC quand celui-ci les réclame. On comprend que le premier mode peut être utilisé pour exécuter un test de fonctionnement du lecteur ou si peu de lecteurs sont reliés au bus. Si en revanche on souhaite connecter plusieurs lecteurs sur la ligne, il est nécessaire de choisir le second mode et de gérer la communication en “polling”, afin d’éviter les collisions.
Passons maintenant à l’analyse du logiciel. Elle se fera en deux parties : dans la première nous nous occuperons du protocole de communication utilisé entre l’ordinateur et les lecteurs de transpondeurs et dans la seconde nous prendrons un exemple de programme (écrit en Delphi) lequel, mettant à profit le protocole de communication, sera en mesure de gérer les divers lecteurs de transpondeurs et les différents points d’accès.

Figure 1 : Le réseau des lecteurs de transpondeurs reliés à l’ordinateur.

Figure 2 : Protocole de communication.
Le protocole de communication définit les règles d’envoi des requêtes, des paramètres et des commandes de l’ordinateur vers les lecteurs de transpondeurs, il définit en outre le mode de réponse des lecteurs aux interrogations et commandes. Disons tout d’abord que chaque paquet envoyé par le PC commence par les caractères ASCII “*#”, utilisés comme symboles de synchronisation. Toutes les réponses transmises par les lecteurs commencent en revanche par les caractères “ST”.
Ensuite deux caractères sont présents : ils sont utilisés pour adresser l’un parmi les 16 lecteurs possibles reliés au bus RS485. Les deux caractères indiquent respectivement les dizaines et les unités du code d’identification : par exemple, les caractères “00” indiquent le premier lecteur, les caractères “04” le lecteur ayant l’adresse 4, enfin “15” le dernier lecteur, soit le numéro 15. Il faut noter que l’identification sert pour les communications effectuées à partir du PC et pour les réponses émises par les lecteurs.
Après les symboles d’adressage, on trouve des informations complémentaires identifiant le type de commande ou réponse (voir figure 2 pour plus de détails et une liste complète).
Enfin, le paquet se termine par les caractères ASCII 90h s’il s’agit d’un paquet envoyé par le PC. Si en revanche l’émission provient des lecteurs, le paquet se termine par les caractères “EN”.


Pour exécuter la communication entre le PC et les différents lecteurs de transpondeurs on utilise un protocole : il est constitué des commandes envoyées par l’ordinateur et des réponses envoyées par les lecteurs de transpondeurs. Nous avons déjà vu que les commandes envoyées par le PC commencent toutes par les symboles “*#”, alors que les réponses des lecteurs commencent toutes par “ST”.
Ensuite se trouvent deux caractères identifiant le lecteur de transpondeurs (indiquées par “d u” représentant les dizaines et les unités
de l’adresse du lecteur). Puis sont transmis certains caractères identifiant le type de commande ou de réponse, enfin suivent les caractères de fin de paquet, 90h pour les paquets envoyés par l’ordinateur et “EN” pour les réponses envoyées par les lecteurs.
Voyons à présent en détail quelles sont les différentes commandes et réponses qu’il est possible de transmettre et comment elles sont identifiées. La première commande que le PC peut transmettre est l’interrogation en “polling” (l’initiative est à l’ordinateur) : elle est identifiée par les caractères “01”. Le paquet envoyé est donc : *# d u 01 90, où 01 indique justement l’interrogation.
Le lecteur peut alors répondre par le paquet : ST d u 01 EN, pour indiquer qu’il n’a pas de codes de transpondeurs mémorisés à envoyer (les caractères 01 indiquent justement qu’aucune donnée n’est présente). Si en revanche ces informations sont présentes, le transpondeur répond par le paquet : ST d u 02 <10 byte, identifiant le code du transpondeur lu > EN, où les caractères 02 identifient l’envoi du code lu.
Les codes des transpondeurs sont transmis en utilisant 10 caractères (afin d’éviter tout malentendu, précisons que les caractères “<” et “>” ne sont pas transmis dans le paquet, ils ont été inséré pour une raison purement graphique).
Les opérations que le PC peut demander au lecteur d’exécuter sont l’activation ou le changement d’état des relais : le paquet envoyé par l’ordinateur se compose de : *# d u 02 01 90, où 02 identifie la commande d’activation (ou changement d’état) du relais, alors que 01 identifie le relais 1.
Si l’on voulait agir sur le second relais, il faudrait transmettre : *# d u 02 02 90.
Le lecteur de transpondeurs confirme alors la réception et l’exécution de la commande en envoyant le paquet : ST d u 03 01 EN, où 03 identifie le type de réponse, alors que 01 identifie le numéro du relais.
Un dernier paquet concerne le réglage des durées d’activation des deux relais. Le PC en transmettant : *# d u 03 01 td tu 90, indique au lecteur identifié par les caractères d u de paramétrer une durée d’activation pour le premier relais (caractères 01) égale à td tu.
Le mécanisme par lequel on indique les secondes est le même que pour l’adressage du lecteur : td indique les dizaines, tu les unités.
La durée d’activation peut donc être spécifiée dans l’intervalle de 1 à 99 secondes : si en revanche on transmet tdtu=00 on spécifie le mode bistable.
La réponse du lecteur à cette commande est : ST d u 03 01 td tu EN, où, encore une fois, 03 identifie le type de réponse, 01 indique le numéro du relais et td tu indiquent la durée d’activation paramétrée. Une fois connu le protocole de communication, il est donc possible de réaliser un logiciel valable qui, en se basant justement sur celui-là, gère les différents lecteurs de transpondeurs et règle donc l’activation des deux relais en fonction de l’usager reconnu.
Exemples d’interrogation en “polling”
des 2 lecteurs de transpondeurs. Le PC interroge le premier lecteur, lequel répond qu’il n’a pas de données. L’ordinateur passe alors à l’interrogation du second lecteur, lequel répond en revanche qu’il a des données et les transmet. Le cycle peut alors continuer avec l’interrogation des autres lecteurs présents, ou bien reprendre au début avec l’interrogation du lecteur 1.

Le logiciel de gestion
Maintenant que nous avons vu comment fonctionne le protocole de communication, il est possible de réaliser un programme permettant de contrôler les usagers et les accès. Le logiciel doit donc tout d’abord interroger les 16 lecteurs afin de vérifier lesquels sont effectivement présents, ensuite il doit réclamer (en mode “polling”) la transmission des codes lus aux lecteurs détectés. Il doit contrôler dans sa base de données si le code reçu est un de ceux mémorisés : si oui, il est possible d’identifier l’usager et d’agir en conséquence (activer ou non le relais), tout en contrôlant éventuellement l’horaire d’accès et le numéro du lecteur par lequel on accède, de façon à n’autoriser l’accès à l’usager que dans le cadre de certains horaires ou par certaines portes. Si en revanche le code n’est pas dans la base de données, il peut demander l’insertion d’un nouvel usager, c’est-à-dire la mémorisation de son code dans la “database” (mode d’auto-apprentissage) ou bien exécuter d’autres opérations particulières.
Le logiciel doit en outre être en mesure de gérer le paramétrage correct des durées d’activation des relais : nous vous rappelons que ces valeurs sont mémorisées à l’intérieur de chaque lecteur de transpondeurs et qu’elles sont par conséquent égales pour chacun des codes d’identification.
On comprend que les fonctions opérables par voie logicielle en s’appuyant sur le protocole de communication sont nombreuses et qu’elles couvrent un large éventail d’applications. Pour chaque situation particulière, il faudrait réaliser un programme spécifique : ci-après nous vous donnons cependant un exemple de spécifications choisies par nos soins, ayant toutes les chances de coïncider avec vos besoins et qu’on pourrait qualifier de standards.
Avant d’analyser ce programme, regardons comment exécuter le “polling” (décision confiée à l’ordinateur) des différents lecteurs : on l’a vu, la communication sur la ligne divisée est au format RS485. C’est pourquoi le circuit utilise des circuits intégrés MAX485, convertissant les niveaux de tension de TTL à RS485 et vice versa. Avant l’exécution de chaque transmission, le logiciel présent dans le microcontrôleur active automatiquement le MAX485, quand la transmission est terminée la puce est désactivée. Le problème est que les deux opérations réclament un certain délai pour leur exécution : par conséquent, en mode “polling”, il faut en tenir compte et introduire un certain retard entre l’interrogation d’un dispositif et celle du suivant. Un temps de quelques dizaines de millisecondes convient bien : on le voit c’est un intervalle assez court et, dans l’exécution normale, cela ne devrait poser aucun problème.
Nous pouvons maintenant commencer l’analyse de notre programme : on l’a dit, il est écrit en Delphi et tourne sous Windows 95/98/Me/XP. Son installation est fort simple : la procédure exige seulement de spécifier dans quel registre on souhaite copier les fichiers du programme. Une fois celui-ci lancé, l’écran principal apparaît : il contient essentiellement un moniteur d’état, dans lequel apparaissent au fur et à mesure les opérations exécutées avec les commandes manuelles de l’usager ou avec celles automatiques opérées par le programme lui-même.
A l’intérieur de cette même fenêtre il est en outre possible de spécifier quel port COM utiliser pour l’émission/réception des données. Le choix du port est la première opération à accomplir car, si le système est relié à un COM différent de celui auquel le programme s’attend, il n’est possible de réaliser aucune opération. La vitesse de communication ne peut en revanche pas être modifiée, car elle est prévue à 115 200 bits/s, sans parité, avec 8 bits de données, 1 bit de Start et un de Stop. De toute façon, il ne devrait y avoir aucun problème puisque les COM montés sur tous les PC de ces dernières années sont en mesure de gérer une communication à cette vitesse et avec ces paramètres.
Une barre des menus contient deux mots (“File” et Configurer), chacun ouvrant un menu déroulant, nous allons les analyser. L’indication “File” (fichier) contient deux possibilités : Terminer, qui permet de terminer le programme et Démarrer, qui en revanche permet d’activer l’interrogation en “polling” des divers lecteurs. Si l’interrogation est activée, dans la fenêtre principale sont visualisées certaines informations relatives aux opérations en cours (interrogations, code transpondeur reçu, identification usager, etc.). Par exemple, un flux de type Démarrer 01/07/03 15:33:00 apparaît : date (format jj/mm/aa) et heure (format hh:mm:ss) sont celles détectées par l’horloge du PC au moment de la commande. Pour terminer la procédure de “polling”, dans le menu “File” l’indication Démarrer est remplacée par “Stop”.
Passons au menu le plus substantiel, Configurer : nous y trouvons les indications “Reader” (lecteur) et Usagers servant, la première pour accéder à la fenêtre de dialogue où l’on peut choisir le mode de fonctionnement des lecteurs et la seconde pour définir chaque usager et associer à leur détection des actions locales déterminées.
Si l’on ouvre le menu Configurer et si l’on clique sur “Reader”, on accède à la fenêtre de dialogue “Remote Readers Setup”, constituée de deux parties (“Readers” et Temporisation) avec lesquelles on peut choisir toutes les fonctions des lecteurs.
En fait, à partir de “Readers”, le programme indique quels sont les lecteurs reliés au système. Par un clic sur le poussoir “AutoScan” le programme exécute une recherche sur le bus RS485 des lecteurs présents.
Cette opération n’est rien d’autre qu’une interrogation de toutes les adresses de 0 à 15 et quand elle est terminée les lecteurs détectés apparaissent cochés dans la fenêtre de dialogue. A noter que pendant l’interrogation le menu contextuel du bas visualise l’état de la recherche. Par un clic sur le poussoir OK on accepte et on confirme la liste des lecteurs détectés, avec Annuler on abandonne la procédure et les derniers paramétrages sauvegardés restent valides.
Notez cependant que pour permettre la liaison “à chaud” (soit sans interrompre l’exécution du programme) d’un nouveau lecteur, le programme tente même l’interrogation des lecteurs n’ayant pas été identifiés au moyen de la procédure “Autoscan”.
Cette procédure peut toutefois être utile pour vérifier l’exactitude du paramétrage des micro-interrupteurs de chaque lecteur relié au bus. La partie Temporisations concerne en revanche le paramétrage des deux relais de chaque lecteur : nous y trouvons deux fenêtres dans lesquelles on peut écrire le nombre de secondes de la durée d’activation voulue. Par exemple, si l’on écrit 10 en Temps d’activation Relais 1, le relais RL1 du lecteur sera excité pendant 10 secondes environ chaque fois qu’un transpondeur, parmi ceux mémorisés dans la base de données, sera lu. La sélection du lecteur auquel se réfère le paramétrage se fait par la fenêtre Sélectionner “Reader”. Après avoir choisi les diverses durées d’activation, cliquez sur le poussoir Envoi Configuration : le programme envoie alors les paramètres en utilisant le paquet de paramétrage convenable.
Nous avons déjà souligné qu’en laissant à zéro la durée d’un relais, ce dernier fonctionne en mode bistable : cela signifie que le passage d’un transpondeur habilité déterminera l’inversion de l’état actuel dudit relais (il se relaxe s’il est excité et il s’active s’il est au repos). Il est en outre possible de relaxer un relais ou les deux du lecteur indiqué : ainsi, si en un point d’accès il est nécessaire de commander un seul dispositif externe, on peut choisir de le relier au premier relais et de désactiver le second. Par exemple, si l’on veut commander le seul relais 1 du lecteur numéro 0 pour 2 secondes chaque fois qu’un transpondeur autorisé est lu, on doit écrire 2 dans la fenêtre Temps d’activation Relais 1. Il faut aussi cliquer dans la case Temps d’activation Relais 1 afin de la cocher. En revanche, il faut décocher la case Temps d’activation Relais 2. En pressant Envoyer Configuration, les paramètres sont transmis au lecteur.
Avant de passer à la seconde indication du menu Configurer, nous vous devons une précision : tous les paramétrages vus peuvent être pratiqués et appliqués avant que le système ne soit lancé avec la commande Démarrer du menu “File” : ils sont en effet transmis aux différents lecteurs le long du bus RS485. Une fois le système lancé, le bus est occupé par les interrogations : il n’est donc plus possible de transmettre les commandes de paramétrage. D’ailleurs la commande “Reader” n’est plus sélectionnable (en gris) : pour pouvoir modifier le paramétrage, il faut bloquer momentanément l’interrogation (menu “File”, indication “Stop”) puis entrer dans le menu Configurer et sélectionner la commande “Reader”, maintenant disponible.
Analysons ensuite la configuration des usagers. Elle est accessible en deux modes : manuellement, en ouvrant le menu Configurer et en cliquant sur la commande Usagers, ou en automatique, quand devant la self d’un ou des lecteurs du système passe un transpondeur inconnu dans la base de données.
Dans le premier cas on accède à la fenêtre de dialogue Configuration Usagers dans laquelle, pour chaque transpondeur reconnu, apparaît une ligne indiquant le code d’identification, le nom correspondant (utile quand un transpondeur doit identifier une personne) et les éventuelles actions associées (activation du relais 1 ou 2) à son passage devant le lecteur. Pour ajouter un nouvel usager, il suffit de cliquer sur Ajout et d’écrire manuellement les données, c’est-à-dire code et nom. Il y a ensuite deux cases à cocher Relais 1 et Relais 2 : la coche indique que les relais correspondants seront activés après le passage du transpondeur identifié par le code inséré. Si l’on presse OK, le nouvel usager est temporairement ajouté, si en revanche l’on presse l’icône Sauvegarder, la “database” des usagers est mise à jour.
Jusqu’ici nous avons expliqué la définition manuelle. Cependant le programme a été réalisé de manière à permettre l’ajout d’un transpondeur différent de ceux déjà mémorisés dans la base de données par l’intermédiaire d’une technique d’auto-apprentissage.
Plus précisément, si l’on approche d’un quelconque lecteur un transpondeur inconnu, la procédure de définition des nouveaux usagers est automatiquement lancée : une fenêtre de requête Ajout nouvel usager ? apparaît à l’écran, par laquelle le PC demande à l’opérateur s’il veut créer un nouvel usager : si l’on répond Oui, la fenêtre de dialogue Configuration Usagers apparaît, dans laquelle le champ Code donne la valeur lue sur le transpondeur. Si l’on répond Non, l’ordinateur ignore le nouveau dispositif et ne produit aucune action locale. Bien entendu, si l’on approche à nouveau le même transpondeur d’un autre lecteur ou du même, une nouvelle proposition d’enregistrement d’un nouvel usager nous est faite.
Dans la fenêtre Configuration Usagers il est en outre possible d’éliminer ou de modifier les enregistrements relatifs aux usagers : dans les deux cas les commandes ont un effet sur la ligne sélectionnée (pour sélectionner un usager de la liste, il suffit de cliquer sur la ligne qui le contient).
Dernier aspect touchant au logiciel de gestion : celui-ci réalise un “file” (fichier) de log dans lequel il mémorise toutes les informations correspondant aux opérations exécutées.
Les informations sont les mêmes que celles visualisées dans la fenêtre principale, mais elles sont sauvegardées de façon à en permettre la lecture même après coup. Les données sont inscrites dans un fichier de type texte (extension .txt) nommé au format aaaamm.txt dans lequel les 4 premiers caractères identifient l’année et les 2 derniers le mois (chaque fichier contient en effet les informations relatives aux opérations effectuées chaque mois). Le format de sauvegarde se compose de 7 champs :
- jour exprimé dans le format jj/mm/aa,
- heure exprimée dans le format hh:mm:ss,
- adresse du transpondeur au format d u (le premier caractère pour les dizaines, le second pour les unités),
- code d’identification du transpondeur,
- nom usager associé au code transpondeur,
- deux caractères identifiant si les relais respectifs sont actifs ou non (S pour activation, N pour non activation).
Les données sont sauvegardées à l’intérieur du fichier textuel où chaque ligne représente un événement : les 7 champs sont en outre séparés par le caractère “;” de façon à permettre une importation plus simple en “database” ou feuillets électroniques comme Access ou Excel.


Figure 3 : Principaux écrans du programme.





Programme lancé, apparaît l’écran principal. La première opération à accomplir est la sélection du port COM à utiliser. A partir du menu “File” il est possible de lancer les interrogations des lecteurs ou sortir. A partir du menu Configurer il est possible en revanche d’entrer dans le mode de configuration des lecteurs de transpondeurs ou des usagers.
Au moyen de la fonction “Autoscan” il est possible d’activer la détection automatique des lecteurs de transpondeurs reliés au bus RS485. Le paramétrage du code d’identification de chaque lecteur se fait par le dipswitch à 4 bits présent sur le circuit (voir première partie de l’article).
Comme on peut le voir ci-contre, il n’est pas absolument nécessaire de paramétrer les codes de manière séquentielle, mais on peut aussi faire des “sauts” (dans notre exemple les lecteurs 03 et 04 n’ont pas été paramétrés, alors que le lecteur 05 est inséré). En pressant OK le paramétrage est accepté et il est donc sauvegardé.
Ecran de paramétrage des lecteurs désignés par la procédure “Autoscan”.
Pour chaque lecteur, sélectionnable à partir du code d’identification, il est possible de paramétrer lequel des deux relais activer et sa durée d’activation. Pour chaque relais il est possible de spécifier un intervalle d’activation compris entre 1 et 99 secondes.
Si l’on paramètre 0 seconde, on sélectionne le mode bistable (une première commande excite le relais, une seconde le désactive et ainsi de suite).
Ecran des usagers mémorisés dans la base de données du programme. Chaque usager est identifié par le code du badge à transpondeur et par une dénomination.
Pour chaque usager il est possible de spécifier lequel des deux relais activer et si l’identification correspondante a eu lieu (la durée d’activation dépend en revanche du paramétrage mémorisé dans le lecteur).
Par l’intermédiaire des poussoirs présents dans la partie supérieure, il est possible d’ajouter ou de modifier les enregistrements correspondant aux usagers.

Figure 4 : Les cartes à transpondeur sont disponibles au format badge ISO7816 (carte de crédit) ou, plus commode, au format porte-clés.

Figure 5 : Exemple fichier de log.

Le programme que nous vous proposons dispose d’une fonction de sauvegarde des fichiers de log utile et commode, car toutes les actions advenues dans le mois sont écrites. Les données sont sauvegardées dans des fichiers de texte (avec extension .txt) et chaque action est écrite sur une ligne. Pour chaque ligne les champs sont séparés par le caractère “;” de façon à permettre une importation rapide à l’intérieur de la “database” ou vers des feuillets électroniques.

1er partie : Le matériel (étude et réalisation).

Related Posts Plugin for WordPress, Blogger...