Jak naprogramovat RFID kartu pro vaše projekty

RFID tagy jsou malé, přepisovatelné čipy, které mohou ukládat malé množství dat, jako jsou jména, adresy, informace o produktech a další. Mohou mít podobu klíčenek a karet, nebo mohou být dokonce implantovány do domácích zvířat nebo lidí. Pokud se chcete dozvědět, jak fungují, nebo je přidat do svého vlastního projektu, čtečka RFID a spisovatel je levná součást, kterou můžete použít. Tato příručka vám ukáže, jak ji použít k zápisu do vlastní značky RFID.

jak RFID spisovatelé práce

RFID čtečka / zapisovač senzory používají krátkého dosahu, nízkoenergetické rádiové vlny pro přenos dat z tagů, kde jsou data uložena, do elektronického zařízení senzor je připojen k. V tomto případě použijeme Arduino jako zařízení přidáním senzoru RFID. Konkrétně napíšeme některé základní informace do RFID tagu.

k tomu využijeme tuto knihovnu pro čtení a zápis do RFID tagů. Vzhledem k tomu, že používání RFID tagů je o něco složitější než, řekněme, zapnutí nebo vypnutí LED, budeme se spoléhat na již existující náčrtky, které můžete integrovat do svých vlastních projektů. Předem napsané funkce, které tyto náčrtky poskytují, vám umožní snadněji je integrovat do vašich dalších projektů.

Chcete-li použít knihovnu, nejprve stáhněte .zip soubor ze stránky Github výše. Dále otevřete Arduino IDE, přejděte na skica > zahrnout knihovnu > přidat .ZIP knihovna … a vyberte knihovnu, kterou jste právě stáhli. Nejen, že to umožní zahrnout knihovnu RFID do vašich skic, ale také získáte sbírku ukázkových skic,které budeme potřebovat později.

co budete potřebovat

pro tento projekt budeme psát pouze na značku RFID. Při procházení průvodce však mějte na paměti, jak to můžete použít k rozšíření dalších projektů. Možná můžete odemknout zámek, když například ukážete čtenáři značku se správnými údaji. Pro tento základní Projekt, ačkoli, tady je to, co budete potřebovat:

Arduino
RFID senzor (nejlépe mfrc-522)
RFID tagy
prkénko & zapojení
Arduino IDE
USB kabel

vzhledem k tomu, že čipy RFID jsou velmi malé, může značka, kterou používáte, přijít téměř v jakékoli formě. Dva z nejběžnějších typů RFID čipů-často přicházejí v sadách nebo se senzory – jsou malé kulaté klíčenky nebo ploché karty o velikosti kreditní karty. Když jsem to řekl, jakákoli značka, kterou máte, by měla fungovat.

kód

pokud jste nainstalovali knihovnu podle pokynů výše, následující náčrt by měl být k dispozici ve vaší ukázkové knize v souboru > příklady > MFRC522 > rfid_write_personal_data. Vyberte jej ve své knize příkladů nebo zkopírujte níže uvedený kód:

/*
* zápis osobních údajů RFID karty MIFARE pomocí čtečky RFID-RC522
* používá knihovnu MFRC522 k použití ARDUINO RFID MODULE KIT 13.56 MHZ se značkami SPI W A R od COOQROBOT.
* ——————————
* MFRC522 Arduino Arduino Arduino Arduino Arduino Arduino
* čtečka / PCD Uno / 101 Mega Nano V3 Leonardo / Micro pro Micro
* Signální Pin Pin Pin Pin Pin Pin
* ——————————
* RST / Reset RST 9 5 D9 RESET / 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
*
* Potřebný Hardware:
* Arduino
* PCD (Proximity Coupling Device): NXP MFRC522 bezkontaktní čtečka IC
* PICC (Proximity Integrated Circuit Card): karta nebo značka používající rozhraní ISO 14443A, např.
* čtenář lze nalézt na eBay za zhruba 5 dolarů. Hledat „mf-rc522“ na ebay.com.
*/

