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:
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:
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ć.
Ale niby mam przekopiowane to co tutaj podali, jeszcze nie kumam wszystkich funkcji i bibliotek z tąd pytania.
Spoko, kto pyta nie błądzi.
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
Tu masz odpowiedz „MFRC522.h: No such file or directory”
czyli brak ci tej biblioteki 😉
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.
Łap https://www.tranzystor.pl/pliki/arduino/czytnik_rfid_v1_www.tranzystor.pl.ino wgrałem przed chwilką działa.
Dzięki zaoszczędziłem kasę na pastylki do bramy 😉