Operácie

Čítačka RFID kariet RC522: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
Bez shrnutí editace
StudentMIPS (diskusia | príspevky)
Bez shrnutí editace
Riadok 27: Riadok 27:
Popis zapojenia:  
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.
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)
*SS -> PB2 (slave select)
MOSI -> PB3 (master to slave)
*MOSI -> PB3 (master to slave)
MISO -> PB4 (slave to master)
*MISO -> PB4 (slave to master)
SCK -> PB5 (hodinové impulzy)
*SCK -> PB5 (hodinové impulzy)
RST -> PD7 (voľný pin na reset)
*RST -> PD7 (voľný pin na reset)
LED (zelená) -> PD5
*LED (zelená) -> PD5
LED (červená) -> PD6
*LED (červená) -> PD6
 




Riadok 43: Riadok 44:
Algoritmus programu využíva knižnicu uart, ktorú sme vytvárali na niektorom z cvičení tento semester. Okrem toho som vytvoril funkcie:
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 USART_send_byte_hex(uint8_t byte) (konverzia bajtu na HEX a poslanie cez uart)
 
:
void SPI_init() (inicializácia SPI rozhrania)
*void SPI_init() (inicializácia SPI rozhrania)
uint8_t SPI_transfer(uint8_t data) (prenos dát cez SPI)
*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)
*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)
*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)
*bool RC522_command(uint8_t command) (zápis konkrétnej úlohy do command registra RC522)
void RC522_reset() (pre soft reset RC522)
*void RC522_reset() (pre soft reset RC522)
void RC522_init() (inicializácia 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 requestTag(uint8_t *tagType) (na pýtanie sa či, a aká karta je v blízkosti čítačky)
bool detect_card()
*bool detect_card()
bool antiCollision(uint8_t *uid)
*bool antiCollision(uint8_t *uid)
void wait_for_card_removal()
*void wait_for_card_removal()





Verzia z 21:46, 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.

Vývojová doska Arduino UNO.

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).

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


Schéma zapojenia.


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) (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.

Aplikácia.

Video:



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