به نام خدا
پروژه ی سیستم نظارت بر پایه RFID با رزبری پای
در این پروژه ( سیستم نظارت بر پایه RFID ) قصد توضیح چگونگی نظارت اتوماتیک با استفاده از کارت های RFID را داریم.تکنولوژی RFID ( شناسایی و تشخیص رادیو فرکانسی ) معمولا در مدارس ، دانشگاه ها ، ادارات و ایستگاه ها برای اهداف مختلف و ردیابی اتوماتیک افراد استفاده می شود.
قطعات مورد نیاز پروژه ی سیستم نظارت بر پایه RFID با رزبری پای :
رزبری پای ( با کارت SD بوت شده )
میکرو سوئیچ
زنگ اخبار
ال سی دی ۲*۱۶
پتانسیومتر ۱۰k
مقاومت ۱۰k
ال ای دی
مقاومت ۱k
بردبورد
خوان RFID
منبع تغذیه ۵ ولت
کارت های RFID
کابل اترنت
سیم های اتصال
کارت ها و RFID خوان :
اRFID یک وسیله الکترونیکی است که شامل ۲ بخش است ، RFID خوان و کارت RFID . هنگامیکه کارت RFID را نزدیک RFID خوان قرار می دهیم،RFID خوان داده کارت را بصورت سریال قرائت می کند.کارت RFID دارای کد ۱۲ کاراکتر رقمی داخل یک سیم پیچ می باشد.
توضیح عملکرد :
در اینجا رزبری پای ۳ تمامی فرایندهای این پروژه را کنترل می کند . RFID خوان ای دی کارت RFID را می خواند ، این داده از طریق UART توسط رسپبری پای دریافت میگردد و سپس رزبری پای آن کارت را معتبر تشخیص داده و نتیجه را بر روی ال سی دی نمایش می دهد.
شماتیک مدار پروژه ی سیستم نظارت بر پایه RFID با رزبری پای :
دیاگرام مداری این پروژه بسیار ساده است و شامل رسپبری پای ۳ ، RFID خوان ، کارت های RFID ، زنگ اخبار، ال ای دی و ال سی دی می باشد.در اینجا رسپبری پای کل فرایندها را مانند خواندن داده ای که از RFID خوان دریافت می شود ، مقایسه داده با داده های از پیش تعریف شده،به صدا در اوردن زنگ اخبار و ال ای دی وضعیت را کنترل می کند.
دانلود کد برنامه ی پروژه ی سیستم نظارت بر پایه RFID با رزبری پای :
دانلود فایل#include<wiringPi.h> #include <wiringSerial.h> #include<stdio.h> #include <string.h> #define RS 11 #define EN 10 #define D4 6 #define D5 5 #define D6 4 #define D7 1 #define led1 23 #define led2 24 #define led3 25 #define led5 14 #define buzz 7 #define in1 21 int sp ; int count1=0,count2=0,count3=0; char ch; char rfid[13]; int i=0; char temp[5]; void check_button(); 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); delay(10); digitalWrite(EN, LOW); digitalWrite(D4, temp & ch<<7); digitalWrite(D5, temp & ch<<6); digitalWrite(D6, temp & ch<<5); digitalWrite(D7, temp & ch<<4); digitalWrite(RS, LOW); digitalWrite(EN, HIGH); delay(10); digitalWrite(EN, LOW); } 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); delay(10); digitalWrite(EN, LOW); digitalWrite(D4, temp & ch<<7); digitalWrite(D5, temp & ch<<6); digitalWrite(D6, temp & ch<<5); digitalWrite(D7, temp & ch<<4); digitalWrite(RS, HIGH); digitalWrite(EN, HIGH); delay(10); digitalWrite(EN, LOW); } 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(int x, int y) { lcdcmd(0x02); lcdcmd(0x28); lcdcmd(0x06); lcdcmd(0x0e); lcdcmd(0x01); } void buzzer() { digitalWrite(buzz, HIGH); delay(1000); digitalWrite(buzz, LOW); } void wait() { digitalWrite(led5, LOW); delay(3000); } void serialbegin(int baud) { if ((sp = serialOpen ("/dev/ttyS0",baud)) < 0) { clear(); print("Unable to open"); setCursor(0,1); print("serial Port"); } } void setup() { if (wiringPiSetup () == -1) { clear(); print("Unable to start"); setCursor(0,1); print("wiringPi"); } pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led5, OUTPUT); pinMode(buzz, OUTPUT); pinMode(RS, OUTPUT); pinMode(EN, OUTPUT); pinMode(D4, OUTPUT); pinMode(D5, OUTPUT); pinMode(D6, OUTPUT); pinMode(D7, OUTPUT); pinMode(in1, INPUT); digitalWrite(in1, HIGH); begin(16,2); serialbegin(9600); } void get_card() { digitalWrite(led5, HIGH); i=0; while(i<12) { check_button(); while(serialDataAvail (sp)) { ch= serialGetchar(sp); rfid[i]=ch; fflush (stdout) ; i++; } } rfid[i]='\0'; buzzer(); return; } void main() { setup(); clear(); print("Attendance Systm"); setCursor(0,1); print("using RPI "); delay(2000); clear(); print("Circuit Digest"); setCursor(0,1); print("Welcomes you"); delay(2000); clear(); print("System Ready"); delay(1000); clear(); while(1) { clear(); print("Place Your Card:"); get_card(); setCursor(0,1); print(rfid); delay(1000); if(strncmp(rfid,"0900711B6003",12)==0) { count1++; clear(); print("Attd. Registered"); setCursor(0,1); print("Student 1"); digitalWrite(led1, HIGH); buzzer(); digitalWrite(led1, LOW); wait(); } else if(strncmp(rfid,"090070FE6EE9",12)==0) { count2++; clear(); print("Attd. Registered"); setCursor(0,1); print("Student 2"); digitalWrite(led2, HIGH); buzzer(); digitalWrite(led2, LOW); wait(); } else if(strncmp(rfid,"3F0072C049C4",12)==0) { count3++; clear(); print("Attd. Registered"); setCursor(0,1); print("Student 3"); digitalWrite(led3, HIGH); buzzer(); digitalWrite(led3, LOW); wait(); } else { clear(); print("Invalid Card"); buzzer(); buzzer(); wait(); } } } void check_button() { if(digitalRead(in1)==0) { digitalWrite(led5, LOW); clear(); setCursor(0,0); print("std1 std2 std3"); setCursor(1,1); sprintf(temp,"%d",count1); print(temp); setCursor(7,1); sprintf(temp,"%d",count2); print(temp); setCursor(13,1); sprintf(temp,"%d",count3); print(temp); delay(5000); digitalWrite(led5, HIGH); clear(); print("Place Your Card:"); } }
دیدگاهها (0)