Jak zaprogramować kartę RFID dla swoich projektów

znaczniki RFID to małe chipy wielokrotnego zapisu, które mogą przechowywać niewielkie ilości danych, takich jak nazwy, adresy, informacje o produkcie i inne. Mogą one przybrać formę breloczków i kart, a nawet mogą być wszczepione zwierzętom lub ludziom. Jeśli chcesz dowiedzieć się, jak działają lub dodać je do własnego projektu, czytnik RFID i pisarz to tani komponent, którego możesz użyć. Ten przewodnik pokaże Ci, jak używać go do pisania na własnym znaczniku RFID.

jak działają Czytniki RFID

czujniki czytników/czytników RFID wykorzystują fale radiowe bliskiego zasięgu o niskiej mocy do przesyłania danych z tagów, w których są przechowywane, do urządzenia elektronicznego, do którego jest podłączony czujnik. W tym przypadku użyjemy Arduino jako urządzenia, dodając Czujnik RFID. W szczególności napiszemy kilka podstawowych informacji do znacznika RFID.

aby to zrobić, użyjemy tej biblioteki do odczytu i zapisu znaczników RFID. Ponieważ korzystanie z tagów RFID jest nieco bardziej złożone niż np. włączanie lub wyłączanie diody LED, będziemy polegać na istniejących szkicach, które można zintegrować z własnymi projektami. Wstępnie napisane funkcje, które zapewniają te szkice, pozwolą Ci łatwiej zintegrować je z innymi projektami.

aby korzystać z biblioteki, najpierw pobierz .plik zip ze strony Github powyżej. Następnie otwórz IDE Arduino, przejdź do Sketch > Include Library > Add .Biblioteka ZIP … i wybierz bibliotekę, którą właśnie pobrałeś. Umożliwi to nie tylko dołączenie biblioteki RFID do szkiców, ale także zbiór przykładowych szkiców, których będziemy potrzebować później.

czego potrzebujesz

do tego projektu będziemy pisać tylko do znacznika RFID. Pamiętaj jednak, że w trakcie przeglądania przewodnika możesz użyć tego do rozszerzenia innych projektów. Być może możesz uruchomić blokadę, aby odblokować, gdy pokażesz czytelnikowi znacznik z poprawnymi danymi, na przykład. W tym podstawowym projekcie znajdziesz jednak to, czego potrzebujesz:

Arduino
Czujnik RFID (najlepiej MFRC-522)
tagi RFID
Deska do chleba & okablowanie
Arduino IDE
Kabel USB

ponieważ chipy RFID są bardzo małe, tag, którego używasz, może mieć prawie każdą formę. Dwa z najczęstszych typów chipów RFID – często w zestawach lub z czujnikami-to małe okrągłe breloki lub płaskie karty o wielkości karty kredytowej. Niezależnie od tego, jaką masz metkę, powinna zadziałać.

Kod

jeśli zainstalowałeś bibliotekę zgodnie z instrukcją powyżej, poniższy szkic powinien być dostępny w przykładowej książce pod plikiem > Examples > Mfrc522 > rfid_write_personal_data. Wybierz go w przykładowej książce lub skopiuj poniższy kod:

/*
* zapis danych osobowych karty RFID MIFARE za pomocą czytnika RFID-RC522
* wykorzystuje bibliotekę MFRC522 do korzystania z zestawu modułów RFID ARDUINO 13.56 MHZ z tagami SPI w i R firmy COOQROBOT.
* ——————————
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Czytnik/PCD UNO/101 Mega Nano V3 Leonardo/Micro Pro Micro
* Pin sygnałowy 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
*
* Wymagany sprzęt:
* Arduino
* PCD (Zbliżeniowe urządzenie sprzęgające): Czytnik bezstykowy NXP MFRC522 IC
* PICC (zbliżeniowa Karta scalona): karta lub tag za pomocą interfejsu ISO 14443A, np Mifare lub Ntag203.
* czytnik można znaleźć na eBayu za około 5 dolarów. Szukaj „mf-rc522” na ebay.com.
*/

#include
#include

# define rst_pin 9 / / konfigurowalny, patrz typowy układ pinów powyżej
#define SS_PIN 10 // konfigurowalny, patrz typowy układ pinów powyżej

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

void setup () {
Serial.begin (9600); / / Inicjalizacja komunikacji szeregowej z komputerem
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init (); / / Init karta MFRC522
Serial.println (F („zapisywanie danych osobowych na MIFARE PICC „));
}

void loop() {

// przygotuj klucz-wszystkie klucze są ustawione na Ffffffffffh przy dostawie chipów z fabryki.
mfrc522:: klucz MIFARE_Key;
for (byte i = 0; i < 6; i++) key.keyByte = 0xff;

/ / Zresetuj pętlę, jeśli na czujniku / czytniku nie ma nowej karty. Oszczędza to cały proces podczas bezczynności.
if (! mfrc522PICC_IsNewCardPresent ()) {
return;
}

// Wybierz jedną z kart
if ( ! mfrc522PICC_ReadCardSerial ()) {
return;
}

seryjny.print(F(„Card UID:”)); / / Dump UID
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.druk (mfrc522.uid.uidByte < 0x10 ? „0” : „”);
seryjny.druk (mfrc522.uid.uidByte, HEX);
}
Serial.print(F(” PICC type: „)); // Dump PICC type
MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
Serial.println (mfrc522.PICC_GetTypeName (piccType));

