Un monayeur electronique a carte a puce

Dans cet article, nous vous proposons un système de contrôle électronique pour la gestion d’unités de temps, adapté aux distributeurs automatiques de services payants. L’insertion, dans un lecteur, d’une carte à puce dûment chargée en unités, actionne un relais qui reste activé tant que la carte dispose d’unités à consommer ou tant qu’elle n’est pas extraite du lecteur. Les applications sont tellement nombreuses que nous laissons libre cours à votre imagination !



Voici un appareil très utile pour tous ceux qui ont la charge de la gestion de distributeurs automatiques de services dont le fonctionnement doit être limité dans le temps. Cela peut être des appareils à bronzer, des téléphones, des ordinateurs, des jeux vidéo, des aspirateurs pour stations services, etc.

Comment ça marche ?
Il s’agit d’un système de contrôle pour de petites machines automatiques, basé sur des cartes à puce rechargeables.
Le relais de sortie n’est pas activé durant une période déterminée, comme dans certains systèmes, mais à l’introduction d’une carte dans l’appareil. Il reste ensuite dans cet état, tant que la carte n’est pas extraite ou, du moins, jusqu’à l’épuisement du crédit d’unités disponibles. En effet, le crédit est automatiquement débité d’une unité de temps (déterminée en phase de programmation entre 5 et 255 secondes).
Le système est destiné à l’automatisation d’appareils destinés au public et il est très pratique car il évite d’avoir recours aux pièces de monnaie ou aux traditionnels jetons. Cela permet aux clients d’accéder aux différents services un certain nombre de fois, ou pour un temps donné, simplement en acquérant des crédits (unités de temps). Lorsque le crédit est épuisé, il suffit de faire recharger la carte.
Précisons que, par rapport à d’autres monnayeurs analogues où les unités sont décomptées, les cartes à puce utilisées dans ce monnayeur sont, en plus, également rechargeable d’un certain nombre d’unités (0 à 255). La différence est dans le fait que, dans cette application, une unité de temps n’est pas débitée simplement à l’introduction et à l’extraction de la carte dans le lecteur, mais après l’introduction dans le lecteur, le microcontrôleur procède au comptage du temps passé, débitant une unité à chaque intervalle de temps programmé pour cela. En pratique, si le dispositif est préparé (nous verrons comment par la suite) pour disposer d’unités d’une durée de 5 secondes, si la carte reste introduite une minute, celle-ci perd 12 unités (60 : 5 = 12), pour 2 minutes cela fait 24 unités, etc. En résumé, à chaque introduction de la car te dans le lecteur, le système débite une unité et active le relais pour la durée de l’unité de temps imposée.
Passé ce délai, le système peut désactiver le relais si la car te a été extraite ou si le nombre d’unités disponibles est arrivé à zéro. Le système peut également laisser le relais actif (pour l’unité de temps imposée) et débiter d’une unité le crédit de la carte. En pratique, le crédit de la carte est débité à chaque unité de temps utilisée jusqu’à l’extraction de la carte du lecteur. Lorsque le crédit est épuisé, le circuit signale à l’utilisateur qu’il faut procéder à une recharge, ce qui revient à devoir acquérir de nouvelles unités.

Figure 1 : Schéma électrique du circuit principal du monnayeur.

Figure 2 : Schéma d’implantation des composants du circuit principal du monnayeur.

Figure 3 : Circuit imprimé du circuit principal du monnayeur, côté pistes, à l’échelle 1.

Liste des composants de l’unité de base
R1 : 4,7 kΩ
R2 : 10 kΩ
R3 : 2,2 kΩ
R4 : 1 kΩ
R5 : 10 kΩ
R6 : 10 kΩ
R7 : 10 kΩ
R8 : 10 kΩ
R9 : 1 kΩ
R10 : 10 kΩ
R11 : 1 kΩ
R12 : 1 kΩ
R13 : 1 kΩ
R14 : 10 kΩ
R15 : 10 kΩ
C1 : 220 μF 25 V chimique
C2 : 470 μF 16 V chimique
C3 : 220 μF 16 V chimique
C4 : 100 nF multicouche
C5 : 22 pF céramique
C6 : 22 pF céramique
C7 : 100 nF multicouche
D1 : Diode 1N4007
D2 : Diode 1N4007
LD1 : LED rouge 5 mm
LD2 : LED verte 5 mm
U1 : Régulateur 7805
U2 : PIC16F84-04 (MF288)
T1 : Transistor NPN BC547B
T2 : Transistor NPN BC547B
T3 : Transistor mosfet BS250
Q1 : Quartz 4 MHz
RL1 : Relais 12 V 1 RT
DS1 : Dip switch 2 circuits
BZ : Buzzer 12 V avec oscillateur

Divers :
- Bornier 2 emplacements (x 2)
- Connecteur 10 broches
- Support ci 18 broches
- Circuit imprimé réf. S288
Sauf indication contraire, toutes les résistances sont des 1/4 W 5 %)


Préparation de la carte
Ce que vous venez de lire est la synthèse du fonctionnement du système décrit dans ces pages. Nous avons dit que le système fonctionne en lecteur de cartes et procède également à l’écriture des données d’utilisation lorsque les unités sont débitées. Il faut préciser que, pour être utilisée, une carte doit être initialisée. En d’autres termes, afin d’obtenir une car te compatible avec notre système de prépaiement électronique, il faut que cette carte soit configurée avec les informations appropriées.
La première de toutes ces informations, est le Programmable Security Code (code programmable de sécurité).
Mais pas seulement, car après ce formatage, il est prévu une autre opération de chargement des unités de crédit. Il faut noter que l’initialisation est effectuée une seule fois ; par contre la recharge est effectuée chaque fois que cela est nécessaire (chaque fois que la totalité du crédit est épuisée). Avant la préparation des futures cartes, il faut introduire dans le lecteur puis extraire une troisième carte d’initialisation, la Master Temps (les deux premières sont la Master PSC et la Master Crédit), qui communique au microcontrôleur la durée à attribuer pour chaque unité de crédit, autrement dit, la durée pour laquelle une unité doit être débitée.
Il faut se rappeler que, pour le système, toutes les cartes ne sont pas identiques et qu’il faut obligatoirement utiliser celles de 2 kbit basées sur le SLE4442 de Siemens. Ces cartes doivent être préconfigurées pour la procédure d’initialisation caractérisée par un PSC (code programmable de sécurité) égal à FF FF FF en hexadécimal.
Ne tentez pas d’utiliser d’autres cartes compatibles mais comportant un PSC différent, car le programme que nous avons mis au point exécute l’opération d’initialisation en supposant que le PSC est FF FF FF. L’utilisation d’autres car tes aurait pour résultat, si les deux codes sont différents, à la troisième tentative de comparaison, de les rendre inutilisables.

Les relations entre le microcontrôleur et les cartes
Le coeur du système est évidemment le microcontrôleur PIC16F84 ou PIC16C84 qui s’occupe de la gestion du dialogue avec les cartes ISO7816 introduites dans le lecteur, en lecture et en écriture. Le logiciel permet, en outre, 4 modes opératoires qui sont validés suivant le type de carte introduite dans le lecteur et qui sont :
1 - Utilisation normale
2 - Initialisation
3 - Chargement des unités
4 - Paramétrage de la durée d’une unité

Le mode “utilisation normale”
Le mode “utilisation normale” est celui où le circuit fonctionne comme un prépaiement électronique à unités de temps : l’introduction de la carte, préalablement initialisée et chargée, active le relais de sortie, qui reste activé tant que la carte reste dans le lecteur ou jusqu’à ce qu’elle soit complètement déchargée. Dans ce dernier cas, le buzzer émet deux bips consécutifs.
Pour garantir la sécurité du système, le PIC16F84 réduit d’une unité le crédit disponible et seulement après que le crédit ait été diminué (signifiant que l’opération d’écriture dans la carte s’est correctement effectuée) le relais est activé. Ce contrôle a été prévu car, de par sa nature, la carte de 2 kbit peut toujours être lue, mais pour l’écrire, il faut comparer le PSC.
Vous serez étonnés du sens de ce propos, nous allons donc l’expliquer. Si nous ne procédions pas à l’écriture en mémoire de la diminution du crédit, le système pourrait être activé par l’introduction d’une carte apparemment identique, prévue pour être utilisée par un système analogue mais ayant un PSC différent. Elle contiendrait donc des données de crédit dans sa mémoire. Pour éliminer ce risque, en écrivant en premier lieu la déduction d’une unité, nous sommes certains de l’encaissement et, surtout, que la carte est effectivement adaptée à notre système.
Si nous n’utilisions pas cette chronologie, la comparaison du code de sécurité programmable de la “mauvaise carte” donnerait une issue négative et, après les trois tentatives fatidiques, elle deviendrait inutilisable.
En somme, avant utilisation, il faut que la carte ait été adaptée à notre système, donc formatée. Il faut introduire le crédit disponible pour le service associé au prépaiement. Le formatage (initialisation) permet de mettre à zéro les données de la carte en substituant le PSC original avec celui prélevé directement dans la mémoire de programme du microcontrôleur.
En plus du microcontrôleur PIC16F84 programmé, il faut également se procurer le lot de cartes nécessaires à toutes les procédures : la Master PSC pour l’initialisation, la Master Crédit pour le rechargement des unités et la Master Temps qui, à la différence des deux premières, charge dans l’EEPROM du microcontrôleur la durée des unités.

Vue sur le microcontrôleur et sur le relais du circuit principal du monnayeur.

Le mode “initialisation”
Voyons à présent la phase qui concerne la préparation de la carte à puce à l’utilisation avec le système. Etant donné que le PSC est adapté à celui du microcontrôleur elle est immédiatement reconnue à chaque application suivante.
Sachez que la carte reste vide, tout au moins pour le moment. Notez que le fonctionnement normal est obtenu en alimentant simplement le circuit sans rien faire d’autre. Le mode initialisation est activé en introduisant dans le lecteur une carte appelée Master PSC, qui est caractérisée par la présence de la donnée 0A (hexadécimal) aux adresses mémoire 50 et 51 (hexadécimal).
Pour éclaircir les choses, sachez que chaque fois que le PIC16F84 détecte l’introduction d’une carte dans le lecteur (il utilise pour cela la ligne RB1, relative au contact 2), il va chercher les données dans les zones situées aux adresses 50, 51, 52 et 54 hexadécimal et essaie les quatre modes possibles de fonctionnement en fonction de celui qu’il trouve : si dans la zone 50 hexadécimal il ne trouve pas 0A, il ignore la lecture des autres zones 51, 52 et 54 car la carte lue est bien celle de l’utilisateur (initialisée ou non). Le microcontrôleur démarre alors la procédure normale de lecture des unités restantes, fait la comparaison du PSC et commence à décrémenter lesdites unités.
Par ailleurs, une note acoustique est générée par le buzzer et le relais est activé.



La carte Master PSC
Si, par contre, la lecture de la zone 50 donne 0A (valeur des cartes Master), le microcontrôleur procède à la lecture et teste l’adresse 51 hexadécimal, s’il trouve également 0A, la carte présente dans le lecteur est la Master PSC. Le microcontrôleur commence alors la partie du programme qui procède à l’initialisation, ce qui peut être résumé par ceci : la LED rouge LD1 est allumée, une impulsion sort de la broche 11 et polarise le transistor T1 activant le buzzer qui émet une brève note. Dès à présent, et tant que la carte Master PSC n’est pas extraite et réintroduite, toutes les cartes introduites dans le lecteur seront soumises à l’initialisation.
A chaque nouvelle insertion, le microcontrôleur procède à la comparaison du code de sécurité programmable (PSC) avec celui installé par défaut sur la carte. Rappelez-vous qu’il attend FF FF FF et que, si la carte n’a pas cette valeur de PSC, après trois tentatives, elle est rendue inutilisable. Ensuite, le microcontrôleur écrit le nouveau PSC dans la mémoire EEPROM de la carte.
Cette opération est confirmée par un son émis par le buzzer. Il faut se rappeler que chaque PIC16F84 a un code personnalisé, différent des autres.
Si nous extrayons la carte et si nous en introduisons une nouvelle, le système reprend le processus d’initialisation et ce, tant que la carte Master PSC n’est pas réintroduite dans le lecteur pour lui indiquer qu’il doit terminer la procédure. Si c’est le cas, la broche 6 passe au niveau haut, la LED rouge s’éteint et, simultanément, le buzzer émet une note pour confirmer l’abandon de la procédure d’initialisation.

Le mode “chargement des unités”
La carte Master Crédit
La phase d’initialisation terminée, le microcontrôleur retourne au programme principal et attend l’introduction d’une car te. Logiquement, après le formatage (préparation) des cartes, il convient de procéder au chargement des unités, procédure qui s’effectue en introduisant d’abord dans le lecteur la carte Master Crédit. Cette dernière est reconnue car, en plus d’avoir la valeur 0A dans la zone mémoire 50 hexadécimal (symbole de l’élément Master), elle a aussi cette même valeur à l’adresse 52 hexadécimal.
Le PIC16F84, reconnaissant la Master Crédit, active la partie du programme relative à l’allumage de la LED rouge LD1 et active le buzzer. Puis, il lit l’état de la zone mémoire située à l’adresse 53 hexadécimal, car c’est dans cette zone que se trouve le nombre d’unités qui doivent être chargées.

Note : Le nombre d’unités est fixe pour chaque carte Master Crédit. Ce nombre d’unités sera enregistré par votre fournisseur au moment de la préparation de votre commande. Vous devez donc spécifier le nombre d’unités que vous désirez voir charger sur chaque carte, en choisissant entre 3 et 255.

Après extraction de la carte Master Crédit, il est possible d’insérer les cartes précédemment formatées (PSC = PSC du microcontrôleur) pour effectuer leur chargement (ou rechargement) en unités de crédit. Les données concernant les unités de crédit, prélevées de la zone 53 hexadécimal de la Master Crédit, sont gardées en RAM du PIC16F84 et sont écrites dans l’EEPROM de la carte mais à l’adresse 40 hexadécimal. Si l’opération se passe bien, le circuit confirme en émettant une note acoustique par l’intermédiaire du buzzer (1 carte = 1 bip). Il faut alors extraire la car te et en insérer une autre.
Pour terminer la procédure, il faut à nouveau insérer la carte Master Crédit. C’est cette action qui détermine la sortie de la sous-routine de recharge et le retour au programme principal. Le buzzer émet un nouveau bip et la LED s’éteint. Le chargement des unités achevé, le système peut travailler avec les cartes ainsi préparées.

Le mode “paramétrage de la durée d’une unité”
La carte Master Temps
Toutefois, il manque encore un paramètre : le temps alloué à chaque unité de crédit. Celui-ci se charge dans l’EEPROM du microcontrôleur par l’intermédiaire d’une procédure qui consiste à insérer la troisième car te dans le lecteur, la Master Temps. Cette car te contient l’information nécessaire à cette programmation.
Après l’avoir introduite dans le lecteur, le microcontrôleur détecte sa présence et va chercher la donnée 0A dans la zone mémoire 54 hexadécimal.
Si cette valeur est trouvée, il procède à l’acquisition du nombre correspondant à la valeur en secondes de chaque unité de temps (5 à 255) et le transfère dans sa propre mémoire, puis attend que l’utilisateur retire la carte pour terminer la procédure.

Note : La valeur de l’unité de temps est fixe pour chaque car te Master Temps. Cette valeur sera enregistrée par votre fournisseur au moment de la préparation de votre commande. Vous devez donc spécifier la valeur que vous désirez voir charger sur chaque carte, en choisissant entre 5 et 255.

