Contrôleur d'accès à carte magnétique

Dans notre précédent article, nous avons abordé l’aspect théorique des cartes magnétiques. Ici, nous vous proposons une réalisation pratique : un lecteur à auto-apprentissage qui ne s’active que si l’utilisateur possède une carte magnétique habilitée. Cette réalisation peut être utilisée comme serrure de sûreté mais aussi, comme système d’activation pour antivols et installations de tous types.


Dans le précédent numéro nous avons analysé, du point de vue théorique, le fonctionnement des cartes magnétiques.
Dans les pages qui suivent, nous approfondirons certains aspects de cette technique et surtout, nous présenterons un projet intéressant et facilement réalisable, même par un néophyte.

Notre réalisation
Il s’agit d’un lecteur de cartes compact, capable d’apprendre et de mémoriser les données gravées sur la bande magnétique, et dans un second temps, d’activer un relais dès lors que – en lecture – le code de la carte coïncide avec l’un des codes mémorisés.
Le circuit a été spécialement réalisé pour commander l’activation d’une serrure électrique ou, en général, d’un quelconque appareil électrique grâce à une carte magnétique convenablement codée. Notre carte a donc comme entrée un signal provenant d’un lecteur de badge et comme sortie un relais. Toute la logique de contrôle est confiée à un seul intégré, pour la précision, un microcontrôleur ST6260 de chez SGS-Thomson. Nous avons choisi ce microcontrôleur pour deux raisons essentiellement : la disponibilité d’une mémoire EEPROM interne et les dimensions réduites du chip (2 x 10 broches), ce qui a permis la réalisation d’une carte compacte.
Parmi les principales caractéristiques du circuit, nous citerons la sûreté élevée de la codification utilisée (1000000 de combinaisons), et la possibilité de mémoriser dans l’EEPROM du microcontrôleur, les codes de plusieurs cartes, jusqu’à un maximum de dix.
Pour mieux en comprendre le fonctionnement, nous pouvons subdiviser notre système en quatre « éléments » fondamentaux que nous allons analyser individuellement.
Le premier élément du circuit est bien sûr, la carte magnétique.
Celle-ci représente la véritable unité d’activation puisqu’elle contient, mémorisé de façon permanente sur la bande magnétique, le code d’activation.
Le deuxième élément est constitué du lecteur à défilement de bande, c’est-à-dire par un appareil commercial (qui n’est pas à construire) et qui transforme le code, disponible sous forme de signal analogique sur la carte, en un code digital.
Le troisième élément est constitué du circuit de contrôle, dont les schémas électrique et pratique sont donnés dans cet article. Le circuit électronique réalise une double fonction : en phase de programmation, il apprend et mémorise le code provenant de la carte, tandis qu’en fonctionnement normal, il compare le code de la carte avec ceux stockés en mémoire et, éventuellement, agit sur le relais.
Le quatrième élément (immatériel) est représenté par le logiciel présent à l’intérieur du microcontrôleur.

Figure 1 : Organigramme du microcontrôleur.

Le microcontrôleur, après avoir initialisé ses lignes d’entrées et sorties, entre dans le « programme principal » ou il exécute en continu deux tests : la lecture du signal CLS et celle de l’état du DIP 2. Si ce switch est positionné sur ON, le microcontrôleur annule la mémoire EEPROM. Si la ligne CLS se place au niveau logique 0, le microcontrôleur abandonne le programme principal et exécute le sous-programme de lecture de la carte. Tandis que l’on commence à faire défiler le badge sur la tête de lecture, le lecteur relève une série de bits de synchronisation. Quand le caractère Start Sentinel est détecté, les cinq caractères suivants sont lus et mémorisés dans la RAM. L’opération se répète 9 fois de suite. La lecture se termine lorsque le caractère End Sentinel est détecté et quand le Card Load Signal repasse à « 1 ». Cette phase également achevée, le microcontrôleur doit vérifier l’exactitude du code installé et, si le test a un résultat positif, contrôler l’état du switch 1. Si ce dernier est placé sur ON, le microcontrôleur mémorise le code de la carte dans l’EEPROM, tandis que si le switch 1 est sur OFF, il compare le code lu avec ceux déjà présents dans la mémoire EEPROM. Le logiciel permet de mémoriser en EEPROM un maximum de 10 codes différents. Donc, si le code lu coïncide avec l’un des codes disponibles en EEPROM, le microcontrôleur ferme le relais pendant le temps imposé par le trimmer.

La carte magnétique
Procédons par ordre et occupons-nous tout de suite de la carte magnétique, en rappelant que nous nous sommes déjà largement occupés d’elle dans le précédent numéro de la revue.
En résumé, la carte dispose d’une bande magnétique destiné à mémoriser de façon permanente les données.
Ces dernières sont gravées sur trois différentes « pistes » complètement indépendantes les unes des autres et qui sont caractérisées par un protocole d’utilisation différent. Les dimensions de la carte, la position de la bande magnétique, celle des pistes et le protocole d’écriture — et par conséquent de lecture des données pour chaque piste — sont définies par le standard ISO 7811 auquel se conforment tous les principaux constructeurs de cartes et auquel nous avons fait référence, nous aussi, pour réaliser ce projet.
Notre application utilise toutefois une seule des trois pistes disponibles, la deuxième pour être précis.

La piste ISO 2
Cette piste, appelée également ABA (Américan Bankers Association), est caractérisée par une densité de 29,5 bits/cm et peut contenir un maximum de 40 caractères. Sur la piste ISO 2, chaque caractère est représenté par l’ensemble des cinq caractères binaires : les quatre premiers distingués par les symboles « b1 » à « b4 », expriment le caractère lui-même, tandis que le dernier, défini par le symbole « p », représente le test de parité du caractère comme indiqué dans le tableau 1. Précisons que 01011 représente le Start Sentinel, c’est-à-dire le caractère qui précède la zone contenant les données, tandis que 11111 coïncide avec le End Sentinel, caractère qui est utilisé pour indiquer la fin de cette même zone.
La piste ISO 2 ne permet de mémoriser que les nombres décimaux (de 0 à 9) puisque les caractères restants (de A à F en hexadécimal) sont utilisés comme caractères de contrôle. Le cinquième caractère indique si la parité est paire ou impaire en prenant le niveau logique 1 si la somme des caractères les plus significatifs est un nombre pair, ou le niveau logique 0 si le résultat de la somme est un nombre impair. Dans notre application, nous utilisons seulement onze des quarante caractères pouvant être mémorisés sur la piste ISO 2, de façon à pouvoir mémoriser à l’intérieur de l’EEPROM du circuit au moins une dizaine de codes.
Comme nous le verrons mieux par la suite, avec le type de codification utilisé nous atteignons 1000000 de combinaisons, nombre plus que suffisant pour garantir un niveau élevé de sécurité au système !
Une fois compris le mode de fonctionnement des cartes magnétiques, nous passons maintenant au second élément du dispositif, c’est-à-dire du lecteur magnétique.

Lecteur à défilement de bande
Pour notre application, nous avons utilisé un lecteur du commerce produit par KDE : le modèle à piste unique type KDR 1121. Ce modèle dispose d’une tête magnétique et d’un circuit spécial d’amplification et de décodage capable de lire les données présentes sur la piste ISO 2 du badge et de les transformer en impulsions digitales.
Le lecteur en question est relié au monde extérieur à travers cinq fils de différentes couleurs.
- Le fil rouge et le fil noir sont destinés à l’alimentation pour laquelle nous devrons appliquer une tension stabilisée de 5 volts en respectant la polarité : positif au rouge et négatif (masse) au noir.
- Le fil marron représente la sortie appelée CLS (Card Loading Signal) ; sur ce fil est présente une tension de 5 volts pendant le fonctionnement normal, potentiel qui descend à 0 pendant le passage du badge sur la tête de lecture.
- Le fil jaune et le fil orange correspondent respectivement aux sorties RCL (Read Clock) et RDP (Read Data Pulse).
En alimentant le lecteur et en faisant défiler le badge sur la tête de lecture, nous verrons le signal RCL passer par l’état logique haut (5 volts) à 0 (masse), autant de fois qu’il y a de bits mémorisés sur la bande magnétique. En pratique, le RCL représente le rythme d’impulsion de sortie du lecteur ; il prend une valeur logique (0) quand il relève un bit sur la carte. Le signal RDP représente la donnée : au front descendant de RCL, il faut lire simultanément le signal RDP pour savoir si le caractère mémorisé est un (1) ou un (0). Si le RDP est à l’état logique bas, cela signifie que le bit lu est un « 1 » et au contraire, si le RDP est à l’état haut, le bit lu est un « 0 ». Passons maintenant au troisième élément de notre dispositif de lecture, c’est-à-dire à la carte du microcontrôleur.