bufor bajtów;
blok bajtów;
mfrc522::Status StatusCode;
bajt len;

Serial.setTimeout(20000L);// poczekaj do 20 sekund na wejście z szeregowego
/ / zapytaj o dane osobowe: nazwisko rodowe
Serial.println (F („Type Family name, ending with #”));
len=Serial.readBytesUntil (’# ’ , (char *) buffer, 30); / / odczyt nazwy rodziny z szeregowego
for (byte i = len; i < 30; i++) buffer=”;//pad ze spacjami

block = 1;
/ / Serial.println (F („uwierzytelnianie przy użyciu klucza 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 () success: „));

block = 2;
/ / Serial.println (F („uwierzytelnianie przy użyciu klucza 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;
}

// 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 () success: „));

// zapytaj o dane osobowe: imię
.println (F („Type First name, ending with #”));
len=Serial.readBytesUntil (’# ’ , (char *) buffer, 20); / / odczytaj Imię z szeregowego
for (byte i = len; i < 20; i++) buffer=”;//pad ze spacjami

block = 4;
/ / Serial.println (F („uwierzytelnianie przy użyciu klucza 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;
}

// 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 () success: „));

block = 5;
/ / Serial.println (F („uwierzytelnianie przy użyciu klucza 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;
}

// 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 () success: „));

seryjny.println ( „” );
mfrc522.PICC_HaltA(); // Halt PICC
mfrc522.PCD_StopCrypto1 (); / / Stop szyfrowaniu na PCD

}

prześlij ten kod i (po podłączeniu projektu zgodnie z poniższym opisem) możesz natychmiast rozpocząć zapisywanie danych do znaczników RFID.

jedną z zalet korzystania z takich bibliotek jest to, że możesz znaleźć fragmenty kodu już napisane, więc nie musisz odkrywać koła dla każdego projektu. Tym razem nie przejdziemy przez kod linia po linii. Zamiast tego porozmawiajmy trochę więcej o tym, co robi kod.

dane w znacznikach RFID są przechowywane w sekcjach zwanych sektorami, które są dalej podzielone na bloki. Każdy blok może zawierać kilka bajtów danych. Ilość zależy od konkretnego znacznika, ale wspólny pasywny znacznik 1K (oznaczający znacznik, który może przechowywać 1 kilobajt danych) może na przykład mieć 16 sektorów, z których każdy zawiera 4 bloki, a każdy blok może przechowywać do 16 bajtów danych.

ten szkic będzie przechowywał tylko Twoje imię i nazwisko, więc potrzebuje tylko jednego sektora, ale rozłoży dane na wiele bloków, ponieważ twoje nazwiska mogą pobierać więcej danych, niż można zmieścić w jednym bloku (i dla wygody organizacyjnej).

po uruchomieniu skryptu zostaniesz poproszony o podanie swojego nazwiska, które zostanie zapisane w blokach na Twoim znaczniku RFID. Następnie otrzymasz monit o wpisanie Imienia, które zostanie zapisane w różnych blokach. Aby uzyskać więcej informacji na temat organizacji bloków RFID i sposobu ich rozwiązywania, zapoznaj się z tym przewodnikiem.

okablowanie

okablowanie dla konkretnego czytnika RFID zależy od otrzymanego modelu, ponieważ wiele różnych iteracji ma piny w innej kolejności. Na szczęście przykładowy kod, który zamieściliśmy powyżej, zawiera listę pinów, które powinny się znaleźć w zależności od tablicy, której używasz. Postępuj zgodnie z tym przewodnikiem po szczegółach.

jako przykład, jeśli używasz czujnika Arduino Uno i czujnika MFRC-522, wykonasz następujące czynności:

● podłącz RST do Pina 9
● podłącz SDA (lub SS) do Pina 10
● podłącz MOSI do Pina 11
● podłącz MISO do Pina 12
● podłącz SCK do Pina 13
● podłącz VCC do 5V
● podłącz GND do GND

używaj, aby upewnić się, że jesteś prawidłowo podłączony. Po podłączeniu płyty włącz Arduino, gdy jest podłączony przez USB do komputera. Następnie możesz nacisnąć kartę RFID lub brelok do czytnika. Przytrzymaj go podczas wprowadzania danych przez monitor szeregowy.

biblioteka MFRC522 zawiera również wbudowany szkic do odczytu danych RFID po ich napisaniu. Teraz, gdy już wiesz, jak pisać dane, spróbuj przesłać ten szkic i użyć go do odczytania tagu, do którego napisałeś.

Leave a Reply

Twój adres e-mail nie zostanie opublikowany.