Sistema Avançado de Presença RFID v2.0 – Solução sem Ethernet
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino UNO | 1 |
| Fios Jumpers (genéricos) | 1 |
| Módulo RFID RC522 | 1 |
Aplicativos e Serviços Online
- addrfidwin64.zip (apenas Windows)
- markattendancewin64.zip (apenas Windows)
Sobre o Projeto
A primeira versão do nosso "Sistema de Presença RFID Online (sem Ethernet)" podia ser complexa para hobbyistas sem experiência em programação. Com a Versão 2 do Sistema de Presença RFID Online, eliminamos a necessidade de codificação. Com apenas algumas conexões, você cria seu próprio sistema de presença online completo, com display LCD.
Como Funciona
Circuito

Consulte a seção Esquemáticos para detalhes das conexões de pinos.
Conexões do Display LCD
- Pino 3 (VO) ao GND com resistor de 220 Ω
- RS → pino analógico A0
- Enable → pino analógico A1
- D4 → pino digital 5
- D5 → pino digital 4
- D6 → pino digital 3
- D7 → pino digital 2
- R/W → GND
- VSS → GND
- VCC → 5V
Programação e Configuração
- Crie um Grupo de Usuários e Gere a Chave de Validação
Acesse: https://www.parikshacrack.com/gadgetProgrammers/user_group.html
Guarde esta chave de validação. - Baixe os arquivos necessários para sincronizar Arduino e aplicação web: Nota: apenas para Windows (32 ou 64 bits).
- Extraia os arquivos e salve no PC.
- Conecte o Arduino e o leitor RFID ao mesmo PC.
- Copie o código Arduino (abaixo) para a IDE, compile e carregue.
- Execute o aplicativo desktop "addRFIDTagsProg" (da pasta extraída). Selecione a porta COM correta. Insira a chave de validação gerada no passo 1 e clique em "Validate Key".
- Após validação, aproxime o cartão/tag RFID do leitor RC522. O UID aparecerá; digite o nome do usuário e confirme. Sucesso permite visualizar no painel web: https://www.parikshacrack.com/gadgetProgrammers/index.php
- No painel web, vá em Usuários → Lista de Usuários Pendentes para associar tags a funcionários/alunos.
- Execute o aplicativo "markOnlineAttendance" (pasta markattendancewin64.zip). A tela mostrará "Status: connected". Aproxime a tag do leitor por alguns segundos para registrar a presença.
- Para relatórios: no painel web, Controles de Presença → Ver Presença, selecione mês/ano e clique em "Show".
Código
Código Arduino
/* Exemplo de leitura de NUID com MFRC522
Baseado em biblioteca: https://github.com/miguelbalboa/rfid
Conexões LCD e RFID conforme comentários no código */
#include
#include
#include
const int rs = A0, en = A1, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define SS_PIN 10
#define RST_PIN 9
int writeVal;
int greenLedPin = A2;
int redLedPin = A3;
int orangeLedPin = 6;
int buzzerPin = A4;
boolean chkConn = false;
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
byte nuidPICC[4];
boolean isValidating = false;
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(greenLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("GadgetProgrammer");
delay(100);
lcd.setCursor(0, 1);
lcd.print(" Not Connected! ");
establishConnection();
}
void loop() {
lcd.setCursor(0, 1);
char retOutput;
if (Serial.available() > 0) {
retOutput = Serial.read();
lcd.blink();
if (retOutput == 'A') {
chkConn = true;
analogWrite(orangeLedPin, 0);
lcd.print("Swipe Your Card!");
}
if (retOutput == 'V') {
analogWrite(orangeLedPin, 1000);
lcd.print("Validating Group");
isValidating = true;
delay(1000);
}
if (retOutput == 'S') {
lcd.print("Validation Done!");
glowGreenLed(1000);
isValidating = false;
delay(1000);
}
}
if (chkConn && retOutput != 0) {
if (retOutput == '1') { lcd.print("Attendance Done!"); glowGreenLed(1000); delay(4000); }
else if (retOutput == '0') { lcd.print("Network Error !"); glowRedLed(1000); delay(4000); }
else if (retOutput == '2') { lcd.print("User Not Found!"); glowRedLed(1000); delay(4000); }
else if (retOutput == '5') { lcd.print("Network Error!"); glowRedLed(1000); delay(4000); }
if (!isValidating) {
lcd.setCursor(0, 1);
analogWrite(orangeLedPin, 0);
lcd.print("Swipe Your Card!");
}
}
if (!rfid.PICC_IsNewCardPresent()) return;
if (!rfid.PICC_ReadCardSerial()) return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) return;
for (byte i = 0; i < 4; i++) nuidPICC[i] = rfid.uid.uidByte[i];
printHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
lcd.setCursor(0, 1);
lcd.print("Reading Card...!");
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
delay(1000);
}
void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? "0" : "");
Serial.print(buffer[i], HEX);
}
}
void glowGreenLed(int delaytime) {
digitalWrite(orangeLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
digitalWrite(redLedPin, LOW);
tone(buzzerPin, 5000, 300);
if (delaytime > 0) { delay(delaytime); digitalWrite(greenLedPin, LOW); noTone(buzzerPin); }
}
void glowRedLed(int delaytime) {
digitalWrite(orangeLedPin, LOW);
digitalWrite(greenLedPin, LOW);
digitalWrite(redLedPin, HIGH);
digitalWrite(buzzerPin, HIGH);
delay(1000);
tone(buzzerPin, 5000);
if (delaytime > 0) { delay(delaytime); digitalWrite(redLedPin, LOW); noTone(buzzerPin); }
}
void glowOrangeLed() { analogWrite(orangeLedPin, 100); delay(100); }
void establishConnection() {
while (Serial.available() <= 0 && !chkConn) {
Serial.println("A");
glowOrangeLed();
delay(200);
}
}
Esquemáticos
Arquivos de conexão de pinos:
- pin_connections_of_arduino_and_lcd_yD9G43NUd9.tiff
- pin_connections_of_arduion_and_rfid_7DFKgigFOA.tiff
Processo de manufatura
- O Rolo de Massa: Das Origens Etruscas à Arte Moderna
- A Evolução e o Artesanato dos Pinos de Boliche Modernos
- Sistemas de Aquecimento Solar: De Soluções Passivas a Ativas para Aquecimento Residencial Sustentável
- Das Fíbulas Antigas à Fabricação Moderna: O Alfinete de Segurança Explicado
- Primal Display: Construa Monitor de Temperatura LCD com Raspberry Pi
- Elkem Silicones Revela LSR Select: Cura a Baixa Temperatura e Formulação Personalizada para Ciclos 50% Mais Rápidos
- Sistema Revolucionário de Resfriamento Termoelétrico Melhora Desempenho de Computadores e Baterias
- Sistema de Presença RFID Confiável com Arduino e Python
- Sistemas Transportadores: Funcionamento, Tipos e Principais Benefícios
- Dominando o Sistema de Suspensão do Seu Veículo: Protegendo Seu Carro e Melhorando o Conforto