Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Erweitertes RFID-Anwesenheitssystem v2.0 – Ohne Ethernet

Komponenten und Zubehör

Komponente Menge
Arduino UNO 1
Jumper-Kabel (diverse) 1 Set
RFID RC522 Modul 1

Apps und Online-Dienste

Projektbeschreibung

Die erste Version unseres „Online RFID-Anwesenheitssystems (ohne Ethernet)“ war für Hobbyisten ohne Programmierkenntnisse etwas komplex. Mit Version 2.0 entfällt der Programmieraufwand vollständig. Nach einfachen Verbindungen und Konfigurationsschritten steht ein vollständiges Online-Anwesenheitssystem mit LCD-Display zur Verfügung.

Funktionsweise

Schaltung

Die Verdrahtung des LCD-Displays und des RFID-Moduls ist im Schaltplan dargestellt. Wichtige Pin-Belegungen:

Einrichtungsschritte

  1. Benutzergruppe erstellen & Validierungsschlüssel generieren: Unter https://www.parikshacrack.com/gadgetProgrammers/user_group.html registrieren und kostenlosen Validierungsschlüssel erhalten. Diesen Schlüssel sicher aufbewahren!
  2. Desktop-Anwendungen herunterladen: addRFIDTagsProg.zip und markattendancewin64.zip von der Projektseite herunterladen, entpacken und passende Version (32/64 Bit) wählen.
  3. Hardware verbinden: Arduino mit RFID-Reader an denselben PC anschließen.
  4. Arduino-Code hochladen: Den untenstehenden Sketch in die Arduino IDE kopieren, kompilieren und aufspielen.
  5. RFID-Tags registrieren: Programm addRFIDTagsProg starten, COM-Port wählen, Validierungsschlüssel eingeben und „Validate Key“ drücken. Danach Karten vor das Modul halten, UID wird angezeigt, Benutzername eingeben und bestätigen. Erfolgreiche Registrierung wird im Web-Panel unter index.php sichtbar.
  6. Web-Panel nutzen: Einloggen, Reiter „User’s → Pending User List“ öffnen, RFID-Tags Mitarbeitern/Studenten zuordnen.
  7. Anwesenheit erfassen: Programm markOnlineAttendance starten (zeigt „Status: connected“). RFID-Tag vor Reader halten – Anwesenheit wird verbucht.
  8. Berichte anzeigen: Im Web-Panel unter „Attendance Controls → View Attendance“ Monat/Jahr wählen und „Show“ klicken.

Arduino-Code

/* ------------------------------------------------------------
   RFID-Anwesenheitssystem v2.0
   Liest NUID von MIFARE Classic Karten, zeigt Status auf LCD,
   kommuniziert per Serial mit Desktop-App.
   ------------------------------------------------------------ */
#include 
#include 
#include 

// LCD-Pins
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 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 = 0;
  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 dt) {
  digitalWrite(orangeLedPin, LOW);
  digitalWrite(greenLedPin, HIGH);
  digitalWrite(redLedPin, LOW);
  tone(buzzerPin, 5000, 300);
  if (dt > 0) { delay(dt); digitalWrite(greenLedPin, LOW); noTone(buzzerPin); }
}

void glowRedLed(int dt) {
  digitalWrite(orangeLedPin, LOW);
  digitalWrite(greenLedPin, LOW);
  digitalWrite(redLedPin, HIGH);
  digitalWrite(buzzerPin, HIGH);
  delay(1000);
  tone(buzzerPin, 5000);
  if (dt > 0) { delay(dt); 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);
  }
}

Schaltpläne

Detaillierte Pin-Belegungen für LCD und RFID-Modul liegen als TIFF-Dateien vor:

Herstellungsprozess

  1. Das Nudelholz: Von etruskischen Ursprüngen bis zur modernen Handwerkskunst
  2. Die Entwicklung und Handwerkskunst moderner Bowling-Pins
  3. Solarheizsysteme: Von passiven zu aktiven Lösungen für nachhaltiges Heizen
  4. Sicherheitsnadel: Von antiken Fibeln zur modernen Fertigung
  5. Primal Display: Raspberry Pi LCD-Temperaturmonitor mit DHT11 bauen
  6. Elkem Silicones enthüllt LSR Select: Niedrigtemperatur-Aushärtung & Custom Formulierung für 50% schnellere Zyklen
  7. Revolutionäres thermoelektrisches Kühlsystem steigert Leistung von Computern & Batterien
  8. RFID-Anwesenheitssystem mit Arduino & Python – Daten direkt in phpMyAdmin (XAMPP) speichern
  9. Förderbänder & Förderanlagen: Funktion, Typen und Vorteile im Überblick
  10. Fahrwerksfederung meistern: Schutz fürs Auto & mehr Fahrkomfort