Tableau 1.

Un programmateur/lecteur multipiste de la société KDE.

Le lecteur monopiste KDE. Remarquez la tête de lecture visible au centre.

Le montage proposé dans cet article utilise comme élément principal un lecteur de carte produit par la société KDE et dont nous reproduisons ici les principales caractéristiques :
- Standard de lecture ISO 7811.
- Piste de travail ISO 2 (ABA).
- Méthode de lecture F2F (FM).
- Alimentation à 5 volts CC.
- Absorption maximum de 10 mA.
- Vitesse de lecture de 10 à 120 cm/sec.
- Durée de vie de la tête de lecture supérieure à 300 000 lectures.
- Température de fonctionnement de 0 à 50 °C.
- Dimensions 30 x 99 mm (hauteur 29 mm).
- Poids 45 grammes.

Le schéma électrique
Comme on peut le remarquer en observant le schéma électrique, le circuit a été réduit à sa plus simple expression !
Tout tient sur un seul et même circuit intégré, un ST6260 désigné par U2 dans le schéma. Pour fonctionner, le microcontrôleur U2 a besoin d’une tension de 5 volts entre les broches 9 (Vdd) et 10 (Vss), d’un quartz entre les broches 14 et 15, et d’un réseau R/C (R2/C6) sur la broche 16 de remise à zéro. Les deux LED, LD1 de couleur verte et LD2 de couleur rouge, sont directement contrôlées (sans l’interposition d’un transistor) par les broches 1 (PB0) et 2 (PB1) du microcontrôleur.
Le relais RL1 est contrôlé, à travers le transistor T1, par la broche 4 (PB2) de U2. Le trimmer R1 règle le temps d’activation du relais : de 0,5 seconde à un maximum de 30. Le curseur de R1 est directement relié à la broche 8 (PA0) du microcontrôleur, utilisé comme convertisseur analogique/digital pour lire la valeur de tension du trimmer. Les switchs, DIP 1 et DIP 2 sont respectivement reliés aux broches 19 (PC3) et 20 (PC2) du circuit intégré U2. Les trois sorties du lecteur à défilement de bandes sont reliées directement à trois broches du microcontrôleur. Pour la précision, le signal CLS va à la broche 13, le RCL est relié à la broche 12 et le RDP est relié à la broche 11. La carte doit être alimentée par une tension continue d’environ 12 volts qui est ensuite appliquée au relais RL1 et au régulateur U1. La diode D1 protège la carte contre d’éventuelles inversions de polarité, tandis que les condensateurs C3, C4 et C5 servent à lisser la tension présente en aval de U1 à 5 volts. L’analyse du schéma électrique achevée, donnons maintenant un coup d’oeil au logiciel (cod.MF67) utilisé dans notre application.

Figure 2 : Schéma électrique du contrôle d’accès à carte magnétique.

Figure 3 : Dessin du circuit imprimé échelle 1.

Figure 4 : Implantation des composants.

Liste des composants
R1 : 10 kΩ trimmer montage horizontal pour CI
R2 : 100 kΩ
R3 : 1 kΩ
R4 : 1 kΩ
R5 : 22 kΩ
R6 : 22 kΩ
C1 : 470 μF 16 V électrolytique
C2 : 100 nF multicouches
C3 : 100 μF 16 V électrolytique
C4 : 100 nF multicouches
C5 : 100 μF 16 V électrolytique
C6 : 1 μF 16 V électrolytique
C7 : 22 pF céramique
D1 : diode 1N4002
D2 : diode 1N4148
D3 : diode 1N4002
LD1 : LED rouge 5 mm
LD2 : LED verte 5 mm
U1 : circuit intégré 7805
U2 : microcontrôleur ST62T60
T1 : transistor BC547B
DIP1, DIP2 : DIP switch
RL1 : Relais 12 V 1 circuit
Q1 : quartz 6 MHz

