Depois de algum tempo na frente de meu computador buscando uma solução viável para a implantação de um banco de dados de grande capacidade para Arduíno, criei um código que faz o que eu queria.
Fiz pesquisas na internet procurando encontrar uma luz para este problema mas nada encontrei, ai tive que por a mão na massa.
Funcionamento:
O usuário aproxima o cartão do leitor RFID, a tag lida do cartão é comparado com as tags cadastradas no cartão SD, e retorna informando se o cartão esta cadastrado ou não.
Caso o cartão esteja cadastrado ele também informa o nome do usuário que esta ligado a aquele cartão.
Decidi divulgar pois tudo que aprendi em Arduíno foi através de tutoriais da internet.
Obs. O código pode e deve ser melhorado, não fiz comentários nas linhas por falta de tempo e paciência!
\\------------------------------------------------------------------------------------------------------------#include /font>SD.h> File myFile;
#include /font>SPI.h>
#include /font>MFRC522.h>
MFRC522 mfrc522(10, 9);
int x = 0;
byte sel = 0;
byte c1 = 0;
byte c2 = 0;
byte c3 = 0;
String status = "";
String cconteudo = "";
String usuario = "";
String nome = "";
char caractere;
char carac;
void setup() {
Serial.begin(9600);
SPI.begin();
if (SD.begin(4)) {
myFile = SD.open("rfid.txt");
if (myFile) {
while (myFile.available()) {
for (x; myFile.read() == 13; x++) {
delay(10);
}
}
}
else {
Serial.println("Falha ao abrir banco de dados");
}
Serial.print(x);
Serial.println(" usuarios cadastrados: ");
myFile.close();
!SD.begin(4);
}
}
void loop() {
mfrc522.PCD_Init();
while (sel == 0) {
Serial.println("Aproxime o seu cartao do leitor...");
cconteudo = "";
while ( ! mfrc522.PICC_IsNewCardPresent()) {
}
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
for (byte i = 0; i /font> mfrc522.uid.size; i++) {
cconteudo.concat(String(mfrc522.uid.uidByte[i] /font> 0x10 ? " 0" : " "));
cconteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
}
cconteudo.toUpperCase();
cconteudo.trim();
mfrc522.PICC_HaltA();
myFile = SD.open("rfid.txt");
if (myFile) {
while (myFile.available() && (c2 == 0)) {
caractere = 0;
while (myFile.available() && (caractere != ';') && (caractere != 13) && (c1 == 0)) {
caractere = myFile.read();
if ((caractere != ';') && (caractere != 13)) {
usuario.concat(caractere);
}
}
usuario.trim();
if ((cconteudo == usuario ) && (c1 == 0) ) {
status = "Usuario encontrado";
Serial.println(status);
c1 = 1;
c3 = 1;
}
else {
usuario = "";
status = "Usuario nao encontrado ";
}
if (c3 == 1) {
carac = 0;
while (myFile.available() && (carac != 13) && (c3 == 1)) {
carac = myFile.read();
if ((carac != 13) && (carac != ';')) {
nome.concat(carac);
}
delay(10);
}
nome.trim();
if (c3 == 1) {
c3 = 0;
c2 = 1;
sel = 1;
}
}
}
}
else {
Serial.println("Falha ao abrir banco de dados");
}
if (status != "Usuario encontrado") {
Serial.println(status);
}
}
myFile.close();
Serial.print("Bem vindo ");
Serial.println(nome);
delay(2000);
}
\\-------------------------------------------------------------------------------------------------------------------------------------------- -
Arquivo rfid.txt contido no cartão de memoria (primeiro vai as tag dos cartões e após o nome do usuário do cartão.
11 22 33 44;nome1
22 22 33 44;nome2
31 11 22 33;nome3
22 33 54 22;nome4
12 22 33 33;nome5
32 44 12 99;nome6
32 68 11 12;nome7
88 99 11 74;nome8
51 88 99 33;nome9
33 F2 0D 01 ;Daniel Baltazar Schneider
12 P2 00 33;nome11
12 33 55 I7;nome12
88 99 33 55;nome13
\\----------------------------------------------------------------------------------------------------------------------------------------------
Alguma duvida ou sugestão? comente.
Tags:
Mr. Super obrigado !
Valeuuuuu !
Bom dia Daniel tudo bem?
Parabéns pelo seu projeto... Ideia muito boa...
Compilei seu código no arduino ele esta funcionando porem ele esta mostrando direto o nome sem para mesmo que eu encosto outro cartão. Poderia ajudar.
Olá Carlos Eduardo
Já faz bastante tempo que não brinco com os módulos
Acredito que se você setar a variável sel = 0 no final do código, ele vai entrar novamente no while de leitura do cartão.
Obrigado pelo contato.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por