• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Write tag UNO i modulem RC522
#1
Rainbow 
Witam milo Blush 
Z gory przepraszam za nieuzywanie polskich znakow. Mieszkam w Niemczech i nie znam/posiadam polskiej klawiatury.

Odnalazlem to forum przypadkowo szukajac rozwiazania problemu UNO + RFID-RC522.
Programuje Arduino od ok. trzech lat. Zaprogramowalem juz kilka projektow, nabralem z czasem pewnego doswiadczenia.
Obecnie zaczalem projekt pisania i odcztywania tagow modulem RC522 i PN532.

Polaczylem Modul z UNO zgodnie z danymi w Sketch: https://github.com/miguelbalboa/rfid/blo...l_data.ino
Orginalny Sketch (Write + Read) dziala bez problemu. Zapisane dane na pierwszym secie (UNO + RC522) (rfid_write_personal_data.ino) odczytuje bez problemu na drugim secie (rfid_read_personal_data.ino).
Po modyfikacji kodu nie dziala mi Autentyfikacja. Tag zapisany moja zmodyfikowana, skrocona wersja (write) jest na stale zablokowany. Odcztywanie jak i ponowne zapisywanie bloku nie jest dostepne z powodu MFRC522.Authenticate.

"status = mfrc522.PCD_Authenticate(MFRC522:TongueICC_CMD_MF_AUTH_KEY_A, 4, &key, &(mfrc522.uid));"

Dokladnie: po zapisaniu tagu (obojetnie w ktorym bloku), program nie akceptuje mego "key" - pomimo ze funkcja programujaca key jest orginalnie ta sama.
Variable byte bBlock jak i byte dataBlock[] zapisuje danymi bezposrednio przed kontaktem z chip.

Autoryzacja mfrc522-PCD kwitowana jest bledem: "Timeout in communication." - do czego jeszcze raz powtarzam:
blad ten wystepuje w probie ponownego kontaktu z zapisanym przeze mnie blokiem. Pierwszy zapis dziala - po zapisie nie mam juz dostepu do bloku. Problem powstaje po powyzszej funkcji: "status = mfrc522_PCD_Authenticate.......

Z gory dziejuje za uwage i mozliwa pomoc.
W przyszlosci podziele sie z wami z wdziecznoscia moim doswiadczeniem w programowaniu Arduino i ESP....

Pozdrawiam goraco, Robert

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

#define RST_PIN 9            
#define SS_PIN 10     
MFRC522 mfrc522(SS_PIN, RST_PIN);

byte bBlock;
byte dataBlock[] = {
    0x00, 0x00, 0x00, 0x00, //  0,  0,   0,  0,
    0x00, 0x00, 0x00, 0x00, //  0,  0,   0,  0,
    0x00, 0x00, 0x00, 0x00, //  0,  0,   0,  0,
    0x00, 0x00, 0x00, 0x00  //  0,  0,   0,  0
};

void vWriteChip()
{
  if (!mfrc522.PICC_IsNewCardPresent()){return;}
  if (!mfrc522.PICC_ReadCardSerial()){return;}

  digitalWrite(pinLED, HIGH);
  Serial.print(F("Chip UID:")); // Dump UID
  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.print(F(" PICC Typ: ")); // Dump PICC type
  MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
  Serial.println(mfrc522.PICC_GetTypeName(piccType));  

  MFRC522::MIFARE_Key key;
  for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;

  MFRC522::StatusCode status;
  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, bBlock, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK)
  {
    Serial.print(F("PCD_Authenticate() failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    delay(3000);
    digitalWrite(pinLED, LOW);
    return;
  }
  else
    Serial.println(F("PCD_Authenticate() success: "));

  status = mfrc522.MIFARE_Write(bBlock, dataBlock, 16); // Write block
  if (status != MFRC522::STATUS_OK)
  {
    Serial.print(F("MIFARE_Write() failed:"));
    Serial.println(mfrc522.GetStatusCodeName(status));
    delay(3000);
    digitalWrite(pinLED, LOW);
    return;
  }
  else
    Serial.println(F("MIFARE_Write() success:"));

  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
 
  // End Write
  delay(3000);
  digitalWrite(pinLED, LOW);
}

 
Odpowiedź
  


Wiadomości w tym wątku
Write tag UNO i modulem RC522 - przez RobertRW - 28-03-2024, 00:59
RE: Write tag UNO i modulem RC522 - przez RobertRW - 28-03-2024, 15:29

Skocz do:


Przeglądający: 1 gości