#zahrnout
#zahrnout

# definovat RST_PIN 9 / / konfigurovatelné, viz typické rozložení pin výše
#definovat SS_PIN 10 / / konfigurovatelné, viz typické rozložení pin výše

MFRC522 mfrc522 (SS_PIN, RST_PIN) ; // Create mfrc522 instance

void setup () {
Serial.begin (9600); / / inicializovat sériovou komunikaci s PC
SPI.begin (); / / init SPI bus
mfrc522.PCD_Init (); / / init MFRC522 karta
Serial.println (F („psát osobní údaje na MIFARE PICC „));
}

void loop() {

// připravte klíč-všechny klíče jsou nastaveny na ffffffffffffh při dodání čipu z továrny.
MFRC522:: MIFARE_Key klíč;
pro (byte i = 0; i < 6; i++) klíč.keyByte = 0xFF;

/ / resetujte smyčku, pokud na senzoru/čtečce není žádná nová karta. To šetří celý proces při nečinnosti.
pokud ( ! mfrc522.PICC_IsNewCardPresent ()) {
návrat;
}

// vyberte jednu z karet
pokud ( ! mfrc522.PICC_ReadCardSerial ()) {
návrat;
}

seriál.print (F („Card UID:“)); //Dump uid
pro (byte i = 0; i < mfrc522.kapalina.velikost; i++) {
Serial.tisk (mfrc522.kapalina.uidByte < 0x10 ? „0“ : „“);
seriál.tisk (mfrc522.kapalina.uidByte, HEX);
}
Serial.print (F („PICC type:“)); / / Dump PICC type
MFRC522:: PICC_Type piccType = mfrc522.PICC_GetType (mfrc522.kapalina.sak);
.println (mfrc522.PICC_GetTypeName (piccType));

byte buffer;
byte block;
MFRC522::StatusCode status;
byte len;

Serial.setTimeout (20000L); / / počkejte do 20 sekund pro vstup ze sériového
/ / zeptejte se osobních údajů: příjmení
Serial.println (F („Typ příjmení, končící#“));
len = Serial.readBytesUntil (‚# ‚ , (char *) buffer, 30); / / číst příjmení ze sériového
pro (byte i = len; i < 30; i++) buffer =“; / / pad s mezerami

block = 1;
/ / Serial.println (F („Authenticating using key 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 () úspěch: „));

block = 2;
/ / Serial.println (F („Authenticating using key a…“));
status = mfrc522.PCD_Authenticate (MFRC522:: PICC_CMD_MF_AUTH_KEY_A, blok, &klíč, &(mfrc522.uid));
if (status != MFRC522:: STATUS_OK) {
Serial.tisk (F („PCD_Authenticate () failed:“));
Serial.println (mfrc522.GetStatusCodeName (status));
návrat;
}

// napište blok
status = mfrc522.MIFARE_Write (block, &buffer, 16);
if (status != MFRC522:: STATUS_OK) {
Serial.tisk (F („MIFARE_Write () failed:“));
Serial.println (mfrc522.GetStatusCodeName (status));
return;
}
else Serial.println (F („mifare_write () úspěch: „));

// zeptejte se osobních údajů: jméno
Serial.println (F („Typ křestní jméno, končící#“));
len = Serial.readBytesUntil (‚# ‚ , (char *) buffer, 20); / / číst jméno ze sériového
pro (byte i = len; i < 20; i++) buffer =“; / / pad s mezerami

block = 4;
/ / Serial.println (F („Authenticating using key a…“));
status = mfrc522.PCD_Authenticate (MFRC522:: PICC_CMD_MF_AUTH_KEY_A, blok, &klíč, &(mfrc522.kapalina));
if (stav != MFRC522:: STATUS_OK) {
Serial.tisk (F („PCD_Authenticate () failed:“));
Serial.println (mfrc522.GetStatusCodeName (status));
návrat;
}

// napište blok
status = mfrc522.MIFARE_Write (block, buffer, 16);
if (status != MFRC522:: STATUS_OK) {
Serial.tisk (F („MIFARE_Write () failed:“));
Serial.println (mfrc522.GetStatusCodeName (status));
return;
}
else Serial.println (F („mifare_write () úspěch: „));

block = 5;
/ / Serial.println (F („Authenticating using key a…“));
status = mfrc522.PCD_Authenticate (MFRC522:: PICC_CMD_MF_AUTH_KEY_A, blok, &klíč, &(mfrc522.uid));
if (status != MFRC522:: STATUS_OK) {
Serial.tisk (F („PCD_Authenticate () failed:“));
Serial.println (mfrc522.GetStatusCodeName (status));
návrat;
}

// napište blok
status = mfrc522.MIFARE_Write (block, &buffer, 16);
if (status != MFRC522:: STATUS_OK) {
Serial.tisk (F („MIFARE_Write () failed:“));
Serial.println (mfrc522.GetStatusCodeName (status));
return;
}
else Serial.println (F („mifare_write () úspěch: „));

seriál.println ( „“ );
mfrc522.PICC_HaltA(); // Halt PICC
mfrc522.PCD_StopCrypto1 (); / / zastavit šifrování na PCD

}

Nahrajte tento kód a (po zapojení projektu, jak je popsáno níže) můžete okamžitě začít zapisovat data do svých RFID značek.

jednou z výhod používání knihoven, jako je tato, je to, že můžete najít části kódu již napsané, takže nemusíte znovu objevovat kolo pro každý projekt. Tentokrát nepůjdeme přes kód řádek po řádku. Místo toho si promluvme trochu víc o tom, co kód dělá.

Data v RFID tagech jsou uložena v sekcích nazývaných sektory, které jsou dále rozděleny do bloků. Každý blok může obsahovat několik bajtů dat. Částka závisí na konkrétní značce, ale běžná 1K pasivní značka (což znamená značka, která může ukládat 1 kilobajt dat) může mít například 16 sektorů, z nichž každý obsahuje 4 bloky, přičemž každý blok je schopen uložit až 16 bajtů dat.

tato skica bude ukládat pouze vaše jméno a příjmení, takže potřebuje pouze jeden sektor,ale rozšíří data do více bloků, protože vaše jména mohou zabírat více dat, než se vejde do jednoho bloku (a pro organizační pohodlí).

při spuštění skriptu budete požádáni o zadání vašeho příjmení, které bude poté zapsáno do bloků na vaší značce RFID. Dále dostanete výzvu k napsání křestního jména, které bude zapsáno do různých bloků. Další informace o tom, jak jsou bloky RFID organizovány a jak je řešit, naleznete v této příručce.

zapojení

zapojení pro vaši konkrétní čtečku RFID bude záviset na modelu, který získáte, protože mnoho různých iterací má kolíky v jiném pořadí. Naštěstí příkladový kód, který jsme zahrnuli výše, uvádí, které kolíky by měly jít kam v závislosti na desce, kterou používáte. Postupujte podle tohoto průvodce pro specifika.

jako příklad, pokud jste používali Arduino Uno a snímač MFRC-522, pak byste udělali následující:

● Připojte RST na pin 9
● Připojte SDA (nebo SS) na pin 10
● Připojte MOSI na pin 11
● připojte MISO na pin 12
● Připojte SCK na pin 13
● Připojte VCC na 5V
● Připojte GND na GND

ale znovu zkontrolujte, které desky používáte, abyste se ujistili, že jste správně zapojeni. Jakmile je deska připojena, zapněte Arduino, když je připojeno přes USB k počítači. Poté můžete do čtečky stisknout RFID kartu nebo klíčenku. Držte jej tam při zadávání dat prostřednictvím sériového monitoru.

knihovna MFRC522 obsahuje také vestavěný náčrt pro čtení dat RFID poté, co jste je napsali. Nyní, když víte, jak psát data, zkuste nahrát tuto skicu a použít ji ke čtení značky, do které jste napsali.

Leave a Reply

Vaše e-mailová adresa nebude zveřejněna.