L’organigramme du programme
La gestion du monnayeur, utilise un microcontrôleur PIC16F84 dans lequel est chargé un programme principal en mesure de commander trois sous-programmes.
Le but est de permettre le déroulement des procédures d’initialisation et de charge ou de recharge en unités de temps des cartes utilisateur, l’introduction de la valeur de ces unités de temps dans la mémoire du microcontrôleur ainsi que l’utilisation normale du système. Trois cartes spéciales sont indispensables à ces opérations : la Master PSC, la Master Crédit et la Master Temps.
Voyons comment fonctionne le microcontrôleur.
Après la mise en service et l’initialisation des entrées/sorties (I/O) le programme teste la présence d’une carte à puce, grâce au contact de détection du lecteur, qui porte, au niveau logique 0, la broche 7 (RB1) dès que l’insertion d’une carte est confirmée.
A ce moment, une lecture de la zone 50 hexadécimal de la puce de la carte est effectuée afin de voir si la valeur 0A, qui identifie une carte Master, est présente. Si cette valeur est absente, le programme comprend qu’il est en présence d’une car te utilisateur ou autre et la première chose qu’il effectue est la comparaison de son PSC (code programmable de sécurité) avec celui présent dans le microcontrôleur.
Si les deux PSC correspondent, la lecture des unités disponibles est réalisée.
A ce moment, si au moins une unité est disponible, la valeur d’une unité est retranchée, sinon, le programme retourne au début, à la recherche de la présence d’une carte.
Si des unités sont disponibles, il y a deux situations possibles :
- S’il n’y a qu’une seule unité disponible sur la carte utilisateur, la soustraction de l’unité de départ de cette dernière ramène la valeur à zéro, le buzzer émet trois bips consécutifs en cadence rapide.
- Si, après soustraction d’une unité, il reste encore des unités disponibles, le buzzer émet un seul bip.
Dans chaque cas, lors du passage dans le lecteur et de la soustraction d’unités disponibles en mémoire, s’il se passe quelque chose d’anormal à la vérification, le buzzer émet un bip cycliquement, jusqu’à ce que la carte, considérée comme invalide, soit extraite du lecteur. Si, par contre, tout se passe bien, le relais est activé jusqu’à l’épuisement de la totalité des unités ou l’extraction de la carte.
Tout ce que nous venons d’évoquer concerne le mode de fonctionnement normal, mais voyons ce qui se passe en mode programmation.
Ce dernier mode est subdivisé en trois routines : une pour l’initialisation, l’autre pour la recharge des cartes utilisateur et la dernière pour la configuration de la durée de chaque unité de crédit.
L’initialisation commence si, après l’insertion de la carte dans le lecteur, le système trouve la valeur 0A dans la zone mémoire située en 50 hexadécimal et qui correspond à la question “Carte Master ?”. Si la réponse est “oui” la zone 51 hexadécimal est à son tour testée.
Si la même valeur 0A est trouvée, cela signifie que nous avons à faire à une carte Master PSC. Dans ce cas, la procédure d’initialisation est activée.
Lorsque l’on rentre dans cette procédure, la LED rouge de programmation est allumée et le buzzer émet un bip long, puis attend l’extraction de la carte et l’introduction d’une nouvelle carte avec un PSC égal à FF FF FF. Si la carte Master PSC est à nouveau introduite dans le lecteur, l’opération est prématurément terminée.
La LED rouge s’éteint et le buzzer émet encore une note acoustique longue. Le sous-programme renvoie au programme principal pour la lecture de la présence d’une nouvelle carte.
Si au lieu de cela, une carte vierge était introduite dans le lecteur, le microcontrôleur procède à la comparaison du code de sécurité avec celui enregistré par défaut sur cette dernière (FF FF FF). Ensuite, le microcontrôleur écrit dans l’EEPROM de la carte à puce le code de sécurité qu’il détient en mémoire, de manière à l’initialiser. Ceci fait, il attend l’extraction et l’insertion d’une nouvelle carte à initialiser.
Comme nous l’avons déjà dit, la procédure se termine dès que la car te Master PSC est à nouveau introduite dans le lecteur.
Voyons enfin la phase de charge ou de recharge en unités de temps d’une ou plusieurs cartes à puce à l’aide de la carte Master Crédit.
Partant du programme principal, une fois la présence d’une carte détectée, l’adresse 50 hexadécimal et testée par le microcontrôleur pour chercher la valeur 0A. Si cette valeur est trouvée, le programme comprend qu’il s’agit d’une carte Master. Ensuite, il teste l’adresse 51 hexadécimal. Il ne doit rien y trouver. Par contre, à l’adresse 52 hexadécimal, s’il trouve encore 0A, cela lui indique que c’est une carte Master Crédit qui est introduite dans le lecteur. La procédure de recharge démarre alors par l’illumination de la LED rouge de programmation et l’émission d’un long bip par le buzzer. Dans la mémoire de la carte à puce (adresse 53 hexadécimal), le programme lit le nombre d’unités à recharger. Cette valeur est placée en RAM dans le microcontrôleur, puis le programme attend l’extraction de la carte Master Crédit et l’introduction d’une carte utilisateur déjà initialisée pour la charger ou la recharger.
La comparaison du PSC est effectuée pour pouvoir ensuite écrire sur la carte utilisateur si le résultat est positif (PSC de la carte = PSC du microcontrôleur).
Le résultat est positif et le circuit transfère dans la zone 40 hexadécimal les données relatives au nombre d’unités, en effectuant la recharge.
A ce moment, l’opération est terminée, le système attend l’extraction de la carte et l’introduction d’une nouvelle carte.
Dès la réintroduction de la carte Master Crédit, le microcontrôleur sort de la phase de recharge, fait émettre un bip long au buzzer, éteint la LED rouge et retourne au programme principal.
A l’introduction de la carte Master Temps (0A à l’adresse 54 hexadécimal) dans le lecteur, le microcontrôleur effectue un appel de la routine gérant le temps. En premier, la LED rouge s’allume, puis le buzzer émet un bip long, le microcontrôleur lit la durée de l’unité de temps introduite en fabrication dans la puce de la carte Master Temps, l’affiche en format décimal sur l’afficheur (5 à 255) et la sauvegarde dans sa propre mémoire EEPROM. Le microcontrôleur teste à nouveau la présence de la carte et, dès que celle-ci est extraite, il éteint la LED rouge, fait émettre un nouveau signal acoustique au buzzer, efface l’afficheur et retourne au programme principal.


Le programme principal assure la gestion de l’ensemble du système. Il commande les sous-programmes nécessaires à l’initialisation et à la charge ou à la recharge des cartes utilisateur, la lecture et l’enregistrement de la valeur des unités de temps, la lecture des cartes utilisateur valides, l’affichage des données de programmation ou des unités de temps encore disponibles sur les cartes utilisateur, la LED de signalisation, le buzzer et le relais de sortie.


Les routines d’initialisation et de recharge sont activées par l’intermédiaire de deux cartes à puce spéciales que nous avons appelées Master PSC et Master Crédit. Le temps à associer aux unités est communiqué au microcontrôleur par l’intermédiaire d’une carte spéciale que nous avons appelée Master Temps.





Petit récapitulatif
On peut résumer brièvement, pour ceux que les descriptions techniques rebutent, en disant que, pour faire fonctionner le monnayeur, il est nécessaire de disposer, outre un nombre quelconque de cartes utilisateur, de 3 cartes préprogrammées destinées aux opérations de formatage desdites cartes utilisateur et à leur chargement ou rechargement :
- la carte Master PSC, destinée à enclencher le processus de programmation des cartes utilisateur,
- la carte Master Crédit, destinée à fixer le nombre d’unités de crédit qui sera inscrit sur les cartes utilisateur,
- la carte Master Temps, destinée à donner une valeur de durée à chaque unité de crédit inscrite sur les cartes utilisateur. Cette valeur sera écrite dans la mémoire du microcontrôleur.
Ces 3 car tes pourront être préprogrammées par votre fournisseur à votre demande et selon vos critères.
Bien entendu, vous pouvez commander autant de Master Crédit et de Master Temps que vous désirez avec toutes les valeurs qui vous conviennent, pourvu qu’elles soient comprises entre 3 et 255 pour la Master Crédit et entre 5 et 255 pour la Master Temps.

Le fonctionnement du monnayeur
Voyons ce qu’il advient en mode de fonctionnement normal, c’est-à-dire en situation réelle, lorsque le système doit gérer l’automatisme concerné.
Petite synthèse du fonctionnement Lorsque l’on introduit une carte utilisateur, le microcontrôleur cherche mais ne trouve pas la donnée 0A dans la zone 50 hexadécimal. Il déduit alors qu’il n’est pas en présence d’une carte Master. Il lit donc l’adresse 40 hexadécimal, vérifie la présence des unités, il en soustrait une en comparant le PSC et active le relais RL1.

Allons-y pour le détail
Avec quelques précisions vous comprendrez mieux ce qui se passe exactement dans le système.
Le relais reste activé, non pas durant deux, trois secondes ou plus, mais jusqu’à ce que la carte utilisateur soit retirée du lecteur, ou jusqu’à épuisement des unités disponibles. Ce qui correspond, en temps, à la durée d’une unité multiplié par le nombre d’unités introduites dans la puce de la carte utilisateur lors de la procédure de formatage.
Par exemple, une carte neuve de 200 unités de 10 secondes sera épuisée en 2 000 secondes (23 minutes et 20 secondes).
Au moment de l’insertion de la carte utilisateur, une routine force l’allumage de la LED rouge, commande l’émission d’un bip et commande au circuit d’affichage d’afficher le crédit disponible (nombre d’unités). Ensuite, cette routine compte les secondes de la première unité et, à la fin de chaque unité, répète les mêmes opérations (LED + bip + affichage) et ainsi de suite à chaque fois que passe une unité. Si la carte à puce utilisateur est chargée avec des unités de 5 secondes, cela se reproduit toutes les 5 secondes ; de 10, toutes les 10 secondes, etc.
Les contacts du relais peuvent être utilisés pour commander un système électrique ou un moteur, mais pas une serrure électrique, étant donné que le relais peut rester activé durant un temps qui peut être assez long.
Utilisez la sortie “utilisation” comme un banal interrupteur, en veillant toutefois à ne pas dépasser 10 ampères sous 250 volts avec le modèle de relais utilisé sur la platine. Bien entendu, le relais de la carte peut commander un relais de puissance.



Interface vers le lecteur et protocole de communication
Le protocole de communication utilise les lignes RB2, RB4 et RB6 (broches 8, 10 et 12 du microcontrôleur). Ces lignes gèrent respectivement les canaux I/O (entrée/sortie) des données, l’horloge et la remise à zéro (reset) et sont connectées (au travers des résistances R13, R12 et R9) directement la prise lecteur marquée Memory Card sur le schéma.
L’horloge présente sur la broche 10 un signal généré en interne par le PIC16F84 avec un temporisateur programmable utilisé pour le déclenchement des opérations read/write (lecture/écriture). La broche 12 est utilisée comme sortie et génère les impulsions de reset (remise à zéro) à la demande du programme. La broche 8 est initialisée comme entrée/sortie (I/O) à collecteur ouvert et dispose d’une résistance pull-up (R10) pour fixer un niveau “1”.
Nous avons écrit le programme de gestion de façon à ce qu’il reconnaisse la condition logique du contact N/F (Normalement Fermé) de détection de la présence d’une carte dans le lecteur. Au repos, les points 1 et 2 sont fermés et il y a pratiquement un court-circuit entre le +5 volts et la broche 7 (ligne RB1 du microcontrôleur). La présence d’une carte ouvre le contact et la broche 7 passe au niveau bas, grâce à la résistance R3, indiquant au microcontrôleur qu’il doit démarrer les opérations.
Lorsque cela se produit, la ligne RB7 (broche 13) passe au niveau bas et le transistor de puissance T3 (IRF9520, IRF9530 ou similaire) devient conducteur et achemine le +5 volts sur le contact 1 du lecteur, relié au point d’alimentation de la logique interne de la carte à puce.



Le circuit d’affichage
Dans ce projet nous utilisons le bus marqué OUT, composé des sorties A et B, qui utilisent les lignes RA0 et RA1 pour communiquer avec le système d’affichage destiné à indiquer le nombre d’unités disponibles mis à jour à chaque instant. Le bus comporte en fait quatre lignes, deux lignes pour les données (A et B) et deux pour l’alimentation 5 volts (+ et –) du circuit d’affichage.
Les lignes A et B réalisent une liaison série synchrone pour laquelle une ligne est réservée à la transmission des données du microcontrôleur au circuit de décodage (U1) de l’afficheur à trois digits, l’autre sert pour la transmission du signal d’horloge qui cadence la communication avec le monnayeur.
Il n’y a pas grand-chose à dire de l’interface d’affichage, dans la mesure où elle est bâtie autour d’un circuit intégré C-MOS de National Semiconductor, le MM5450N, spécialement conçu pour le contrôle d’afficheurs à LED à anode commune.
Les données qui déterminent l’état logique (0 = LED allumée ; 1 = LED éteinte) arrivent en série sur la ligne A.
Ensuite, elles sont traitées par U1 et conservées jusqu’à la prochaine réception.
Un petit potentiomètre ajustable sert à régler la luminosité de l’afficheur.
Cela dit, il est possible d’expliquer comment fonctionne l’afficheur en fonction des diverses opérations réalisées par le monnayeur et nous le faisons en disant avant tout qu’il ser t durant la recharge des unités et, naturellement, chaque fois qu’un utilisateur introduit une carte dans le lecteur pour accéder au service qu’il commande.
Dans le premier cas, et après la mise en route du circuit de base (le monnayeur), les trois afficheurs sont éteints car aucune donnée n’arrive sur la ligne de données A. Tout demeure au repos durant l’éventuelle initialisation de la carte (avec la Master PSC) car un affichage n’est d’aucune utilité.
Durant la procédure de rechargement des unités, par contre, il est nécessaire d’avoir certaines indications. Dès que la Master Crédit est introduite pour la première fois, donc au début de la procédure, la LED rouge s’allume et le buzzer émet un bip, alors l’afficheur indique le nombre d’unités qui seront ensuite chargées dans chaque carte déjà formatée et qui seront introduites dans le lecteur jusqu’à la fin des opérations.
La lecture correcte est obtenue en positionnant l’afficheur de manière à ce que le driver MM5450 soit situé en haut, étant donné que le digit de droite est le moins significatif. Le digit central indique les dizaines, et celui de gauche les centaines. Chaque fois qu’une carte à charger est introduite dans le lecteur, le buzzer émet deux bips de suite mais rien ne change dans l’affichage des unités.
L’affichage reste verrouillé sur le nombre d’unités à charger. Au terme des opérations de recharge, il faut réintroduire la carte Master Crédit et on termine ainsi la phase de recharge. Le buzzer retentit pour confirmer cette opération et l’afficheur s’éteint.
Si l’on insère la carte Master Temps dans le lecteur, l’afficheur indique la durée (exprimée en secondes) de chaque unité de temps. Cette durée est ensuite copiée dans l’EEPROM du microcontrôleur du monnayeur. Lorsqu’on retire cette car te, l’afficheur s’éteint et tout est prêt pour l’utilisation normale du système.
Quand un utilisateur introduit une carte dans le lecteur, l’afficheur indique le nombre d’unités restant disponible.
Ainsi, si l’utilisateur dispose d’une carte de 10 unités, l’afficheur indique 009 ; si nous avons une carte de 100 unités, il apparaît 099 et ainsi de suite.
A chaque introduction, le buzzer du monnayeur émet un bip et l’afficheur s’éteint dès que la carte est extraite, car cela indique que l’utilisateur s’est déjà éloigné du distributeur automatique et qu’il n’est donc plus nécessaire de maintenir l’information.
Il faut noter que si une carte ne contenant plus d’unités est introduite dans le lecteur, il ne se passe rien de significatif.
Le buzzer reste muet, le relais reste au repos et l’afficheur est évidemment éteint.
Par contre, lorsqu’une carte dans laquelle il reste une seule unité disponible, est introduite dans le lecteur, l’afficheur indique 000 et le buzzer émet deux bips pour indiquer qu’il faut procéder à une recharge.
Après l’introduction d’une car te, le comptage du temps démarre et après la soustraction de la première unité, au terme de chaque fraction de temps l’afficheur soustrait une unité, indiquant ainsi combien il reste d’unités à dépenser. Lorsque toutes les unités de temps disponibles sont épuisées, l’afficheur passe à zéro, le relais revient au repos et le buzzer émet deux bips consécutifs.

Figure 4 : Schéma d’implantation de l’unité d’affichage.

Figure 5 : Circuit imprimé de l’unité d’affichage, côté pistes, à l’échelle 1.

Liste des composants du circuit d’affichage
R1 : 47 kΩ trimmer montage horizontal
R2 : 4,7 kΩ
R3 : 4,7 kΩ
C1 : 100 nF céramique
C2 : 100 nF céramique
U1 : Circuit intégré MM5450
DIS1 : Afficheur 7 segments
DIS2 : Afficheur 7 segments
DIS3 : Afficheur 7 segments

Divers :
- Support 40 broches
- Câble plat 4 conducteurs
- Circuit imprimé réf. S275
Sauf indication contraire, toutes les résistances sont des 1/4 W, 5 %


Figure 6 : Schéma d’implantation des composants du lecteur de carte à puce.

Figure 7 : Circuit imprimé du lecteur de carte à puce, côté pistes, à l’échelle 1.

Liste des composants du lecteur
- Lecteur/enregistreur AMPHENOL
- Connecteur 10 broches
- Câble plat 10 conducteurs
- Circuit imprimé réf. S237


L’alimentation
Pour ce qui concerne l’alimentation du monnayeur, elle est de 12 à 15 volts.
La carte de base est protégée contre les inversions de polarité par la diode D1. Le 12 volts est directement utilisé pour alimenter le relais RL1. Tout le reste du montage est alimenté en +5 volts, obtenus grâce au régulateur U1 (7805). La LED verte indique que la carte est alimentée.

La carte à puce de 2 kbit Siemens

Il s’agit d’une carte à puce ISO7816 basée sur le composant SLE4442 de Siemens, une mémoire intelligente de 2 048 bit (2 kbit) accessible par l’introduction et la comparaison d’un code de sécurité. Son schéma synoptique est donné en figure 8.
La mémoire est une EEPROM même si une partie de celle-ci fonctionne à la manière d’une PROM permettant d’enregistrer des données, lesquelles, après avoir brûlé un fusible de protection, ne pourront plus être modifiées.
Elle dispose d’un espace mémoire égal à 256 kbit sur lesquels une grande partie est disponible pour mémoriser des informations à utiliser.
Dans notre cas, pour le nombre d’unités, il y a également de petits espaces mémoire réservés à la protection (voir le tableau 1).
La première partie de l’EEPROM, de l’octet d’adresse 0 à 31, constitue la mémoire permanente, laquelle, après avoir configuré le bit de protection approprié peut être destinée uniquement à la lecture. Les données écrites dans cette zone pourront êtres uniquement lues, mais ni modifiées, ni effacées (fonction PROM). La zone mémoire initiale (octet 0) est uniquement réservée à l’écriture du code fabricant.
A partir de la zone 32, la mémoire est utilisable sans aucun problème, ni limitation.
Par contre, pour pouvoir écrire, il convient d’introduire et de comparer le code programmable de sécurité (PSC) contenu dans une zone supplémentaire de la mémoire EEPROM appelée mémoire de sécurité. Cette dernière est composée de quatre zones qui contiennent l’état du compteur d’erreur (bit 0 à 2) et le code d’accès réel décomposé et exprimé, comme d’habitude, en groupe de chiffres hexadécimaux du type AA AA AA ou FF FF FF. La séquence d’accès à l’écriture et à l’effacement de l’EEPROM consiste à introduire le PSC et à effectuer la comparaison avec celui résident dans la carte à puce. Si la comparaison est positive, les opérations de lecture/écriture peuvent être effectuées. Dans le cas contraire, l’accès est refusé et le compteur d’erreur décrémenté de 1.
Après trois échecs de comparaison du code de sécurité, le compteur d’erreur est égal à zéro et il n’est plus possible de changer l’état de l’EEPROM qui ne peut plus être que lue.
Pour cette raison, à chaque opération qui requiert la comparaison du PSC, il convient de remettre à zéro le compteur d’erreur, donc à remettre au 1 logique, par l’intermédiaire d’une commande appropriée, les trois bits qui le représentent.
Notez que pour toutes les sections de la puce, effacer un bit signifie le mettre au 1 logique, à l’inverse, écrire un bit revient à le mettre à zéro. Il faut obser ver que, dans le cas du compteur d’erreur, les trois bits qui le composent ne permettent pas 8 possibilités (2 à la dernière) mais seulement trois, étant donné que chacun d’eux est positionné au niveau bas à chaque comparaison du PSC.
L’opération de passage de 0 à 1 d’un bit est appelée remise à zéro (erase).
En ce qui concerne la méthode utilisée pour l’accès à la mémoire, elle utilise seulement deux fils plus un pour l’horloge (input, C3). Le premier constitue la ligne des données (I/O, contact C7) bidirectionnel utilisée pour recevoir et envoyer les informations sous forme série avec un niveau compatible TTL. L’envoi des commandes et des données d’entrée/sortie (I/O) intervient toujours durant le front descendant du signal d’horloge. Il existe également un canal de remise à zéro (input C2) qui est géré par le dispositif de communication externe avec lequel est interfacée la puce (voir le tableau 2).

