Giao tiếp RFID với vi điều khiển 8051 và nguyên lý của giao tiếp RFID với vi điều khiển này. Chúng ta hãy cùng nhau tìm hiểu qua bài viết sau
Giao tiếp RFID với vi điều khiển 8051
RFID là viết tắt của Radio Frequency Identification (nhận dạng qua tần số vô tuyến) là một phương pháp dùng sóng điện từ để truyền dữ liệu cho mục đích nhận dạng thẻ được liên kết với cá thể nào đó. Một hệ thống RFID bao gồm một bộ truyền dữ liệu (thẻ) và một bộ đọc. Thẻ sẽ được mã hoá thành một code riêng biệt và bộ đọc sẽ quét mã này cho mục đích nhận dạng.
Thẻ có 2 loại: chủ động và bị động. Thẻ chủ động có được tích hợp pin và nó truyền code (mã vạch) một cách định kỳ, còn gọi là thẻ cảm ứng. Thẻ bị động được cấp nguồn nhờ vào nguyên lý cảm ứng điện từ tín hiệu truyền bởi bộ đọc. Ứng dụng đặc trưng của RFID: truy cập vào hệ thống, thẻ ID (thẻ nhận dạng cá nhân), xác định danh tính người hoặc động vật, dùng trong hệ thống thanh toán, định dạng mã vạch của hàng hoá... Thẻ RFID là loại thẻ có nhiều hình dạng nhưng hình dạng phổ biến nhất là dạng thẻ dẹt. Bộ đọc RFID có mặt trên thị trường trong hình dạng của một module với các phần cứng hỗ trợ. Dưới đây là hình minh hoạ một thẻ RFID và bộ đọc RFID
Về cơ bản các thiết bị này bao gồm bộ nhớ bán dẫn để chứa đựng mã vạch (là mã độc nhất), mạch điều chế và một cuộn dây. Cuộn dây đóng vai trò là nguồn cấp nhờ ứng dụng cảm ứng điện từ khi nó ở gần bộ đọc, cuộn dây còn được coi như là một ăng ten trong việc truyền mã ID.
Mạch điều chế điều chế mã vạch (độc nhất) vào sóng truyền. Bộ đọc về cơ bản chứa cuộn cảm và các sơ đồ mạch điện. Cuộn cảm làm bộ kích hoạt thẻ và còn là ăng ten nhận tín hiệu được truyền từ thẻ. Mạch giải mã tín hiệu này chuyển sang một dạng phù hợp cho giai đoạn tiếp theo (vi điều khiển). Sơ đồ nguyên lý giao tiếp module RFID với vi điều khiển 8051 được biểu diễn ở hình dưới:
Mã ID độc nhất trong thẻ RFID được đọc bởi mạch và được hiển thị trên màn hình LCD 16 × 2. Chân Tx của mô-đun RFID được kết nối với Cổng 3.5 của vi điều khiển. Bộ vi điều khiển nhận dữ liệu từ mô-đun RFID thông qua kênh này. Khoá S1, tụ C1 và điện trở R1 tạo thành mạch Reset. Tụ điện C2, C3 và tinh thể thạch anh X1 được liên kết với mạch Reset.
Chương trình nạp vào vi điều khiển 8051:
RS EQU P2.7 //equates P2.7 to RS
RW EQU P2.6 //equates P2.6 to RW
E EQU P2.5 //equates P2.5 to E
ORG 000H //origin
MOV TMOD,#00100001B //Timer1=Mode2 timer & Timer0=Mode1 timer
MOV TH1,#253D //loads TH1 with 253D(9600 baud)
MOV SCON,#50H //sets serial port to Mode1 and receiver enabled
SETB TR1 //starts Timer1
MAIN:ACALL DINT //calls DINT subroutine
ACALL TEXT1 //calls TEXT1 subroutine
ACALL LINE2 //calls LINE2 subroutine
ACALL TEXT2 //calls TEXT2 subroutine
ACALL READ / /calls READ subroutine
CLR REN //disables serial data receive
ACALL LINE2 //calls LINE2 subroutine
ACALL WRITE //calls WRITE subroutine
ACALL DELAY1 //calls DELAY1 subroutine
SETB REN //enables serial data receive
SJMP MAIN //jumps back to MAIN label
DELAY1:MOV R3,#46D //loads R3 with 46D
BACK: MOV TH0,#00000000B //loads TH0 with all 0's
MOV TL0,#00000000B //loads TL0 with all 0's
SETB TR0 //starts Timer 0
HERE1: JNB TF0,HERE1 //loops here until TFO flag is 1
CLR TR0 //stops TR1
CLR TF0 //clears TF0 flag
DJNZ R3,BACK //iterates the loop 46 times for 3s delay
RET //returns from subroutine
READ:MOV R0,#12D //loads R0 with 12D
MOV R1,#160D //loads R1 with 160D
WAIT:JNB RI,WAIT //loops here until RI flag is set
MOV A,SBUF //moves SBUF to A
MOV @R1,A //moves A to location pointed by R1
CLR RI //clears RI flag
DJNZ R0,WAIT //iterates the loop 12 times
RET //return from subroutine
WRITE:MOV R2,#12D //loads R2 with 12D
MOV R1,#160D //loads R1 with 160D
BACK1:MOV A,@R1 //loads A with data pointed by R1
ACALL DISPLAY //calls DISPLAY subroutine
INC R1 //incremets R1
DJNZ R2,BACK1 //iterates the loop 160 times
RET //return from subroutine
TEXT1: MOV A,#52H //loads A with ascii of "R"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#46H //loads A with ascii of "F"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#49H //loads A with ascii of "I"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#44H //loads A with ascii of "D"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#20H //loads A with ascii of "space"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#52H //loads A with ascii of "R"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#45H //loads A with ascii of "E"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#41H //loads A with ascii of "A"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#44H //loads A with ascii of "D"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#45H //loads A with ascii of "E"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#52H //loads A with ascii of "R"
ACALL DISPLAY //calls DISPLAY subroutine
RET //returns from subroutine
TEXT2: MOV A,#53H //loads A with ascii of "S"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#77H //loads A with ascii of "w"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#69H //loads A with ascii of "i"
ACALL DISPLAY //calls DISPLAY subroutine
MOV A,#70H //loads A with ascii of "p"
ACALL DISPLAY
Hotline: 0979 466 469