Sådan programmeres et RFID-kort til dine projekter
RFID-tags er små, genskrivbare chips, der kan gemme små mængder data som navne, adresser, produktinformation og mere. De kan tage form af nøgleringe og kort, eller de kan endda implanteres i kæledyr eller mennesker. Hvis du vil lære, hvordan de fungerer eller tilføje dem til dit eget projekt, er en RFID-læser og forfatter en billig komponent, som du kan bruge. Denne vejledning viser dig, hvordan du bruger en til at skrive til dit eget RFID-tag.
sådan fungerer RFID-forfattere
RFID-læser/skribentsensorer bruger radiobølger med kort rækkevidde med lav effekt til at overføre data fra tags, hvor dataene gemmes, til den elektroniske enhed, som sensoren er tilsluttet. I dette tilfælde vil vi bruge en Arduino som enhed ved at tilføje en RFID-sensor. Specifikt skriver vi nogle grundlæggende oplysninger til et RFID-tag.
for at gøre dette bruger vi dette bibliotek til læsning og skrivning til RFID-tags. Da brug af RFID-tags er lidt mere kompliceret end at tænde eller slukke for en LED, vil vi stole på allerede eksisterende skitser, som du kan integrere i dine egne projekter. De forudskrevne funktioner, som disse skitser giver, giver dig lettere mulighed for at integrere dem i dine andre projekter.
for at bruge biblioteket, først hente .lynlåsfil fra Github-siden ovenfor. Åbn derefter din Arduino IDE, Naviger til skitse > Inkluder Bibliotek > Tilføj .Vælg det Bibliotek, du lige har hentet. Dette vil ikke kun gøre det muligt at inkludere RFID-biblioteket i dine skitser, men du får også en samling af eksempelskitser, som vi har brug for senere.
hvad du skal bruge
til dette projekt skal vi kun skrive til et RFID-tag. Husk dog, når vi gennemgår guiden, hvordan du kan bruge dette til at udvide dine andre projekter. Måske kan du udløse en lås for at låse op, når du f.eks. Til dette grundlæggende projekt, selvom, her er hvad du har brug for:
Arduino | |
RFID-sensor (helst en MFRC-522) | |
RFID tags | |
Breadboard & ledninger | |
Arduino IDE | |
USB-kabel |
da RFID-chips er meget små, kan det tag, du bruger, komme i næsten enhver form. To af de mest almindelige typer RFID – chips – ofte kommer i sæt eller med sensorer-er små runde nøgleringe eller flade kort på størrelse med et kreditkort. Have sagt, at, uanset tag du har bør arbejde.
koden
hvis du installerede biblioteket som beskrevet ovenfor, skal følgende skitse være tilgængelig i din eksempelbog under fil > eksempler > MFRC522 > rfid_skriv_personal_data. Vælg det i din eksempelbog, eller kopier koden nedenfor:
/*
* Skriv Personlige data om et MIFARE RFID-kort ved hjælp af en RFID-RC522 – læser
* bruger Mfrc522-bibliotek til at bruge ARDUINO RFID modul KIT 13.56 MH med TAGS SPI og R af COOKROBOT.
* ——————————
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* læser / Pcd Uno / 101 Mega Nano V3 Leonardo / Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin Pin Pin Pin Pin Pin
* ——————————
* RST / Nulstil RST 9 5 D9 Nulstil/ICSP-5 RST
* 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
*
* Nødvendigt udstyr:
* Arduino
* PCD (Nærhedskoblingsanordning): NKSP MFRC522 kontaktløs læser IC
* PICC (Nærhedsintegreret kredsløbskort): et kort eller tag, der bruger ISO 14443A-grænsefladen, f.eks Mifare eller NTAG203.
* læseren kan findes på eBay for omkring 5 dollars. Søg efter “mf-rc522” på ebay.com.
*/
#Inkluder
# Inkluder
#Definer RST_PIN 9 / / konfigurerbar, se typisk pin layout ovenfor
# Definer SS_PIN 10 / / konfigurerbar, se typisk pin layout ovenfor
MFRC522 mfrc522(SS_PIN, RST_PIN); // Opret mfrc522 forekomst
void setup() {
Serial.begynd (9600); / / Initialiser seriel kommunikation med PC ‘ en
SPI.begynde (); / / init SPI bus
mfrc522.PCD_Init (); / / Init MFRC522 kort
serie.println (F (“Skriv Personlige data på en MIFARE PICC “));
}
void loop() {
// Forbered nøgle – alle nøgler er indstillet til Ffffffffffh ved chiplevering fra fabrikken.
MFRC522:: MIFARE_Key nøgle;
til (byte i = 0; jeg < 6; Jeg++) nøgle.keyByte = 0hff;
/ / Nulstil sløjfen, hvis der ikke er noget nyt kort til stede på sensoren / læseren. Dette sparer hele processen, når den er inaktiv.
hvis (! mfrc522.Picc_isnyhedkortpræsentation ()) {
return;
}
// Vælg et af kortene
hvis ( ! mfrc522.PICC_ReadCardSerial ()) {
tilbage;
}
seriel.print (F (“kort UID:”)); //Dump UID
til (byte i = 0; jeg < mfrc522.uid.størrelse; i++) {
seriel.print (mfrc522.uid.uidByte < 0h10 ? “0” : “”);
seriel.print (mfrc522.uid.uidByte, sekskant);
}
serie.print (F (“PICC type:”)); / / Dump PICC type
MFRC522::PICC_Type piccType = mfrc522.PICC_GetType (mfrc522.uid.sak);
serie.println (mfrc522.PICC_GetTypeName (piccType));
byte buffer;
byte block;
Mfrc522::StatusCode status;
byte len;
seriel.setTimeout(20000l);// vent indtil 20 sekunder for input fra seriel
/ / spørg personlige data: efternavn
seriel.println (F (“skriv efternavn, slutter med#”));
len = Serial.readBytesUntil (‘# ‘ , (char *) buffer, 30) ; // Læs efternavn fra seriel
for (byte i = len; i < 30; i++) buffer=”; / / pad med mellemrum
block = 1;
//Serial.println (F (“autentificering ved hjælp af nøgle 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_skriv() succes: “));
blok = 2;
/ / serie.println (F (“autentificering ved hjælp af nøgle a…”));
status = mfrc522.PCD_Authenticate (MFRC522:: PICC_CMD_MF_AUTH_KEY_A, blok, &nøgle, & (mfrc522.uid));
hvis (status != MFRC522:: STATUS_OK) {
serie.print (F (“PCD_Authenticate () mislykkedes:”));
seriel.println (mfrc522.GetStatusCodeName (status));
return;
}
// skriv blok
status = mfrc522.Mifare_skriv(blok, &buffer, 16);
hvis (status != MFRC522:: STATUS_OK) {
serie.Udskriv (F (“Mifare_skriv () mislykkedes:”));
seriel.println (mfrc522.GetStatusCodeName (status));
retur;
}
else Serial.println (F (“Mifare_skriv() succes: “));
// spørg personlige data:fornavn
seriel.println (F (“skriv fornavn, slutter med#”));
len = Serial.readBytesUntil (‘# ‘ , (char *) buffer, 20) ; // Læs fornavn fra seriel
for (byte i = len; i < 20; i++) buffer=”; / / pad med mellemrum
block = 4;
//Serial.println (F (“autentificering ved hjælp af nøgle a…”));
status = mfrc522.PCD_Authenticate (MFRC522:: PICC_CMD_MF_AUTH_KEY_A, blok, &nøgle, & (mfrc522.uid));
hvis (status != MFRC522:: STATUS_OK) {
serie.print (F (“PCD_Authenticate () mislykkedes:”));
seriel.println (mfrc522.GetStatusCodeName (status));
return;
}
// skriv blok
status = mfrc522.Mifare_skriv(blok, buffer, 16);
hvis (status != MFRC522:: STATUS_OK) {
serie.Udskriv (F (“Mifare_skriv () mislykkedes:”));
seriel.println (mfrc522.GetStatusCodeName (status));
retur;
}
else Serial.println (F (“Mifare_skriv() succes: “));
blok = 5;
/ / serie.println (F (“autentificering ved hjælp af nøgle a…”));
status = mfrc522.PCD_Authenticate (MFRC522:: PICC_CMD_MF_AUTH_KEY_A, blok, &nøgle, & (mfrc522.uid));
hvis (status != MFRC522:: STATUS_OK) {
serie.print (F (“PCD_Authenticate () mislykkedes:”));
seriel.println (mfrc522.GetStatusCodeName (status));
return;
}
// skriv blok
status = mfrc522.Mifare_skriv(blok, &buffer, 16);
hvis (status != MFRC522:: STATUS_OK) {
serie.Udskriv (F (“Mifare_skriv () mislykkedes:”));
seriel.println (mfrc522.GetStatusCodeName (status));
retur;
}
else Serial.println (F (“Mifare_skriv() succes: “));
seriel.println ( “” );
mfrc522.PICC_HaltA (); / / Halt PICC
mfrc522.PCD_StopCrypto1 (); / / Stop kryptering på PCD
}
Upload denne kode, og (efter tilslutning af dit projekt som beskrevet nedenfor) kan du straks begynde at skrive data til dine RFID-tags.
en af fordelene ved at bruge biblioteker som dette er, at du kan finde dele af kode, der allerede er skrevet, så du ikke behøver at genopfinde hjulet til hvert projekt. Denne gang går vi ikke gennem koden linje for linje. Lad os i stedet tale lidt mere om, hvad koden gør.
Data i RFID-tags gemmes i sektioner kaldet sektorer, som yderligere er opdelt i blokke. Hver blok kan indeholde et par bytes data. Mængden afhænger af det specifikke tag, men et almindeligt 1K passivt tag (hvilket betyder et tag, der kan gemme 1 kilobyte data) kan for eksempel have 16 sektorer, der hver indeholder 4 blokke, hvor hver blok kan gemme op til 16 bytes data.
denne skitse vil kun gemme dit for-og efternavn, så det behøver kun en sektor, men det vil sprede dataene ud over flere blokke, da dine navne kan optage flere data, end der kan passe i en enkelt blok (og for organisatorisk bekvemmelighed).
når du kører scriptet, bliver du bedt om at angive dit efternavn, som derefter skrives til blokke på dit RFID-tag. Derefter får du en prompt til at skrive dit fornavn, som vil blive skrevet til forskellige blokke. For mere information om, hvordan RFID-blokke er organiseret, og hvordan man adresserer dem, tjek denne vejledning.
ledningerne
ledningerne til din specifikke RFID-læser afhænger af den model, du får, da mange forskellige iterationer har stifterne i en anden rækkefølge. Heldigvis er eksempelkoden, vi inkluderede ovenfor, lister, hvilke stifter der skal gå, afhængigt af det bord, du bruger. Følg denne vejledning for detaljer.
som et eksempel, hvis du brugte en Arduino Uno og en mfrc-522 sensor, så ville du gøre følgende:
● Tilslut FØRST til pin 9
● Tilslut SDA (eller SS) til ben 10
● Tilslut MOSI at pin 11
● Tilslut MISO at pin-12
● Tilslut SCK, at pin-13
● Tilslut VCC til 5V
● Tilslut GND til GND
Men, igen, ind bestyrelser, som du bruger til at sørge for, at du er sat op korrekt. Når dit bord er tilsluttet, skal du tænde din Arduino, mens den er tilsluttet via USB til din computer. Derefter kan du trykke på et RFID-kort eller nøglering til læseren. Hold den der, mens du indtaster data via den serielle skærm.
mfrc522-biblioteket indeholder også en indbygget skitse til læsning af RFID-data, efter at du har skrevet det. Nu hvor du ved, hvordan du skriver data, kan du prøve at uploade den skitse og bruge den til at læse det tag, du har skrevet til.