Arduino Tutorials-RFID- (4 / 4 steg)
Steg 4: Läsning och erkännande av RFID-kort
För att göra något med kortdata, måste vi skapa några funktioner för att hämta kortnummer när det är läsa och placera i en matris för jämförelse mot befintliga kortdata (t.ex. en lista över godkända kort) så din system vet vem att acceptera och som att förneka. Med hjälp av dessa funktioner, kan sedan du göra din egen access system, tid-logging enhet och så vidare.Låt oss visa ett exempel på detta. Det kommer att kontrollera om en kort presenteras för läsaren är på en "accepterad" lista, och om så lätt en grön LED, annars ljus en röd LED. Använda maskinvaran från den tidigare sketche, men lägger en typisk grön och röd lysdiod med 560 ohm resistor till digital stift 13 och 12 respektive. Sedan ladda upp den följande skissen:
//-------------------------------------------------------------------------------------------------------------
#include < SoftwareSerial.h >
SoftwareSerial RFID(2, 3); RX- och TX
int data1 = 0;
int ok = -1;
int ja = 13.
int inga = 12.
använda första skiss i http://wp.me/p3LK05-3Gk för att få din tagg nummer
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}; används för Läs jämförelser
void setup()
{
RFID.begin(9600); Starta följetong till RFID-läsare
Serial.BEGIN(9600); Starta följetong till PC
pinMode (Ja, produktionen); för status lysdioder
pinMode (nej, produktionen);
}
booleska comparetag (int aa [14], int bb[14])
{
booleska ff = false;
int fg = 0;
för (int cc = 0; cc < 14; cc ++)
{
om (aa [cc] == bb[cc])
{
FG ++;
}
}
om (fg == 14)
{
FF = sant;
}
returnera ff;
}
void checkmytags() / / jämför varje tagg mot etiketten bara läsa
{
OK = 0; Denna variabel hjälper beslutsfattande,
om det är 1 vi har en match, är zero en läsa men ingen match,
-1 är ingen Läs försöket
om (comparetag (newtag, tag1) == true)
{
OK ++;
}
om (comparetag (newtag, tag2) == true)
{
OK ++;
}
}
void readTags()
{
OK = -1;
om (RFID.available() > 0)
{
Läs etiketten nummer
Delay(100); behövs för att ge tid för data att komma från seriella bufferten.
för (int z = 0, z < 14, z ++) / / Läs resten av etiketten
{
Data1 = RFID.read();
newtag [z] = data1;
}
RFID.flush(); stoppar flera läsningar
matchar taggarna?
checkmytags();
}
nu göra något utifrån taggtyp
om (ok > 0) / / om vi hade en match
{
Serial.println("Accepted");
digitalWrite(yes, HIGH);
Delay(1000);
digitalWrite (Ja, låg);
OK = -1;
}
annars om (ok == 0) / / om vi inte hade en match
{
Serial.println("Rejected");
digitalWrite(no, HIGH);
Delay(1000);
digitalWrite (nej, låg);
OK = -1;
}
}
void loop()
{
readTags();
}
// ------------------------------------------------------------------------------------
I skissen har vi några funktioner som tar hand om läsa och jämföra RFID-taggar. Märker att de tillåtna tag nummer visas överst i skissen, du kan alltid lägga till egna och mer-så länge du lägga till dem i listan i den funktion checkmytags() som bestämmer om kortet läses tillåts eller nekas.
Funktionen readTags() hand tar om den faktiska behandlingen av Taggar/kort, genom att placera för närvarande-Läs asset tag-nummer i en matris som är dem används i jämförelsen funktion checkmytags(). Sedan är lamporna tända beroende på etiketten på läsaren. Du kan titta på en snabb demonstration av detta exempel i denna korta video.
Slutsats
Efter att ha arbetat igenom detta kapitel bör du nu ha en bra grund av kunskap på att använda billig RFID-läsare och hur man anropar funktioner när ett kort framgångsrikt läses. Till exempel, använda några extra maskinvara (till exempel en N-MOSFET) att styra en dörr strike, Summer, etc. Nu är det upp till dig att använda dem som en form av input med olika system för tillgång, spåra förflyttning av personer eller saker och mycket mer.
Och om du gillade läraren, eller vill införa någon annan till en intressant värld av Arduino – kolla min bok (nu i en tredje utskrift!) "Arduino Workshop" från ingen stärkelse Press.