Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Geavanceerd RFID-aanwezigheidssysteem v2.0 – Zonder Ethernet

Onderdelen en benodigdheden

Onderdeel Aantal
Arduino UNO 1
Jumper wires (generiek) 1 set
RFID RC522 Module 1

Apps en online services

Over dit project

De eerste versie van ons "Online RFID-aanwezigheidssysteem (zonder Ethernet)" was voor hobbyisten zonder programmeervaardigheden wat ingewikkeld. Met versie 2 hebben we de programmeerstap geëlimineerd. Met alleen enkele verbindingen maak je je eigen online aanwezigheidssysteem.

Deze versie voldoet aan alle eisen van een echt aanwezigheidssysteem, inclusief een LCD-display.

Hoe het werkt

Schakeling

Geavanceerd RFID-aanwezigheidssysteem v2.0 – Zonder Ethernet

Bij twijfel over de verbindingen, zie de schema's sectie voor pin-aansluitingen.

LCD-scherm aansluitingen:

  • Pin 3 naar GND met 220 Ω weerstand
  • LCD RS pin → digitale pin A0
  • LCD Enable pin → digitale pin A1
  • LCD D4 pin → digitale pin 5
  • LCD D5 pin → digitale pin 4
  • LCD D6 pin → digitale pin 3
  • LCD D7 pin → digitale pin 2
  • LCD R/W pin → GND
  • LCD VSS pin → GND
  • LCD VCC pin → 5V

Programmering en installatie

Stap 1: Maak een Gebruikersgroep voor aanwezigheid en genereer een Validatiesleutel.
Ga naar: https://www.parikshacrack.com/gadgetProgrammers/user_group.html
Bewaar deze validatiesleutel veilig.

Geavanceerd RFID-aanwezigheidssysteem v2.0 – Zonder Ethernet

Stap 2: Download de benodigde bestanden voor synchronisatie tussen Arduino en de webapplicatie:
addRFIDTagsProg.zip
markattendancewin64.zip
Let op: Alleen voor Windows OS. Andere besturingssystemen zijn in ontwikkeling.

Pak beide zip-bestanden uit en bewaar de bestanden op je PC. Kies de versie die bij je Windows-architectuur past (32 of 64-bit).

Stap 3: Sluit de Arduino en RFID-reader aan op dezelfde PC.

Stap 4: Kopieer de Arduino-code (zie code-sectie) naar de Arduino IDE. Compileer en upload naar het bord.

Stap 5: Start de desktop-applicatie "addRFIDTagsProg" (uit de map addRFIDTagsProg.zip).

Bij correcte verbinding verschijnt een venster met een tekstvak. Kies de juiste COM-poort voor communicatie.

Geavanceerd RFID-aanwezigheidssysteem v2.0 – Zonder Ethernet

Na poortselectie verschijnt het volgende scherm:

Geavanceerd RFID-aanwezigheidssysteem v2.0 – Zonder Ethernet

Voer de validatiesleutel in (uit Stap 1) en druk op "Validate Key". Na validatie kun je gebruikers toevoegen. Het programma vraagt de sleutel slechts één keer.

Om een gebruiker toe te voegen: start het programma na validatie, kies opnieuw de poort. Houd een RFID-kaart voor de RC522-reader. De TAG UID verschijnt. Voer de gebruikersnaam in en druk op Enter (knop verschijnt na detectie kaart).

Geavanceerd RFID-aanwezigheidssysteem v2.0 – Zonder Ethernet

Bij succesvol toevoegen verschijnt een bevestiging. Je kunt de gebruiker bekijken in het webpanel:
https://www.parikshacrack.com/gadgetProgrammers/index.php

Stap 6: Log in op de webapplicatie via bovenstaande URL. Ga naar Tab "Gebruikers" → "Wachtende gebruikerslijst" om RFID-tags toe te wijzen aan medewerkers/studenten.

Geavanceerd RFID-aanwezigheidssysteem v2.0 – Zonder Ethernet

Stap 7: Start de desktop-applicatie "markOnlineAttendance" (uit map markattendancewin64.zip).

Een scherm opent met Status: connected. Houd een RFID-tag enkele seconden voor de reader om aanwezigheid te registreren voor de bijbehorende persoon.

Geavanceerd RFID-aanwezigheidssysteem v2.0 – Zonder Ethernet

Stap 8: Bekijk aanwezigheid van alle medewerkers/studenten per maand of jaar:

  1. Ga naar Tab "Aanwezigheidscontroles" → "Bekijk aanwezigheid".
  2. Selecteer maand en jaar.
  3. Klik op "Show".
Geavanceerd RFID-aanwezigheidssysteem v2.0 – Zonder Ethernet

Klaar! Vragen? Laat een reactie achter.

Code

Arduino-code

/* ------------------------------------------------------------
   Voorbeeldsketch: lezen van nieuwe NUID van een PICC naar seriële poort.
   Gebaseerd op MFRC522 bibliotheek: https://github.com/miguelbalboa/rfid
   ------------------------------------------------------------ */

#include 
#include 
#include 

// LCD pinnen
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 == false) {
      lcd.setCursor(0, 1);
      analogWrite(orangeLedPin, 0);
      lcd.print("Swipe Your Card!");
    }
  }

  // Zoek nieuwe kaarten
  if (!rfid.PICC_IsNewCardPresent()) return;
  if (!rfid.PICC_ReadCardSerial()) return;

  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

  // Controleer of het een MIFARE Classic type is
  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 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);
}

Schema's

  • Pin-verbindingen Arduino en LCD
  • Pin-verbindingen Arduino en RFID

Productieproces

  1. De Deegroller: Van Etrusken tot Moderne Vakmanschap
  2. De Evolutie en Vakmanschap van Moderne Bowlingpinnen
  3. Zonneverwarmingssystemen: Van Passief tot Actieve Oplossingen voor Duurzame Huisverwarming
  4. Van Oude Fibulae tot Moderne Fabricage: De Veiligheidsspeld Uitgelegd
  5. Primal Display: Een Raspberry Pi LCD-temperatuurmonitor bouwen
  6. Betrouwbaar Arduino RFID Aanwezigheidssysteem Aangedreven door Python
  7. Real-time RFID aanwezigheidssysteem met Arduino en Google Sheets
  8. Transportbandsystemen Uitgelegd: Werking, Typen en Voordelen
  9. Meester uw voertuig ophangingssysteem: Auto beschermen & rijcomfort verbeteren
  10. Revolutionair thermo-elektrisch koelsysteem verbetert prestaties van computers en batterijen
  11. Elkem Silicones Onthult LSR Select: Lage‑Temperatuur Uitharding en Custom Formulering voor 50% Snellere Cycli