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



    1 简介

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

    RFID模块的使用

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


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

    https://blog.csdn.net/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 9
    
    MFRC522 rfid(SS_PIN, RST_PIN);
    
    byte nuidPICC[4]; //存储读取的UID
    
    void 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;
      }
    
      // 保存读取到的UID
      for (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);
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71

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

    在这里插入图片描述


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

    https://blog.csdn.net/m0_71572576/article/details/125409052


    6 最后

  • 相关阅读:
    Docker中MySql容器的数据挂载
    学网络安全可以参考什么方向?该怎么学?
    执行上下文-通俗易懂版
    中秋海报设计技巧大公开
    【MySQL 数据宝典】【索引原理】- 002 示例+逐个字段学明白 Explain
    (一)Apache log4net™ 手册 - 介绍
    黑盒测试的5种方法介绍
    大型客户关系管理系统源码CRM
    【数据结构】顺序表的概念及实现
    oracle创建数据库,导入dmp操作全家桶
  • 原文地址:https://blog.csdn.net/m0_71572576/article/details/125480547