1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 【毕设教程】单片机RFID模块的使用 - 物联网 嵌入式 毕业设计 stm32

【毕设教程】单片机RFID模块的使用 - 物联网 嵌入式 毕业设计 stm32

时间:2019-03-05 13:38:06

相关推荐

【毕设教程】单片机RFID模块的使用 - 物联网 嵌入式 毕业设计 stm32

文章目录

1 简介2 RFID模块2.1 RFID模块组成3 连接单片机4 代码6 最后

1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍单片机项目开发常用外围器件

RFID模块的使用

大家可用于 课程设计 或 毕业设计

单片机-嵌入式毕设选题大全及项目分享:

/m0_71572576/article/details/125409052

2 RFID模块

射频识别「Radio Frequency IDentification,简称RFID」技术,又称为无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触,普遍应用于企业/校园一卡通、公交储值卡、高速公路收费、停车场、小区管理等。

RFID 技术利用无线射频方式在阅读器和射频卡之间进行非接触双向数据传输,以达到目标识别和数据交换的目的。

2.1 RFID模块组成

标签(Tag,即射频卡),耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信。阅读器:读取(在读写卡中还可以写入)标签信息的设备。天线:在标签和读取器间传递射频信号。

这里使用的RFID-RC522模块采用MFRC522芯片,SPI通讯方式,支持Mifarel S50、S70 、Pro、Desfire等类型的卡,附带的白卡和钥匙扣是S50卡,每张卡都有自己的标识(UID)。

3 连接单片机

这里以arduino单片机为例,同学可以选其他单片机,如stm32,esp8266等等

RC522模块的3.3V、GND分别对应连接开发板的3.3V、GND,模块的MOSI、MISO、SCK分别连接开发板的SPI接口11、12、13,模块的SDA、RST分别连接开发板数字管脚10、9。

实物连接:

4 代码

#include <SPI.h>#include <MFRC522.h>#define SS_PIN 10#define RST_PIN 9MFRC522 rfid(SS_PIN, RST_PIN);byte nuidPICC[4]; //存储读取的UIDvoid setup() {Serial.begin(9600);SPI.begin();rfid.PCD_Init();Serial.println("RC522初始化完成...");}void loop() {//搜索新卡if ( ! rfid.PICC_IsNewCardPresent())return;// 验证NUID是否可读if ( ! rfid.PICC_ReadCardSerial())return;MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);// 检查是否MIFARE卡类型if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&piccType != MFRC522::PICC_TYPE_MIFARE_1K &&piccType != MFRC522::PICC_TYPE_MIFARE_4K) {Serial.println("不支持读取此卡类型");return;}// 保存读取到的UIDfor (byte i = 0; i < 4; i++) {nuidPICC[i] = rfid.uid.uidByte[i];}Serial.print("十六进制UID:");printHex(rfid.uid.uidByte, rfid.uid.size);Serial.println();Serial.print("十进制UID:");printDec(rfid.uid.uidByte, rfid.uid.size);Serial.println();// 使放置在读卡区的IC卡进入休眠状态,不再重复读卡rfid.PICC_HaltA();// 停止读卡模块编码rfid.PCD_StopCrypto1();}// 十六进制输出void printHex(byte *buffer, byte bufferSize) {for (byte i = 0; i < bufferSize; i++) {Serial.print(buffer[i] < 0x10 ? " 0" : " ");Serial.print(buffer[i], HEX);}}//十进制输出void printDec(byte *buffer, byte bufferSize) {for (byte i = 0; i < bufferSize; i++) {Serial.print(buffer[i] < 0x10 ? " 0" : "");Serial.print(buffer[i], DEC);}}

打开串口助手,讲卡片接近读卡器,可以看到,串口输出卡片数据:

单片机-嵌入式毕设选题大全及项目分享:

/m0_71572576/article/details/125409052

6 最后

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。