- Các thành phần được sử dụng:
- Giải thích làm việc:
- Mô tả mạch:
- Cài đặt Thư viện wiringPi trong Raspberry Pi:
- Giải thích lập trình:
Trước đây chúng tôi đã sử dụng RFID trong nhiều dự án RFID của mình và đã xây dựng Hệ thống chấm công dựa trên RFID sử dụng 8051, ở đây chúng tôi sẽ xây dựng Hệ thống chấm công dựa trên RFID bằng Raspberry Pi.
Trong dự án Hệ thống chấm công dựa trên RFID này, chúng tôi sẽ giải thích cho bạn rằng làm thế nào chúng tôi có thể ủy quyền và đếm số người tham dự tự động bằng cách sử dụng thẻ RFID. Công nghệ RFID (Nhận dạng và Phát hiện Tần số Vô tuyến) thường được sử dụng trong các trường học, cao đẳng, văn phòng và nhà ga cho nhiều mục đích khác nhau để tự động theo dõi mọi người. Ở đây, chúng tôi sẽ đếm sự tham dự của người được ủy quyền bằng cách sử dụng RFID.
Nếu bạn chưa quen với Raspberry Pi, chúng tôi đã tạo một loạt các hướng dẫn và các dự án raspberry pi, với giao diện với tất cả các thành phần cơ bản và một số dự án đơn giản để bắt đầu, hãy kiểm tra.
Các thành phần được sử dụng:
- Raspberry Pi (với thẻ SD được khởi động)
- Nút ấn
- Buzzer
- LCD 16x2
- Hủ 10k
- Điện trở 10K
- Đèn LED
- Điện trở 1k
- Bảng bánh mì
- Đầu đọc RFID
- Nguồn 5 volt
- Thẻ hoặc Thẻ RFID
- Cáp Ethernet
- Kết nối dây
Đầu đọc RFID và Thẻ:
RFID là một thiết bị điện tử có hai phần - một phần là Đầu đọc RFID và phần còn lại là thẻ hoặc thẻ RFID. Khi chúng tôi đặt thẻ RFID gần đầu đọc RFID, nó sẽ đọc dữ liệu thẻ theo thứ tự. Thẻ RFID có mã ký tự 12 chữ số trong một cuộn dây. RFID này đang hoạt động ở tốc độ truyền 9600 bps. RFID sử dụng nam châm điện để truyền dữ liệu từ Đầu đọc sang Thẻ hoặc Thẻ sang Đầu đọc.
Giải thích làm việc:
Ở đây Raspberry Pi 3 đang kiểm soát toàn bộ quá trình của dự án này (Người dùng có thể sử dụng bất kỳ Bảng Raspberry Pi nào). RFID Reader đọc ID thẻ RFID, dữ liệu này được Raspberry Pi nhận thông qua UART, sau đó RPi xác nhận thẻ và hiển thị kết quả trên màn hình LCD.
Khi một người đặt thẻ RFID của họ gần đầu đọc RFID để quét, RFID sẽ đọc dữ liệu của thẻ và gửi đến Raspberry Pi. Sau đó, Raspberry Pi đọc Số nhận dạng duy nhất của thẻ RFID đó và sau đó so sánh dữ liệu này với dữ liệu hoặc thông tin được xác định trước. Nếu dữ liệu được khớp với dữ liệu được xác định trước, thì Raspberry Pi sẽ tăng lượng người tham gia của thẻ lên từng người một và nếu dữ liệu không khớp không khớp thì bộ vi điều khiển sẽ hiển thị thông báo 'Thẻ không hợp lệ' trên màn hình LCD và còi kêu liên tục trong một thời gian. Và ở đây chúng tôi cũng đã thêm một nút nhấn để xem tổng số không. sự tham dự của tất cả các sinh viên. Ở đây chúng tôi đã lấy 4 thẻ RFID, trong đó ba thẻ được sử dụng để ghi lại sự tham gia của ba học sinh và một thẻ được sử dụng làm thẻ không hợp lệ.
Mô tả mạch:
Sơ đồ mạch cho Dự án Hệ thống chấm công Raspberry Pi này rất đơn giản, bao gồm Raspberry Pi 3, RFID Reader, RFID Tags, buzzer, LED và LCD. Tại đây Raspberry Pi kiểm soát toàn bộ quá trình như Đọc dữ liệu đến từ Trình đọc, so sánh dữ liệu với dữ liệu được xác định trước, còi lái, LED trạng thái lái xe và gửi trạng thái đến màn hình LCD. RFID Reader được sử dụng để đọc các thẻ RFID. Buzzer được sử dụng cho các chỉ báo và được điều khiển bởi bóng bán dẫn NPN có sẵn. LCD được sử dụng để hiển thị trạng thái hoặc thông báo trên đó.
Kết nối rất đơn giản. LCD được kết nối với Raspberry Pi ở chế độ 4-bit. Chân RS, RW và EN của LCD được kết nối trực tiếp tại dây Pi GPIO 11, gnd và 10. Và chân dữ liệu được kết nối tại dây Pi GPIO 6, 5, 4 và 1. Một nồi 10K được sử dụng để đặt độ tương phản hoặc độ sáng của màn hình LCD. Buzzer được kết nối ở chân GPIO của wiringPi 7 so với mặt đất. Ba đèn LED được kết nối để chỉ báo cho học sinh với thẻ RFID tương ứng. Và một đèn LED được sử dụng để hiển thị rằng hệ thống đã sẵn sàng để quét thẻ RFID. Một nút nhấn cũng được kết nối ở chân GPIO của wiringPi 12 để hiển thị Số người tham dự. Đầu đọc RFID được kết nối tại chân UART (nối dây GPIO chân 16).
Cài đặt Thư viện wiringPi trong Raspberry Pi:
Giống như trong Python, chúng ta nhập import RPi.GPIO dưới dạng tệp tiêu đề IO để sử dụng các Ghim GPIO của Raspberry Pi, ở đây bằng ngôn ngữ C, chúng ta cần sử dụng Thư viện wiringPi để sử dụng các Ghim GPIO trong Chương trình C của chúng tôi. Chúng ta có thể cài đặt nó bằng cách sử dụng từng lệnh dưới đây, bạn có thể chạy lệnh này từ Terminal hoặc từ một số ứng dụng khách SSH như Putty (nếu bạn đang sử dụng Windows). Xem qua hướng dẫn Bắt đầu với Raspberry Pi của chúng tôi để tìm hiểu thêm về cách xử lý Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get nâng cấp git clone git: //git.drogon.net/wiringPi cd wiringPi git pull origin cd wiringPi./build
Kiểm tra cài đặt thư viện wiringPi, sử dụng các lệnh dưới đây:
gpio -v gpio readall
Giải thích lập trình:
Bây giờ đầu tiên chúng ta đã bao gồm một số thư viện và xác định các chân mà chúng ta cần sử dụng trong mã này.
#include
Sau đó, xác định một số biến và mảng để tính toán và lưu trữ các giá trị & chuỗi.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; nhiệt độ;
Sau đó, các Hàm đã được viết để thực thi toàn bộ quá trình. Một số trong số chúng được đưa ra dưới đây:
Với lcdcmd khoảng trống chức năng được sử dụng để gửi lệnh để LCD
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, tạm thời & ch); digitalWrite (RS, LOW); digitalWrite (EN, HIGH);……………..
Chức năng ghi void cho trước được sử dụng để gửi dữ liệu đến LCD.
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, tạm thời & ch); digitalWrite (RS, HIGH); digitalWrite (EN, HIGH);……………..
Với hàm void clear () được sử dụng để xóa màn hình LCD, void setCursor được sử dụng để đặt vị trí con trỏ và void in để gửi chuỗi tới LCD.
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 (bộ); } void print (char * str) {while (* str) {write (* str); str ++; }}
Hàm void begin được sử dụng để khởi tạo LCD ở Chế độ 4 bit.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Hàm void buzzer () và void wait () được sử dụng để phát tiếng bíp của bộ rung và chờ đặt lại thẻ. Hàm void serialbegin được sử dụng để khởi tạo giao tiếp nối tiếp.
void buzzer () {digitalWrite (buzz, HIGH); chậm trễ (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); chậm trễ (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Không thể mở"); setCursor (0,1); print ("Cổng nối tiếp"); }}
Trong hàm void setup (), chúng ta khởi chạy tất cả các GPIO, LCD và UART nối tiếp.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("Không thể bắt đầu"); setCursor (0,1); print ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Với khoảng trống get_card () Chức năng được sử dụng để lấy dữ liệu từ RFID reader.
Trong hàm void main () , chúng tôi đã hiển thị một số thông báo trên màn hình LCD và so sánh dữ liệu thẻ với dữ liệu được xác định trước để xác thực thẻ với mã bên dưới.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; thông thoáng(); print ("Attd. Đã đăng ký"); setCursor (0,1); print ("Studnet 1"); digitalWrite (led1, HIGH); buzzer (); digitalWrite (led1, LOW); chờ đợi(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; thông thoáng(); print ("Attd. Đã đăng ký"); setCursor (0,1);………………
Cuối cùng, hàm void check_button () được sử dụng để hiển thị tổng số người tham dự khi nhấn nút.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); thông thoáng(); setCursor (0,0); print ("std1 std2 std3");……………..
Kiểm tra mã đầy đủ cho Hệ thống chấm công Raspberry Pi này bên dưới.