- Brugte komponenter:
- Arbejdsforklaring:
- Beskrivelse af kredsløb:
- Installation af wiringPi Library i Raspberry Pi:
- Programmeringsforklaring:
Vi har tidligere brugt RFID i mange af vores RFID-projekter og allerede bygget et RFID-baseret tilstedeværelsessystem ved hjælp af 8051, her skal vi opbygge RFID-baseret tilstedeværelsessystem ved hjælp af Raspberry Pi.
I dette RFID-baserede tilstedeværelsessystemprojekt vil vi forklare dig, at hvordan kan vi autorisere og tælle deltagelse automatisk ved hjælp af RFID-kort. RFID-teknologi (radiofrekvensidentifikation og -detektion) bruges ofte i skoler, gymnasier, kontorer og stationer til forskellige formål for automatisk at holde styr på mennesker. Her tæller vi tilstedeværelsen af en autoriseret person ved hjælp af RFID.
Hvis du ikke er fortrolig med Raspberry Pi, har vi oprettet en række tutorials og hindbær pi-projekter med grænseflade til alle de grundlæggende komponenter og nogle enkle projekter til at begynde med, skal du kontrollere.
Brugte komponenter:
- Raspberry Pi (med bootet SD-kort)
- Trykknap
- Summer
- 16x2 LCD
- 10 k gryde
- 10K modstand
- LED
- 1k modstand
- Brødbræt
- RFID-læser
- Effekt 5 volt
- RFID-tags eller kort
- Ethernet-kabel
- Tilslutning af ledninger
RFID-læser og tags:
RFID er en elektronisk enhed, der har to dele - den ene er RFID-læser, og den anden er RFID-tag eller -kort. Når vi sætter RFID-tag tæt på RFID-læseren, læser det tag-data serielt. RFID-tag har 12-cifret tegnkode i en spole. Dette RFID fungerer med en baudrate på 9600 bps. RFID bruger elektromagnet til at overføre data fra Reader til Tag eller Tag til Reader.
Arbejdsforklaring:
Her styrer Raspberry Pi 3 hele processen med dette projekt (bruger kan bruge ethvert Raspberry Pi Board). RFID-læser læser RFID-kort-id'et, disse data modtages af Raspberry Pi via UART, derefter validerer RPi kortet og viser resultaterne på LCD-skærmen.
Når en person placerer deres RFID-tag nær RFID-læseren for at scanne, læser RFID tagets data og sender dem til Raspberry Pi. Derefter læser Raspberry Pi det unikke identifikationsnummer for det RFID-mærke og sammenligner derefter disse data med foruddefinerede data eller oplysninger. Hvis data matches med foruddefinerede data, forøger Raspberry Pi tilstedeværelsen af tagets person med en, og hvis matchet ikke matches, viser mikrokontroller meddelelsen 'Ugyldigt kort' på LCD, og summeren bipper kontinuerligt i nogen tid. Og her tilføjede vi også en trykknap for at se total nr. deltagelse af alle studerende. Her har vi taget 4 RFID-tags, hvor tre bruges til at registrere tilstedeværelsen af tre studerende, og en bruges som et ugyldigt kort.
Beskrivelse af kredsløb:
Kredsløbsdiagram til dette Raspberry Pi Attendance System Project er meget simpelt, som indeholder Raspberry Pi 3, RFID Reader, RFID Tags, summer, LED og LCD. Her kontrollerer Raspberry Pi den komplette proces som at læse data, der kommer fra læseren, sammenligne data med foruddefinerede data, køre summer, køre status LED og sende status til LCD-display. RFID Reader bruges til at læse RFID-tags. Summer bruges til indikationer og drives af indbygget NPN-transistor. LCD bruges til at vise status eller meddelelser på den.
Forbindelser er enkle. LCD er forbundet med Raspberry Pi i 4-bit-tilstand. LCD's RS-, RW- og EN-pin er direkte forbundet med ledningsføringPi GPIO 11, GND og 10. Og datapinnen er tilsluttet ved ledningsføringPi GPIO 6, 5, 4 og 1. En 10K pot bruges til at indstille kontrast eller lysstyrke på LCD. Summer er tilsluttet ved ledningsføring Pi GPIO pin 7 i forhold til jorden. Tre lysdioder er tilsluttet til studenterindikation med respektive RFID-kort. Og en LED bruges til at vise, at systemet er klar til at scanne RFID-kortet. En trykknap er også tilsluttet til ledningsføringen Pi GPIO pin 12 for at vise antallet af fremmøde. RFID-læser er tilsluttet ved UART-pin (ledning GPIO pin 16).
Installation af wiringPi Library i Raspberry Pi:
Ligesom i Python importerer vi import af RPi.GPIO som IO- headerfil for at bruge GPIO Pins i Raspberry Pi, her på C-sprog skal vi bruge wiringPi Library til at bruge GPIO Pins i vores C-program. Vi kan installere det ved hjælp af nedenstående kommandoer en efter en, du kan køre denne kommando fra Terminal eller fra en SSH-klient som Putty (hvis du bruger Windows). Gå gennem vores Kom godt i gang med Raspberry Pi-vejledning for at lære mere om håndtering af Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd ledningsføring Pi git pull origin cd wiringPi./build
Test installationen af wiringPi-biblioteket, brug nedenstående kommandoer:
gpio -v gpio readall
Programmeringsforklaring:
Nu har vi først inkluderet nogle biblioteker og definerer ben, som vi skal bruge i denne kode.
#omfatte
Efter det skal du definere nogle variabler og array til beregning og gemme værdier og strenge.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
Derefter er der blevet skrevet funktioner til at udføre hele processen. Nogle af dem er angivet nedenfor:
Givet ugyldig lcdcmd- funktion bruges til at sende kommando til LCD
ugyldigt lcdcmd (usigneret 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);……………..
Denne ugyldige skrivefunktion bruges til at sende data til LCD.
ugyldig skrivning (usigneret 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);……………..
Givet void clear () -funktion bruges til at rydde LCD-skærmen, void setCursor bruges til at indstille markørposition og ugyldig udskrivning til at sende streng til LCD.
ugyldigt klart () {lcdcmd (0x01); } ugyldig setCursor (int x, int y) {int set = 0; hvis (y == 0) indstilles = 128 + x; hvis (y == 1) sæt = 192 + x; lcdcmd (sæt); } ugyldig udskrivning (char * str) {mens (* str) {skriv (* str); str ++; }}
void start- funktionen bruges til at initialisere LCD i 4-bit tilstand.
tomrum begynder (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
void buzzer () og void wait () -funktionerne bruges til at bippe en summer og til at vente med at placere kortet igen. Funktion ugyldig serialbegin bruges til at initialisere den serielle kommunikation.
ugyldig summer () {digitalWrite (buzz, HIGH); forsinkelse (1000); digitalWrite (buzz, LOW); } ugyldig ventetid () {digitalWrite (led5, LOW); forsinkelse (3000); } ugyldigt serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Kan ikke åbnes"); setCursor (0,1); print ("seriel port"); }}
I ugyldig opsætning () -funktion initierer vi alle GPIO'er, LCD og seriel UART.
ugyldig opsætning () {if (wiringPiSetup () == -1) {clear (); print ("Kan ikke starte"); setCursor (0,1); print ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Givet ugyldig get_card () funktion bruges til at hente data fra RFID-læser.
I ugyldig hovedfunktion () har vi vist nogle meddelelser på LCD og sammenlignet tagdata med foruddefinerede data for at validere kortet med nedenstående kode.
……………… hvis (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; klar(); print ("Attd. Registered"); setCursor (0,1); print ("Studnet 1"); digitalWrite (led1, HIGH); summer(); digitalWrite (led1, LOW); vente(); } ellers hvis (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; klar(); print ("Attd. Registered"); setCursor (0,1);………………
Endelig bruges void check_button () -funktionen til at vise total deltagelse ved tryk på knappen.
ugyldig check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); klar(); setCursor (0,0); print ("std1 std2 std3");……………..
Tjek den fulde kode for dette Raspberry Pi-tilstedeværelsessystem nedenfor.