- Komponenter som används:
- Arbetsförklaring:
- Kretsbeskrivning:
- Installera wiringPi Library i Raspberry Pi:
- Programmeringsförklaring:
Vi har tidigare använt RFID i många av våra RFID-projekt och redan byggt ett RFID-baserat närvarosystem med 8051, här ska vi bygga RFID-baserat närvarosystem med Raspberry Pi.
I detta RFID-baserade närvarosystemssystem-projekt kommer vi att förklara dig att hur kan vi automatiskt godkänna och räkna närvaro med hjälp av RFID-kort. RFID-teknik (Radio Frequency Identification and Detection) används ofta i skolor, högskolor, kontor och stationer för olika ändamål för att automatiskt hålla koll på människor. Här räknar vi närvaron hos en auktoriserad person med hjälp av RFID.
Om du inte känner till Raspberry Pi har vi skapat en serie handledning och hallon pi-projekt, med gränssnitt med alla grundläggande komponenter och några enkla projekt till att börja med, kolla.
Komponenter som används:
- Raspberry Pi (med startat SD-kort)
- Tryckknapp
- Summer
- 16x2 LCD
- 10k kruka
- 10K motstånd
- LED
- 1k motstånd
- Brödbräda
- RFID-läsare
- Effekt 5 volt
- RFID-taggar eller kort
- Ethernet-kabel
- Anslutande ledningar
RFID-läsare och taggar:
RFID är en elektronikanordning som består av två delar - en är RFID-läsare och en annan är RFID-tagg eller -kort. När vi sätter RFID-taggen nära RFID-läsaren läser den taggdata seriellt. RFID-taggen har 12-siffrig teckenkod i en spole. Detta RFID fungerar med överföringshastighet på 9600 bps. RFID använder elektromagnet för att överföra data från Reader till Tag eller Tag to Reader.
Arbetsförklaring:
Här kontrollerar Raspberry Pi 3 hela processen med detta projekt (användaren kan använda valfritt Raspberry Pi Board). RFID Reader läser RFID-kort-ID: t, dessa data tas emot av Raspberry Pi via UART, sedan validerar RPi kortet och visar resultaten på LCD-skärmen.
När en person lägger sin RFID-tagg nära RFID-läsaren för att skanna, läser RFID taggens data och skickar den till Raspberry Pi. Sedan läser Raspberry Pi det unika identifieringsnumret för den RFID-taggen och jämför sedan dessa data med fördefinierade data eller information. Om data matchas med fördefinierade data, ökar Raspberry Pi närvaron av taggens person med en och om matchad inte matchas, visar mikrokontroller meddelandet "Ogiltigt kort" på LCD-skärmen och en summer pipar kontinuerligt under en tid. Och här har vi också lagt till en tryckknapp för att se totalt nr. deltagande för alla studenter. Här har vi tagit fyra RFID-taggar där tre används för att registrera närvaron av tre studenter och en används som ogiltigt kort.
Kretsbeskrivning:
Kretsschema för detta Raspberry Pi Attendance System Project är mycket enkelt, som innehåller Raspberry Pi 3, RFID-läsare, RFID-taggar, summer, LED och LCD. Här kontrollerar Raspberry Pi hela processen som att läsa data som kommer från läsaren, jämföra data med fördefinierade data, körsummer, körstatus-LED och skicka status till LCD-skärm. RFID Reader används för att läsa RFID-taggar. Summer används för indikationer och drivs av inbyggd NPN-transistor. LCD används för att visa status eller meddelanden på den.
Anslutningarna är enkla. LCD är ansluten till Raspberry Pi i 4-bitars läge. LCD: s RS-, RW- och EN-stift ansluts direkt vid ledningarPi GPIO 11, GND och 10. Och datapinnen är anslutna vid ledningarPi GPIO 6, 5, 4 och 1. En 10K-kruka används för att ställa in kontrast eller ljusstyrka på LCD-skärmen. Summern är ansluten till ledningen Pi GPIO stift 7 med avseende på marken. Tre lysdioder är anslutna för studentindikering med respektive RFID-kort. Och en lysdiod används för att visa att systemet är redo att skanna RFID-kortet. En tryckknapp är också ansluten till ledningarPi GPIO-stift 12 för att visa närvaron. RFID-läsare är ansluten till UART-stift (ledning GPIO-stift 16).
Installera wiringPi Library i Raspberry Pi:
Precis som i Python importerar vi import RPi.GPIO som IO- rubrikfil för att använda GPIO Pins i Raspberry Pi, här på C-språk måste vi använda wiringPi Library för att använda GPIO Pins i vårt C-program. Vi kan installera det genom att använda kommandona nedan en efter en, du kan köra det här kommandot från Terminal eller från någon SSH-klient som Putty (om du använder Windows). Gå igenom vår Kom igång med Raspberry Pi-handledning för att lära dig mer om hantering av Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd-ledningarPi git pull origin cd wiringPi./build
Testa installationen av wiringPi-biblioteket, använd kommandona nedan:
gpio -v gpio readall
Programmeringsförklaring:
Nu först har vi inkluderat några bibliotek och definierat stift som vi behöver använda i den här koden.
#omfatta
Efter det, definiera några variabler och array för beräkning och lagra värden och strängar.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
Sedan har funktioner skrivits för att utföra hela processen. Några av dem ges nedan:
Med tanke på ogiltig lcdcmd funktion används för att skicka kommando till LCD
ogiltig lcdcmd (osignerad 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);……………..
Angiven tomrumsfunktion används för att skicka data till LCD.
ogiltig skrivning (osignerad 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 () -funktionen används för att rensa LCD-skärmen, void setCursor används för att ställa in markörposition och ogiltig utskrift för att skicka sträng till LCD.
ogiltig rensa () {lcdcmd (0x01); } ogiltig setCursor (int x, int y) {int set = 0; om (y == 0) set = 128 + x; om (y == 1) set = 192 + x; lcdcmd (uppsättning); } ogiltig utskrift (char * str) {medan (* str) {skriv (* str); str ++; }}
void start- funktionen används för att initialisera LCD i 4-bitars läge.
tomrummet börjar (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
void buzzer () och void wait () -funktionerna används för att pipa summern och för att vänta på att placera kortet igen. Funktionen void serialbegin används för att initiera seriekommunikationen.
void buzzer () {digitalWrite (buzz, HIGH); fördröjning (1000); digitalWrite (buzz, LOW); } ogiltig vänta () {digitalWrite (led5, LOW); fördröjning (3000); } ogiltigt serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); skriva ut ("Det går inte att öppna"); setCursor (0,1); tryck ("seriell port"); }}
I void setup () -funktionen initierar vi alla GPIO: er, LCD och seriell UART.
ogiltig installation () {if (wiringPiSetup () == -1) {clear (); skriva ut ("Kan inte starta"); setCursor (0,1); tryck ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Givet void get_card () Funktionen används för att hämta data från RFID-läsaren.
I void main () -funktionen har vi visat några meddelanden på LCD och jämfört taggdata med fördefinierade data för att validera kortet med nedanstående kod.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; klar(); tryck ("Attd. Registrerad"); setCursor (0,1); tryck ("Studnet 1"); digitalWrite (led1, HIGH); summer(); digitalWrite (led1, LOW); vänta(); } annars om (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; klar(); tryck ("Attd. Registrerad"); setCursor (0,1);………………
Slutligen används void check_button () för att visa total närvaro vid knapptryckning.
ogiltig check_knapp () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); klar(); setCursor (0,0); skriva ut ("std1 std2 std3");……………..
Kontrollera den fullständiga koden för detta Raspberry Pi-närvarosystem nedan.