Dernière mise à jour :
06/05/2012
Présentation
Ce montage permet de limiter l'accès à un système, au moyen d'une clé
matérielle unique et plutôt difficile à pirater.
Il
génère une impulsion de commande si la bonne clé matérielle (constituée
de trois résistances fixes) est insérée au bon endroit. Il s'agit d'un
système super simple à base de PIC 12F675, qui pourrait
sans difficulté particulière être converti en montage sans composant
programmable, mais au prix d'une complication exponentielle (je ne sais
pas si ça se dit, mais le terme "exponentielle", avec un peu de chance,
vous fera aussi peur qu'à moi).
Schéma
Essayez donc de faire plus simple pour des fonctions identiques...
Mémorisation et reconnaissance clé physique
Au repos, c'est
à dire quand aucune clé physique n'est insérée, les
trois entrées analogiques AN0 à AN2 du IC sont portées à un potentiel
nul via les résistances de rappel R1 à R3 reliées à la masse
(pull-down), toutes de 10 kO. Quand on insère la clé, les trois
résistances RK1 à RK3 forment un pont diviseur avec les résistances R1
à R3 (RK1 avec R1, RK2 avec R2 et RK3 avec R3), et la tension présente
sur les trois entrées AN0 à AN2 s'en trouve modifiée puisqu'elle
devient positive, de valeur comprise entre 0 V et +5 V. Bien sûr, on ne
va pas s'arranger pour disposer d'une tension de 0 V. Quoique... c'est
un code comme un autre. Imaginons que la résistance RK1 fait 10 kO.
Dans ce cas, les deux résistances RK1 et R1 forment un pont diviseur
par 2 (on néglige la résistance d'entrée du PIC, et je sais, c'est pas
bien, mais comme on le verra plus loin on s'en fiche vraiment
royalement). La tension en AN0 est donc de 5 V divisé par deux, soit
+2,5 V. Voilà une première tension "codée". Si on adopte pour les deux
autres entrées des tensions différentes (résistances RK2 et RK3
différentes de 10 kO), imaginez le nombre de combinaisons possibles...
Vous avez compris le principe, il suffit de prendre trois résistances
de valeurs différentes et de préférence comprises entre 100 ohms et 100
kO pour constituer votre code à trois valeurs.
- Avec 100 ohms : tension mémorisée = (5 * 10000) / (10000 + 100) = 4,95 V
- Avec 1 kO ohms : tension mémorisée = (5 * 10000) / (10000 + 1000) = 4,5 V
- Avec 10 kO ohms : tension mémorisée = (5 * 10000) / (10000 + 10000) = 2,5 V
- Avec 100 kO : tension mémorisée = (5 * 10000) / (10000 + 100000) = 0,45 V
Pour ce qui est de la
reconnaissance de la clé, rien de plus simple. Il suffit de
l'insérer et d'appuyer pendant une seconde sur le bouton poussoir
SW1. Le PIC lit les tensions actuelles et les mémorise pour comparaison
ultérieure... tout simplement ! Vous pouvez de la sorte changer le code
quand vous voulez, sans vous causer de gros mal de tête. Bien entendu, le
poussoir SW1 devra être aussi bien caché que le circuit principal.
Indication sonore "code" OK ou mauvais
En
fonctionnement nominal, le PIC effectue en permanence une mesure des
tensions présentes sur les trois entrées AN0 à AN2. Trois cas de figure
peuvent se présenter :
- Les trois tensions mesurées sont nulles, ce qui signifie qu'aucune clé n'est insérée.
- Les
trois tensions mesurées sont conformes à celle attendues, un bip
sonore "aigu" se fait entendre et la sortie Out délivre son impulsion
de commande dont vous faites ce que vous voulez.
- Au moins une
tension mesurée n'est pas nulle, mais les trois ne sont pas conformes à
celles attendues. Dans ce cas la clé considère qu'il y a tentative de
fraude et bloque le système pendant quelques secondes, pendant lesquelles
retentit un signal sonore grave entrecoupé de silence pour ne pas
réveiller toute la maison.
Les bips sonores sont créés le plus
simplement du monde en faisant alterner de manière régulière l'état logique de la broche GP5 du PIC (méthode décrite à la page
Example de code MikroPascal - Production sonore).
Sortie principale
La
sortie principale Out est de type TTL, 5 V sous 20 mA maxi. Ce qui est
amplement suffisant pour piloter un relais via un petit transistor type
2N2222 ou BC108. Tel que le code est écrit et compilé, la sortie est
active pendant une seconde à partir du moment où la bonne clé est
insérée dans le connecteur J1. Si vous souhaitez disposer d'une sortie
qui reste active tant que la clé est insérée, il vous suffit de
modifier le code source fourni.
Alimentation
Il est très
important que l'alimentation soit parfaitement régulée. Peu importe si
elle fait 4,5 V ou 5,2 V, l'important est que ça ne bouge pas trop. Un
régulateur de tension style 78L05 (boîtier TO92 plastique, version 100
mA) convient parfaitement, sa tension d'entrée devra être comprise entre +8 V et +15 V.
Ne pas utiliser de piles ni d'accus !
Prototype
Réalisé par Vincent.
LED verte allumée si clé OK, LED rouge allumée dans le cas contraire.
Logiciel du PIC
Fichier binaire compilé (*.hex) et fichiers de code
source (MikroPascal Pro V5.30) inclus dans l'archive zip que voici :
Clé électronique 001 - 12F675 - (06/05/2012)
Si vous souhaitez recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC - Sources.
Circuit imprimé
Réalisé en simple face, un seul trou de fixation suffira (notez qu'on a
la place pour en mettre deux côte à côte si on préfère travailler
par paire).
Typon aux formats PDF, EPS et Bitmap 600 dpi
Historique
06/05/2012- Ajout d'un
délai de 100 ms entre la sauvegarde d'une nouvelle clé et son rappel.
Sans ce délai, la nouvelle clé était bien enregistrée en EEProm mais
n'était rappelée qu'à la suite d'un arrêt / marche.
22/04/2012- Correction erreurs dans formules écrites (merci Vincent).
- Ajout photos proto Vincent.
01/04/2012- Première mise à disposition.