Čítačka RFID kariet RC522: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
Riadok 21: | Riadok 21: | ||
== Analýza a opis riešenia == | == Analýza a opis riešenia == | ||
Na komunikáciu s RFID čítačkou som použil SPI rozhranie. Najdôležitejšia vec bola preštudovanie datasheetu, spísanie si všetkých registrov a funkcií a ďalej aj normy pre posielanie informácií karte pomocou čítačky. Pre správnu funkciu zariadenia bolo potrebné vhodne inicializovať RC522, vysielať "budiace" signály a sledovať či sa karta ozve. Po tom ako sa karta ozvala si od nej treba vypýtať jej UID a ďalej už len skontrolovať, či sa zhoduje s nami nahratým UID pre "otvorenie dverí" (zapnutie zelenej LED diódy). | |||
[[ | [[Obrázok:RC522.png|400px|thumb|center|RFID Čítačka RC522]] | ||
Popis zapojenia: | |||
RC522 (slave) je pomocou SPI rozhrania pripojený na Arduino UNO (slave) a ďalej sú k Arduino UNO pripojené 2 LED diódy slúžiace na indikovanie prítomnosti správnej prípadne nesprávnej karty. | |||
SS -> PB2 (slave select) | |||
MOSI -> PB3 (master to slave) | |||
MISO -> PB4 (slave to master) | |||
SCK -> PB5 (hodinové impulzy) | |||
RST -> PD7 (voľný pin na reset) | |||
LED (zelená) -> PD5 | |||
LED (červená) -> PD6 | |||
[[Súbor:GeminiAI-image2.jpg|400px|thumb|center|Schéma zapojenia.]] | [[Súbor:GeminiAI-image2.jpg|400px|thumb|center|Schéma zapojenia.]] | ||
Riadok 33: | Riadok 41: | ||
=== Algoritmus a program === | === Algoritmus a program === | ||
Algoritmus programu využíva | Algoritmus programu využíva knižnicu uart, ktorú sme vytvárali na niektorom z cvičení tento semester. Okrem toho som vytvoril funkcie: | ||
void USART_send_byte_hex(uint8_t byte) (konverzia bajtu na HEX a poslanie cez uart) | |||
void SPI_init() (inicializácia SPI rozhrania) | |||
uint8_t SPI_transfer(uint8_t data) (prenos dát cez SPI) | |||
void RC522_write(uint8_t reg, uint8_t value) (zapísanie dát do RC522) | |||
uint8_t RC522_read(uint8_t reg) (prečítanie dát z RC522) | |||
bool RC522_command(uint8_t command) (funkcia zápis konkrétnej úlohy do command registra RC522) | |||
void RC522_reset() (pre soft reset RC522) | |||
void RC522_init() (inicializácia RC522) | |||
bool requestTag(uint8_t *tagType) (na pýtanie sa či, a aká karta je v blízkosti čítačky) | |||
bool detect_card() | |||
bool antiCollision(uint8_t *uid) | |||
void wait_for_card_removal() | |||
Výpis kódu je nižšie... | Výpis kódu je nižšie... | ||
Verzia z 21:37, 29. apríl 2025
Záverečný projekt predmetu MIPS / LS2025 - Meno Priezvisko
Zadanie
Toto je čítačka s ktorou pracujem: https://techfun.sk/produkt/citacka-rfid-rc522-klucenka-a-karta/
Čítačka RFID kariet RC522 - spojazdniť, vedieť načítať kartu a jej ID, vytvoriť program ktorý rozozná konkrétnu kartu a rozsvieti LED.

Literatúra:
Analýza a opis riešenia
Na komunikáciu s RFID čítačkou som použil SPI rozhranie. Najdôležitejšia vec bola preštudovanie datasheetu, spísanie si všetkých registrov a funkcií a ďalej aj normy pre posielanie informácií karte pomocou čítačky. Pre správnu funkciu zariadenia bolo potrebné vhodne inicializovať RC522, vysielať "budiace" signály a sledovať či sa karta ozve. Po tom ako sa karta ozvala si od nej treba vypýtať jej UID a ďalej už len skontrolovať, či sa zhoduje s nami nahratým UID pre "otvorenie dverí" (zapnutie zelenej LED diódy).

Popis zapojenia: RC522 (slave) je pomocou SPI rozhrania pripojený na Arduino UNO (slave) a ďalej sú k Arduino UNO pripojené 2 LED diódy slúžiace na indikovanie prítomnosti správnej prípadne nesprávnej karty. SS -> PB2 (slave select) MOSI -> PB3 (master to slave) MISO -> PB4 (slave to master) SCK -> PB5 (hodinové impulzy) RST -> PD7 (voľný pin na reset) LED (zelená) -> PD5 LED (červená) -> PD6

Algoritmus a program
Algoritmus programu využíva knižnicu uart, ktorú sme vytvárali na niektorom z cvičení tento semester. Okrem toho som vytvoril funkcie:
void USART_send_byte_hex(uint8_t byte) (konverzia bajtu na HEX a poslanie cez uart)
void SPI_init() (inicializácia SPI rozhrania) uint8_t SPI_transfer(uint8_t data) (prenos dát cez SPI)
void RC522_write(uint8_t reg, uint8_t value) (zapísanie dát do RC522) uint8_t RC522_read(uint8_t reg) (prečítanie dát z RC522) bool RC522_command(uint8_t command) (funkcia zápis konkrétnej úlohy do command registra RC522) void RC522_reset() (pre soft reset RC522) void RC522_init() (inicializácia RC522)
bool requestTag(uint8_t *tagType) (na pýtanie sa či, a aká karta je v blízkosti čítačky) bool detect_card() bool antiCollision(uint8_t *uid) void wait_for_card_removal()
Výpis kódu je nižšie...
#include <avr/io.h>
int main(void)
{
unsigned int measuredValue;
while (1)
{
/* relax */
}
return(0);
}
#include <avr/io.h>
void adc_init(void); // A/D converter initialization
unsigned int adc_read(char a_pin);
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:
Zdrojový kód: zdrojaky.zip
Overenie
Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku hotového zariadenia.

Video:
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.