Table des matières:

Serrure de porte RFID Arduino : 5 étapes (avec photos)
Serrure de porte RFID Arduino : 5 étapes (avec photos)

Vidéo: Serrure de porte RFID Arduino : 5 étapes (avec photos)

Vidéo: Serrure de porte RFID Arduino : 5 étapes (avec photos)
Vidéo: Contrôle d'une serrure avec Arduino et RFID 2024, Novembre
Anonim
Serrure de porte RFID Arduino
Serrure de porte RFID Arduino
Serrure de porte RFID Arduino
Serrure de porte RFID Arduino
Serrure de porte RFID Arduino
Serrure de porte RFID Arduino
Serrure de porte RFID Arduino
Serrure de porte RFID Arduino

***Mise à jour le 2010-08-09*** Je voulais faire un moyen facile et sécurisé d'entrer dans mon garage. La RFID était le meilleur moyen de déverrouiller ma porte, même les mains pleines, je peux déverrouiller la porte et la pousser pour l'ouvrir ! J'ai construit un circuit simple avec une puce arduino ATMega 168 de base et un lecteur RFID ID-20 pour contrôler une serrure de porte électronique. Le circuit se compose de 3 parties distinctes, un lecteur pour lire les étiquettes RFID, un contrôleur pour accepter les données du lecteur et contrôler la sortie de la LED RVB et de la serrure électrique. La serrure de porte est d'abord installée dans une porte et testée avec une pile 9v pour garantir une installation correcte. Dans la plupart des cas, vous voulez un circuit normalement ouvert sur la serrure de porte, ou Fail Secure. Cela signifie que la porte reste verrouillée lorsqu'aucun courant ne la traverse. Lorsque 12vDC est passé à travers l'électroaimant dans la serrure de la porte, une plaque dans la serrure cède et permet à la porte de s'ouvrir librement. Le lecteur est placé à l'extérieur de la porte et est séparé du contrôleur à l'intérieur afin que personne ne puisse contourner la sécurité en brisant le lecteur et en essayant de court-circuiter le lecteur. Le contrôleur reçoit des données série du lecteur et contrôle la LED RVB et la serrure de porte. Dans ce cas, j'ai mis les deux sur des planches à pain séparées pour les tests. Voici une présentation vidéo du système en action Lisez la suite pour voir comment en créer un pour vous-même ! **Mise à jour** Tous les codes, schémas et conceptions de circuits imprimés ont été testés et affinés. Ils sont tous affichés ici à partir du 2010-08-09 Vidéo mise à jour du système final installé et fonctionnel.

Étape 1: Pièces nécessaires

Pièces nécessaires
Pièces nécessaires

Voici une liste de pièces et des liens vers SparkFun.com où je les ai achetées. Il s'agit de l'ensemble de base de pièces dont vous avez besoin pour construire et arduino et un circuit pour lire les étiquettes RFID dans l'arduino. Je suppose que vous avez déjà une maquette, une alimentation et des fils de raccordement.

Trucs Arduino

ATmega168 avec chargeur de démarrage Arduino $4.95

Cristal 16MHz $1.50

Condensateur Céramique 22pF 0,25 $ (x2)

Résistance 10k Ohm 1/6e Watt PTH 0,25 $

Mini interrupteur à bouton-poussoir 0,35 $

LED RVB Triple Sortie - Diffuse $1.95

Trucs RFID

L'un ou l'autre, 20 a une meilleure portée, 12 est plus petitRFID Reader ID-12 29,95 $RFID Reader ID-20 34,95 $

Sortie du lecteur RFID 0,95 $

En-têtes Break Away - Droit 2,50 $

Étiquette RFID - 125 kHz 1,95 $

Autre

