우리는 이전에 많은 RFID 프로젝트에서 RFID를 사용했으며 이미 8051을 사용하여 RFID 기반 출석 시스템을 구축했습니다. 여기서는 Raspberry Pi를 사용하여 RFID 기반 출석 시스템 을 구축 할 것 입니다.
이 RFID 기반 출석 시스템 프로젝트 에서는 RFID 카드를 사용하여 자동으로 출석을 승인하고 계산하는 방법을 설명합니다. RFID 기술 (무선 주파수 식별 및 감지)은 학교, 대학, 사무실 및 방송국에서 일반적으로 사람들을 자동으로 추적하기 위해 다양한 목적으로 사용됩니다. 여기에서는 RFID를 사용하여 승인 된 사람의 출석을 계산합니다.
Raspberry Pi에 익숙하지 않은 경우 모든 기본 구성 요소 및 몇 가지 간단한 프로젝트와 인터페이스하여 일련의 자습서 및 raspberry pi 프로젝트를 만들었습니다.
사용 된 구성 요소:
- Raspberry Pi (부팅 된 SD 카드 포함)
- 누름 단추
- 부저
- 16x2 LCD
- 10k 냄비
- 10K 저항기
- LED
- 1k 저항기
- 브레드 보드
- RFID 리더
- 전원 5V
- RFID 태그 또는 카드
- 이더넷 케이블
- 전선 연결
RFID 리더 및 태그:
RFID는 두 부분으로 구성된 전자 장치입니다. 하나는 RFID 리더이고 다른 하나는 RFID 태그 또는 카드입니다. RFID 리더 가까이에 RFID 태그를 놓으면 태그 데이터를 순차적으로 읽습니다. RFID 태그에는 코일에 12 자리 문자 코드가 있습니다. 이 RFID는 9600bps의 전송 속도로 작동합니다. RFID는 전자석을 사용하여 리더에서 태그로 또는 태그에서 리더로 데이터를 전송합니다.
작동 설명:
여기서 Raspberry Pi 3 는이 프로젝트의 전체 프로세스를 제어합니다 (사용자는 모든 Raspberry Pi 보드를 사용할 수 있음). RFID 리더 는 RFID 카드 ID 를 읽고이 데이터는 UART를 통해 Raspberry Pi에서 수신 한 다음 RPi가 카드를 확인하고 결과를 LCD 화면에 표시합니다.
사람이 스캔을 위해 RFID 태그를 RFID 리더기 근처에 놓으면 RFID는 태그의 데이터를 읽어 라즈베리 파이로 보냅니다. 그런 다음 Raspberry Pi 는 해당 RFID 태그 의 고유 식별 번호 를 읽고이 데이터를 사전 정의 된 데이터 또는 정보와 비교합니다. 데이터가 사전 정의 된 데이터와 일치하면 Raspberry Pi는 태그 사람의 출석을 하나씩 증가시키고 일치하지 않으면 마이크로 컨트롤러가 LCD에 'Invalid Card'메시지를 표시하고 일정 시간 동안 부저가 계속 울립니다. 그리고 여기에 누름 버튼을 추가하여 총 개수를 확인했습니다. 모든 학생들의 출석. 여기에서는 3 명의 학생의 출석을 기록하는 데 3 개가 사용되고 하나는 유효하지 않은 카드로 사용되는 4 개의 RFID 태그를 가져 왔습니다.
회로 설명:
이 Raspberry Pi Attendance System 프로젝트의 회로도는 매우 간단하며 Raspberry Pi 3, RFID 리더, RFID 태그, 부저, LED 및 LCD가 포함되어 있습니다. 여기에서 Raspberry Pi는 리더에서 오는 데이터 읽기, 미리 정의 된 데이터와 데이터 비교, 버저 구동, 상태 LED 구동 및 LCD 디스플레이로 상태 전송과 같은 전체 프로세스를 제어합니다. RFID 리더 는 RFID 태그를 읽는 데 사용됩니다. 부저 는 표시에 사용되며 내장 NPN 트랜지스터에 의해 구동됩니다. LCD 는 상태 또는 메시지를 표시하는 데 사용됩니다.
연결은 간단합니다. LCD는 4 비트 모드에서 Raspberry Pi와 연결됩니다. LCD의 RS, RW, EN 핀은 wirePi GPIO 11, gnd, 10에서 직접 연결됩니다. 데이터 핀은 wirePi GPIO 6, 5, 4, 1에서 연결됩니다. 10K pot은 LCD의 명암 또는 밝기를 설정하는 데 사용됩니다. 부저는 접지와 관련하여 wirePi GPIO 핀 7에 연결됩니다. 각각의 RFID 카드와 함께 학생 표시를 위해 3 개의 LED가 연결됩니다. 그리고 하나의 LED는 시스템이 RFID 카드를 스캔 할 준비가되었음을 표시하는 데 사용됩니다. 푸시 버튼은 출석 횟수를 표시하기 위해 wirePi GPIO 핀 12에도 연결됩니다. RFID 리더는 UART 핀에 연결됩니다 (GPIO 핀 16 연결).
Raspberry Pi에 wirePi 라이브러리 설치:
Python에서와 마찬가지로 RPi.GPIO를 IO 헤더 파일로 가져와 Raspberry Pi의 GPIO 핀을 사용합니다. 여기서 C 언어로 C 프로그램에서 GPIO 핀을 사용 하려면 wirePi 라이브러리 를 사용해야합니다. 아래 명령을 하나씩 사용하여 설치할 수 있으며 터미널 또는 Putty와 같은 일부 SSH 클라이언트 (Windows를 사용하는 경우)에서이 명령을 실행할 수 있습니다. Raspberry Pi 시작하기 자습서를 통해 Raspberry Pi 처리에 대해 자세히 알아보십시오.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd wirePi git pull origin cd wirePi./build
wirePi 라이브러리 설치를 테스트하고 아래 명령을 사용하십시오.
gpio -v gpio readall
프로그래밍 설명:
이제 먼저 일부 라이브러리를 포함하고이 코드에서 사용해야하는 핀을 정의했습니다.
#포함
그 후에 계산을 위해 몇 가지 변수와 배열을 정의하고 값과 문자열을 저장합니다.
int sp; 정수 카운트 1 = 0, 카운트 2 = 0, 카운트 3 = 0; char ch; char rfid; int i = 0; char 온도;
그런 다음 전체 프로세스를 실행하기 위해 함수가 작성되었습니다. 그들 중 일부는 다음과 같습니다.
주어진 void lcdcmd 함수는 LCD에 명령을 보내는 데 사용됩니다.
void lcdcmd (unsigned int ch) {int temp = 0x80; digitalWrite (D4, 온도 & ch << 3); digitalWrite (D5, 온도 & ch << 2); digitalWrite (D6, 온도 & ch << 1); digitalWrite (D7, 온도 및 채널); digitalWrite (RS, LOW); digitalWrite (EN, HIGH);……………..
주어진 void 쓰기 기능은 데이터를 LCD로 보내는 데 사용됩니다.
void write (unsigned int ch) {int temp = 0x80; digitalWrite (D4, 온도 & ch << 3); digitalWrite (D5, 온도 & ch << 2); digitalWrite (D6, 온도 & ch << 1); digitalWrite (D7, 온도 및 채널); digitalWrite (RS, HIGH); digitalWrite (EN, HIGH);……………..
주어 무효 명확 () 함수는 LCD를 취소하는 데 사용됩니다, 무효 setCursor ()에이 세트 커서 위치에 사용되는 무효 인쇄 LCD에 문자열을 보내는.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; if (y == 0) 세트 = 128 + x; if (y == 1) set = 192 + x; lcdcmd (세트); } void print (char * str) {while (* str) {write (* str); str ++; }}
void begin 함수는 4 비트 모드에서 LCD를 초기화하는 데 사용됩니다.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
void buzzer () 및 void wait () 함수는 부저음을 울리고 카드를 다시 놓을 때까지 대기하는 데 사용됩니다. void serialbegin 함수 는 직렬 통신을 초기화하는 데 사용됩니다.
void buzzer () {digitalWrite (buzz, HIGH); 지연 (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); 지연 (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("열 수 없습니다"); setCursor (0,1); print ("직렬 포트"); }}
에서 무효 설치 () 함수를 우리는 모든 GPIO를, LCD 및 직렬 UART를 initiaze.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("시작할 수 없음"); setCursor (0,1); print ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
주어 공극 get_card () 함수는 RFID 리더로부터 데이터를 얻기 위해 사용된다.
에서 무효 메인 () 함수를, 우리는 LCD에 어떤 메시지를 보여 코드를 아래로 카드를 확인하기 위해 미리 정의 된 데이터를 태그 데이터를 비교했다.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; 맑은(); print ("Attd. Registered"); setCursor (0,1); print ("Studnet 1"); digitalWrite (led1, HIGH); 부저 (); digitalWrite (led1, LOW); 기다림(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; 맑은(); print ("Attd. Registered"); setCursor (0,1);………………
마지막으로 void check_button () 함수는 버튼을 누를 때 총 출석을 표시하는 데 사용됩니다.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); 맑은(); setCursor (0,0); print ("std1 std2 std3");……………..
아래에서이 Raspberry Pi 출석 시스템에 대한 전체 코드를 확인하십시오.