Divers :
Support CI 2 x 10 broches
Circuit imprimé réf. GO17
Bornier 2 emplacements
Bornier 3 emplacements


Vues du circuit monté.

Le logiciel
Référons-nous au schéma de la figure 1. Le microcontrôleur, après avoir initialisé ses propres lignes d’entrées et sorties, entre dans le programme principal « main program » ou il exécute continuellement deux tests : le premier consiste à lire le signal CLS provenant du lecteur à défilement de bandes, tandis que le second concerne l’état du DIP 2. Si cet interrupteur est placé en position ON, le microcontrôleur annule la mémoire EEPROM. Si la ligne CLS se place au niveau logique 0, le microcontrôleur abandonne le programme principal et exécute le sous-programme de lecture de la carte. Lorsque l’on commence à faire défiler la carte sur la tête de lecture, le lecteur de piste relève une série de bits de synchronisme qui sont alors interprétés et proposés sur les lignes de sortie RCL et RDP. Les bits de synchronisation, même s’ils sont disponibles, sont d’une utilisation propre au décodeur interne du lecteur à défilement de bandes, et c’est la raison pour laquelle le logiciel doit les ignorer, ou mieux encore, lire les différents bits initiaux jusqu’à ce qu’il trouve une séquence de caractères égaux à « 11010 » qui coïncide avec le Start Sentinel. Si ce dernier est décelé, le logiciel doit lire les cinq caractères suivants, les mémoriser dans la RAM et répéter l’opération 9 fois.
Donc, en résumé, le programme lit et mémorise 9 caractères en format ISO2.
A ce moment-là, il faut attendre tant le caractère de End Sentinel que la sortie de la carte de zone de lecture de la tête : le Card Load Signal doit redevenir significatif.
Il faut à présent élaborer les données mémorisées pour extrapoler, à partir de chaque caractère lu, le chiffre correspondant, tout en contrôlant l’exactitude du bit de parité.
Cette autre phase terminée, notre microcontrôleur contiendra, dans une zone déterminée de la mémoire RAM, une séquence de 9 nombres décimaux, dont les trois premiers indiquent le code installé et les six autres représentent le code mémorisé sur la carte.
Le microcontrôleur doit vérifier l’exactitude du code installé et, si le résultat du test est positif, vérifier la position du switch 1. Si ce dernier est placé sur ON, le microcontrôleur mémorise le code de la carte dans l’EEPROM, tandis que si le DIP 1 est sur OFF, il compare le code lu avec ceux déjà présents dans la mémoire EEPROM. Le logiciel permet de mémoriser dans EEPROM un maximum de 10 codes différents.
Donc, si le code lu coïncide avec l’un des codes disponibles dans EEPROM, le microcontrôleur ferme le relais pendant le temps imposé par le trimmer.
Ainsi, l’analyse du logiciel étant également terminée, il ne nous reste plus qu’à nous occuper de la réalisation pratique de la carte.

