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

发布者:chenxiaohong68最新更新时间:2023-09-13 来源: elecfans关键字:STM32  RFID  Reader 手机看文章 扫描二维码
随时随地手机看文章

在本教程中,我们将设计一个使用 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); //移动课程开始。

}

}

}


关键字:STM32  RFID  Reader 引用地址:设计一个基于STM32和RFID Reader读取RFID卡的系统

上一篇:使用STM32调试FMSDR模块及解调FM电台(2)
下一篇:基于STM32设计的指针式电子钟与日历

推荐阅读最新更新时间:2024-11-10 06:52

stm32 DMA数据搬运 操作寄存器+库函数
DMA(Direct Memory Access)常译为 存储器直接存取 。早在Intel的8086平台上就有了DMA应用了。 一个完整的微控制器通常由CPU、存储器和外设等组件构成。这些组件一般在结构和功能上都是独立的,而各个组件的协调和交互就由CPU完成。如此一来,CPU作为整个芯片的核心,其处理的工作量是很大的。如果CPU先从A外设拿到一个数据送给B外设使用,同时C外设又需要D外设提供一个数据。。。这样的数据搬运工作将使CPU的负荷显得相当繁重。 严格的说,搬运数据只是CPU的比较不重要的一种工作。CPU最重要的工作室进行数据运算,从加减乘除到一些高级的运算,包括浮点、积分、微分、FFT等。CP
[单片机]
<font color='red'>stm32</font> DMA数据搬运 操作寄存器+库函数
STM32的时钟简介和配置方法
STM32中使用任何一个外设都必须打开相应的时钟。在STM32中有5个时钟源可供用户选择: 1.HSI高速内部时钟,RC震荡器,频率为8MHz。 2.HSE高速外部时钟,右英/陶瓷谐振器,或着外部时钟源,4MHz-16MHz. 3.LSI内部低速时钟,RC震荡器频率为40Hz。 4.LSE外部低速时钟,接频率为32.768KHz的石英晶体。 5.PLL锁相环频输出,时钟源可选为HIS/2、HSE或HSE/2。倍频可选2-16倍,但其输出频率最大不能超过72MHz。 系统时钟SYSCLK,它是供STM32中绝大部分器件工作的时钟源,系统时钟可选择为PLL输出、HSI或者HSE。系统时钟的做大频率为72MHz,它通过AHB分频器分频后
[单片机]
基于STM32的嵌入式双目图像采集系统设计
1引言 随着图像处理技术及嵌入式系统的发展,利用嵌入式系统进行图像处理,已使如视频监控、视频电话和视频会议等应用成为可能。嵌入式系统上进行图像采集则是实现这些应用的前提。 双目立体视觉通常由两个摄像头从两个不同的角度,同时获取外界物体的两幅图像,或由单独一个摄像头在不同时间、不同位置获取外界物体的两幅图像,并基于视差的原理来获取外界物体的三维几何信息,复现外界物体的形状和位置。 目前已有很多方案实现在嵌入式平台上的图像采集。本文基于嵌入式的图像采集系统选择了意法半导体(ST)公司生产的STM32F103ZET6芯片为主控芯片,FIFO结构的AL422B芯片实现图像数据缓存,SD卡实现图像存储以及四线制电阻触摸屏实现外部控制
[单片机]
基于<font color='red'>STM32</font>的嵌入式双目图像采集系统设计
stm32的DMA空闲中断数据配置
对于串口2的示例: void USART2_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; DMA_InitTypeDef DMA_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); RCC_AHBPeriphClockCmd(
[单片机]
STM32的I2C-EEPROM已调试成功
万利的I2C-EEPROM例程有些问题,经本人两个昼夜的反复试验,已修改完善。 修改了两个地方,在void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u16 NumByteToWrite)写操作函数和void I2C_EE_BufferRead(u8* pBuffer, u8 ReadAddr, u16 NumByteToRead)读操作函数体内的开头先要执行一句I2C_EE_WaitEepromStandbyState(); 这样在以后调用写操作函数和读操作函数时就不用执行I2C_EE_WaitEepromStandbyState()了。但上电复位后先要执
[单片机]
STM32(二)之GPIO操作(2)——通过按键控制LED灯的开关
STM32是一款低功耗的芯片,所以其外设均有一个与之对应的时钟,而在芯片刚上电的时候这些时钟是被关闭的,所以如果想要外设工作,便必须将与之对应的时钟打开。 本文介绍如何基于GPIO来通过按键控制LEN灯的开关。 (1)按键的控制 上图所示为按键的电路,在按键未被按下的时候,KEY2的输出信号为低电平(按键所在的电路不通,其与地相连);在按键按下时,KEY2的输出状态为高电平(按键所在的电路导通,其与3.3V的电源相连)。因此,通过对引脚的电平进行检测便可以判断按键是否按下。 按键的机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳点接通或断开,其会产生如下图所示的带波纹信号,需要使用软
[单片机]
RFID技术及其在ETC系统中的应用
1.1 RFID简介 无线射频识别技术(Radio Frequency Identification,RFID)是20世纪90年代开始兴起的一种自动识别技术。该技术是一种非接触的自动识别技术,其基本原理是利用射频信号和空间耦合(电感或电磁耦合)传输特性实现对被识别物体的自动识别。其核心技术包括无线电射频、计算机软件硬件、编码学和芯片加工技术等多种现代高新科学技术,是多种跨门类科学技术的综合体。被广泛应用于工业自动化、商业自动化、现代服务业、交通运输控制管理等众多领域。 1.2 RFID的系统组成及工作原理和工作频率 RFID系统因应用不同其组成会有所不同,但基本的RFID系统都由电子标签、阅读器和天线三部分组成。各部分功能如
[单片机]
<font color='red'>RFID</font>技术及其在ETC系统中的应用
STM32用一线式驱动SD NAND,SDIO的一线式驱动
SDIO的一线式和四线式 SDIO(Secure Digital Input/Output)是一种用于在嵌入式系统中连接外部设备的标准接口。在SDIO标准中,一线式和四线式是指SDIO接口的不同工作模式。 一线式(Single-Line Mode): 工作原理: 在一线式模式下,SDIO接口仅使用单个数据线进行通信。这个模式通常用于相对简单的应用,其中数据传输速度要求不是很高。 适用情境: 适用于对数据传输速度要求不高的场景,例如连接一些低速外设。 四线式(Four-Line Mode): 工作原理: 在四线式模式下,SDIO接口使用四根线进行通信,包括一个命令线、一个数据线、一个时钟线和一个电源线。这个模式支持更高的数据传输
[单片机]
<font color='red'>STM32</font>用一线式驱动SD NAND,SDIO的一线式驱动
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved