Olá ,
Preciso de ajuda na programação de um Arduino uno para um leitor de rfid rc522 . Preciso acionar um relê somente quando o cartão estiver no campo de leitura da leitora e ao retirar o cartão da leitora o relê deve ser desligado .
Com o código abaixo, ele está acionando o relê ao encostar o cartão na leitora, mas ao retirar o cartão o relê continua acionado .
Código :
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
int relepin = 5;
char st[20];
void setup()
{
SPI.begin(); // Inicia SPI bus
mfrc522.PCD_Init(); // Inicia MFRC522
pinMode (relepin , OUTPUT) ;
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return ;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
String conteudo= "";
byte letra;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
}
conteudo.toUpperCase();
if (conteudo.substring(1) == "ED 78 03 CA") //UID 1 - Chaveiro
{
digitalWrite (relepin , HIGH);
}
else
{
digitalWrite (relepin , LOW);
}
}
Alguém pode me ajudar ?
Tags:
O leitor rfid apenas lê o código do cartão quando ele se APROXIMA e não quando se afasta, certo?!
Então não dá pra saber quando ele se afastou para tomar alguma decisão.
Uma ideia seria aproximar o cartão uma vez -> ligar relé, afasta e aproxima novamente -> desliga relé.
Ou ainda, aproxima -> liga relé, conta um tempo -> desliga relé.
Outra opção seria, aproxima cartão -> guarda o código lido -> tenta ler cartao novamente -> o cartão ainda é o mesmo? -> se sim, mantem rele ligado; senão desliga relé.
A última ideia é basicamente ficar lendo o cartão o tempo todo para saber se tem ou não a presença do mesmo e se é o mesmo cartão.
Abraço!
Boa tarde ,
O que eu estou precisando é a última opção ficar lendo o cartão o tempo todo para saber se tem ou não a presença dele e se é o mesmo, porém para escrever esse código é que estou com dificuldades, pois sou iniciante em arduino e linguagem C++ .
Vou tentar mudar alguma coisa no código, se der certo posto o resultado.
Obrigado
Fernando,
tem que ser rfid mesmo?
Pq senão vc poderia usar um rele tipo reed que ao aproximar um pequeno ima, ele fecha, ao afastar ele abre.
O que acha?
Valeu!
Gelci ,
Eu já tentei com o reed , mas não gostei do resultado . Achei que fica um pouco instável e qualquer que descobrir o acionamento, com um pedaço de imã vai ativar o rele .
Preciso tentar funcionar com o rfid mesmo , mesmo assim obrigado pela dica .
Valeu .
Entendi...
Apesar de aparentemente ser um projeto de segurança, se puder, fale um pouco mais sobre o que vc está desenvolvendo. Talvez nos ajude a encontrar alguma solução viável.
Boa noite ,
Ainda continuo tentando com o rfid , mas sem sucesso . Percebi que essa leitora RC522, ao ler a TAG pela primeira vez dentro do loop carrega o valor lido até o fim do loop do arduino e mesmo que peça para ler novamente o String "ED 78 03 CA" , mesmo não tendo TAG na leitora, informa ao arduino que existe a String ED 78 03 CA e não existe a possibilidade de fazer um if/else . Pensei se existe uma forma de limpar a String depois que é lida pela primeira vez dentro do loop ?
Alguem pode ajudar ?
Valew
existe duas possibilidades
usar a funçao While http://arduino.cc/en/Reference/While
ou colocar um delay pra se fazer varias leituras mas com um intervalo de tempo entre elas
ja usei esse tipo de rfid mas nao me lembro se ele so envia sinal se tirar e colocar denovo o cartao enfrente a leitora ou se colocar ele direto ele fica enviando de tempo em tempo mas se for o segundo caso colocando o delay respeitando esse tempo pode ser q funcione
Boa tarde ,
Já havia tentado com While , mas acontece que quando a leitora lê a String ela leva esse número até o fim do loop , eu preciso fazer com que ao encostar a TAG na leitora , ela informa o numero da TAG , reseta a leitora , informa se tem alguma TAG na leitora novamente e qual o numero , tudo isso sem terminar o loop .
Obrigado
ola boa noite cara estou com este mesmo problema também gostaria que ao enconstar o tag na leitora acionaria o rele e ao voltar a encostar a mesma tag desligaria o rele porem ta difícil também estou começando no arduino já fiz varias pesquisas na net e não encontrei nada caso vc tenha conseguido me ajuda também ok meu e-mail é este linosilva1975@hotmail.com ok desse já agradeço
Ola Marcelo.
Voce conseguiu uma solução para esta questão.
Estou com a mesma necessidade.
Fico no aguardo
Abs.
Ola Fernando.
Estou procurando a mesma solução.
Voce conseguiu alguma coisa para resolver esta questão.
Fico no aguardo
Abs
Veja se pode ser útil para seu proposito;
if (conteudo.substring(1) == "ED 78 03 CA") //UID 1 - Chaveiro
{
//Altera estado da rele
if(!(digitalRead(rele))) //Se rele estiver desacionado
digitalWrite(rele, HIGH); //Liga rele
}
else
{
digitalWrite (rele , LOW); //Desliga o rele
}
//============================
delay(2000); //Aguarda 2 segundos para efetuar uma nova leitura;
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por