Conception et réalisation d?un système de vote electronique( Télécharger le fichier original )par Blondel SEUMO NTSIEPDJAP Institut Universitaire de Technologie FOTSO Victor de Bandjoun - Licence Technologique en Informatique et Réseau 2013 |
RésuméDe nos jours, la haute technologie est un outil qui continue d'être domestiqué dans des domaines de plus en plus traditionnels. Or, les élections ont encore peu bénéficiés d'outils modernes pour en faciliter le déroulement, en améliorer la fiabilité, la manipulation, la vitesse, la divulgation et la précisions des résultats. Les récents événements intervenus lors des élections communales et municipales au Bénin en l'occurrence dans l'arrondissement de Godomey sont là pour nous rappeler que les manipulations humaines sont fastidieuses et sujettes à l'erreur. C'est pour mettre fin aux fraudes et à ces irrégularités que nous avons conçu et réalisé un Système de Vote Électronique. Notre système utilise des technologies sûres et fiables afin d'améliorer plusieurs aspects du déroulement des élections. Il consiste essentiellement à conjuguer des outils informatiques et électroniques modernes afin de sécuriser la majorité des opérations qui sont effectuées pendant la journée des élections. Il est constitué d'un clavier dont chaque touche représente le logo ou le nom d'un candidat et d'une interface graphique qui a été programmé dans le langage Java à travers un ordinateur montrant, en une première phase si un électeur a voté ou pas via les touches du clavier et dans le même temps affiche le nombre d'électeurs qui ont voté, et en une seconde phase affiche le résultat du scrutin après que la durée de vote s'est écoulée et le mot de passe saisi pour la consultation des résultats est correct. Par rapport au vote traditionnel c'est-à-dire la manière dont s'effectue le vote dans notre pays, notre système présente quelques avantages immédiats. En voici quelques-uns: ~ facilité accrue de l'acte de votation par la population, ~ meilleure sécurité et protection contre la fraude (votes multiples), ~ meilleure fiabilité et précision des résultats, ~ fin aux problèmes liés à l'interprétation d'un bulletin de vote, ~ fin de rejet de bulletins de vote comptés comme des votes nuls, z> connaissance et divulgation instantanées des résultats à la fin de la période de votation, ~ réduction des coûts d'opération par l'automatisation de plusieurs étapes (compilation, recomptage, etc.), ~ élimination des coûts liés à l'impression des bulletins de vote traditionnels, ~ réduction du problème associé à l'embauche de plus en plus difficile du personnel affecté aux élections par une diminution du personnel nécessaire. Chapitre1 : Etude technique du systeme de vote e~ectronique 1,1- Geniraf~te sur fes systemes de vote efectronique Le vote est le moyen d'expression central d'une démocratie. Il existe dans toutes les sphères de la société: au sein des associations et des entreprises, dans les universités et, bien évidemment, au niveau politique. Le développement des technologies de l'information semble pouvoir modifier la physionomie et le déroulement du vote. Depuis de nombreuses années le vote électronique existe sous la forme de machine à voter, le développement d'internet ouvre un nouveau champ d'expression du suffrage en permettant le vote à distance. 1.1.1- Quelques modalités du vote électronique La notion de vote électronique peut être entendue de manière très large. On peut, par exemple, y inclure le décompte électronique des bulletins papier. Le vote électronique peut s'effectuer suivant des modalités très différentes.
L'étude technique est une étape obligatoire précédent la réalisation de systèmes électroniques. Elle portera sur l'étude, le dimensionnement des modules et l'outil de supervision du système. Le système de vote électronique que nous proposons ici repose sur six (6) modules à savoir :
1.2- Schema synoptique du systeme Pour répondre au cahier des charges notre étude nous conduit à proposer le synoptique suivant : BLOC DU CLAVIER ALIMENTATION 12V BLOC DE BLOC DU ALIMENTATION 5V BLOC DE BLOC Figure 1.1 : Synoptique du système Ce synoptique servira de base pour la réalisation du système défini dans notre cahier de charge. 1.3- Etude et dimensionnement des di~~erents bCocs Cette partie montre le principe de fonctionnement des différents modules, le dimensionnement des circuits électriques et le choix des composants. 1.3.1- Bloc d'alimentation Alimentation generale Elle est chargée de fournir au dispositif électronique et à l'ordinateur de supervision l'énergie nécessaire pour leur fonctionnement. Pour l'alimentation des différents blocs, deux niveaux de tensions à savoir +5V et +12V continues sont utilisées et pour l'ordinateur de supervision une tension alternative 220V /50Hz. Etant donné que notre dispositif doit être toujours sous tension durant le scrutin une alimentation ininterrompue, donc secourue s'avère indispensable. Le principe de cette alimentation est qu'on branche le système sur un onduleur d'une autonomie d'environ 45mn, et qu'à la disparition de la principale source d'énergie (le secteur public 220V/50Hz), l'onduleur se charge de maintenir le système sous tension jusqu'à la mise en marche d'une autre source d'énergie (groupe électrogène, énergie solaire etc.). Ici nous proposons un groupe électrogène qui prend le relai pour alimenter l'onduleur sans que cette transition ne se ressente au niveau de l'ordinateur et des circuits alimentés. La figure 1.2 nous donne le synoptique de l'alimentation générale secourue. ONDULEUR SECTEUR PUBLIC SBEE 220V/50HZ ELECTROGENE GROUPE ORDINATEUR DE BLOC Figure 1.2 : Synoptique de l'alimentation générale Le bloc d'alimentation est donné par le synoptique de la figure 1.3.Il se charge de délivrer aux autres blocs l'énergie nécessaire pour leur bon fonctionnement. 220V/50Hz Transformation Redressement Filtrage Régulation Sortie Figure 1.3 : Schéma synoptique de l'alimentation Le dimensionnement du bloc passe tout d'abord par la mise sur pied du circuit électrique. Ainsi son schéma électrique se présente comme suit : 1 +12V 3 2 D2 1 2 GND 2 D3 1 2 1 T1 4 + C3 J2 C6 + C4 1 2 3 IN OUT 7805 1 3 7812 +5V secteur 220V D4 D5 1 2 2 1 C7 + C5 2 IN OUT GND Figure 1.4: Circuit d'alimentation > Calcul minimum de dimensionnement Nous voulons obtenir une alimentation ayant les caractéristiques suivantes :
Courant : Compte tenu de la faible consommation des circuits utilisés dans les différents montages, l'alimentation doit fournir un courant de contact de l'ordre de 1A. Notre alimentation (figure 1.4) est réalisée à partir d'un modèle classique. La SBEE nous fournit une tension de valeur efficace 220V. Un
transformateur T1 nous déformation de phase. Un pont de diodes permet de faire un redressement double alternance. La valeur maximale de la tension de sortie du pont diminue de 1.2V de la tension à la sortie du transformateur. Cette chute de tension de 1.2V représente la différence de potentiels totale occasionnée par la mise en série par alternance de deux diodes semiconductrices. > Le transformateur T1 On a : Vmax = Vs + Vdiff + Vond/2 + 2Vd ; avec Vs: Tension continue de sortie. Vdiff : Tension différentielle entre l'entrée et la sortie du régulateur Vond: Tension d'ondulation crête à crête (10%) Vd : Chute de tension aux bornes d'une diode. Pour notre cas nous avons : Vs = 12V ; Vond = 10%Vs = 1.2V ; Vd = 0.6V; Vdiff = 5V. Soit Vmax = 18.8V . La tension efficace au secondaire du transformateur est : /012 Veff = ; soit Veff = 13.269V. v4 On choisit alors un transformateur de 220V/15V. La consommation des composants et éléments ne devrait pas excéder un courant de 1A soit Imoy = 1A. D'où la puissance au secondaire est P = 15VA. Nous pouvons prendre en définitive un transformateur 220V/15V ayant une puissance de 15VA. > Le pont de diodes Le redressement est assuré par un pont de 4 diodes permettant de transformer la tension alternative en tension continue pulsée. Le courant moyen de sortie étant de 1A, le courant moyen dans chaque diode est Id = Imoy /2 = 500mA. La tension inverse maximale aux bornes de chaque diode doit être au moins égale à 2Vmax. Avec une marge de 50% de sécurité on choisit : Vrrm = 1.5 × 2Vmax = 56.4V. Nous avons donc choisi quatre diodes 1N4004 dont les caractéristiques sont Vrrm = 400V et Ifav = 1A. > Les condensateurs La capacité C du condensateur de filtrage est telle que
Nous avons choisi deux condensateurs de valeur 2200uF et un de valeur 4700uF. La tension de service en régime continu du condensateur doit être supérieure à la tension maximale disponible à la sortie du pont de diodes. La valeur normalisée qui convient, sachant que notre pont fournit une tension de 20V est de 35V. Donc C3 à pour caractéristique 4700uF/35V (deux condensateurs 2200uF/35V montés en parallèles) et C4 de caractéristique 4700uF/35V. Pour les condensateurs de découplage on prend C6=C7= 100nF. > Les régulateurs Pour la régulation des tensions, nous avons opté pour les régulateurs de la famille 78XX. Ainsi la tension de 12V pour l'alimentation du bloc de sécurité est fournie par le 7812 puis celle de 5V par le 7805. 1.3.2- Bloc du clavier S1 S3 S6 S5 S2 J1 1 2 3 4 5 6 7 S4 Figure 1.5: Schéma électrique du bloc clavier 28 Thème : Conception et Réalisation d'un système de vote électronique 2ème Partie : Chapitre 1 : Etude technique du système de vote électronique Ce bloc est composé de six (6) boutons poussoirs à fermeture (normalement ouvert au repos) et d'un connecteur de sept (7) broches. Pour chaque poussoir les deux bornes sont reliées au connecteur avec une reliée à la masse. Après appui sur un poussoir, il permet d'envoyer un niveau logique bas (0V) à sa borne non reliée à la masse. 1.3.3- Bloc de codage +5V +5V LOAD J3 R1 2 1 JAUNE R2 R3 ENABLE R4 R5 R6 R7 R8 R9 74LS148 10 11 12 13 2 3 4 5 0 2 3 4 5 6 7 EI 18 8 VCC GND A0 A1 A2 GS EO 9 6 14 15 3 4 5 6 9 8 1 2 74LS06 U3D 74LS06 U3A U3B U3C 74LS06 74LS06 14 7 14 7 14 7 /4 7. C1 B0 B1 B2 FLAG 1 2 3 4 5 6 7 Figure 1.6 : Schéma du bloc de codage Ce bloc est le coeur du système. Il permet de coder chaque touche du clavier en une suite de trois (3) bits. Il est constitué d'un connecteur à sept broches compatible J1 (bloc clavier), d'un bloc de résistances de tirage noté de R2 à R9, d'un codeur, de deux (2) condensateurs de découplage notés C1 et , et de quatre (4) portes inverseuses. UAC/IUT LOKOSSA/2007- 2008 - Rapport de stage OKE Yisségnon Rémy & YAGBO Babatoundé Aristide Afin de répondre à notre cahier des charges, nous avons adopté un principe qui consiste à coder chaque touche du clavier en un mot binaire de trois (03) bits. Il permet enfin de délivrer en sortie le code binaire du nombre correspond à la touche enfoncée. Le codeur Un codeur permet la conversion d'un code d'entrée (numérique ou alphanumérique) en un code de sortie binaire. C'est un circuit logique possédant un certain nombre de lignes d'entrée dont une ligne est active à la fois. A chaque ligne d'entrée active correspond en sortie une représentation binaire sur un certain nombre de bits. > Choix du codeur Vu les contraintes de notre cahier des charges et du principe de base adopté, il nous faut contrôler l'appui d'une touche et la gestion de l'entrée de validation du codeur. Pour cela nous avons porté notre choix sur le codeur à priorité le SN74LS148N. > Principe de fonctionnement Le circuit intégré TTL SN74LS148N : codeur octal vers binaire à priorité, entrées actives niveau bas, sorties complémentées possède deux lignes de validation actives au niveau bas : une entrée EI et une sortie EO. La sortie GS active au niveau bas permet d'indiquer qu'il y a une entrée active lorsque le codeur est validé. Les sorties A2, A1, A0 du codeur étant complémentées, l'utilisation de trois portes inverseuses SN74LS06N nous a permis à partir de ces sorties d'obtenir les trois bits B0 , B1 , B2 de l'équivalent binaire de la valeur codée. On la table de vérité suivante :
Table 1.1 : Table de vérité des sorties en fonction des entrées actives La sortie FLAG active au niveau haut permet d'indiquer, lorsque le codeur est validé qu'il y a une entrée active. Cette sortie sera utilisée pour le verrouillage du clavier en guise de sécurité. Cette sortie est obtenue par inversion du niveau à la sortie GS. Au repos les entrées de données du codeur sont maintenues au niveau logique haut avec des résistances de limitation de courant dimensionnées à une valeur normalisée de 27K. De plus les bits B2, B1 et B0 représentent dans l'ordre le bit du poids le plus fort au bit du poids le plus faible. > Résistances de limitation de courant dans la led On a : Vcc = VR + VDEL et VR = R × IDEL ; avec Vcc: Tension d'alimentation de la led ; VR : Tension aux bornes de la résistance de limitation de courant ; VDEL : Tension directe aux bornes de la led ; IDEL : Le courant traversant la led ; R : La valeur de la résistance de limitation de courant ; Nous pouvons déduire R = (VCC-DEL) IDEL . Puisque la tension directe d'une led est de 2V entre ses bornes et le courant d'une led est compris entre 5mA et 50mA. En prenant un courant de 20mA pour l'obtention d'une bonne luminosité et d'offrir une meilleure durée de vie à la led, on a : Vcc = 5V donc R = 150 . Nous choisissons donc une résistance de valeur normalisée 150. La mise sous tension de la carte électronique se trouvant à l'intérieur du clavier est indiquée par l'allumage de la led jaune. 1.3.4- Bloc de sécurité +12V +5V +5V BP_SECURITE1 R15 2 R14 R10 R12 74LS08 2 1 14 3 C8 R11 ENABLE R13 2 FLAG D6 RE1 1N4148 1 3 Q1 ROUGE Figure 1.7: schéma du bloc de sécurité Afin d'éviter les fraudes et s'assurer qu'un seul vote est effectué par votant nous avons prévu un module de sécurité pour palier aux irrégularités. Ce module comme son nom l'indique assure la sécurité du système. En effet c'est ce dernier qui permet de n'autoriser qu'un seul vote par votant. Le principe fondamental de ce bloc est d'assurer le verrouillage automatique du clavier dès qu'une touche appuyée est prise en compte. Cette sécurité est indiquée par l'allumage de la led rouge indiquant au votant qu'il a déjà effectué son vote de sorte que tout autre appui sur une touche du clavier est invalide. Il faudra appuyer sur un bouton poussoir pour déverrouiller le clavier. Cet appui ne peut être effectué que par le superviseur du bureau de vote. Ces contraintes nous ont amené à concevoir le schéma électrique de la figure 1.7. En effet le bloc de sécurité est constitué d'un transistor, d'un relai 12V à contact ouvert au repos, d'un bouton poussoir à ouverture, d'une porte AND, des résistances, d'une diode et d'un condensateur de découplage. La diode utilisée joue le rôle de roue libre au niveau du relai. Pour cela nous avons porté notre choix sur le 1N4148 dont les caractéristiques sont : VRRM = 100V ; 'F = 200mA ; t, = 4ns. Par ailleurs, le relai nous permet le verrouillage et le déverrouillage du clavier par le biais de ses contacts. Pour la commande du relai nous avons utilisé un transistor BC337 monté en commutation. En saturation, la tension base-émetteur VBEO du transistor Q1 est de l'ordre de 0.6V. On a ainsi : VBEO = 0.6V Alors Vr1 = 5V - 0.6V = 4.4V. Avec Vr1 la tension aux bornes de la résistance R13 de base du transistor. Pour saturer le transistor BC337 il lui faut appliquer un courant de base de valeur maximale 50mA. Un courant de 20mA arrive à saturer le transistor. Par conséquent Vr1 = R13 × 0.02 . On choisit donc comme valeur normalisée R13 = 150~. Quant aux autres résistances, elles servent de limitation de courant. Notons également la présence d'une porte AND SN74LS08N qui nous permet d'avoir à la sortie ENABLE des niveaux logiques francs. Fonctionnement du bloc Initialement, sans un codage donc l'entrée FLAG est au niveau bas, ce qui entraine le blocage du transistor. Par suite les contacts du relai sont ouverts (au repos) c'est-à-dire la bobine du relai n'est pas excitée, la sortie ENABLE se trouve aussi à un niveau bas permettant la validation du codeur. En résumé, à l'état initial, FLAG et ENABLE se trouvent au niveau bas et la led rouge est éteinte. Après appui sur une touche du clavier, le FLAG passe au niveau haut. Le transistor Q1 se sature ce qui entraine l'excitation de la bobine du relai, la fermeture automatique de ses contacts et l'établissement de l'auto maintient. La led rouge s'allume. Par ce fait la sortie ENABLE passe à un niveau haut qui entraine le verrouillage du codeur. A la fin du codage le FLAG revient à son état initial et le transistor se bloque mais la bobine du relai demeure excitée par le biais de la liaison d'auto-maintient établie. Enfin l'appui sur le bouton poussoir "BP_SECURITE1" désexcite la bobine et ramène le bloc à son état initial. Thème : Conception et Réalisation d'un système de vote électronique 2ème Partie : Chapitre 1 : Etude technique du système de vote électronique 1.3.5- Bloc de conversion +5V R16 R17 C9 R18 R19 R20 B2 10 11 12 13 14 3 4 5 6 B1 B0 9 SORTIE_REGISTRE 2 7 15 CLOCK 1 LOAD 16 8 74LS165 VCC SER A B C D E F G H QH CLK INH SH/LD UJD Figure 1.8 : Schéma du bloc de conversion Le mode de transmission retenu selon le cahier des charges est la transmission série alors il nous faut convertir les bits parallèles que nous avons à la sortie du bloc de codage en une suite série de bits. Pour ce faire, les bits sortants du bloc de codage sont envoyés à l'entrée du bloc de conversion. Afin d'assurer la fonction qui lui est dédiée, le bloc que nous proposons est composé d'un registre, des résistances, d'un condensateur de découplage et d'un générateur de signal d'horloge. > Générateur de signal d'horloge Le signal d'horloge a pour rôle de cadencer l'envoie des bits vers l'ordinateur. Nous avons écrit un programme dans le langage JAVA qui nous a permis de générer à la sortie du PC par liaison série un signal de fréquence 9600 Hz. Ce signal a été utilisé comme signal d'horloge pour le registre. Les données sont donc envoyées au PC à cette fréquence. Le Registre Un registre est un circuit logique composé de bascules et dont la principale fonction est de stocker de l'information binaire. Le nombre de bascule composant le registre est égal au nombre de bits qu'on peut stocker. Les registres se caractérisent par le type d'entrée et le type de sortie. > Choix du registre Le bloc de codage nous permet d'avoir trois (3) bits parallèles en sortie. Puisque les bits doivent être envoyés sur un port série suivant la norme RS232, il nous faut en plus des trois (3) bits du bloc de codage un bit de START et un bit de STOP pour permettre la lecture de la donnée sur le port. De plus la donnée sur un port série est sur au moins 5 bits en plus du bit de START et du bit de STOP pour former la trame. Ainsi avons-nous retenu sept (7) bits dont cinq (5) bits de données, un (1) bit de START et un (1) bit de STOP. Pour satisfaire à ces contraintes nous avons utilisé un registre 8 bits à entrées parallèles et sortie série avec une entrée de chargement. Notons qu'un registre est dit à entrées parallèles et sortie série si on peut faire rentrer tous les bits de la trame à stocker d'un seul coup dans toutes les bascules et les sortir l'un après l'autre du bit de poids le plus faible au bit de poids le plus fort ou inversement. Pour cela notre choix s'est porté sur le registre SN74LS165N. Puisque nous voulons faire une communication série il est nécessaire de savoir l'état des bits de START et de STOP. Dans la norme RS232 le bit de START est le bit de poids le plus faible et est à l'état bas (bit 0) tandis que le bit de STOP est le bit de poids le plus fort et est à l'état haut ou bas (bit 1 ou 0). Thème : Conception et Réalisation d'un système de vote électronique 2ème Partie : Chapitre 1 : Etude technique du système de vote électronique Ainsi pour générer ces deux bits nous avons mis l'entré G du registre à la masse pour obtenir un niveau bas (0 logique) et l'entrée A à Vcc par le biais d'une résistance dimensionnée à une valeur de 27K. > Entrée de chargement L'entrée de chargement LOAD est active au niveau bas (0 logique). Elle permet de charger ou de stocker les valeurs qui sont aux entrées de données dans le registre. Cette entrée est la sortie GS du codeur SN74LS148N. Ainsi, l'appui sur une touche du clavier lorsque le codeur est validé active l'entrée de chargement du registre. Notons qu'à la fin d'envoi des données par le registre, la sortie du bloc se met au niveau logique de l'entrée série du registre. En effet vu le principe de lecture de données sur les ports séries que nous allons décrire dans le chapitre suivant nous avons mis cette entrée au niveau haut (1 logique) par le biais d'une résistance de 27K. > Entrée clock /inhib D'après la table de vérité de 74LS165 (voir annexe) lorsque cette entrée est au niveau bas elle permet au registre de faire sortir un bit sur chaque front montant du clock ; ceci du bit de l'entrée H au bit de l'entrée A puis se met à l'état de l'entrée série en attendant un nouveau chargement. Clock Load Sortie 1 0 1 1 0 ~ ~ ~ ~ Trame envoyée au PC Chargement NB : Les condensateurs de découplage C1, , C8 et C9 ont pour valeur 100nF. Comme exemple, le chronogramme suivant montre l'octet envoyé au PC quand une action sur la touche 3 du clavier de notre système est prise en compte. Chapitre2 : Interface de communication série La communication par ports séries nous permet d'envoyer des données à l'ordinateur par l'intermédiaire de la liaison série. L'interface de communication série nous servira à adapter les niveaux de tensions entre le PC et notre système. Elle sera alors réalisée autour du port série du PC. Dans ce chapitre, après une description du port série de l'ordinateur, nous parlerons de la conception de la carte d'interface et de sa gestion sous Windows. 2.1- Description du port serie Le port série est très largement utilisé par les ordinateurs pour communiquer avec des périphériques (imprimante, souris, modem...) car il est très simple à utiliser et ne nécessite que peu de fils. Il présente l'inconvénient d'être lent. Un câble parallèle est, par exemple, nettement plus rapide. Plus difficile à mettre en oeuvre que le port parallèle, la prise série se révèle cependant plus puissante. Un autre point fort du sériel par rapport au parallèle est la longueur de câble possible sans perte de données. 2.1.1- Le port série Les ports séries représentent les premières interfaces ayant permis aux ordinateurs d'échanger des informations avec le "monde extérieur". Le terme série désigne un envoi de données via un fil unique: les bits sont envoyés les uns à la suite des autres. A l'origine les ports séries permettaient uniquement d'envoyer des données, mais pas d'en recevoir, c'est pourquoi des ports bidirectionnels ont été mis au point (ceux des ordinateurs actuels le sont); les ports séries bidirectionnels ont donc besoin de deux fils pour effectuer la communication. La communication série se fait de façon asynchrone, cela signifie qu'aucun signal de synchronisation (appelé horloge) n'est nécessaire : les données peuvent être envoyées à intervalle de temps arbitraire. En contrepartie, le périphérique doit être capable de distinguer les caractères (un caractère a une longueur de 8 bits) parmi la suite de bits qui lui est envoyée. C'est la raison pour laquelle dans ce type de transmission, chaque Byte est précédé d'un bit de départ (appelé start bit). Ce dernier sert à indiquer au système récepteur que les 5-6-7 ou 8 bits qui suivent constituent les données. Celles si sont suivies d'un ou de deux bits de stop. Cela permet au récepteur de clore le traitement en cours et d'effectuer les opérations requises sur le Byte. Ces bits de contrôle, nécessaires pour une transmission série, gaspillent 20% de la bande passante (pour 8 bits envoyés, 2 servent à assurer la réception). Les ports séries sont généralement intégrés à la carte mère, c'est pourquoi des connecteurs présents à l'arrière du boîtier, et reliés à la carte mère par une nappe de fils, permettent de connecter un élément extérieur. Les connecteurs séries possèdent généralement 9 ou 25 (respectivement connecteurs DB9 et DB25). Ces dernières années, un nouveau type de port série est apparu, le port USB (Universal Serial Bus). Outre une meilleure capacité de transfert, il possède deux qualités importantes : il permet le chaînage des périphériques (plusieurs périphériques peuvent être connectés au même port via un outil spécial, le hub, qui joue le rôle de prise multiple) ; on peut raccorder un nouveau périphérique à l'ordinateur sans qu'il soit nécessaire d'éteindre ce dernier. 2.1.2- Présentation du connecteur A l'origine, tous les compatibles PC possèdent 2 ports séries: COM1 et COM2. L'un d'entre-deux se présente sous la forme d'une prise DB9 mâle et le deuxième, sous la forme d'une DB25 femelle. Le connecteur utilisé à l'origine pour le port série est le connecteur DB25, mais depuis quelques années, on trouve de plus en plus les connecteurs DB9, DIN, PS2, USB. Au niveau du PC, on utilise des connecteurs mâles, tandis qu'au niveau du périphérique, on trouve des connecteurs femelles. Quelque soit le type de connecteur utilisé, une liaison série comporte 8 signaux différents, plus une ou deux masses. Nous utilisons pour notre application le connecteur DB9. 39 2ème Partie : Chapître2 : Interface de communication série 1 1 6 14 DB9 - prise mâle - Connecteur PC DB25 - prise femelle - Connecteur PC Figure 3.1 : Prise DB 9 et DB25 2.1.3- Description et attribution des signaux
Tableau 3.1 : Brochage du port série Leaendre DTE : Data Terminal Equipment et correspond en général au PC. DCE : Data Communication Equipement et correspond au périphérique. DCD : cette ligne est une entrée active haute. Elle signale à l'ordinateur qu'une liaison a été établie avec un correspondant. RD : cette ligne est une entrée. C'est ici que transitent les informations du correspondant vers l'ordinateur. TD : cette ligne est une sortie. Les données de l'ordinateur vers le correspondant sont véhiculées par son intermédiaire. DTR : cette ligne est une sortie active haute. Elle permet à l'ordinateur de signaler au correspondant que le port série a été libéré et qu'il peut être utilisé s'il le souhaite. GND : c'est la masse. DSR : cette ligne est une entrée active haute. Elle permet au correspondant de signaler qu'une donnée est prête. RTS : cette ligne est une sortie active haute. Elle indique au correspondant que l'ordinateur veut lui transmettre des données. CTS : cette ligne est une entrée active haute. Elle indique à l'ordinateur que le correspondant est prêt à recevoir des données. RI : cette ligne est une entrée active haute. Elle permet à l'ordinateur de qu'un correspondant veut initier une communication avec lui. D'un point de vue électrique, les différents signaux présents sur le port série sont définis par la norme RS232. Afin d'avoir une plus grande immunité au parasites, on utilise des tensions comprises entre -25 et +25V. Une tension comprise entre -3V et -25V représente un «1» logique (mark), alors qu'une tension comprise entre +3V et +25V représente un « 0 » logique (space). 41 2ème Partie : Chapître2 : Interface de communication série 2.2- AnaCyse du schema eCectrique de C~inter~ace Notre système conçu utilise une logique TTL, bien connue des électroniciens. Afin de passer d'une logique RS232, dite inversée, à une logique TTL, certains fabricants ont développé des circuits intégrés spécifiques. Le MAX232 est un standard, il permet de réaliser des liaisons RS232 et des interfaces de communications, il amplifie et met en forme deux entrées et deux sorties TTL/MOS vers deux entrées et deux sorties RS232. Nous proposons le schéma électrique cidessous. SORTIE_REGISTRE C12 + C13 + C11 C14 MAX232N 13 11 10 4 2 8 3 5 6 1 C+
R1IN R2IN T1IN T2IN +5V 16 VCC 15 GND C10 R1OUT R2OUT T1OUT T2OUT + 9 7 12 14 JAUNE R21 CLOCK 5 9 4 8 7 6 DB9 Figure 3.2 : Schéma de l'interface de communication port série Le schéma de figure ci-dessus est un prototype classique. Une analyse de ce schéma révèle que le circuit est alimenté sous une tension de +5V. La led jaune sert de témoin de tension d'alimentation indiquant que la carte d'interface est sous tension. Les condensateurs C11, C12, C13, C14 ont pour valeur 1uF et C10 47uF. Ils servent de condensateurs de découplage pour le MAX232N. 2.3- Gestion de Cinterface sous Windows Pour piloter l'interface de communication série sous Windows nous avons eu recours à l'API javax.comm pour le contrôle des ports séries développé par Christophe Jollivet sur le site d'adresse : http://java.sun.com/products/javacomm/index.jsp. 2.3.1- Rappel Le port série utilise un fil pour l'émission et un autre fil pour la réception. Donc, dans un port série les bits de données sont envoyés les uns après les autres. L'interface série est orientée caractère et chaque caractère envoyé est délimité par un signal de début (un bit à 0) et par un signal de fin (un ou deux bits selon le paramétrage). 2.3.2- Contenu de l'archive javax.comm Il est composé de :
2.3.3- Contenu de l 'API Cette API contient différentes classes et interfaces. Pour la gestion des ports :
43 2ème Partie : Chapître2 : Interface de communication série Pour la gestion des événements : v' Interface javax.comm.CommPortOwnershipListener (extends java.util.EventListener) v' class javax.comm.ParallelPortEvent v' class javax.comm.SerialPortEvent v' interface javax.comm.ParallelPortEventListener (extends java.util.EventListener) v' interface javax.comm.SerialPortEventListener (extends java.util.EventListener) Pour les exceptions : V' class javax.comm.NoSuchPortException V' class javax.comm.PortInUseException v' class javax.comm.UnsupportedCommOperationException Il existe deux niveaux pour la gestion des ports de communication : ~ un niveau haut avec les deux classes CommPortIdentifier et CommPort ~ un niveau bas avec les deux classes SerialPort et ParallelPort La classe CommPortIdentifier est la classe centrale pour le contrôle des accès aux ports de communication. Elle inclut les méthodes pour : V1 déterminer les ports de communication disponibles V' ouvrir les ports de communications v' déterminer les possesseurs de ports et résoudre les conflits et changements. Une application utilise d'abord CommPortIdentifier pour négocier avec le driver et découvrir les ports qui existent sur la machine puis en sélectionner un pour l'ouverture. Ensuite elle utilise les méthodes des autres classes comme CommPort, ParallelPort et SerialPort pour communiquer par ce port. La classe CommPort est une classe abstraite qui décrit les ports de communication rendus disponibles par le système. Elle inclut les méthodes pour le contrôle des entrées/sorties qui sont communes aux différents types de ports de communications. SerialPort et ParallelPort sont des sous-classes de CommPort qui incluent des méthodes additionnelles pour le contrôle bas-niveau des ports de communication. Il n'y a pas de constructeur pour CommPort. Par conséquent une application doit utiliser la méthode CommPortIdentifier.getPortIdentifiers () pour générer une liste des ports disponibles. Elle choisit ensuite un port dans la liste et appelle CommPortIdentifier. Open () pour créer un objet CommPort qui est casté ensuite en SerialPort. Après qu'un port de communication a été identifié et ouvert, il peut être configuré avec les méthodes de bas niveau de la classe SerialPort. Enfin il est possible de travailler de 2 façons différentes avec ces ports : > en utilisant les flux > en mode événementiel 2.3.4- Utilisation de l 'API L'utilisation de cet API passe par la connaissance de quelques fonctions supplémentaires clés de l'API. ~ CommPortIdentifier.getPortIdentifier (String nom _du _port) Cette fonction renvoie le CommPortIdentifier (l'identifiant) correspondant au nom du port passé en argument. Pour notre cas le port COM1 a été utilisé. ~ open(String nom_application , int duree) L'appel de la méthode open accepte deux paramètres : 45 2ème Partie : Chapître2 : Interface de communication série v' le nom de l'application qui demande le port v' le délai d'attente pour l'obtention du port en millisecondes Cette fonction permet d'ouvrir le port à utilisé (COM1) ~ (SerialPort) Nom_identifiant.open (String nom_application, int duree) Cette méthode quant à elle permet après ouverture du port de le caster en un objet SerialPort. ~ CommPort.close () : Pendant l'exécution d'une application, une autre application est susceptible de vouloir utiliser le même port. Si l'on désire libérer le port, on fait appel à la méthode CommPort.close (). 2.3.5- Paramétrage du port Après son ouverture, il faut paramétrer le port. Les paramètres importants pour la communication par port série sont : V1 le contrôle de flux V1 le débit de la connexion (en Bauds) V1 le nombre de bits de données v' le ou les bits stop v' la présence d'un bit de parité Voici un exemple de paramétrage du port « COM1 » caster en objet SerialPort port try { port.setFlowControlMode (SerialPort.FLOWCONTROL_NONE); port.setSerialPortParams (1200, SerialPort.DATABITS_6, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException ex) { } Ces méthodes de paramétrage sont susceptibles de lever une UnsupportedCommPortOperationException. Leur utilisation est simplifiée par l'usage des attributs statiques de SerialPort. Dans l'exemple précédent notre port est paramétré sans contrôle de flux, à 1200 bauds sur 6 bits avec 1 bit stop et sans parité. Enfin la classe SerialPort dispose aussi de méthodes permettant d'interrompre ou reprendre la propagation de certains types d'évènements selon les besoins. Pour travailler en événementiel avec les ports séries, il suffit d'implémenter l'interface SerialPortEventListener dans une classe et de l'ajouter un Listener (écouteur d'événement sur le port série). Chapitre3 : Reafisation pratique du systeme de vote efectronique Dans ce chapitre seront développées les différentes étapes suivies depuis la mise sur pied du schéma électrique jusqu'à l'assemblage et au test du système. Ces tests concernent surtout la précision des trames envoyées sur le port série en fonction des touches appuyées. 3,1- La marquette efectronique Afin de s'assurer du bon fonctionnement des différents circuits nous avons câblé chaque circuit sur protoboard. La réalisation de ces circuits a été faite sous le logiciel Orcad. Ce travail est fait en réalité en trois parties. 3.1.1- Capture des schémas Cette partie consiste à la saisie des schémas des divers circuits. Nous avons subdivisé pour simplifier le schéma général, le circuit du système en cinq parties. Le circuit d'alimentation Le circuit de codage Le circuit de sécurité Le circuit de conversion Le circuit d'interface de communication série 3.1.2- Test des différents circuits 3.1.2.1- Le circuit d'alimentation Par le test du circuit nous avons relevé à la sortie une tension de +5V avec un taux d'ondulation d'environ 10%. 3.1.2.2- Le circuit de codage Vu le rôle de ce circuit, pour vérifier son bon fonctionnement nous avons disposé aux sorties B2, B1, et B0 du bloc trois leds vertes avec des Resistances séries de 150 12 chacune. On a également mis une led rouge à la sortie LOAD avec une résistance série de 150 12. Ainsi quand on code une valeur on observe simultanément à la sortie l'état des leds vertes (une led allumée représente un bit à 1 et une led éteinte représente un bit à 0) indiquant l'équivalent binaire de la valeur codée puis l'extinction et le retour à l'état initial de la led rouge indiquant ainsi le passage de la sortie LOAD à 0 puis à 1. Ce test confirme bien le bon fonctionnement du bloc de codage. 3.1.2.3- Le circuit de sécurité Après l'avoir câblé, nous avons relié la sortie FLAG du bloc de codage à l'entrée FLAG du bloc de sécurité puis le tout mis sous tension. Quand on code un nombre, on observe le verrouillage du codeur qui s'effectue normalement puis l'allumage de la led rouge. Après appui sur le bouton poussoir on obtient bien une activation du codeur et donc du clavier ce qui répond au résultat attendu. 3.1.2.4- Le circuit de conversion La sortie LOAD du bloc de codage est reliée à l'entrée de chargement du registre SN74LS165N. Les sorties B2, B1, B0 ont étés envoyées aux entrées parallèles du registre. Il nous faut ensuite envoyer au registre le signal d'horloge. Ce signal est généré par le PC à une fréquence de 9600Hz par transmission série RS232 via un programme écrit dans le langage Java. Avec la fréquence de l'horloge nous ne pouvions pas observer ni à l'oscilloscope la trame envoyée ni par le biais d'un transistor monté en commutation commandant une led indiquant l'état haut (allumée) et l'état bas (éteinte). Nous avons procédé autrement en envoyant à l'entrée de chargement du registre un signal carré (0 - 5V) généré par un GBF de sorte que son temps de niveau haut nous permette d'observer l'ensemble des 8 bits envoyée (fixés en permanence à l'entrée du registre). Cette fréquence a été donc fixée à environ 1KHz. On observe sans erreur à l'oscilloscope les trames envoyées (le code de chaque touche appuyée). Voici la table illustrant la lecture.
Table 3.1 : Table de codage 3.1.2.5- Le circuit d'interface de communication série Après avoir relié les liaisons allant vers le PC et ceux quittant le bloc de conversion ; on observe à l'oscilloscope en dual le signal d'horloge généré par le PC avec un rapport cyclique de 50% et la suite binaire envoyée à l'ordinateur de supervision. Obtenir des valeurs désirées à l'oscilloscope n'implique pas forcement que, quand ce signal sera envoyé au PC ces mêmes valeurs seront exactement lue à l'ordinateur. A cet effet avant de passer à notre outil de supervision, nous avons conçu une interface graphique de vérification d'envoi de données au PC par les ports COM. L'interface graphique se décrit comme suit : + Affichage de la fenêtre de gestion au lancement du programme. Figure 3.1 : Fenêtre de gestion + Un clic sur le bouton « Configurer » permet de choisir dans la liste des ports séries disponibles sur la machine, le port que nous voulons utiliser pour envoyer nos données. Figure 3.2 : Fenêtre de choix du port de communication + Après avoir choisi le port, un clic sur le bouton « Valider » permet de valider son choix. Cette validation revient à configurer automatiquement le port série choisi. Nous avons la possibilité d'annuler ce choix pour faire un autre en cliquant sur le bouton « Annuler ». Figure 3.3 : Fenêtre de validation/annulation + Une fois le port configuré; il nous reste à l'ouvrir sans quoi nous ne pouvons ni transmettre ni recevoir de données par ce dernier. A cet effet un clic sur le bouton « Ouvrir » ouvre le port série choisi. Le bouton Ouvrir est donc remplacé par un bouton « Fermer » indiquant ainsi que le port est ouvert et qu'on peut le fermer quand on veut par un clic sur ce bouton. Figure 3.4: Fenêtre d'affichage des données Le port une fois ouvert ; nous avons une zone où s'affiche l'équivalent décimal de l'octet reçu puis une autre où s'affiche l'équivalent hexadécimal du même octet, et tout ceci en temps réel. + Un clic sur le bouton « Quitter » permet de quitter l'application. Le dispositif électronique réalisé sur protoboard a été donc testé avec ce programme afin de s'assurer la lecture des données et la justesse des valeurs lues. 3.1.3- Routage des circuits On distingue :
Voici les circuits imprimés des différentes cartes après routage. Ces figures sont prises par imprime écran. Figure 3.5 : Circuit imprimé de la carte d'alimentation Figure 3.6: Circuit imprimé de la carte du clavier coté cuivre Figure 3.7: Circuit imprimé de la carte du clavier coté composant Figure 3. 8 : Circuit imprimé de la carte d'interface série Voici enfin les différentes photos des modules du dispositif électronique. Figure 3.9 : Vue de dessus de la boite d'alimentation Figure 3.10 : Vue de dessus du clavier Figure 3.11 : Vue de dessus de l'interface de communication série Figure 3.12 : Vue globale du système sans l'ordinateur de supervision 3.2- £ 'outIC e suyervIsIon 3.2.1- Organigramme de l'outil de supervision Figure 3.13 : Organigramme de lancement du scrutin Début Lancement du logiciel Page d'accueil Saisie du code d'identification OUI Code correct ? NON 3ème essai ? NON OUI Boite de dialogue 1 Page d'administration Saisie du mot de passe OUI NON Mot de passe correct ? Page de suivie du scrutin Cet organigramme montre le processus de la supervision et les differentes étapes qui le constituent. Page de suivie du scrutin Déroulement du Lancement du temps Comptage des voix Affichage du nombre de votant Fin du temps NON OUI Nbre d'inscrits Nbre d'inscrits NON OUI NON NON Tentative de Boite de dialogue 3 OUI Boite de dialogue 2 OUI OUI Boite de dialogue 5 Boite de dialogue 4 Electeurs NON Tentative OUI NON NON Page de consultation des résultats OUI Clic sur bouton Boite de dialogue 5 Déroulement du Lancement du temps Comptage des voix Affichage du nombre de votant Fin du temps OUI NON NON Nbre d'inscrits NON Clic sur bouton OUI OUI NON NON Page de consultation des résultats Tentative Tentative de consultation? OUI OUI Boite de dialogue 2 Boite de dialogue 3 Figure 3.14 : Organigramme de la suivie du scrutin NON OUI Fin Boite de dialogue 6 Page de consultation des résultats Mot de passe correct ? Saisie du mot de passe Page des résultats Figure 3.15 : Organigramme de l'affichage des résultats Leaendre Nbre : Nombre. Boite de dialogue 1 : Boite de la figure 3.17. Boite de dialogue 2 : Boite de la figure 3.21. Boite de dialogue 3 : Boite de la figure 3.22. Boite de dialogue 4 : Boite de la figure 3.23. Boite de dialogue 5 : Boite de la figure 3.24. Boite de dialogue 6 : Boite de la figure 3.26. 3.2.2- Interface graphique du système L'interface graphique du système de vote électronique est le logiciel utilisé pilotant la maquette électronique. Il est subdivisé en trois grande parties : - le lancement du scrutin - la suivie du scrutin - l'affichage des résultats Lancement du scrutin Après avoir lancé le logiciel, la page d'accueil s'affiche demandant d'entrer le code du bureau de vote pour lancer le scrutin. Figure 3.16 : Page d'accueil de lancement du vote Si ce code n'est pas correct, une boite de dialogue s'affiche indiquant une erreur de code d'identification. Figure 3.17 : Boite de dialogue de message d'erreur de code Lorsque cette opération est effectuées trois fois successives, une boite de dialogue s'affiche demandant d'entrer le mot de passe administrateur sans quoi l'on ne peut continuer. Figure 3.18 : Boite de dialogue administrateur Après avoir entré le mot de passe administrateur le clic sur le bouton « VALIDER » nous ramène la page d'accueil pour un nouveau lancement du vote. La suivie du scrutin Lorsque le scrutin est lancé, la page de suivie s'affiche. Elle indique le type d'élection, la localisation du bureau de vote (Département, Commune, Arrondissement et Numéro du bureau de vote), l'état initial du scrutin et le nombre Thème : Conception et Réalisation d'un système de vote électronique 2ème Partie : Chapitre 3 : Réalisation pratique du système d'inscrits à ce bureau de vote. Le lancement du scrutin met automatiquement en marche un chronomètre qui décompte à partir de la durée maximale du scrutin jusqu'à la fin où il autorise le clic sur le bouton « CLIQUEZ ICI A LA FIN DU SCRTUTIN » pour consulter les résultats. Figure 3.19 : Page de supervision du scrutin Lorsque les électeurs commencent par accomplir leurs devoirs civiques cette page indique en temps réel le nombre de votants et fait savoir si un électeur une fois qu'il est dans l'isoloir a déjà effectué son devoir de bon citoyen (a voté ou non). La figure qui suit nous montre un moment du scrutin où trois (3) électeurs ont accompli leur mission sur les sept (7) inscrits. Figure 3.20 : Page de supervision du scrutin à un instant donnée Au cours du déroulement du scrutin lorsque le nombre de votants est égal au nombre d'inscrits et la durée de vote n'est pas à terme : > toute tentative de vote est rejetée entrainant l'affichage de la boite de dialogue suivante. Figure 3.21 : Boite de dialogue indiquant le rejet du vote effectué Thème : Conception et Réalisation d'un système de vote électronique 2ème Partie : Chapitre 3 : Réalisation pratique du système > toute tentative de consultation des résultats par un clic sur le bouton « CLIQUEZ ICI A LA FIN DU SCRUTIN » est rejetée et la boite de dialogue de la figure 3.16 s'affiche. Figure 3.22 : Boite de dialogue indiquant le rejet de demande de consultation Lorsque le temps prévu est écoulé : > Si le nombre d'inscrits n'est pas atteint, la boite de dialogue suivante s'affiche indiquant s'il y a des électeurs en attente : Figure 3.23 : Boite de dialogue vérifiant la présente ou non d'électeurs en attente ~ Une action sur le bouton « OUI » entraine l'affichage de la boite de dialogue suivante. Figure 3.24 : Boite de dialogue donnant une durée supplémentaire Après avoir cliqué sur le bouton « OK » une durée supplémentaire de trois (3) minutes est accordée afin que les électeurs en attente puissent effectuer leur vote. Figure 3.25 : Page de consultation des résultats Une action sur le bouton « NON » permet la prise en compte du clic sur le bouton « CLIQUEZ ICI A LA FIN DU SCRUTIN ». Il en est de même à la fin du temps additionnel. > Si le nombre d'inscrits est atteint la possibilité de consulter les résultats est concédée. Affichaae des resultats La prise en compte du clic sur le bouton « CLIQUEZ ICI A LA FIN DU SCRUTIN » permet d'accéder au champ de mot de passe de consultation des résultats. La page ci-dessous montre qu'à ce bureau de vote qu'il y a cinq (5) votants sur sept (7) inscrits durant la journée des élections. Thème : Conception et Réalisation d'un système de vote électronique 2ème Partie : Chapitre 3 : Réalisation pratique du système > En cas d'erreur de mot de passe la boite de dialogue ci-dessous s'ouvre. Figure 3.26: Boite de dialogue d'erreur de mot de passe > Si le mot de passe entré est correct (correspond au mot de passe du code du bureau de vote) la page résultat s'affiche. Figure 3.27 : Page montrant le résultat final du scrutin, NB : la manipulation du logiciel est faite par le superviseur du bureau de vote. 3.3- Estimation du coot d Ca reaCisation Dans cette rubrique, nous allons donner le prix des différents constituants de notre réalisation.
Thème : Conception et Réalisation d'un système de vote électronique 2ème Partie : Chapitre 3 : Réalisation pratique du système
Tableau 3.2 : table d'estimation du cout de réalisation Thème : Conception et Réalisation d'un système de vote électronique Conclusion CONCLUSION Les trois mois de stage effectués à l'Unité de Prestation de Génie Electrique nous ont effectivement permis d'associer la pratique aux connaissances théoriques acquises au cours. Ce stage a été l'occasion d'être confronté aux dures réalités du monde professionnel. Aussi avions-nous eu l'opportunité de renforcer nos compétences en matière de conception et de réalisation de maquette ainsi que dans la maintenance des appareils électriques et informatiques. Quant au Travail de Fin d'Etude (TFE) désormais rendu obligatoire, nous ne saurions que louer cette décision. Le dispositif que nous avons conçu (SVE), comme stipulé dans le cahier des charges est appelé à évoluer selon les critiques. Il sera possible non seulement d'ajouter au logiciel pilotant le dispositif des fonctionnalités pour l'enregistrement des électeurs mais aussi de le mettre dans un réseau couvrant le territoire national pour une gestion centralisée et une divulgation instantanée des résultats à la fin de la durée prévue pour le scrutin. Le système de vote électronique que nous avons réalisé, se veut juste d'être une maquette sur laquelle l'on pourrait se baser pour la réalisation de systèmes beaucoup plus performants et complets. Des améliorations restent donc à lui être apportées ; et étant donné qu'aucune oeuvre humaine n'est parfaite, nous sommes disposés à prendre en compte tout apport éventuel visant à la perfection du travail présenté. |
|