28-03-2024, 00:59
Witam milo
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:ICC_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);
}
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:ICC_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);
}