使用STM32和RFID连接的读卡器系统设计

发布时间:2024-04-10  

在本篇文章中,我们将使用STM32和RFID读卡器设计一个读取RFID卡的系统。 RFID表示射频识别,它使用无线电频率读取信息。 RFID用于许多认证系统,如电梯乘坐系统、自动收费系统、医院患者信息维护系统、自动数据收集等。本文中,我们将学习如何使用STM32F103C8微控制器连接EM-18 RFID读卡器模块来读取RFID标签的唯一ID。


所需的组件

● STM32F103C8控制器

● EM-18 RFID读卡器模块

● RFID卡

● 1602 LCD显示屏模块

● 面包板

● 连接线

在将RFID与STM32连接之前,首先我们将了解RFID标签和RFID读卡器。

RFID标签

RFID标签由一组盘绕天线和一片微芯片组成,可以与附近的读卡器无线通信。市场上有各种形状和尺寸的不同类型的RFID标签。很少有人使用不同的频率进行通信。我们将使用125Khz无源RFID卡,其中包含唯一的ID数据。


当您将RFID标签放在明亮的灯光前时,您可以观察标签内部的线圈和微芯片。

基本上有两种类型的RFID标签:无源和有源

无源RFID标签从EM-18等读卡器模块产生的磁场中获取能量,并用它为微芯片的电路供电。然后芯片将信息发送给读卡器。

有源RFID标签需要单独供电,并包含高达1MB的读/写内存。

EM-18 RFID读卡器

每个RFID卡都嵌入有一个唯一ID,并且使用RFID读取器可以读取RFID卡号。 EM-18 RFID读卡器的工作频率为125 KHz,它配有一个片上天线,可以用5V电源供电。它提供串行输出。范围大约8-12厘米。串行通信参数为9600bps、8个数据位、1个停止位。这种无线射频识别用于许多系统,如基于RFID的考勤系统、安全系统、投票机以及电子收费公路定价等等。

EM-18 RFID读器卡提供的输出为12位ASCII格式。在12位数中,前10位是卡号,后两位是卡号的XOR结果。最后两位数字用于错误校验。


例如,从读卡器读取到的卡号为0200107D0D62,然后卡上的卡号将如下所示。

02- 前导符

00107D0D =十进制的1080589。

62是(02 XOR 00 XOR 10 XOR 7D XOR 0D)的XOR值。

因此卡上的号码是0001080589。

EM-18的引脚详细信息


EM-18 RFID读卡器有九个引脚。在9个引脚中,2个引脚没有连接,所以我们只需要考虑7个端子。下表显示了EM-18的引脚说明。

编号 引脚名称 说明
1 VCC 电源正极
2 GND 电源地
3 BUZZ 连接到蜂鸣器
4 NC
5 NC
6 SEL SEL = 1(RS232)
SEL = 0(WEIGAND)
7 TX 数据通过RS232的TX发出
8 DATA1 WEIGAND接口DATA HIGH引脚
9 DATA0 WEIGAND接口DATA LOW引脚

EM-18 RFID模块的规格参数

● 读取距离:10厘米

● 工作温度:0ºC至+80ºC

● 通讯参数:9600bps

● 电流消耗:<50mA

● 工作频率:125 kHz

● 工作电压:5v

电路图和连接



STM32F103C8和EM-18读卡器模块之间的连接如下:

EM-18读卡器模块 STM32F103C8
VCC + 5V
GND GND
TX PA10

编程STM32F103C8用于读取RFID

在之前的文章中,我们了解了使用USB端口编程STM32F103C8T6板。所以我们现在不需要FTDI烧写器。只需通过STM32的USB端口将其连接到PC,然后开始使用ARDUINO IDE进行编程。在ARDUINO IDE中对STM32进行编程以读取RFID标签非常简单

1.首先,包括用于使用LCD显示函数的LCD显示库。然后定义LCD引脚并初始化LCD显示屏。

#include

const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

2.接下来在void setup()函数中,我们需要将LCD显示模式设置为16x2,并使用PA10引脚以波特率9600开始串行通信(这是STM32F103C8的SERIAL1通信端口RX1,它与EM-18 TX引脚相连。

lcd.begin(16, 2);

Serial1.begin(9600);

pinMode(PA10,INPUT);

3.接下来显示欢迎信息并在一段时间后擦除屏幕。

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);

4.在void loop()函数中,一旦STM32F103C8的串行引脚提供EM-18 RFID读取器模块(标签ID)的数据,该字符将逐位存储并在LCD显示屏上逐个显示。

{

while(Serial1.available() && count < 12)         

{

RFID[count] = Serial1.read();

count++;

lcd.print(RFID[count]);

if (count==12)

{

lcd.print(" ");

count = 0;

lcd.setCursor(0, 1);

}

}

}

现在只需在STM32中上传完整的代码,您的系统即可运行。然后将RFID标签放在RFID阅读器上,您就会看到标签ID出现在1602 LCD显示屏上。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>