Obsługa modułu RFID MFRC522
1. Wstęp
Moduł czytniko-programatora RFID zbudowanego w oparciu o układ RC522 obsługuje karty zgodne ze standardem ISO/IEC 14443 A/MIFARE,MF1xxS20, MF1xxS70, MF1xxS50. Komunikacja między kartą a modułem odbywa się na częstotliwości 13,56MHz. Maksymalny zasięg modułu wynosi około 50mm.
Układ zasilany jest napięciem stałym 3,3V jednak linie danych tolerują napięcie 5V.
Komunikacja może odbywać się za pośrednictwem magistrali I2C lub SPI.
Opracowanie zawiera sposób podłączenia MFRC522 do portu SPI mikrokontrolera PIC18F4550 (zasilanego napięciem 3,3V). Kod programu (rozdziału 4) oraz biblioteki (rozdział 5) zostały przepisane z języka C dla Arduino na CCS dla mikrokontrolerów PIC firmy Microchip.
2. Wyprowadzenia
Rys.1. Wyprowadzenia uC.
tab.1. Wyprowadzenia modułu i uC oraz pełnione funkcje.
Moduł RC522 | uC PIC18F4550 | Opis |
SDA | (pin20) RD1 | Set Slave – wybór układu (chipSelectPin) |
SCK | (pin34) SCK | SCK/CLK (zegar) |
MOSI | (pin26) SDO | SDO/MOSI (out) |
MISO | (pin33) SDI | SDI/MISO (in) |
RQ | — | — |
GND | (pin12) VSS | Uziemienie |
RST | (pin19) RD0 | Reset (NRSTPD) |
3.3V | (pin11) VDD | Zasilanie 3.3V |
3. Schemat połączeń
Rys.2. Schemat połączeń.
4. Kod programu
#include <18F4550.h> #fuses INTRC_IO,NOMCLR,NOWDT,NOPROTECT,NOLVP,PUT #use delay(clock=4000000) #use rs232(baud=9600, xmit=PIN_B4, rcv=PIN_B3, bits=9,parity=N, errors) #define _NRSTPD PIN_D0//reset #define _chipSelectPin PIN_D1//SetSlave //tryby spi #define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H) #define SPI_MODE_1 (SPI_L_TO_H) #define SPI_MODE_2 (SPI_H_TO_L) #define SPI_MODE_3 (SPI_H_TO_L | SPI_XMIT_L_TO_H) // #include "rf_ardu.c" //////////////program glowny////////////////////////// void main() { setup_spi(SPI_MASTER|SPI_MODE_3); init(); //inicjacja modulu rfid delay_ms(300); printf("uC dziala poprawnie!\n"); while(true){ printf("Czekam na karte... \n"); delay_ms(100); if (isCard()) { printf("Karta wykryta\n"); // jesli karta wykryta odczyt seriala if (readCardSerial()==1){ printf("Serial: %d:%d:%d:%d:%d:%d \n",serNum[0],serNum[1],serNum[2],serNum[3],serNum[4],serNum[5]); } } } }
5. Odnośniki
Biblioteki: