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

发布者:温柔浪漫最新更新时间:2024-04-10 来源: elecfans关键字:STM32  RFID  读卡器系统 手机看文章 扫描二维码
随时随地手机看文章

在本篇文章中,我们将使用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的引脚说明。

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

EM-18 RFID模块的规格参数

● 读取距离:10厘米

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

● 通讯参数:9600bps

● 电流消耗:<50mA

● 工作频率:125 kHz

● 工作电压:5v

电路图和连接



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

EM-18读卡器模块STM32F103C8
VCC+ 5V
GNDGND
TXPA10

编程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显示屏上。


关键字:STM32  RFID  读卡器系统 引用地址:使用STM32和RFID连接的读卡器系统设计

上一篇:如何将ADC与带有LCD的stm32 Discovery板一起使用
下一篇:教程:如何用STM32-CubeMX-实现CAN通讯

推荐阅读最新更新时间:2024-11-17 08:27

详解stm32能跑什么系统
STM32系列32位微控制器,基于ARM Cortex-M3处理器。它能支持32位广泛的应用,支持包括高性能、实时功能、数字信号处理,和低功耗、低电压操作,同时拥有一个完全集成和易用的开发。 基于STM平台且满足实时控制要求的操作系统,有以下4种可供选择。分别为μC/OS-II、μClinux、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。 1、μC/OS-II μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无
[单片机]
STM32使用不同的晶振需修改的代码
第一步,打开stm32f10x.h,将 #define HSE_VALUE ((uint32_t)8000000) /*! Value of the External oscillator in Hz */ 修改为: #define HSE_VALUE ((uint32_t)12000000) /*! Value of the External oscillator in Hz */ 第二步,打开system_stm32f10x.c,修改PLL参数,将 /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */ RCC- CFGR &= (uint
[单片机]
玩转STM32(3)使用模板工程
前面学习了安装什么样的软件,这时就已经具备开发嵌入式软件的基本条件。只要把前面的开发板电源使用USB的电源线插入5V的电源,然后把JLink的USB插头插入到开发的电脑,硬件就已经连接好了。如下图这样连接起来: 在这里一定要注意使用电源供电,而不能使用JLink的供电,因为CPU和外围元件的电压会不稳定,导致调试时,CPU可以下载和运行代码,但外围元件工作不正常的现象。这里都是使用USB接头,电源的USB接头可以插入到手机充电器,现在的手机充电器都能提供比较大的功率。同时手机充电器也随处可见,随时可以买得到,使用这样的电源是最方便的。 当你把硬件按这样接好之后,就可以进入软件开发了。但是这时候,你就感觉到迷茫了,到底怎么样
[单片机]
玩转<font color='red'>STM32</font>(3)使用模板工程
printf重定向到stm32串口
一、什么是重定向 在程序的调试过程中,除了那些高大上的调试手段外,printf无疑是我们最熟悉最顺手的调试方法。通过使用printf,我们可以很方便很直观的获取当前程序的运行状态。 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。但是在单片机开发中,一般情况下并不存在标准输出设备,因此我们需要将printf的输出信息重定向,也就是输出到其他输出设备中去。 二、在stm32平台上实现重定向的方式有两种,重定向至UART,或者通过JTAG的SW模式将printf重定向至SWO引脚输出。 首先介绍第一种,重定向至UART,这种方式我们比较熟悉,ST官方提供的固件库中也是使用的这种方法。 代码如下:在对U
[单片机]
rfid是什么_rfid技术详解
RFID(Radio Frequency IDentification)射频识别技术,又称电子标签、无线射频识别,是一种通信技术。相对于传统的磁卡及IC卡技术具有非接触、阅读速度快、无磨损等特点,在最近几年里得到快速发展。为加强中国工程师对该技术的理解,本文详细介绍了RFID技术的工作原理、分类、标准以及相关应用。 RFID技术利用无线射频方式在阅读器和射频卡之间进行非接触双向数据传输,以达到目标识别和数据交换的目的。与传统的条型码、磁卡及IC卡相比,射频卡具有非接触、阅读速度快、无磨损、不受环境影响、寿命长、便于使用的特点和具有防冲突功能,能同时处理多张卡片。在国外,射频识别技术已被广泛应用于工业自动化、商业自动化、交通运输
[模拟电子]
<font color='red'>rfid</font>是什么_<font color='red'>rfid</font>技术详解
STM32串口DMA超时接收方法,可大大节约CPU时间
本办法使用定时器定时查询DMA接收到的数据,如果超过设定的周期则认为本次数据包结束,将数据拷贝到缓冲区,交由其他程序处理。可以接收任意大小的数据包,尤其适用于MODBUS等协议,曾经用于GPS、GPRS等接收,很实用。本方法占用CPU时间极少,尤其是波特率很高时,效果更加明显。 当某一个串口的数据接收超时以后,定时器中断中将数据拷贝到缓冲区,在主程序中可以判断数据标志UART1_Flag,大于0的时候即代表有数据接收到,可以处理,处理完后将此变量清零即可。 两个数据包间隔较小时,可以将定时器的周期调短些。 //超时时间定义 #define UART1_TimeoutComp 2 //20ms #define UAR
[单片机]
STM32做SPI主机很常见,但是SPI从机玩过吗?
在平常的开发中,很多时候我们使用SPI都是使用主机模式去驱动一些传感器、存储器等等,很少会用到SPI从机。有时候,我们又需要STM32的SPI配置为从机去接收数据,本文就是介绍如何使用探索者开发版配置SPI从机。 这里我们以探索者开发版标准库实验25SPI实验为基础例程进行修改。这里我们把SPI从机只定义为一个接收,所以没有发送数据的操作。SPI的基础知识需要大家自己去学习,这里着重说明使用方法。 接下来,我们来看一下具体代码实现。 SPI初始化函数修改为如下代码: 这里特别需要几点: 以上代码跟原来程序不同点: ①SPI1的引脚使用的是PA4(SPI1_NSS),PA5(SPI1_CLK)和PA7(SPI1_MOSI)三
[单片机]
基于嵌入式Linux的RFID信息采集与处理系统
射频识别( RFID) 是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据, 识别过程无需人工干预, 可工作于各种恶劣环境。RFID 技术在许多领域得到应用, 如停车场管理、集装箱运输管理系统等。在大多数应用中, 只要求有固定的阅读器,但在某些特殊系统中(如集装箱运输管理系统),不仅要求有固定的阅读器, 而且还要求有手持式读卡器。 TagMaster AB 公司是世界知名的RFID 读卡器制造商。它提供性能优良的固定式阅读器,也提供一种手持式阅读器。手持式读卡器由Caiso 公司的工业级PDA( Personal Digital Assistants ) 和TagMaster AB 公司的S1510组成。P
[网络通信]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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