QC

RFID with STM32 Microcontroller

 RFID with STM32 Microcontroller


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 cách sử dụng STM32 và RFID Reader. RFID là viết tắt của Radio Frequency Identification đọ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 xác thực như hệ thống đỗ xe thang máy, 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 giao diện Mô-đun đọc RFID EM-18 và đọc ID duy nhất của thẻ RFID bằng vi điều khiển STM32F103C8.

Components Required

  • STM32F103C8 (Blue Pill Board)
  • EM-18 RFID Reader Module
  • RFID Cards
  • 16x2 LCD Display Module
  • Bread Board
  • Connecting Wires

Before interfacing RFID with STM32, first we will learn about RFID tags and RFID reader.

RFID Tags

Thẻ RFID được tạo thành từ một vi mạch với một ăng-ten cuộn có thể giao tiếp không dây với một đầu đọc gần đó. Các loại thẻ RFID khác nhau với nhiều loại hình dạng và kích thước khác nhau có sẵn trên thị trường. Rất ít người trong số họ 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 thụ động 125Khz chứa dữ liệu ID duy nhất.


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


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


Thẻ RFID hoạt động yêu cầu nguồn điện riêng biệt và chứa tối đa 1MB bộ nhớ đọc / ghi.

EM-18 RFID Reader

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

Circuit Diagram and Connections


LCD Pin NoLCD Pin NameSTM32 Pin Name
1Ground (Gnd)Ground (G)
2VCC5V
3VEEPin from Centre of Potentiometer
4Register Select (RS)PB11
5Read/Write (RW)Ground (G)
6Enable (EN)PB10
7Data Bit 0 (DB0)No Connection (NC)
8Data Bit 1 (DB1)No Connection (NC)
9Data Bit 2 (DB2)No Connection (NC)
10Data Bit 3 (DB3)No Connection (NC)
11Data Bit 4 (DB4)PB0
12Data Bit 5 (DB5)PB1
13Data Bit 6 (DB6)PC13
14Data Bit 7 (DB7)PC14
15LED Positive5V
16LED NegativeGround (G)

Connections between STM32F103C8 & EM-18 Reader Module

EM-18 Reader ModuleSTM32F103C8
VCC+5V
GNDGND
TXPA10

Programming STM32F103C8 for reading RFID

//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 16x2 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.
}
}
}              










Nap Code vào PY32F003 dùng Stlink

 Nap Code vào PY32F003 dùng Stlink Bước 1: Cài đặt  KeilC v5.39 theo link sau ( chú ý 5.39 keil c mới nạp ok). https://edge07.111.ir.cdn.ir/...