Cách kết nối RFID với vi điều khiển STM32

Cách kết nối RFID với vi điều khiển STM32

Trong hướng dẫn này, chúng tôi sẽ thiết kế một hệ thống để đọc thẻ RFID bằng  STM32 và Đầu đọc RFID . RFID là viết tắt của Nhận dạng Tần số Vô tuyến, đọc thông tin bằng cách sử dụng tần số vô tuyến. RFID được sử dụng trong nhiều hệ thống thực như hệ thống đỗ xe tự động, thu phí tự động, duy trì thông tin bệnh nhân trong bệnh viện, thu thập dữ liệu tự động, v.v.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách kết nối Mô-đun đọc thẻ EM-18 và đọc ID của thẻ RFID bằng vi điều khiển STM32F103C8 .

Linh kiện cần thiết

  • STM32F103C8 (Board màu xanh)
  • Module đọc thẻ EM-18 RFID
  • Thẻ RFID
  • Mô-đun hiển thị LCD 16×2
  • Breadboard
  • Dây dẫn

Trước khi kết nối RFID với STM32, trước tiên chúng ta sẽ tìm hiểu về thẻ RFID và đầu đọc RFID.

Thẻ RFID

Thẻ RFID được tạo thành từ một vi mạch với cuộn dây có thể giao tiếp với đầu đọc không dây ở một khoảng cách nhất định. Các loại thẻ RFID khác nhau với một loại hình dạng và kích cỡ khác nhau có sẵn trên thị trường. Rất ít trong số chúng sử dụng tần số khác nhau cho mục đích giao tiếp. Chúng tôi sẽ sử dụng thẻ RFID 125Khz chứa chỉ một dữ liệu ID duy nhất.

Bạn có thể thấy một cuộn dây và một vi mạch có trong thẻ khi bạn đặt thẻ RFID dưới ánh sáng mặt trời.

Về cơ bản có hai loại thẻ RFID: Thụ động và Chủ động

Thẻ RFID thụ động lấy năng lượng từ từ trường được tạo ra bởi mô-đun đọc như EM-18 và sử dụng nó để cấp nguồn cho các mạch của vi mạch. Các chip sau đó gửi thông tin cho người đọc.

Thẻ RFID chủ động yêu cầu cung cấp năng lượng riêng biệt và chứa tới 1 MB bộ nhớ đọc / ghi.

https: //circuitdigest.com/microcontler-projects/rfid-interfaces-with …

Đầu đọc RFID EM-18

Mỗi thẻ RFID có một ID duy nhất được nhúng trong đó và đầu đọc RFID được sử dụng để đọc thẻ RFID số. Đầu đọc RFID EM-18 hoạt động ở mức 125 KHz và nó đi kèm với ăng-ten trên chip và nó có thể được cung cấp nguồn điện 5V. Nó cung cấp đầu ra nối tiếp cùng với đầu ra weigand. Phạm vi hoạt động khoảng 8-12cm. tham số truyền thông nối tiếp là 9600bps, 8 bit dữ liệu, 1 bit stop. Nhận dạng RF không dây này được sử dụng trong nhiều hệ thống như

  • Hệ thống chấm công dựa trên RFID ,
  • Hệ thống an ninh ,
  • Máy bỏ phiếu ,
  • Giá đường điện tử

Đầu ra được cung cấp bởi đầu đọc RFID EM-18 có định dạng ASCII 12 chữ. Trong số 12 chữ số, 10 chữ số đầu tiên là số thẻ và hai chữ số cuối là kết quả XOR của số thẻ. Hai chữ số cuối được sử dụng để kiểm tra lỗi.

Ví dụ, số thẻ là 0200107D0D62 đọc từ đầu đọc thì số thẻ trên thẻ sẽ như dưới đây.

  • 02 – số đầu
  • 00107D0D = 1080589 ở dạng thập phân.
  • 62 là giá trị XOR cho (02 XOR 00 XOR 10 XOR 7D XOR 0D).
  • Do đó số trên thẻ là 0001080589.

Chi tiết chân của EM-18

Đầu đọc RFID EM-18 có chín chân. Trong số chín chân, 2 chân không được kết nối, vì vậy về cơ bản chúng ta cần tìm hiểu 7 chân. Bảng dưới đây cho thấy mô tả chân của EM-18.

Số Chân

Tên chân

Sử dụng

1

VCC

Nguồn

2

GND

ĐẤT

3

BUZZ

Đã kết nối với BUZZER

4

NC

Không có kết nối

5

NC

Không có kết nối

6

SEL

SEL = 1 (RS232)

SEL = 0 (WEIGAND)

7

TX

DATA được xuất ra thông qua TX của RS232

8

DATA1

 Chân dữ liệu WEIGAND mức cao

9

DATA0

 Chân dữ liệu WEIGAND mức thấp

Thông số kỹ thuật của mô-đun RFID EM-18

  • Khoảng cách đọc: 10cm
  • Nhiệt độ hoạt động: 0ºC đến + 80ºC
  • Thông số truyền thông: 9600bps
  • Dòng điện tiêu thụ: <50mA
  • Tần số hoạt động: 125 kHz
  • Điện áp hoạt động: 5v

Sơ đồ mạch và nối dây

Kết nối giữa LCD STM32F103C8 và 16×2

Chân LCD

Tên chân LCD

Tên chân STM32

1

Ground (Gnd)

Ground (G)

2

VCC

5V

3

VEE

 Chân từ Trung tâm Potentiometer

