wtorek, 19 marca
Shadow

Arduino – Odczyt tagów RFID RC-522

Z RFID spotykamy się bardzo często, choć często o tym nie zdajemy sobie sprawy np. wchodząc do biura czy domu, gdzie przykładamy kartę lub brelok do czytnika, aby otworzyć drzwi. Tym razem pokażę jak w prosty sposób odczytać nasze tagi RFID wszystko przy pomocy Arduino oraz RC-522.

Potrzebne elementy:

– Arduino nano (lub odpowiednik)
– czytnik RFID RC-522
– karta RFID / brelok RFID
– biblioteka RFID master

Opis połączenia:

Moduł RC522 Arduino Nano, Uno Arduino Mega
SDA 10 53
SCK 13 52
MOSI 11 51
MISO 12 50
IRQ nie podłączać nie podłączać
GND GND GND
RST 9 9
3.3V 3.3V 3.3V

Schemat połączeniowy:

czytnik rfid rc522 arduino

Kod programu:

/*
Odczyt tagów RFID RC-522
www.tranzystor.pl
*/

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 9 // Pin 9 do resetowania RC522
#define SS_PIN 10 // Pin 10 dla SS (SDA) RC522
MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {
Serial.begin(9600); //inicjujemy komunikację szeregową
SPI.begin(); //inicjacja magistrali SPI
mfrc522.PCD_Init(); // inicjacja RC522
Serial.println(„Odczytywanie kodu RFID”);
}

void loop() {
// Sprawdzamy, czy są nowe karty
if ( mfrc522.PICC_IsNewCardPresent())
{
//odczyt karty
if ( mfrc522.PICC_ReadCardSerial())
{
// wyswietlenie ID twojej karty RFID
Serial.print(„ID karty RFID:”);
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? ” 0″ : ” „);
Serial.print(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();

mfrc522.PICC_HaltA();
}
}
}

Wygląd złożonego układu:

 

Przykładowy odczyt 2 kart:

odczyt tagów RFID rc522 arduino

5/5 - (2 ocena/y)

8 Comments

  • ff

    Coś mi tu nie pasuje.
    Mam na nodemcu podobny program, i na raspberry też podobny. Problem jest taki, że dla tych samych kart rfid w obu programach są inne id.
    Na nodemcu po kodzie:

    for (byte i = 0; i < mfrc522.uid.size; i++) {
    //Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
    //Serial.print(mfrc522.uid.uidByte[i], HEX);
    nrKarty.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""));
    nrKarty.concat(String(mfrc522.uid.uidByte[i], HEX));
    }
    mfrc522.PICC_HaltA(); // Halt PICC
    mfrc522.PCD_StopCrypto1(); // Stop encryption on PCD

    nrKarty.toUpperCase();
    '
    mam 8 znaków w hexie.
    A na malinie w pythonie po kodzie:
    '
    id, text = reader.read()
    nrKarty = hex(id)
    '
    mam 10 znaków hexie. Początek jest taki sam plus dwa dodatkowe znaki.
    Teraz się zastanawiam, czy nodemcu wszystko mi zwraca, bo nie wiem gdzie tych dwóch znaków szukać.

  • Daniel

    Przepraszam, wiecie jak to naprawić? taki kod błędu wyskoczył

    fatal error: MFRC522.h: No such file or directory
    #include
    ^~~~~~~~~~~
    compilation terminated.
    exit status 1
    MFRC522.h: No such file or directory

  • Damian

    Witam.
    Podczas kompilowania kody otrzymuję błąd w linijce: Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? ” 0″ : ” „);
    Co może być nie tak?
    Proszę o pomoc.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *


Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.