设计一个基于STM32和RFID Reader读取RFID卡的系统

发布时间:2023-09-13  

在本教程中,我们将设计一个使用 STM32 和 RFID Reader读取 RFID 卡的系统。RFID代表射频识别,它通过使用无线电频率读取信息。RFID 用于许多身份验证系统,如电梯停车系统、自动收费、在医院维护患者信息、自动数据收集等。


所需组件

STM32F103C8(蓝色药丸板)

EM-18 RFID阅读器模块

射频识别卡

16x2 液晶显示模块

面包板

连接电线

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

射频识别标签

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

poYBAGMpjGSAA1pxAAFaJrTTKVM833.png

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

poYBAGMpjGCADBicAAFybUAHPFU144.png

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

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

EM-18 RFID阅读器

每张 RFID 卡都嵌入了唯一的 ID,RFID 阅读器用于读取 RFID 卡号。 EM-18 RFID 阅读器 工作频率为 125 KHz,带有片上天线,可以使用 5V 电源供电。它提供串行输出和weigand 输出。范围在8-12cm左右。串口通讯参数为9600bps,8个数据位,1个停止位。

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

pYYBAGMpjF2AEC3HAAUTlOvn_p8580.png

例如,从读卡器读取的卡号为 0200107D0D62,则卡上的卡号如下所示。

02 – 序言

00107D0D = 1080589 十进制。

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

因此卡上的数字是 0001080589。

EM-18 的针脚细节

pYYBAGMpjFeAGaKiAABxNhhDm3s417.png

EM-18 RFID 阅读器有九个引脚。九个引脚中,有两个引脚没有连接,所以我们基本上要考虑七个端子。下表显示了 EM-18 的引脚说明。

poYBAGMpjFOABLeSAAAjFi0Yuq8716.png

EM-18 RFID 模块规格

读取距离:10cm

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

通讯参数:9600bps

电流消耗:《50mA

工作频率:125 kHz

工作电压:5v

电路图和连接

pYYBAGMpjE-ADdUtAAH5BqkEgiw815.pngpoYBAGMpjEqAVTkdAAd688_vMj8352.png

STM32F103C8 和 16x2 LCD 之间的连接

poYBAGMpjEaAXMLrAAA4qFwyE6Q594.png

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

pYYBAGMpjEKAbQ9OAAALxCoJHAk070.png

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

1.首先,包含LCD显示库,用于使用LCD显示功能。然后定义 LCD 引脚并初始化 LCD 显示。要了解有关LCD 与 STM32F103C8 接口的更多信息,请点击链接。

#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 并以 9600 的波特率与引脚 PA10 开始串行通信(这是与 EM-18 TX 引脚相连的 STM32F103C8 的 SERIAL1 通信端口 RX1。

lcd.begin(16, 2);
Serial1.开始(9600);
pinMode(PA10,输入);
3.接下来显示欢迎信息并在一段时间后清除。

lcd.print("电路文摘"); //在 LCD 显示屏上打印
lcd.setCursor(0, 1); //设置课程到第二行
lcd.print("RFID WITH STM32"); //以 LCD 显示
延迟打印(5000);//延迟5秒
lcd.clear(); //清除LCD显示
lcd.setCursor(0,0); //将光标设置在第一行
lcd.print("RFID TAG NO:"); //在 LCD 显示屏上打印
lcd.setCursor(0,1); //将光标设置在第二行
4.在void loop()

一旦来自 EM-18 RFID 阅读器模块(标签 ID)的数据在 STM32F103C8 的串行引脚上可用,字符就会被逐位存储并在 LCD 显示屏上逐个显示。

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

RFID[计数] = Serial1.read();
计数++;

lcd.print(RFID[计数]);

if (count==12)
{
lcd.print(" ");
计数 = 0;
lcd.setCursor(0, 1);
}
}
}

现在只需在 STM32 中上传完整的代码,您的系统就可以工作了。只需将任何 RFID 标签放在 RFID 阅读器上,您就会看到标签 ID 出现在 16x2 LCD 显示屏上。

pYYBAGMpjDqAZBkpAAWxZy2NABw227.png

//连接EM-18 RFID阅读器模块与STM32F103C8

//电路文摘

#include //使用LCD显示函数的库

const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; //提及与LCD连接到STM32F103C8的引脚名称

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //初始化液晶显示器

整数计数 = 0;

字符 RFID[12];//存储12个字符ID的数组





无效设置()

{

lcd.begin(16, 2); // 设置 LCD 为 16x2 类型

Serial1.开始(9600);//以 9600 波特率开始串行通信

pinMode(PA10,输入);//将 PA10 设置为 EM-18 的输入引脚

lcd.print("电路文摘"); //在液晶显示器上打印

lcd.setCursor(0, 1); //设置课程到第二行

lcd.print("STM32 RFID"); //在液晶显示器上打印

延迟(5000);//延迟5秒

lcd.clear(); //清除液晶显示

lcd.setCursor(0,0); //设置光标在第一行

lcd.print("RFID标签号:"); //在液晶显示器上打印

lcd.setCursor(0,1); //将光标设置在第二行

}





无效循环()

{

while(Serial1.available() && count < 12) // While 循环读取 12 个字符并将它们存储在输入数组中

{

RFID[计数] = Serial1.read(); //一一存储12个字符

计数++;

lcd.print(RFID[计数]); //在LCD上一一显示12个字符



如果(计数==12)

{

lcd.print("");

计数 = 0; // 读取 12 个字符后开始等待第二个 ID

lcd.setCursor(0, 1); //移动课程开始。

}

}

}


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

相关文章

    手机内置NFC芯片,比原先仅作为标签使用的RFID更增加了数据双向传送的功能,这个进步使得其更加适合用于电子货币支付的;特别是RFID所不能实现的,相互认证和动态加密和一次性钥匙(OTP)能够在NFC......
    许多认证系统,如电梯乘坐系统、自动收费系统、医院患者信息维护系统、自动数据收集等。本文中,我们将学习如何使用STM32F103C8微控制器连接EM-18 RFID读卡器模块来读取RFID标签的唯一ID......
    许多认证系统,如电梯乘坐系统、自动收费系统、医院患者信息维护系统、自动数据收集等。本文中,我们将学习如何使用STM32F103C8微控制器连接EM-18 RFID读卡器模块来读取RFID标签的唯一ID......
    设计的RFID读卡器通过使用STM32F103VET6芯片内部集成的标准USB接口与PC上位机实现有线通信。USB接口支持设备的即插即用和热插拔功能,从而可以方便地实现读卡器设备的移动。同时,USB2.0高速......
    设计的RFID读卡器通过使用STM32F103VET6芯片内部集成的标准USB接口与PC上位机实现有线通信。USB接口支持设备的即插即用和热插拔功能,从而可以方便地实现读卡器设备的移动。同时,USB2.0高速......
    对汽车电子控制系统的工作原理进行深入分析,可以更好地理解汽车行驶过程中的各种控制功能是如何实现的。 一、引言 随着汽车技术的不断发展,电子控制系统已经成为了汽车的重要组成部分。汽车电子控制系统通过对发动机、变速......
    IO-Link RFID读卡器系统方案设计与挑战;1.1 背景 RFID现在越来越广泛地应用于各种工业场合包括各类汽车厂、服装厂、鞋厂以及相关的物流仓储行业中。同时IO-Link接口......
    电动汽车的双向充电是如何实现的?;随着人们对电动汽车(EV)关注度和接受度的提升,相关的各项电动汽车技术也得到了迅猛发展。所配备的电池正变得日益强大,充电基础设施也越来越完备和高效。 有了......
    机器人上的XBee模块需要初始化和发送入网请求,实现节点入网。然后,XBee模块接收XBee协调器传输的任务命令数据,主板对各传感器模块初始化。RFID读卡器读取智能地板坐标数据,发送给XBee协调器。电子......
    -ARM作为开发环境,完成各个模块初始化和通信,上位机软件采用VC++开发。具体的各个模块软件实现的功能及工作流程在系统的工作原理和流程中已经介绍,这里不再叙述。 3.2.2 路径规划 路径......

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

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

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

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

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

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

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