4

Đăng ký Chọn (RS)

PB11

5

Đọc / Ghi (RW)

Ground(G)

6

Kích hoạt (EN)

PB10

7

Bit dữ liệu 0 (DB0)

Không có kết nối (NC)

số 8

Bit dữ liệu 1 (DB1)

Không có kết nối (NC)

9

Bit dữ liệu 2 (DB2)

Không có kết nối (NC)

10

Bit dữ liệu 3 (DB3)

Không có kết nối (NC)

11

Bit dữ liệu 4 (DB4)

PB0

12

Bit dữ liệu 5 (DB5)

PB1

13

Bit dữ liệu 6 (DB6)

PC13

14

Bit dữ liệu 7 (DB7)

PC14

15

LED dương

5V

16

LED âm

Ground (G)

Kết nối giữa Module đọc STM32F103C8 & EM-18

Module đọc EM-18

STM32F103C8

VCC

+ 5V

GND

GND

TX

PA10

Lập trình STM32F103C8 để đọc RFID

Trong hướng dẫn này chúng tôi chỉ  kết nối mô-đun với PC thông qua cổng USB của STM32 và bắt đầu lập trình với ARDUINO IDE. Lập trình STM32 của bạn trong ARDUINO IDE để đọc thẻ RFID:

1. Đầu tiên, thêm thư viện hiển thị LCD để sử dụng các chức năng hiển thị LCD. Sau đó xác định chân LCD và khởi tạo màn hình LCD. 

#include <LiquidCrystal.h> const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

2. Tiếp theo trong void setup ()

Chúng ta cần đặt chế độ hiển thị LCD là 16×2 và bật serial communication ở tốc độ baud 9600 với chân PA10 (Đây là cổng giao tiếp SERIAL1 RX1 của STM32F103C8 được kết nối với chân EM-18 TX.

LCD.begin (16, 2);                 
Nối tiếp1.begin (9600);              
pinMode (PA10, INPUT);     

3. Hiển thị thông báo khởi động tiếp theo và xóa sau một thời gian.

lcd.print ("CIRCUIT DIGEST"); // In tại màn hình LCD 
LCD.setCoder (0, 1); // Đặt courser thành dòng 
LCD.print ("RFID VỚI STM32"); // In ở 
độ trễ 
màn hình LCD (5000); // Độ trễ trong 5 giây lcd.clear (); // Xóa màn hình LCD 
LCD.setCoder (0,0); // Đặt con trỏ ở 
màn hình LCD 
dòng đầu tiên ("TAG TAG NO:"); // In tại màn hình LCD LCD.setCoder (0,1); // Đặt con trỏ ở dòng thứ hai

4. Trong vòng lặp void ()

Khi dữ liệu từ Mô-đun đọc thẻ EM-18 (ID thẻ) có sẵn ở chân nối tiếp của STM32F103C8, ký tự được lưu trữ từng bit và hiển thị từng cái một trên màn hình LCD.

{    
   while (serial1.av Available () && Count <12)          
  { 

     RFID [Count] = serial1.read ();                 
     đếm ++; 

     lcd.print (RFID [tính]);                        

     if (tính == 12) 
              { 
                   lcd.print (""); 
                   đếm = 0;                         
                   lcd.setCoder (0, 1);               
                } 
} 
}     

Bây giờ chỉ cần tải code hoàn chỉnh lên STM32 và hệ thống của bạn đã sẵn sàng để hoạt động. Chỉ cần đặt thẻ RFID nào trên đầu đọc RFID và bạn sẽ thấy ID thẻ xuất hiện trên màn hình LCD 16×2.

Code hoàn chỉnh và Video demo  để sử dụng RFID với vi điều khiển STM32 được đưa ra dưới đây.

Code

//Interfacing EM-18 RFID READER MODULE with STM32F103C8
//Circuit Digest
#include <LiquidCrystal.h>                                               //Library for using LCD display functions
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; //mention the pin names to with LCD is connected to STM32F103C8
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);                                //Initialize the LCD display
int count = 0;          
char RFID[12];                                                             //Arrary for storing 12 characters of ID
void setup()
{
lcd.begin(16, 2);                  // setting LCD as 16×2 type
Serial1.begin(9600);               //begins serial communication at 9600 baud rate
pinMode(PA10,INPUT);               //Set PA10 as input pin from EM-18
lcd.print(“CIRCUIT DIGEST”);       //Prints at LCD display
lcd.setCursor(0, 1);               //Set courser to second line
lcd.print(“RFID WITH STM32”);      //Prints at LCD display
delay(5000);                       //Delay for 5 Seconds
 lcd.clear();                       //Clears LCD display
 lcd.setCursor(0,0);                //Sets cursor at First Line
 lcd.print(“RFID TAG NO:”);         //Prints at LCD display
 lcd.setCursor(0,1);                //Sets cursor at Second line
}
void loop()
{    
while(Serial1.available() && count < 12)          // While loop to read 12 characters and store them in input array
{
RFID[count] = Serial1.read();                  //storing 12 characters one by one
    count++;
    lcd.print(RFID[count]);                         //showing 12 characters on LCD one by one
if (count==12)
    {
lcd.print(”             “);
count = 0;                          // once 12 characters are read get to start and wait for second ID
lcd.setCursor(0, 1);                //move courser to start.
}
}
}       

Video

 

 

 

 

 

 

 

 

 

 

 

 

 

Trả lời

Email của bạn sẽ không được hiển thị công khai.