Transistor TIP31A (radio shack/magasin d'électronique local 1,50 $)

La serrure de porte est d'ebay. Porte Fail Contrôle d'accès sécurisé Gâche électrique v5 NO 17,50 $ (kawamall, baie)

Étape 2: Construisez le contrôleur Arduino

Construire le contrôleur Arduino
Construire le contrôleur Arduino
Construire le contrôleur Arduino
Construire le contrôleur Arduino
Construire le contrôleur Arduino
Construire le contrôleur Arduino

La première étape pour construire une serrure de porte RFID avec un Arduino de base consiste à créer une planche à pain sur un arduino fonctionnel de base. La plupart des puces ATMega 168 pré-flashées Arduino sont livrées avec le programme de clignotement par défaut pré-installé. Connectez une LED à la sortie numérique 13 et vérifiez que tout fonctionne.

La partie matérielle de ce lecteur RFID serait trop simple si nous utilisions un arduino ordinaire avec un programmeur USB intégré. Étant donné que je prévois de le mettre dans le mur et de ne plus le toucher, je ne veux pas utiliser une grosse carte arduino encombrante à 30 $ alors que je peux acheter un ATMega 168 à 5 $ et faire un PCB personnalisé beaucoup plus petit.

Parce que j'ai choisi de créer moi-même un circuit Arduino de base, j'ai besoin d'un programmeur externe USB->Série FDIT. J'ai inclus les schémas Eagle du contrôleur avec une alimentation construite à partir d'un régulateur de tension 7805. Lors des tests, j'ai utilisé une alimentation électrique pour planche à pain.

Pour faire fonctionner un arduino, tout ce dont vous avez vraiment besoin est l'ATMega168 avec le logiciel arduino flashé dessus, 2 condensateurs 22pF, un cristal 16mhz, une résistance de 10k ohms, un bouton-poussoir et une planche à pain. Le branchement pour cela est bien connu mais j'ai inclus le schéma complet du circuit.

L'arduino va déclencher 4 sorties, 1 chacune pour les LED rouge/vert/bleu, et 1 pour déclencher le TIP31A pour envoyer 12vDC à la serrure de porte. L'arduino reçoit des données série sur sa ligne Rx du lecteur RFID ID-20.

Étape 3: Construire le lecteur RFID

Construire le lecteur RFID
Construire le lecteur RFID
Construire le lecteur RFID
Construire le lecteur RFID
Construire le lecteur RFID
Construire le lecteur RFID

Maintenant que votre pain arduino est monté et fonctionnel, vous pouvez assembler la partie lecteur RFID du circuit qui contiendra l'ID-10 ou l'ID-20 et la LED RVB pour indiquer l'état du circuit. N'oubliez pas que le lecteur sera à l'extérieur et séparé du contrôleur à l'intérieur afin que quelqu'un ne puisse pas facilement entrer par effraction.

Pour construire cela, nous allons envoyer 5v/sol de la planche à pain principale à une planche à pain secondaire sur laquelle nous construisons le lecteur. Envoyez également 3 fils à partir de 3 des broches de sortie de l'arduino pour contrôler la LED RVB, un pour chaque couleur. Un autre fil, Brown sur les images, sera une connexion série pour que l'ID-20 communique avec l'entrée série Rx de l'arduino. C'est un circuit très simple à connecter. Les LED obtiennent des résistances et quelques points sur l'ID-20 sont liés à la terre/5v pour définir le statut correct.

Pour faciliter la planche à pain, l'ID-10/ID-20 Sparkfun vend une planche de dérivation qui vous permet de fixer des en-têtes de broche plus longs espacés pour s'adapter à une planche à pain. Cette partie et les pinheaders et répertoriés dans la liste des pièces.

Le schéma doit être droit vers l'avant et facile à suivre.

Étape 4: Programmez

Il est temps de programmer votre arduino. Cela peut être un peu délicat avec un arduino de base, vous devrez peut-être appuyer plusieurs fois sur le bouton de réinitialisation avant et pendant la première partie du téléchargement. Une chose très importante à retenir, vous obtiendrez une erreur de téléchargement si vous ne déconnectez pas temporairement la ligne série ID-20 de la ligne Rx de l'arduino. L'ATMega168 n'a qu'une entrée Rx et il l'utilise pour télécharger le code pour parler au programmeur. Déconnectez l'ID-20 pendant la programmation puis rebranchez-le lorsque vous avez terminé. J'ai utilisé un programmeur FTDI qui permet de programmer l'arduino via USB avec seulement 4 fils. Le schéma du contrôleur montre une connexion d'en-tête de broche pour vous permettre d'en brancher une directement. Sparkfun vend également cette pièce mais beaucoup l'ont peut-être déjà.

Vous pouvez facilement télécharger mon code sur votre arduino et ne jamais regarder en arrière, mais quel est le plaisir là-dedans ? Permettez-moi d'expliquer l'idée de base de la façon dont cela fonctionne.

Tout d'abord, je ne voulais pas de boutons/interrupteurs/etc externes et je ne voulais pas reprogrammer l'arduino à chaque fois que je voulais ajouter une nouvelle carte. Par conséquent, je voulais utiliser uniquement la RFID pour contrôler le fonctionnement du circuit ainsi que le contrôle de la serrure de la porte.

Le programme allume la LED bleue pour indiquer qu'il est prêt à lire une nouvelle carte. Lorsque la carte est lue, il décide s'il s'agit d'une carte valide ou non en comparant ce qu'il a lu à une liste de cartes valides. Si l'utilisateur est valide, l'arduino éteint la LED bleue et allume la LED verte pendant 5 secondes. Il active également une autre sortie élevée pendant 5 secondes. Cette sortie est connectée au transistor TIP31A et permet au minuscule arduino de contrôler une serrure de porte 12v 300mA beaucoup plus grande sans être endommagé. Après 5 secondes, la serrure de la porte se reverrouille et la LED redevient bleue pour attendre qu'une autre carte soit lue. Si la carte n'est pas valide alors la LED passe au ROUGE pendant quelques secondes et revient au Bleu pour attendre une autre carte.

Il est important que la serrure de porte fonctionne toujours même si l'arduino perd de l'alimentation pendant la nuit ou est réinitialisé. Par conséquent, tous les ID de carte valides sont stockés dans la mémoire EEPROM. L'ATMega168 dispose de 512 octets de mémoire EEPROM. Chaque carte RFID a un numéro de série de 5 octets hexadécimaux et une somme de contrôle de 1 octet hexadécimal que nous pouvons utiliser pour vérifier qu'il n'y a pas eu d'erreurs dans la transmission entre l'ID-20 et l'arduino.

Les cartes valides sont stockées dans l'EEPROM en utilisant le premier octet comme compteur. Par exemple, s'il y a 3 cartes valides stockées, le premier octet dans l'EEPROM serait 3. EEPROM.read(0); = 3. Sachant cela, et le fait que chaque ID est long de 5 octets, nous savons que 1-5 est la carte un, 6-10 est la carte 2 et 11-15 est la carte 3. Nous pouvons faire une boucle qui regarde à travers l'EEPROM 5 octets à la fois et essaie de trouver la carte qui a été lue par le lecteur.

Mais comment pouvons-nous ajouter de nouvelles cartes à l'EEPROM après l'installation du circuit ?? J'ai lu l'une des cartes RFID que j'ai et je l'ai codée en dur pour qu'il s'agisse de la carte RFID principale. Ainsi, même si la totalité de l'EEPROM est effacée, la carte maîtresse fonctionnera toujours. Chaque fois qu'une carte est lue, il vérifie d'abord s'il s'agit de la carte Master, sinon, il continue de voir si c'est une carte valide ou non. Si la carte est la carte maîtresse, l'arduino passe dans un "mode de programmation" où il clignote en RVB et attend qu'une autre balise valide soit lue. Le prochain tag lu est ajouté au prochain emplacement libre dans l'EEPROM et le compteur est incrémenté de 1 si la carte n'existe pas déjà dans la mémoire EEPROM. Le lecteur revient alors en mode normal et attend la lecture d'une nouvelle carte.

Actuellement, je n'ai pas programmé de moyen de supprimer une carte, car les raisons de la suppression d'une carte seraient probablement sa perte ou son vol. Comme cela serait probablement utilisé avec 1 à 10 personnes, la chose la plus simple à faire serait de programmer en dur une carte Master Erase qui effacera toutes les cartes de l'EEPROM puis les rajoutera toutes, ce qui ne prend que quelques secondes. J'ai ajouté du code pour effacer l'EEPROM mais je n'ai pas encore implémenté cette fonctionnalité..

Le code est joint dans un fichier texte avec une copie de la liste des pièces.

Étape 5: Développer

Ce n'est que quelques-unes des choses intéressantes que vous pouvez faire avec la RFID. Vous pouvez étendre cela beaucoup plus avec une sortie LCD, la journalisation de qui entre et quand, une connexion réseau/twitter, etc. Je prévois de faire une version PCB finie de ce circuit. Je n'ai jamais fait de PCB auparavant, donc je travaille toujours sur la conception et la disposition des pièces. Une fois que je les aurai terminés, je les posterai également. J'encourage tout le monde à prendre le code que j'ai écrit et à le modifier pour faire des choses encore plus cool !

Finaliste du concours Arduino

Conseillé: