- Verwendete Komponenten:
- Arbeitserklärung:
- Schaltungsbeschreibung:
- Installieren der wiringPi-Bibliothek in Raspberry Pi:
- Programmiererklärung:
Wir haben zuvor in vielen unserer RFID-Projekte RFID verwendet und bereits ein RFID-basiertes Anwesenheitssystem mit 8051 erstellt. Hier werden wir ein RFID-basiertes Anwesenheitssystem mit Raspberry Pi erstellen .
In diesem RFID-basierten Attendance System-Projekt erklären wir Ihnen, wie wir die Teilnahme mithilfe von RFID-Karten automatisch autorisieren und zählen können. Die RFID-Technologie (Radio Frequency Identification and Detection) wird häufig in Schulen, Hochschulen, Büros und Stationen für verschiedene Zwecke eingesetzt, um automatisch den Überblick über Personen zu behalten. Hier zählen wir die Anwesenheit einer autorisierten Person mithilfe von RFID.
Wenn Sie mit Raspberry Pi nicht vertraut sind, haben wir eine Reihe von Tutorials und Himbeer-Pi-Projekten erstellt, die eine Schnittstelle zu allen grundlegenden Komponenten und zunächst einige einfache Projekte enthalten.
Verwendete Komponenten:
- Raspberry Pi (mit gebooteter SD-Karte)
- Druckknopf
- Summer
- 16x2 LCD
- 10k Topf
- 10K Widerstand
- LED
- 1k Widerstand
- Brotbrett
- RFID-Lesegerät
- Leistung 5 Volt
- RFID-Tags oder Karten
- Ethernet Kabel
- Kabel anschließen
RFID Reader und Tags:
RFID ist ein elektronisches Gerät, das aus zwei Teilen besteht - einem RFID-Lesegerät und einem RFID-Tag oder einer RFID-Karte. Wenn wir das RFID-Tag in der Nähe des RFID-Lesegeräts platzieren, werden die Tag-Daten seriell gelesen. Das RFID-Tag hat einen 12-stelligen Zeichencode in einer Spule. Diese RFID arbeitet mit einer Baudrate von 9600 bps. RFID verwendet einen Elektromagneten, um Daten vom Reader zum Tag oder vom Tag zum Reader zu übertragen.
Arbeitserklärung:
Hier steuert Raspberry Pi 3 den gesamten Prozess dieses Projekts (Benutzer können jedes Raspberry Pi Board verwenden). Der RFID-Leser liest die RFID-Karten-ID. Diese Daten werden von Raspberry Pi über UART empfangen. Anschließend validiert RPi die Karte und zeigt die Ergebnisse auf dem LCD-Bildschirm an.
Wenn eine Person ihr RFID-Tag zum Scannen in die Nähe des RFID-Lesegeräts legt, liest RFID die Daten des Tags und sendet sie an Raspberry Pi. Dann liest Raspberry Pi die eindeutige Identifikationsnummer dieses RFID-Tags und vergleicht diese Daten mit vordefinierten Daten oder Informationen. Wenn Daten mit vordefinierten Daten übereinstimmen, erhöht Raspberry Pi die Anwesenheit der Person des Tags um eins. Wenn die Übereinstimmung nicht übereinstimmt, zeigt der Mikrocontroller die Meldung "Ungültige Karte" auf dem LCD an und der Summer piept einige Zeit ununterbrochen. Und hier haben wir auch einen Druckknopf hinzugefügt, um die Gesamtzahl zu sehen. der Teilnahme aller Studenten. Hier haben wir 4 RFID-Tags verwendet, in denen drei die Anwesenheit von drei Schülern aufzeichnen und einer als ungültige Karte verwendet wird.
Schaltungsbeschreibung:
Der Schaltplan für dieses Raspberry Pi Attendance System-Projekt ist sehr einfach und enthält Raspberry Pi 3, RFID-Lesegerät, RFID-Tags, Summer, LED und LCD. Hier steuert Raspberry Pi den gesamten Prozess wie das Lesen von Daten, die vom Reader kommen, das Vergleichen von Daten mit vordefinierten Daten, das Fahren des Summers, das Fahren der Status-LED und das Senden des Status an das LCD-Display. Mit dem RFID-Reader werden RFID-Tags gelesen. Der Summer wird für Anzeigen verwendet und von einem eingebauten NPN-Transistor angesteuert. Das LCD wird zur Anzeige von Status oder Meldungen verwendet.
Verbindungen sind einfach. Das LCD ist im 4-Bit-Modus mit dem Raspberry Pi verbunden. Der RS-, RW- und EN-Pin des LCD wird direkt an den Kabeln Pi GPIO 11, gnd und 10 angeschlossen. Der Daten-Pin wird an den Kabeln Pi GPIO 6, 5, 4 und 1 angeschlossen. Mit einem 10K-Poti wird der Kontrast oder die Helligkeit des LCD eingestellt. Der Summer ist an der Verdrahtung Pi GPIO Pin 7 in Bezug auf Masse angeschlossen. Drei LEDs sind zur Schüleranzeige mit der jeweiligen RFID-Karte verbunden. Eine LED zeigt an, dass das System zum Scannen der RFID-Karte bereit ist. Ein Druckknopf ist auch an der Verkabelung Pi GPIO Pin 12 angeschlossen, um die Anwesenheitszahl anzuzeigen. Der RFID-Leser ist am UART-Pin (Verkabelung GPIO-Pin 16) angeschlossen.
Installieren der wiringPi-Bibliothek in Raspberry Pi:
Wie in Python importieren wir den Import RPi.GPIO als IO- Header-Datei, um die GPIO-Pins von Raspberry Pi zu verwenden. Hier in C-Sprache müssen wir die wiringPi-Bibliothek verwenden, um die GPIO-Pins in unserem C-Programm zu verwenden. Wir können es installieren, indem wir die folgenden Befehle einzeln verwenden. Sie können diesen Befehl vom Terminal oder von einem SSH-Client wie Putty ausführen (wenn Sie Windows verwenden). In unserem Tutorial Erste Schritte mit Raspberry Pi erfahren Sie mehr über den Umgang mit Raspberry Pi.
sudo apt-get installiere git-core sudo apt-get aktualisiere sudo apt-get aktualisiere git klon git: //git.drogon.net/wiringPi cd wiringPi git pull origin cd wiringPi./build
Testen Sie die Installation der wiringPi-Bibliothek mit den folgenden Befehlen:
gpio -v gpio readall
Programmiererklärung:
Jetzt haben wir zuerst einige Bibliotheken aufgenommen und Pins definiert, die wir in diesem Code verwenden müssen.
#einschließen
Definieren Sie anschließend einige Variablen und ein Array für die Berechnung und speichern Sie Werte und Zeichenfolgen.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
Dann wurden Funktionen geschrieben, um den gesamten Prozess auszuführen. Einige von ihnen sind unten angegeben:
Die angegebene Funktion void lcdcmd wird zum Senden des Befehls an das LCD verwendet
void lcdcmd (unsigned int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, LOW); digitalWrite (EN, HIGH);……………..
In Anbetracht Leere Schreibfunktion wird für das Senden von Daten an LCD verwendet.
void write (unsigned int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, HIGH); digitalWrite (EN, HIGH);……………..
Wenn die Funktion void clear () zum Löschen des LCD verwendet wird, wird void setCursor zum Festlegen der Cursorposition und des void print zum Senden der Zeichenfolge an das LCD verwendet.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; if (y == 0) set = 128 + x; if (y == 1) set = 192 + x; lcdcmd (gesetzt); } void print (char * str) {while (* str) {write (* str); str ++; }}
Die Funktion void void wird verwendet, um das LCD im 4-Bit-Modus zu initialisieren.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }}
Die Funktionen void buzzer () und void wait () werden zum Piepen des Summers und zum Warten auf das erneute Platzieren der Karte verwendet. Die Funktion void serialbegin wird verwendet, um die serielle Kommunikation zu initialisieren.
void buzzer () {digitalWrite (Buzz, HIGH); Verzögerung (1000); digitalWrite (Buzz, LOW); } void wait () {digitalWrite (led5, LOW); Verzögerung (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Öffnen nicht möglich"); setCursor (0,1); print ("serielle Schnittstelle"); }}
In der void setup () -Funktion initiieren wir alle GPIOs, LCD und seriellen UART.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("Start nicht möglich"); setCursor (0,1); print ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Bei der Funktion void get_card () werden Daten vom RFID-Lesegerät abgerufen .
In der Funktion void main () haben wir einige Meldungen auf dem LCD angezeigt und die Tag-Daten mit vordefinierten Daten verglichen, um die Karte mit dem folgenden Code zu validieren.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; klar(); print ("Attd. Registered"); setCursor (0,1); Drucken ("Studnet 1"); digitalWrite (led1, HIGH); Summer(); digitalWrite (led1, LOW); warten(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; klar(); print ("Attd. Registered"); setCursor (0,1);………………
Schließlich wird die Funktion void check_button () verwendet, um die Gesamtteilnahme beim Drücken der Taste anzuzeigen .
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); klar(); setCursor (0,0); print ("std1 std2 std3");……………..
Überprüfen Sie den vollständigen Code für dieses Raspberry Pi Attendance System unten.