RFID RC522 a karty ISIC, ITIC

Odpovědět
KamilSK
Příspěvky: 5
Registrován: 09 dub 2018, 14:47
Reputation: 0

RFID RC522 a karty ISIC, ITIC

Příspěvek od KamilSK » 14 zář 2019, 12:12

Dobrý deň,
vyskúšal som všetky dostupné programy aj knižnice pre Arduino, ale modul RFID RF522 Firmware Version: 0x92=v2.0 nedokáže rozpoznať študentskú kartu ITIC a učiteľskú kartu ISIC.
Nie som si celom istý, ale niektoré (asi staršie) študentské karty ISIC fungovali.

Predávajú sa čítačky 13,56MHz (cca. 65Euro), ktoré čítajú aj ISIC a ITIC karty, ale je to pri objednávke treba zadať (formát výstupu).
Takže predpokladám, že problém je niekde v SW a bude treba pridať detekciu týchto kariet.
Platobné karty z rôznych bánk fungujú, ale študenti majú hlavne kartu ISIC.
Potrebujem len, aby čítačka zareagovala a poslala nejaké ID(číslo), ktoré sa bude dať použiť na jednoduchú identifikáciu.
Vopred ďakujem za odpovede.
Kamil

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: RFID RC522 a karty ISIC, ITIC

Příspěvek od pavel1tu » 14 zář 2019, 14:24

Nemám tu čtečku, nemám to jak vyzkoušet,
ale s jinou čtečkou jsme to řešili, ISIC myslím používá technologii MIFARE 1k ?
Podle datasheetu to ta tvá čtečka umí - tak jen pohledat knihovnu která čte MIFARE

PS: nejsem si jistý, ale karta ISIC používá kryptování, ale teoreticky ID karty (první 4 bajty ?) by měly jít přečíst.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: RFID RC522 a karty ISIC, ITIC

Příspěvek od Wojta » 14 zář 2019, 15:02

Já je normálně přes Arduino četl přes MF RC522. Úplně bez problémů vyběhla všechna data. Používal jsem nějaký příklad přímo z knihovny na dump dat.

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: RFID RC522 a karty ISIC, ITIC

Příspěvek od martinius96 » 14 zář 2019, 20:28

Môj ISIC z 2016 RFID čítačka RC522 prečíta. Ten má ešte MiFare Classic 1K. Používa protokol ISO/IEC 14443A.
Dnešné ISIC-y používajú Mifare Desfire (asi EV1). Používa protokol ISO/IEC 14443-4, ktorý je kompatibilný s ISO/IEC 14443A.
Podľa špecifikácie RC522 podporuje aj Desfire karty.
V špecifikácii sa spomína iba štandard ISO/IEC 14443A. Ale keďže ten 14443-4 je kompatibilný, malo by to fungovať.
Bohužiaľ som nemal možnosť vyskúšať.

radarixos
Příspěvky: 9
Registrován: 29 led 2019, 16:22
Reputation: 0

Re: RFID RC522 a karty ISIC, ITIC

Příspěvek od radarixos » 19 zář 2019, 17:35

je to sice pro RC532 a je to ultra pokus jen pro cteni UID a jeho posilani po bluetooth, ale cte litacku, fio, isic schollar...

Kód: Vybrat vše

/* NFC reader with color display and bluetooth link (serial echo) to android phone 
 * selfedu project for arduino nano, under GNU/GPL
 * 
 * version 0.5, demo, 03/2019.
 * Arduino NANO - packet version
 * SPI disp, I2C PN532, BT HC04, keyboard via A0
 * 
 */
 
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
#include <SoftwareSerial.h>

#define TFT_CS        10  // CS for TFT
#define TFT_RST        9  // Reset for TFT
#define TFT_DC         8  // DC(A0) for TFT
#define TFT_BACKLIGHT  6  // Display backlight pin
#define RX 2              // serial data RX modul HC04/06
#define TX 3              // serial data TX modul HC04/06
const int piskle = 7;     // beep (if UID was readed)

// default HARDWARE SPI pins Uno/Nano: 
// SPI MOSI = pin 11 (sda)
// SPI MISO = pin 12
// SPI SCLK = pin 13 (sck)

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
PN532_I2C pn532i2c(Wire);         // vytvoření instance I2C komunikace pro PN532 adr 0x24
PN532 nfc(pn532i2c);              // vytvoření instance PN532 NFC modulu
SoftwareSerial bluetooth(TX, RX); // default pair PIN 1234

void pipni()    {
  digitalWrite(piskle, HIGH);
  delay(50);
  digitalWrite(piskle, LOW);
  }

void setup() {
  Serial.begin(9600); 
  bluetooth.begin(9600);
  nfc.begin();
  pinMode(piskle, OUTPUT); 
  pinMode(TFT_BACKLIGHT, OUTPUT);
  //tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab
  tft.initR(INITR_GREENTAB);        // Init ST7735S chip, greentab
  tft.setRotation(3);
  welcomeScreen();
  // uložení verze desky pro kontrolu jejího připojení
  uint32_t versiondata = nfc.getFirmwareVersion();
  // kontrola načtené verze NFC modulu
  if (!versiondata) {
    Serial.println("Nebyl nalezen PN53x modul!");
    bluetooth.println("Nebyl nalezen PN53x modul!");
    // zastavení programu
    while (1);
    }
  else {
    // vytištění informací o připojeném modulu
    Serial.print("Nalezen modul PN5"); Serial.println((versiondata >> 24) & 0xFF, HEX);
    bluetooth.print("Nalezen modul PN5"); bluetooth.println((versiondata >> 24) & 0xFF, HEX);
    Serial.print("Firmware verze "); Serial.print((versiondata >> 16) & 0xFF, DEC);
    bluetooth.print("Firmware modulu NFC - verze "); bluetooth.print((versiondata >> 16) & 0xFF, DEC);
    Serial.print('.'); Serial.println((versiondata >> 8) & 0xFF, DEC);
    bluetooth.print('.'); bluetooth.println((versiondata >> 8) & 0xFF, DEC);
    }
    
  // nastavení maximálního počtu pokusů o čtení NFC tagu,
  // 0xFF odpovídá cca jedné sekundě
  nfc.setPassiveActivationRetries(0x10);
  // konfigurace NFC modulu pro čtení tagů
  nfc.SAMConfig();
  // vytištění informace o začátku čtení
  Serial.println("PN532 modul nastaven, prilozte tag...");
  pipni();
}

void welcomeScreen() {
  digitalWrite(TFT_BACKLIGHT, HIGH); // Backlight TFT on
  tft.fillScreen(ST77XX_BLACK);
  tft.setCursor(3,50);
  tft.setTextSize(2);
  tft.setTextColor(ST77XX_RED);
  tft.print("NFC ctecka"); bluetooth.println("NFC reader");
  tft.setCursor(3,70);
  tft.setTextSize(1);
  tft.setTextColor(ST77XX_GREEN);
  tft.print("Radarixos, ver. 0.5");bluetooth.println("Radarixos, ver. 0.5");
  tft.setCursor(3,90);
  tft.setTextSize(1);
  tft.setTextColor(ST77XX_MAGENTA);
  tft.print("Bluetooth serial"); bluetooth.println("Bluetooth - serial link seems OK!");
}

void printHex(byte *buffer, byte bufferSize)
  {
  for (byte i = 0; i < bufferSize; i++) 
    {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
    }
  }

void cudliky() {
  String text;
  int analogData = analogRead(0);
  if (analogData < 50) text = "BUDIZ  ";                        //do zeme 0R
  if (analogData > 150 && analogData < 250) text = "DOLU   ";    //213
  if (analogData > 650 && analogData < 750) text = "NAHORU ";    //695
  if (analogData > 950 && analogData < 1100) text = "NIC    ";   //1023
  tft.fillRect(3,85,150,17,ST77XX_BLUE);
  tft.setTextColor(ST77XX_WHITE);
  tft.setCursor(5,90);
  tft.setTextSize(1);
  tft.print(text); tft.print(analogData);
  Serial.println(text); bluetooth.println(text);
  Serial.println(analogData);
}

void loop() {
  //cteni klavesnice na A0
  cudliky();
        
  //modry podklad a text "Nactena data:"
  tft.fillRect(3,5,150,17,ST77XX_BLUE);
  tft.setTextColor(ST77XX_WHITE);
  tft.setCursor(5,10);
  tft.setTextSize(1);
  tft.print("Nactena data:");

  // vytvoření proměnných, do kterých se budou ukládat výsledky čtení
  boolean uspech;                          // úspěšné čtení
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // unikátní ID tagu
  uint8_t uidLength;                       // délka ID tagu

  // zahájení čtení tagů v okolí, výsledek čtení se uloží do nastavených proměnných
  uspech = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);

  // pokud je čtení úspěšné, vypíšeme získané informace
  if (uspech) {
    Serial.println("Nacten NFC:"); bluetooth.println("Nacten NFC: ");
    pipni();
    tft.fillScreen(ST77XX_BLACK);
    tft.setTextSize(1);
    
    Serial.print("UID delka: "); 
    Serial.print(uidLength, DEC); 
    Serial.println(" bytu");
    tft.setCursor(5,50);
    tft.setTextColor(ST77XX_GREEN);
    tft.print("UID delka: "); 
    tft.setTextColor(ST77XX_WHITE); 
    tft.setCursor(5,60);
    tft.print(uidLength, DEC); 
    tft.print(" bytu");
    
    Serial.print("UID hodnoty: ");
    tft.setTextColor(ST77XX_GREEN);
    tft.setCursor(5,25);
    tft.setTextSize(1);
    tft.print("UID v hex: "); bluetooth.println("UID v hex:");
    tft.setCursor(5,35);
   
    for (uint8_t i = 0; i < uidLength; i++) {
      Serial.print(" 0x"); Serial.print(uid[i], HEX);
      tft.setTextColor(ST77XX_WHITE);
      tft.print(uid[i] < 0x10 ? " 0" : " ");              //zapis s mezerama mezi bytama
      tft.print(uid[i], HEX);                             //zapis s mezerama mezi bytama
      bluetooth.print(uid[i] < 0x10 ? " 0" : " ");        //zapis s mezerama mezi bytama
      bluetooth.print(uid[i], HEX);                       //zapis s mezerama mezi bytama
     }
    Serial.println(""); bluetooth.println("");            //odradkovani na serialu a bluetooth
   }
  else {
    // vytištění informace o vypršení času čtení
    Serial.println("zadny tag.");
    }
}
Přílohy
nfc.jpg

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů