Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sistema avanzado de asistencia RFID v2.0: Solución sin Ethernet

Componentes y suministros

Arduino UNO × 1
Cables de conexión (genéricos) × 1
Módulo RFID RC522 × 1

Aplicaciones y servicios en línea

Sobre este proyecto

La primera versión de nuestro "Sistema de Asistencia RFID Online (Sin Ethernet)" podía resultar complicada para aficionados sin conocimientos de programación. Con la Versión 2 del Sistema de Asistencia RFID Online, hemos avanzado un paso más eliminando la parte de codificación. Con solo realizar algunas conexiones, podrás crear tu propio Sistema de Asistencia Online.

En esta versión lanzamos un sistema de asistencia con todos los requisitos de uno real, incluyendo pantalla LCD.

¿Cómo funciona?

Circuito:

Sistema avanzado de asistencia RFID v2.0: Solución sin Ethernet

Si tienes dudas en las conexiones, consulta la sección de esquemáticos para ver las conexiones de pines.

Circuito para la pantalla LCD:

Programación:

Paso 1: Para usar el sistema, realiza lo siguiente:

Ve a: https://www.parikshacrack.com/gadgetProgrammers/user_group.html

Sistema avanzado de asistencia RFID v2.0: Solución sin Ethernet

Guarda esta clave de validación.

Paso 2: Descarga los archivos necesarios para sincronizar Arduino y la Aplicación Web:

Nota: Solo para Windows. Estamos trabajando en otros sistemas operativos.

Extrae ambos archivos ZIP y guárdalos en tu PC, eligiendo según tu arquitectura (32 o 64 bits).

Paso 3: Conecta Arduino y el lector RFID al mismo PC.

Paso 4: Copia y pega el código Arduino (sección de código) en el IDE de Arduino. Compila y sube al dispositivo.

Paso 5: Ejecuta la aplicación de escritorio "addRFIDTagsProg" (en la carpeta addRFIDTagsProg.zip).

Si todo está conectado correctamente, la aplicación se abrirá mostrando un cuadro de texto; de lo contrario, aparecerá una pantalla en blanco.

Sistema avanzado de asistencia RFID v2.0: Solución sin Ethernet

Selecciona el puerto de comunicación disponible.

Sistema avanzado de asistencia RFID v2.0: Solución sin Ethernet

Introduce la clave de validación del Paso 1 y pulsa "Validate Key". Se validará tu grupo.

Tras la validación, podrás añadir usuarios con la misma ventana (solo pedirá la clave la primera vez).

Ejecuta de nuevo el programa tras validar, elige el puerto libre y aparecerá:

Sistema avanzado de asistencia RFID v2.0: Solución sin Ethernet

Acercando la tarjeta al lector RFID RC522, mostrará el UID. Introduce el nombre del usuario y pulsa Enter (el botón aparece tras detectar la tarjeta).

Si se añade correctamente, mostrará mensaje de éxito y podrás ver al usuario en el panel web:

URL: https://www.parikshacrack.com/gadgetProgrammers/index.php

Paso 6: Accede a la aplicación web para asignar etiquetas RFID a empleados/estudiantes:

Ve a Pestaña Users → Pending User List.

Sistema avanzado de asistencia RFID v2.0: Solución sin Ethernet

Paso 7: Ejecuta la aplicación "markOnlineAttendance" (en markattendancewin64.zip).

Se abrirá una pantalla mostrando Status: connected.

Sistema avanzado de asistencia RFID v2.0: Solución sin Ethernet

Acercando la etiqueta RFID al lector durante unos segundos, se registrará la asistencia de la persona correspondiente.

Paso 8: Para ver la asistencia de todos los empleados/estudiantes en un mes o año:

Sistema avanzado de asistencia RFID v2.0: Solución sin Ethernet

¡Listo! Si te gusta, dale apoyo. Deja tus dudas en los comentarios.

Código

Código Arduino

/* --------------------------------------------------------------------------------------------------------------------
  Ejemplo para leer nuevo NUID de un PICC a serial.
  Basado en librería MFRC522: https://github.com/miguelbalboa/rfid
  -------------------------------------------------------------------------------------------------------------------- */

#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal.h>

// Pines LCD
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;
  }
  
  String s;
  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 printDec(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? "0" : "");
    Serial.print(buffer[i], DEC);
  }
}

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);
  }
}

void printLcdMsg(String msg, int col, int row) {
  if (msg.equals("") || row < 0 || col < 0) {
    row = 0; col = 1;
  }
  lcd.setCursor(col, row);
  lcd.print(msg);
}

Esquemáticos

Proceso de manufactura

  1. El rodillo de cocina: de los orígenes etruscos a la artesanía moderna
  2. La Evolución y la Artesanía de los Bolos de Bolera Modernos
  3. Sistemas de calefacción solar: de soluciones pasivas a activas para calefacción sostenible del hogar
  4. De los Fíbulas Antiguos a la Fabricación Moderna: El Imperdible Explicado
  5. Primal Display: construye monitor temperatura LCD con Raspberry Pi
  6. Sistema de Asistencia RFID Fiable con Arduino y Python
  7. Sistema de control de asistencia RFID en tiempo real con Arduino y Google Sheets
  8. Sistemas de transporte explicados: Funcionamiento, tipos y beneficios clave
  9. Domina el Sistema de Suspensión de tu Vehículo: Protege tu Coche y Mejora la Comodidad
  10. Sistema revolucionario de refrigeración termoeléctrica mejora rendimiento de computadoras y baterías
  11. Elkem Silicones presenta LSR Select: curado a baja temperatura y formulación a medida para ciclos un 50 % más rápidos