In dit RFID-gebaseerde aanwezigheidssysteemproject zullen we u uitleggen hoe we de aanwezigheid automatisch kunnen tellen door RFID-kaarten te gebruiken. 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.
We kunnen het volledige aanwezigheidssysteem opdelen in verschillende secties: leesgedeelte, bedieningsgedeelte, bestuurdersgedeelte en displaygedeelte. De rol van elke sectie wordt weergegeven in het onderstaande blokschema:
Reader-sectie
Dit gedeelte bevat een RFID, een elektronisch apparaat dat uit twee delen bestaat: het ene is een RFID-lezer en het andere 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 lezer naar tag of tag naar lezer.
Controle sectie:
8051-microcontroller wordt gebruikt voor het besturen van het volledige proces van dit project. Hier door middel van 8051 ontvangen we RFID-gegevens en sturen we status of berichten naar het LCD-scherm.
Display sectie:
In dit project wordt een 16x2 LCD gebruikt om er berichten op weer te geven.
Driver sectie:
Deze sectie heeft een motordriver L293D voor het openen van de poort en een zoemer met een BC547 NPN-transistor voor indicaties.
Werken
Wanneer een persoon zijn RFID-tag in de RFID-lezer plaatst, leest RFID de gegevens van de tag en stuurt deze naar de 8051-microcontroller en vervolgens vergelijkt de microcontroller deze gegevens met gedefinieerde gegevens of informatie. Als gegevens worden gematcht met gedefinieerde gegevens, verhoogt de microcontroller de aanwezigheid van een van de personen van de tag en als de overeenkomst niet plaatsvindt, toont de microcontroller een ongeldige kaart op het LCD-scherm en piept de zoemer enige tijd continu.
Het schakelschema voor het RFID-aanwezigheidssysteem met basgitaar is hierboven weergegeven. In het circuit is LCD in vier bits modus verbonden met 8051 microcontroller. De RS-, RW- en EN-pinnen van het LCD-scherm zijn rechtstreeks verbonden met PORT 1-pinnummer P1.0, P1.1 en P1.2. D4, D5, D6 en D7 pinnen van LCD zijn direct verbonden op pin P1.4, P1.5, P1.6 en P1.7 van poort 1. De motor driver is aangesloten op PORT pin nummer P2.4 en P2.5. en zoemer is aangesloten op P2.6 op PORT2.
Programma-uitleg
Om te programmeren voor een op RFID gebaseerd attedantiesysteem, moeten we eerst header-bestanden opnemen en de invoer- en uitvoerpen en variabelen definiëren.
# omvatten
Hierna moeten we een functie voor vertraging maken.
ongeldige vertraging (int itime) {int i, j; voor (i = 0; i
Vervolgens maken we een functie voor LCD en initialiseren we lcd-functie,
void lcd_init (void) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x0e); lcdcmd (0x01); }
Hier hebben we een functie die we in ons programma hebben gebruikt. Hierin hebben we een baudsnelheid van 9600bps geconfigureerd op 11,0592 MHz Crystal Frequency. We controleren het SBUF-register voor het ontvangen van gegevens.
void uart_init () {TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; } char rxdata () {while (! RI); ch = SBUF; RI = 0; terug ch; }
Hierna hebben we in het hoofdprogramma lcd en UART geïnitialiseerd en vervolgens lezen we de output van RFID wanneer er een tag op staat. We slaan deze string op in een array en matchen vervolgens met vooraf gedefinieerde array-gegevens.
lcdcmd (1); lcdstring ("Plaats uw kaart:"); lcdcmd (0xc0); i = 0; voor (i = 0; i <12; i ++) rfid = rxdata (); rfid = '\ 0'; lcdcmd (1);
Als er een match optreedt, verhoogt de controller de opkomst met één. Anders loopt de pieptoon zoemer continu en LCD toont ongeldige kaart.
if (strncmp (rfid, "160066A5EC39", 12) == 0) {count1 ++; lcdcmd (1); lcdstring ("Aanwezigheid"); lcdcmd (0xc0); lcdstring ("Geregistreerd"); vertraging (200); lcdcmd (1); lcdstring ("Student1"); lcdcmd (0xc0); lcdstring ("Attnd. No.:"); sprintf (resultaat, "% d", count1); lcdstring (resultaat);
PCB-indeling
Hier is de PCB-lay-out voor op RFID gebaseerd aanwezigheidssysteem: