- Gebruikte componenten:
- Werkende uitleg:
- Circuit Beschrijving:
- WiringPi Library installeren in Raspberry Pi:
- Programmering Toelichting:
We hebben eerder RFID gebruikt in veel van onze RFID-projecten en hebben al een RFID-gebaseerd aanwezigheidssysteem gebouwd met behulp van 8051, hier gaan we een RFID-gebaseerd aanwezigheidssysteem bouwen met behulp van Raspberry Pi.
In dit RFID-gebaseerde aanwezigheidssysteemproject zullen we u uitleggen hoe we aanwezigheid automatisch kunnen autoriseren en tellen met behulp van RFID-kaarten. RFID-technologie (Radio Frequency Identification and Detection) wordt vaak gebruikt in scholen, hogescholen, kantoren en stations voor verschillende doeleinden om automatisch mensen in de gaten te houden. Hier tellen we de aanwezigheid van een geautoriseerd persoon door middel van RFID.
Als u niet bekend bent met Raspberry Pi, hebben we een reeks tutorials en raspberry pi-projecten gemaakt, met interface voor alle basiscomponenten en enkele eenvoudige projecten om mee te beginnen, check.
Gebruikte componenten:
- Raspberry Pi (met opgestarte SD-kaart)
- Druk op de knop
- Zoemer
- 16x2 LCD
- 10k pot
- 10K weerstand
- LED
- 1k weerstand
- Broodplank
- RFID-lezer
- Vermogen 5 volt
- RFID-tags of kaarten
- Ethernetkabel
- Draden aansluiten
RFID-lezer en tags:
RFID is een elektronisch apparaat dat uit twee delen bestaat: een is een RFID-lezer en een ander is een RFID-tag of kaart. Wanneer we een RFID-tag in de buurt van de RFID-lezer plaatsen, leest deze tag-gegevens serieel. RFID-tag heeft een code van 12 tekens in een spoel. Deze RFID werkt met een baudrate van 9600 bps. RFID gebruikt een elektromagneet om gegevens over te dragen van Reader naar Tag of Tag naar Reader.
Werkende uitleg:
Hier bestuurt Raspberry Pi 3 het hele proces van dit project (de gebruiker kan elk Raspberry Pi-bord gebruiken). RFID-lezer leest de RFID-kaart-ID, deze gegevens worden ontvangen door Raspberry Pi via UART, vervolgens valideert RPi de kaart en toont de resultaten op het LCD-scherm.
Wanneer een persoon zijn RFID-tag dichtbij de RFID-lezer plaatst om te scannen, leest RFID de gegevens van de tag en stuurt deze naar Raspberry Pi. Vervolgens leest Raspberry Pi het unieke identificatienummer van die RFID-tag en vergelijkt deze gegevens vervolgens met vooraf gedefinieerde gegevens of informatie. Als gegevens worden gematcht met vooraf gedefinieerde gegevens, verhoogt Raspberry Pi de aanwezigheid van de persoon van de tag met één en als de overeenkomst niet overeenkomt, toont de microcontroller het bericht 'Ongeldige kaart' op het LCD-scherm en piept de zoemer enige tijd continu. En hier hebben we ook een drukknop toegevoegd om het totale aantal te zien. aanwezigheid van alle studenten. Hier hebben we 4 RFID-tags genomen waarvan er drie worden gebruikt om de aanwezigheid van drie studenten vast te leggen en één wordt gebruikt als een ongeldige kaart.
Circuit Beschrijving:
Het schakelschema voor dit Raspberry Pi Attendance System-project is heel eenvoudig en bevat Raspberry Pi 3, RFID-lezer, RFID-tags, zoemer, LED en LCD. Hier bestuurt de Raspberry Pi het volledige proces, zoals het lezen van gegevens die van de lezer komen, gegevens vergelijken met vooraf gedefinieerde gegevens, zoemer sturen, status-LED aansturen en status naar het LCD-scherm verzenden. RFID-lezer wordt gebruikt om RFID-tags te lezen. Zoemer wordt gebruikt voor indicaties en wordt aangedreven door een ingebouwde NPN-transistor. LCD wordt gebruikt om de status of berichten erop weer te geven.
Verbindingen zijn eenvoudig. LCD is verbonden met Raspberry Pi in 4-bit-modus. De RS-, RW- en EN-pin van de LCD is rechtstreeks verbonden met de bedrading Pi GPIO 11, gnd en 10. En de gegevenspin is verbonden met de bedrading Pi GPIO 6, 5, 4 en 1. Een 10K-pot wordt gebruikt om het contrast of de helderheid van het LCD-scherm in te stellen. Zoemer is aangesloten op bedrading Pi GPIO pin 7 ten opzichte van aarde. Drie LED's zijn aangesloten voor leerlingindicatie met respectieve RFID-kaart. En een LED wordt gebruikt om aan te geven dat het systeem klaar is om de RFID-kaart te scannen. Een drukknop is ook aangesloten op bedrading Pi GPIO pin 12 om het aantal aanwezigen weer te geven. RFID-lezer is aangesloten op UART-pin (bedrading GPIO-pin 16).
WiringPi Library installeren in Raspberry Pi:
Net als in Python importeren we import RPi.GPIO als IO- headerbestand om de GPIO-pinnen van Raspberry Pi te gebruiken, hier in C-taal moeten we bedradingPi-bibliotheek gebruiken om de GPIO-pinnen in ons C-programma te gebruiken. We kunnen het installeren door onderstaande commando's een voor een te gebruiken, je kunt dit commando uitvoeren vanaf Terminal of vanaf een SSH-client zoals Putty (als je Windows gebruikt). Doorloop onze handleiding Aan de slag met Raspberry Pi voor meer informatie over het gebruik van de Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd bedradingPi git pull oorsprong cd bedradingPi./build
Test de installatie van de WiringPi-bibliotheek, gebruik onderstaande commando's:
gpio -v gpio readall
Programmering Toelichting:
Nu hebben we eerst enkele bibliotheken toegevoegd en pinnen gedefinieerd die we in deze code moeten gebruiken.
# omvatten
Hierna definieert u enkele variabelen en een matrix voor berekening en slaat u waarden en strings op.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
Vervolgens zijn er functies geschreven om het hele proces uit te voeren. Sommigen van hen worden hieronder gegeven:
Gegeven ongeldige lcdcmd- functie wordt gebruikt voor het verzenden van een commando naar het LCD-scherm
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);……………..
De gegeven ongeldige schrijffunctie wordt gebruikt voor het verzenden van gegevens naar het LCD-scherm.
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);……………..
Gegeven de void clear () -functie wordt gebruikt om het LCD-scherm leeg te maken , wordt void setCursor gebruikt om de cursorpositie in te stellen en void print voor het verzenden van string naar het LCD-scherm.
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 (set); } void print (char * str) {while (* str) {write (* str); str ++; }}
void begin functie wordt gebruikt om LCD te initialiseren in 4-bit modus.
leegte begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
void buzzer () en void wait () functies worden gebruikt voor het piepen van de zoemer en voor het wachten om de kaart opnieuw te plaatsen. Functie void serialbegin wordt gebruikt om de seriële communicatie te initialiseren.
void buzzer () {digitalWrite (buzz, HIGH); vertraging (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); vertraging (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Kan niet openen"); setCursor (0,1); print ("seriële poort"); }}
In de void setup () functie initialiseren we alle GPIO's, LCD en seriële UART.
void setup () {if (bedradingPiSetup () == -1) {clear (); print ("Kan niet starten"); setCursor (0,1); print ("bedradingPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Given void get_card () Functie wordt gebruikt om gegevens van RFID-lezer op te halen.
In de void main () -functie hebben we enkele berichten op het LCD-scherm getoond en de tag-gegevens vergeleken met vooraf gedefinieerde gegevens om de kaart met onderstaande code te valideren.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; Doorzichtig(); print ("Attd. Geregistreerd"); setCursor (0,1); print ("Studnet 1"); digitalWrite (led1, HIGH); zoemer(); digitalWrite (led1, LOW); wacht(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; Doorzichtig(); print ("Attd. Geregistreerd"); setCursor (0,1);………………
Ten slotte wordt de functie void check_button () gebruikt voor het weergeven van de totale aanwezigheid bij het indrukken van een knop.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); Doorzichtig(); setCursor (0,0); print ("std1 std2 std3");……………..
Controleer de volledige code voor dit Raspberry Pi-aanwezigheidssysteem hieronder.