Tableau 1 : Affectation des zones mémoire.

Tableau 2 : Brochage des 8 entrées/sorties de la puce SLE4442 de Siemens.

Figure 8 : Schéma synoptique de la puce SLE4442.

Réalisation pratique
Pour construire ce monnayeur électronique à carte à puce, il faut réaliser les trois circuits imprimés représentés à l’échelle 1/1 dans les figures 3, 5 et 7.
Les lecteurs qui sont équipés pour la gravure des circuits imprimés pourront les réaliser eux-mêmes. Pour cela, photocopiez les différents tracés sur du calque ou sur une feuille d’acétate translucide afin d’obtenir les films (typons) nécessaires à l’insolation aux rayons ultra-violets. Durant l’opération de photocopie, placez une feuille entièrement noire au dos de la page à photocopier.
Ainsi, vous éviterez l’effet de transparence. Gravez les circuits, après révélation, avec du perchlorure de fer en utilisant un récipient en matière plastique ou en verre. La gravure achevée, rincez soigneusement, séchez et percez les différents circuits.
Toutes ces opérations terminées, vous disposez des circuits imprimés prêts à être équipés de leurs composants.
Pour ceux que la chimie rebute, un kit est disponible. Les circuits imprimés du kit étant gravés et percés, ceux qui préfèrent cette solution peuvent passer directement au montage des composants.
Il faut commencer par placer les composants les plus bas, les résistances et les diodes. Poursuivez par le montage des supports de circuits intégrés, les condensateurs, en faisant attention aux modèles polarisés (électrolytiques) dont la patte la plus longue indique le côté positif. Monter les deux transistors et le mosfet en les orientant comme cela est représenté sur le plan d’implantation des composants (en particulier T3 qui doit avoir le côté métallique de son boîtier tourné vers le dip-switch). Poursuivre le montage par le buzzer qui est un modèle avec oscillateur interne.
Le lecteur de carte est un modèle “Amphenol” manuel avec un contact de détection de présence carte, de type N/F (normalement fermé) et qui s’ouvre en présence d’une carte. Il est relié à la carte principale par un câble plat à 10 conducteurs muni d’une prise à chaque extrémité. Nous vous conseillons de vous reporter à ELECTRONIQUE magazine numéro 4, page 34 et suivantes pour avoir plus de détails sur ce lecteur/enregistreur de carte à puce.
En ce qui concerne la car te d’affichage, reportez-vous au plan d’implantation des composants. Les trois afficheurs à anode commune ont 2 fois 5 broches disposées en ligne.
Ils peuvent également être montés sur des supports. Vous pouvez utiliser, pour cela, deux morceaux de barrette tulipe sécable au pas de 2,54 mm. Après avoir terminé cette opération, insérer le circuit intégré MM5450 dans son support en prenant garde à son orientation, son repère détrompeur est parfaitement repéré sur le plan d’implantation des composants. Il faut maintenant relier la platine principale à celle de l’afficheur par quatre fils (ne pas dépasser un mètre) et les souder aux points marqués +, –, A et B de la platine afficheurs avec les points marqués de façon identique sur la carte principale. Un morceau de fils en nappe est vivement recommandé pour éviter toute erreur.

Photo du monnayeur prêt à fonctionner. Le circuit principal est entouré, à droite, par le lecteur de carte à puce et, à gauche, par le circuit d’affichage. Notre monnayeur dispose d’un afficheur trois digits à LED afin d’afficher diverses informations chaque fois qu’un utilisateur introduit une carte à puce dans le lecteur pour accéder au service concerné. En outre, en phase d’initialisation, l’afficheur visualise le message PSC. Durant la recharge des cartes utilisateur, l’afficheur permet de visualiser les unités que la carte Master Crédit autorise à transférer dans chaque carte utilisateur introduite dans le lecteur. Enfin, l’introduction de la carte Master Temps fait apparaître le nombre indiquant la durée (exprimée en secondes) de chaque unité de temps.

Pour conclure
A présent, le montage est prêt. N’oubliez pas les vérifications habituelles : ponts de soudure, soudure oubliée, etc.
Pour l’utiliser, il suffit de l’alimenter par une tension de 12 à 15 volts, pouvant fournir 250 milliampères. Après cette mise sous tension, la LED verte (LD2) doit s’allumer et le buzzer doit émettre deux notes acoustiques en séquence rapide. Rappelez-vous que, pour faire fonctionner le monnayeur, il faut, au préalable, disposer du jeu de 3 cartes de programmation : la Master PSC, la Master Crédit et la Master Temps et d’un certain nombre de cartes vierges de 2 kbit dont le code de sécurité programmable est égal à FF FF FF. Avec tout cela nous vous souhaitons une bonne utilisation de votre système.

Aucun commentaire:

Enregistrer un commentaire