Il nostro blog post oggi è la seconda parte con l'argomento "Reading and Writing with the RFID-Kit" nella serie a tre parti sulla nostra RFID:
Alla fine di questi tre giorni, saprete:
-Che c'è? RFID può e come l'hai organizzato
Come te con la nostra RFID è possibile scrivere e leggere
-Come con il nostro RFID è possibile installare un'autorizzazione di accesso al computer
Lettura e scrittura RFID
Le operazioni di base quando si utilizza un modulo RFID sono la lettura dei dati da un transponder RFID e la scrittura.
In questo post eseguiremo e spiegheremo entrambi passo dopo passo.
Le basi per la tecnologia RFID, la connessione del modulo e l'installazione dell'usato Biblioteche spiega il post precedente del blog RFID.
Sia la lettura che la scrittura richiedono un transponder RFID.La disponibilità Kit RFID è consegnato con due, un chip e una chiave magnetica.Quello che usi non ha importanza per la programmazione.
Prima della funzione di impostazione dello schizzo di lettura importare le librerie richieste e definire alcuni dei perni collegati (cioè quelli che possono essere liberamente selezionati).
'35; includono <SPI.h>
'35; includono <MFRC522.h>
cons uint8 u RST u PIN = 9;// reset pin
cons uint8 u SS PIN = 10;// pin di dati seriali
Poi installiamo un oggetto MFRC522.Questo rappresenta il modulo RFID collegato nel programma.
MRC522 mrc522 (SS-PIN, RST-PIN);// create la istanza MRC522
Nella funzione di installazione è stabilita la connessione serial e al PC, il modulo RFID è inizializzato e il SPI (cioè.Serial Peripheral Interface BusConnessione stabilita.
voide setup()
Serial.start(9600);// avvia connessione seriale
SPI.start();// start SPI bus
mrc522.PCD Init();// init RFID modulo
}
Carta d'identità
Code: Simsso/Arduino-Esempi/RFID/ReadUID
L'operazione più semplice è leggere il identificativi univoci (UID) il transponder RFID.Affinché il modulo RFID possa anche cercare transponder e leggere l'UID, le chiamate devono essere effettuate nella funzione loop
mrc522.PICC IsNewCardPresent();
mrc522.PIC ReadCardSerial();
sono fatti.Solo allora si può usare l'UID.UID è un array di byte che aiuta a identificare un transponder.L'array ha la lunghezza 4, in modo che oltre quattro miliardi diversi UID possono esistere.Nel monitor seriale, l'ID dell'ultimo transponder rilevato può essere emesso con le seguenti linee di codice in formato es.
per (int i = 0; i < mrc522.uid.size; i+) {
Serial.print(mrc522.uid.uidByte[i], HEX);
Serial.print(");
}
Ad esempio, l'output sembra questo: 14 86 6E 7B
Lettura della memoria principale
Code: Simsso/Arduino-Esempi/RFID/RiadStorage
La memoria principale dei nostri transponder è costituita da sedici settori con ogni quattro blocchi.Ognuno di questi blocchi contiene memoria 16-byte.Lo spazio di archiviazione totale è 16·4·16 = 1024 Byte (1 kByte).Un settore può essere utilizzato con la linea di codice
mrc522.PIC DumpMifarClassic SectorToSerial(&(mrc522.uid), &key, sector);
semplicemente output formattato, con la variabile settore è l'indice del settore, cioè può assumere interi da 0 a 15.La chiave viene creata prima (vedi codice campione) in collegamentob)Ad esempio, l'output (mostrato nel monitor seriale) sembra questo:
0 3 00 00 00 00 FF 07 69 FF FF FF FF [0 0 0 1]
2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
0 B5 A3 2B 1B 26 08 04 00 62 62 64 65 66 68 69 [0 0]
Il contenuto di un singolo blocco può essere letto con la seguente riga di codice.
mrc522.MIFARE Read(blockAddress, buffer, &size);
L'indirizzo di blocco è un numero di 0-63.Il buffer è un array con 16+2 byte storage capacity in cui viene memorizzata una line a di cui sopra.L'ultimo parametro dimensioni è un puntatore su una variabile uguale alla dimensione del dato buffer Le frecce lo sono.
Dati di scrittura
Code: Simsso/Arduino-Esempi/RFID/WriteFloat
Scrivere dati sul transponder è molto simile a leggere.La chiamata della funzione
mrc522.MIFARE Write(blockAddress, dataBlock, 16);
scrive il array di byte dataBlockche ha la lunghezza 16, nel blocco con il numero bloccoSì!Un numero di settore non si verifica qui perché l'indirizzo di blocco lo implica.L'indirizzo di blocco è contato continuamente tra 0 e 63.Prima di scrivere devi autenticare l'analogia con la lettura, queste sono altre sei righe di codice che puoi usare il codice Esempio può essere preso.
Infine, questo paragrafo mostra come salvare una variabile galleggiante un po'più pratica.Entrambe le variabili galleggianti e doppie sono costituite da 4 byte nell'Arduino (riferimento) https://www.arduino.cc/en/Reference/Doubleb)Nel codice, una variabile a galleggiante viene inizializzata con qualsiasi valore.Poi viene creato un puntatore di byte che indica l'indirizzo del valore (ad esempio da un sensore).I quattro byte della variabile a galleggiante vengono poi copiati in un array di byte della lunghezza 16 (dimensioni di un blocco).Questo è scritto con la funzione sopra riportata nel quinto blocco della memoria dei transponder.
temperatura di galleggiamento = 15.09f;
byte *tempBytes = (byte *)&temperatura;
byte dataBlock[16] {0} // inizializzare buffer di blocco con zeri
per (uint8u t i = 0; i < sizeof(float); i+)
dataBlock[i]= tempBytes[i]; // copia byte da variabile galleggiante a buffer
}
status =(MFRC522::StatusCode) mrc522.MIFARE Write(5, dataBlock, 16);
Con il suddetto schizzo di ReadStorage si può ora leggere che i primi quattro byte sono stati impostati nel blocco 5.Questi valori corrispondono al 32-bit IEEE 754 Formattare il valore 15.09.
5 A4 70 71 41 00 00 00 00 00 00 00 00 00 00 00 00 [ 0 0 0 ]
Nel nostro post blog seguente spieghiamo come utilizzare il nostro RFID Troverete il tutorial per questo da domani sul nostro blogaz-delivery.deQuindi è meglio visitare di nuovo ogni giorno per trovare interessanti tutorial e grandi progetti!
Tuo.
Team AZ-Delivery
1 commento
Solderdot
Servus!
Welche Ereignisse kann das modul über die IRQ-Leitung mitteilen und wie kann ich dieses Signal nutzen? Gibt es eine Möglichkeit, dass das RC522-Modul einen IRQ auslöst, wenn ein Tag aufgelegt wurde, so dass das rechenhzeitintensive Pollen entfallen kann?
Prinzipiell nutze ich das Modul auf einem Raspberry Pi unter Python. Eine allgemeine Beschreibung sollte ich ohne weiteres dort umsetzen können.