Réalisation du montage
Dans cette optique, nous devons avant tout réaliser le circuit imprimé en utilisant la photo du typon donnée figure 4. En nous aidant de l’implantation des composants figure 3, nous commencerons par insérer et souder les différents composants sur la carte en veillant à la polarité des éléments polarisés tels que les diodes, les condensateurs chimiques et le régulateur U1.
Pour le circuit intégré U2, il est conseillé d’utiliser un support à 20 broches. On soudera ensuite, sur les emplacements prévus, un connecteur mâle à 5 broches destiné à recevoir le connecteur femelle du lecteur à défilement de bandes puis on insérera à sa place ledit connecteur de sortie du lecteur en respectant la polarité : le fil de couleur rouge doit être relié à la broche repérée « + ». Avec un morceau de câble à trois conducteurs, on reliera les deux LED aux trois emplacements de la carte, repérés « K1 », « K2 » et « A ».
Le montage ainsi terminé, nous pourrons procéder à un premier essai. Dans ce but, on reliera une alimentation continue de 12 volts (courant maximum d’environ 100 mA) aux bornes « + » et «- » du montage. Après quelques secondes, si tout fonctionne correctement, les deux LED devront s’allumer simultanément pendant environ 1 seconde. Elles indiqueront ainsi la fin de la phase d’initialisation du microcontrôleur et feront savoir s’il est opérationnel ou non.
On placera alors le switch 2 sur ON un instant afin d’annuler la mémoire EEPROM de U2. On se procurera une ou plusieurs cartes correctement programmées et on placera le switch 1 sur ON. On fera défiler la carte dans la fente du lecteur prévue à cet effet : à la fin de chaque passage, la LED rouge doit s’allumer pendant environ 1 seconde pour indiquer la bonne mémorisation du code.
Rappelons que ce dispositif permet de mémoriser un maximum de dix codes différents. Après avoir mémorisé toutes les cartes possibles, si l’on fait passer dans le lecteur une ou plusieurs cartes magnétiques supplémentaires codées différemment, les codes relatifs viendraient occuper la dixième zone de mémoire en effaçant, bien entendu, le code enregistré précédemment.
On replace à présent le DIP 1 en position d’arrêt, c’est-à-dire OFF, et on repasse la ou les cartes sur la tête de lecture du lecteur. Si tout va bien, les cartes dont le code a été mémorisé en premier provoquent la fermeture du relais et l’allumage simultané de la diode verte. La phase de programmation est ainsi terminée et les codes des cartes sont mémorisés de façon permanente dans le microcontrôleur.

L’installation
En règle générale, si le lecteur de carte peut être placé en zone non protégée, il est préférable de placer la carte de contrôle dans une zone protégée. Supposons, par exemple, que nous utilisions ce circuit pour débloquer la serrure électrique de la porte de la maison. Le lecteur pourra être installé en dehors de l’habitation (en zone non protégée), dans un endroit toutefois suffisamment abrité des intempéries et de l’humidité.
Les fils de liaison traverseront les murs de la maison pour rejoindre la zone protégée (l’intérieur de la maison) où sera installée la carte électronique de commande.

Quelles cartes utiliser ?
Le système de lecture utilisé dans cette réalisation est conforme au standard ISO 7811.
Dans notre cas, on utilise exclusivement la deuxième piste, appelée ABA (American Bankers Association). L’application prévoit que sur cette piste soit mémorisé un « mot » composé de 11 caractères utilisant chacun 5 bits. Le premier et le dernier caractère délimitent la zone des données et doivent coïncider avec le caractère Start Sentinel et avec le caractère End Sentinel relatifs au protocole ISO 2. Les trois caractères mémorisés après le Start Sentinel indiquent le « code installation » qui pour notre dispositif est égal au nombre décimal « 101 ». Les six caractères suivants représentent le véritable code de la carte, c’est-à-dire qu’ils expriment ce nombre décimal, de 000000 à 999999, qui est mémorisé à l’intérieur du microcontrôleur.

Pour conclure
Le circuit proposé dans ces pages peut avoir de nombreuses applications, limitées à la seule imagination du lecteur. En tous les cas, afin d’obtenir un fonctionnement correct du circuit dans toutes les situations, il est conseillé de respecter quelques règles que l’on peut ainsi résumer :
- le lecteur à défilement de bandes, s’il est placé à l’extérieur, doit être protégé des intempéries car il n’est pas étanche,
- la carte magnétique ne doit pas être pliée ou placée à proximité de forts champs électromagnétiques,
- les fils de liaison entre le lecteur et la carte ne doivent pas dépasser une longueur de deux mètres.
Dans les prochains mois, nous essayerons de présenter d’autres projets utilisant les cartes magnétiques.
Nous attendons à ce sujet des propositions ainsi que des suggestions de la part des lecteurs en nous mettant dès maintenant à leur disposition pour la réalisation de circuits de ce type, pourvu qu’ils soient d’un intérêt général.

0 commentaires:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...