Hur man programmerar ett RFID-kort för dina projekt

RFID-taggar är små, omskrivbara chips som kan lagra små mängder data som namn, adresser, produktinformation och mer. De kan ha formen av nyckelringar och kort, eller de kan till och med implanteras i husdjur eller människor. Om du vill lära dig hur de fungerar eller lägga till dem i ditt eget projekt är en RFID-läsare och författare en billig komponent som du kan använda. Den här guiden visar hur du använder en för att skriva till din egen RFID-tagg.

hur RFID-skribenter arbetar

RFID-läsare/skrivarsensorer använder kortdistansradiovågor med låg effekt för att överföra data från taggar, där data lagras, till den elektroniska enheten som sensorn är ansluten till. I det här fallet kommer vi att använda en Arduino som enhet genom att lägga till en RFID-sensor. Specifikt skriver vi lite grundläggande information till en RFID-tagg.

för att göra detta kommer vi att använda detta bibliotek för att läsa och skriva till RFID-taggar. Eftersom användningen av RFID-taggar är lite mer komplex än att säga att sätta på eller stänga av en LED, kommer vi att förlita oss på befintliga skisser som du kan integrera i dina egna projekt. De förskrivna funktionerna som dessa skisser ger gör att du lättare kan integrera dem i dina andra projekt.

för att använda biblioteket, först ladda ner .zip-fil från Github-sidan ovan. Öppna sedan din Arduino IDE, navigera till skiss > inkludera Bibliotek > Lägg till .ZIP-bibliotek… och välj det bibliotek du just laddat ner. Detta kommer inte bara att göra det möjligt att inkludera RFID-biblioteket i dina skisser, men du får också en samling exempelskisser, som vi behöver senare.

vad du behöver

för detta projekt kommer vi bara att skriva till en RFID-tagg. Tänk dock på när vi går igenom guiden hur du kan använda detta för att utöka dina andra projekt. Kanske kan du utlösa ett lås för att låsa upp när du visar läsaren en tagg med rätt data på den, till exempel. För det här grundläggande projektet är det här vad du behöver:

Arduino
RFID-sensor (helst en MFRC-522)
RFID-taggar
Breadboard & ledningar
Arduino IDE
USB-kabel

eftersom RFID-chips är mycket små kan taggen du använder komma i nästan vilken form som helst. Två av de vanligaste typerna av RFID-chips-ofta kommer i kit eller med sensorer – är små runda nyckelringar eller platta kort om storleken på ett kreditkort. Med det sagt, vilken tagg du har borde fungera.

koden

om du installerade biblioteket enligt instruktionerna ovan, ska följande skiss vara tillgänglig i din exempelbok Under fil > exempel > MFRC522 > rfid_write_personal_data. Välj den i din exempelbok eller kopiera koden nedan:

/*
* skriv personuppgifter om en MIFARE RFID-kort med hjälp av en RFID-RC522 läsare
* använder MFRC522-bibliotek för att använda ARDUINO RFID modul KIT 13,56 MHZ med taggar SPI W och R av COOQROBOT.
* ——————————
* MFRC522 Arduino Arduino Arduino Arduino Arduino Arduino
* läsare / Pcd Uno / 101 Mega Nano V3 Leonardo / Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin Pin
* ——————————
* första / återställa första 9 5 D9 återställa/ICSP-5 första
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*
* Hårdvara krävs:
* Arduino
* Pcd (Proximity Coupling Device): NXP MFRC522 kontaktlös läsare IC
* PICC (proximity Integrated Circuit Card): Ett kort eller tagg med ISO 14443A-gränssnittet, t.ex. Mifare eller NTAG203.
* läsaren kan hittas på eBay för cirka 5 dollar. Sök efter ”mf-rc522” på ebay.com.
*/

#inkludera
#inkludera

# definiera RST_PIN 9 / / konfigurerbar, se typisk stiftlayout ovan
#definiera SS_PIN 10 / / konfigurerbar, se typisk stiftlayout ovan

MFRC522 mfrc522(SS_PIN, RST_PIN); // Skapa mfrc522 instans

