Étape 4: Lire et reconnaître les cartes RFID
Pour faire quoi que ce soit avec les données des cartes, nous devons créer des fonctions pour récupérer le numéro de la carte lorsqu’il est lu et placer dans un tableau pour la comparaison avec les données existantes de la carte (par exemple, une liste des cartes acceptées) si vos systèmes saura qui acceptent et qui à nier. En utilisant ces fonctions, vous pouvez alors faire votre propre système d’accès, dispositif d’enregistrement des temps et ainsi de suite.Nous allons montrer un exemple de ceci. Il vérifiera si une carte présentée au lecteur figure sur une liste « acceptée », et si si léger une LED verte, sinon allume une LED rouge. Utiliser le matériel de la précédente sketche, mais ajouter un LED vert et rouge typique avec résistance de 560 ohms à broches numériques 13 et 12 respectivement. Puis télécharger le croquis ci-dessous :
//-------------------------------------------------------------------------------------------------------------
#include < SoftwareSerial.h >
SoftwareSerial RFID(2, 3) ; RX et TX
data1 int = 0 ;
ok int = -1 ;
Oui int = 13 ;
int pas = 12 ;
Utilisez premier croquis dans http://wp.me/p3LK05-3Gk pour obtenir vos numéros de tag
int tag1 [14] = {2,52,48,48,48,56,54,66,49,52,70,51,56,3} ;
int tag2 [14] = {2,52,48,48,48,56,54,67,54,54,66,54,66,3} ;
int newtag [14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0} ; utilisé pour les comparaisons de lecture
void setup()
{
RFID.begin(9600) ; Démarrez le lecteur RFID en série
Serial.Begin(9600) ; commencer en série-PC
pinMode (Oui, sortie) ; pour la LED de statut
pinMode (non, sortie) ;
}
Boolean comparetag (int aa [14], int bb[14])
{
ff booléen = false ;
int fg = 0 ;
pour (cc int = 0; cc < 14; cc ++)
{
Si (aa [cc] == bb[cc])
{
FG ++ ;
}
}
Si (fg == 14)
{
FF = true ;
}
retourner et suiv. ;
}
void checkmytags() / / compare chaque balise par rapport à la balise juste lire
{
OK = 0 ; Cette variable permet la prise de décisions,
Si c’est 1 on a un match, le zéro est une lecture mais aucune correspondance,
-1 n’est fait aucune tentative de lecture
Si (comparetag (newtag, tag1) == true)
{
OK ++ ;
}
Si (comparetag (newtag, tag2) == true)
{
OK ++ ;
}
}
Sub readTags()
{
OK = -1 ;
Si (RFID.available() > 0)
{
lire les numéros des étiquettes
Delay(100) ; nécessaire pour laisser le temps pour les données qui viennent de la mémoire tampon de série.
pour (int z = 0; z < 14; z ++) / / lire la suite de la balise
{
Data1 = RFID.read() ;
newtag [z] = données1 ;
}
RFID.flush() ; cesse de lectures multiples
correspondre les balises ?
checkmytags() ;
}
maintenant, faites quelque chose basé sur le type de balise
Si (ok > 0) / / si nous avons eu un match
{
Serial.println("accepted") ;
digitalWrite(yes, HIGH) ;
Delay(1000) ;
digitalWrite (Oui, faible) ;
OK = -1 ;
}
ElseIf (ok == 0) / / si nous n’avions pas un match
{
Serial.println("rejected") ;
digitalWrite(no, HIGH) ;
Delay(1000) ;
digitalWrite (aucune, faible) ;
OK = -1 ;
}
}
void loop()
{
readTags() ;
}
// ------------------------------------------------------------------------------------
Dans l’esquisse, nous avons quelques fonctions qui prennent soin de lire et comparer les étiquettes RFID. Remarquez que les numéros autorisés sont répertoriés dans la partie supérieure de l’esquisse, vous pouvez toujours ajouter votre propre et plus – aussi longtemps que vous ajouter à la liste de la fonction checkmytags() qui détermine si la carte en cours de lecture est autorisée, ou de se voir refuser.
La fonction readTags() s’occupe de la lecture réelle des balises/cartes, en plaçant le numéro actuellement à lire dans un tableau qui est utilisé dans la fonction de comparaison checkmytags(). Ensuite, les voyants sont allumés selon le statut de la balise devant le lecteur. Vous pouvez visionner une démonstration rapide de cet exemple dans cette courte vidéo.
Conclusion
Après avoir travaillé par le biais de ce chapitre, vous devriez maintenant avoir une bonne base de connaissances sur l’utilisation des lecteurs RFID peu coûteux et comment appeler des fonctions lorsqu’une carte est lisible. Par exemple, utiliser un matériel supplémentaire (par exemple un N-MOSFET) pour commander une gâche, vibreur, etc.. Maintenant c’est à vous de les utiliser comme une forme d’entrée avec différents systèmes d’accès, suivi de la circulation des personnes ou des choses et bien plus encore.
Et si vous apprécié le tutoriel, ou veulent introduire quelqu'un dans l’univers intéressant de l’Arduino – consultez mon livre (maintenant dans une troisième édition!) "Atelier Arduino" de presse sans amidon.