Estou estudando outro projeto, e como ou iniciante estou com dificuldades.
Estou usando o RFID - RC522.
Gostaria que quando aproximasse o cartão fosse gravado uma string, todas as vezes que fosse aproximado novamente seria gravado de forma adicional o conteúdo no cartão e a nova string.
Verifiquei que tem vários blocos e vários setores, porem não soube encontrar o local para fazer essa adição de dados.
Tags:
Dúvida:
Só é possível gravar 16 caracteres em cada bloco do cartão?
QUantos blocos possui um cartão ?
Olá Fredh Fagunes
Depende do cartão que você possui.
http://cache.nxp.com/documents/line_card/MIFARE_ICs_939775017001_v9...
Obrigado Flávio.
Uso do chaveiro que vem com o kit do RFID RC522.
Gostaria apenas que quando aproximasse o cartão, fosse inserido no mesmo uma string, essa string já está programada no arduino uno, sem que seja preciso digitar.
Segue o código de gravação que estou usando e tentando manipular, mas sem sucesso.
void gravar()
{
//Aguarda cartao
while ( ! mfrc522.PICC_IsNewCardPresent()) {
delay(100);
}
if ( ! mfrc522.PICC_ReadCardSerial()) return;
//Mostra UID na serial
Serial.print(F("UID do Cartao: ")); //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);
}
//Mostra o tipo do cartao
// Serial.print(F("\nTipo do PICC: "));
// byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
// Serial.println(mfrc522.PICC_GetTypeName(piccType));
Serial.println();
byte buffer[32];
byte block;
byte status, len;
Serial.setTimeout(20000L) ;
// Serial.println(F("Digite o sobrenome,em seguida o caractere #"));
//Pega a quantidade de caracteres
//len = Serial.readBytesUntil( '#', ( char * ) buffer, 16) ;
//for (byte i = len; i < 16; i++) buffer[i] = ' ';
// aqui tentai dar entrada no array, mas sem sucesso
buffer[1] = '1';
buffer[2] = 's';
buffer[3] = 'e';
buffer[4] = 'r';
buffer[5] = 'i';
buffer[6] = 'e';
block = 1;
//Serial.println(F("Autenticacao usando chave A..."));
status=mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
block, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
Serial.print(F("PCD_Authenticate() failed: "));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
//Grava no bloco 1
status = mfrc522.MIFARE_Write(block, buffer, 16);
if (status != MFRC522::STATUS_OK) {
Serial.print(F("MIFARE_Write() failed: "));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
else
{
Serial.println(F("Dados gravados com sucesso!"));
Serial.println(len);
}
mfrc522.PICC_HaltA(); // Halt PICC
mfrc522.PCD_StopCrypto1(); // Stop encryption on PCD
delay(2000);
}
Fredh, estou no mesmo problema, conseguiu gravar a string no cartão?
para quem estiver com a mesma duvida e caiu aki:
transforme a string em bytes antes dessa função:
status = mfrc522.MIFARE_Write(block, buffer, 16);
para isto vc faz dessa forma:
stringaserconvertida.getBytes(buffer, intdotamanhodastringmenorquedecesseis );
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por