void setup() {
seriell.börja (9600); / / initiera seriell kommunikation med datorn
SPI.börja (); / / init SPI buss
mfrc522.PCD_Init (); / / Init MFRC522 kort
seriell.println (F (”skriv personuppgifter på en Mifare PICC ”));
}

void loop() {

// Förbered Nyckel – alla nycklar är inställda på FFFFFFFFFFFFh vid chipleverans från fabriken.
mfrc522:: MIFARE_Key nyckel;
för (byte i = 0; jag < 6; Jag++) nyckel.keyByte = 0xFF;

// Återställ slingan om inget nytt kort finns på sensorn/läsaren. Detta sparar hela processen när den är tomgång.
om ( ! mfrc522.PICC_IsNewCardPresent ()) {
returnera;
}

// Välj ett av korten
om ( ! mfrc522.PICC_ReadCardSerial ()) {
returnera;
}

serie.Skriv ut(F (”kort UID:”)); //dumpa UID
för (byte i = 0; jag < mfrc522.uid.storlek; i++) {
seriell.skriva ut (mfrc522.uid.uidByte < 0x10 ? ”0” : ””);
serie.skriva ut (mfrc522.uid.uidByte, HEX);
}
seriell.Skriv ut (F (”PICC typ:”)); / / Dump PICC typ
MFRC522::PICC_Type piccType = mfrc522.PICC_GetType (mfrc522.uid.sak);
seriell.println (mfrc522.PICC_GetTypeName (piccType));

byte buffert;
byte block;
Mfrc522::StatusCode status;
byte len;

seriell.setTimeout (20000L); / / vänta tills 20 sekunder för inmatning från seriell
// fråga personuppgifter: efternamn
seriell.println (F (”skriv efternamn, slutar med#”));
len = seriell.readBytesUntil (’# ’ , (char *) buffert, 30); / / läs efternamn från seriell
för (byte i = len; i < 30; i++) buffert=”; / / pad med mellanslag

block = 1;
//seriell.println (F (”autentisering med nyckel A…”));
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
Serial.print(F(”PCD_Authenticate() failed: ”));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
else Serial.println(F(”PCD_Authenticate() success: ”));

// Write block
status = mfrc522.MIFARE_Write(block, buffer, 16);
if (status != MFRC522::STATUS_OK) {
Serial.print(F(”MIFARE_Write() failed: ”));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
else Serial.println (F (”MIFARE_Write () framgång: ”));

block = 2;
//seriell.println (F (”autentisering med nyckel A…”));
status = mfrc522.PCD_Authenticate(MFRC522:: PICC_CMD_MF_AUTH_KEY_A, block, &nyckel, &(mfrc522.uid));
om (status != MFRC522::STATUS_OK) {
seriell.Skriv ut (F (”PCD_Authenticate () misslyckades: ”));
seriell.println (mfrc522.GetStatusCodeName (status));
returnera;
}

// skriv block
status = mfrc522.MIFARE_Write (block, & buffert, 16);
om (status != MFRC522::STATUS_OK) {
seriell.Skriv ut (F (”mifare_write () misslyckades:”));
seriell.println (mfrc522.GetStatusCodeName (status));
avkastning;
}
annars seriell.println (F (”MIFARE_Write () framgång: ”));

// fråga personuppgifter: förnamn
seriell.println (F (”skriv förnamn, slutar med#”));
len = seriell.readBytesUntil (’# ’ , (char *) buffert, 20) ; // läs förnamn från seriell
för (byte i = len; i < 20; i++) buffert=”; / / pad med mellanslag

block = 4;
//seriell.println (F (”autentisering med nyckel A…”));
status = mfrc522.PCD_Authenticate(MFRC522:: PICC_CMD_MF_AUTH_KEY_A, block, &nyckel, &(mfrc522.uid));
om (status != MFRC522::STATUS_OK) {
seriell.Skriv ut (F (”PCD_Authenticate () misslyckades: ”));
seriell.println (mfrc522.GetStatusCodeName (status));
returnera;
}

// skriv block
status = mfrc522.MIFARE_Write (block, buffert, 16);
om (status != MFRC522::STATUS_OK) {
seriell.Skriv ut (F (”mifare_write () misslyckades:”));
seriell.println (mfrc522.GetStatusCodeName (status));
avkastning;
}
annars seriell.println (F (”MIFARE_Write () framgång: ”));

block = 5;
/ / seriell.println (F (”autentisering med nyckel A…”));
status = mfrc522.PCD_Authenticate(MFRC522:: PICC_CMD_MF_AUTH_KEY_A, block, &nyckel, &(mfrc522.uid));
om (status != MFRC522::STATUS_OK) {
seriell.Skriv ut (F (”PCD_Authenticate () misslyckades: ”));
seriell.println (mfrc522.GetStatusCodeName (status));
returnera;
}

// skriv block
status = mfrc522.MIFARE_Write (block, & buffert, 16);
om (status != MFRC522::STATUS_OK) {
seriell.Skriv ut (F (”mifare_write () misslyckades:”));
seriell.println (mfrc522.GetStatusCodeName (status));
avkastning;
}
annars seriell.println (F (”MIFARE_Write () framgång: ”));

serie.println ( ”” );
mfrc522.PICC_HaltA (); / / Halt PICC
mfrc522.PCD_StopCrypto1 (); / / stoppa kryptering på PCD

}

Ladda upp den här koden och (efter att du har kopplat upp ditt projekt enligt beskrivningen nedan) kan du omedelbart börja skriva data till dina RFID-taggar.

en av fördelarna med att använda bibliotek som detta är att du kan hitta delar av kod som redan skrivits, så att du inte behöver uppfinna hjulet för varje projekt. Den här gången kommer vi inte att gå igenom koden rad för rad. Låt oss istället prata lite mer om vad koden gör.

Data i RFID-taggar lagras i sektioner som kallas sektorer, som vidare delas in i block. Varje block kan innehålla några byte data. Mängden beror på den specifika taggen, men en vanlig 1K passiv tagg (vilket betyder en tagg som kan lagra 1 kilobyte data) kan till exempel ha 16 sektorer, var och en innehåller 4 block, där varje block kan lagra upp till 16 byte data.

denna skiss kommer bara att lagra ditt för-och efternamn, så det behöver bara en sektor, men det kommer att sprida data ut över flera block, eftersom dina namn kan ta upp mer data än vad som kan passa i ett enda block (och för organisatorisk bekvämlighet).

när du kör skriptet blir du ombedd att ange ditt efternamn, som sedan skrivs till block på din RFID-tagg. Därefter får du en uppmaning att skriva Ditt förnamn, vilket kommer att skrivas till olika block. För mer information om hur RFID-block är organiserade och hur man hanterar dem, kolla in den här guiden.

ledningarna

ledningarna för din specifika RFID-läsare beror på vilken modell du får, eftersom många olika iterationer har stiften i en annan ordning. Lyckligtvis listar exempelkoden som vi inkluderade ovan vilka stift som ska gå vart beroende på vilket kort du använder. Följ den guiden för detaljer.

som ett exempel, om du använde en Arduino Uno och en mfrc-522-sensor, skulle du göra följande:

● Anslut FÖRST till stift 9
● Anslut SDA (eller SS) till stift 10
● Anslut MOSI till stift 11
● Anslut MISO till stift 12
● Anslut SCK till stift 13
● Anslut VCC till 5V
● Anslut till GND GND

Men, återigen, kolla vilka styrelser som du använder för att se till att du är fast korrekt. När ditt kort är anslutet, slå på din Arduino medan den är ansluten via USB till din dator. Sedan kan du trycka på ett RFID-kort eller nyckelring till läsaren. Håll den där medan du matar in data via seriell bildskärm.

mfrc522-biblioteket innehåller också en inbyggd skiss för att läsa RFID-data efter att du har skrivit den. Nu när du vet hur du skriver data, försök ladda upp den skissen och använd den för att läsa taggen du har skrivit till.

Leave a Reply

Din e-postadress kommer inte publiceras.