RFID简介:射频识别即RFID(Radio Frequency IDentification)技术,又称无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。常用的有低频(125k~134.2K)、高频(13.56Mhz)、超高频,微波等技术。RFID读写器也分移动式的和固定式的,目前RFID技术应用很广,如:图书馆,门禁系统,食品安全溯源等。

硬件准备

(基于Arduino的开发板、MFRC522读卡器模块)
Arduino Uno * 1

RFID-RC522 模块 * 1

IC卡 * 1-2

RFID技术现在都非常成熟和应用广泛,今天我们就来看看这个RFID如何实现读取里面的数据

接线

Arduino Uno <—> RFID-RC522
10 <—> SDA
13 <—> SCK
11 <—> MOSI
12 <—> MISO
null <—> IRQ
GND <—> GND
9 <—> RST
3.3V <—> 3.3V

需要用到RFID-RC522的库

法一、下载:https://github.com/miguelbalboa/rfid
下载解压到Arduino IDE的安装路径里的库文件夹libraries
https://download.csdn.net/download/v86337286/11813061

法二、点开管理库,在搜索栏里输入RC522,找到图中的库,


点击安装(我这图是已经安装过)

示例代码 .

Arduino + RFID 读取 IC 卡信息

读取 IC 卡信息后并通过串口将卡号及0扇区卡号数据打印出来,其他15个扇区不显示扇区内容
代码如下

/** --------------------------------------------------------------------------------------------------------------------* Example sketch/program showing how to read data from a PICC to serial.* --------------------------------------------------------------------------------------------------------------------* This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid* * Example sketch/program showing how to read data from a PICC (that is: a RFID Tag or Card) using a MFRC522 based RFID* Reader on the Arduino SPI interface.* * When the Arduino and the MFRC522 module are connected (see the pin layout below), load this sketch into Arduino IDE* then verify/compile and upload it. To see the output: use Tools, Serial Monitor of the IDE (hit Ctrl+Shft+M). When* you present a PICC (that is: a RFID Tag or Card) at reading distance of the MFRC522 Reader/PCD, the serial output* will show the ID/UID, type and any data blocks it can read. Note: you may see "Timeout in communication" messages* when removing the PICC from reading distance too early.* * If your reader supports it, this sketch/program will read all the PICCs presented (that is: multiple tag reading).* So if you stack two or more PICCs on top of each other and present them to the reader, it will first output all* details of the first and then the next PICC. Note that this may take some time as all data blocks are dumped, so* keep the PICCs at reading distance until complete.* * @license Released into the public domain.* * Typical pin layout used:* -----------------------------------------------------------------------------------------*             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino*             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro* Signal      Pin          Pin           Pin       Pin        Pin              Pin* -----------------------------------------------------------------------------------------* RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST* SPI SS      SDA(SS)      10            53        D10        10               10* SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16* SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14* SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15*/#include <SPI.h>
#include <MFRC522.h>#define RST_PIN         9          // Configurable, see typical pin layout above
#define SS_PIN          10         // Configurable, see typical pin layout aboveMFRC522 mfrc522(SS_PIN, RST_PIN);  // Create MFRC522 instancevoid setup() {Serial.begin(9600);     // Initialize serial communications with the PCwhile (!Serial);        // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)SPI.begin();            // Init SPI busmfrc522.PCD_Init();     // Init MFRC522mfrc522.PCD_DumpVersionToSerial();  // Show details of PCD - MFRC522 Card Reader detailsSerial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}void loop() {// Look for new cardsif ( ! mfrc522.PICC_IsNewCardPresent()) {return;}// Select one of the cardsif ( ! mfrc522.PICC_ReadCardSerial()) {return;}// Dump debug info about the card; PICC_HaltA() is automatically calledmfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}

运行此代码并将其中一张卡放入RFID卡时,很多信息显示在Arduino IDE的串行监视器上

看完了上面那如何在Arduino中获得RFID的UID?

Arduino uno中只获得RFID的UID 并通过串口转发

法一

创建了另一个函数: PICC_DumpDetailsToSerialUid(Uid *uid)函数如下

//This is just for read UID!
void MFRC522::PICC_DumpDetailsToSerialUid(Uid *uid){
Serial.print(F(“Card JUST UID :”));
for (byte i = 0; i < uid->size; i++) {
if(uid->uidByte[i] < 0x10)
Serial.print(F(" 0"));
else
Serial.print(F(" "));
Serial.print(uid->uidByte[i], HEX);
}
Serial.println();
}

可以把它放在你需要的任何地方
示例:

添加该功能后,您需要进入第410行的 MFRC522.h 库并添加

void PICC_DumpDetailsToSerialUid(Uid *uid);

在该库中进行了这两次编辑后,您可以在任意位置调用该函数 .
示例:

用Arduino调用它: mfrc522.PICC_DumpDetailsToSerialUid(&(mfrc522.uid)); 只仅且只有一个函数用于uid读取
效果

法二

返回UID的函数 .

/*** mfrc522.PICC_IsNewCardPresent() should be checked before * @return the card UID*/
unsigned long getID(){if ( ! mfrc522.PICC_ReadCardSerial()) { //Since a PICC placed get Serial and continuereturn -1;}unsigned long hex_num;hex_num =  mfrc522.uid.uidByte[0] << 24;hex_num += mfrc522.uid.uidByte[1] << 16;hex_num += mfrc522.uid.uidByte[2] <<  8;hex_num += mfrc522.uid.uidByte[3];mfrc522.PICC_HaltA(); // Stop readingreturn hex_num;
}

例如这样使用:

if(mfrc522.PICC_IsNewCardPresent()) {unsigned long uid = getID();if(uid != -1){Serial.print("Card detected, UID: "); Serial.println(uid);}
}

Arduino + RFID 读取 IC 卡 Arduino uno中获得RFID的UID 并通过串口转发RFID卡号相关推荐

  1. SIM卡在手机中的主要作用

    SIM卡在手机中的主要作用 SIM卡作为智能卡的一种,其作用依旧被限定在数据存储和加解密处理方面. 在移动通讯初期没有SIM卡的概念,当时采用的是机号一体的方式(后来对于CDMA技术而言出现了机卡分离 ...

  2. RFID在工业自动化产线工艺中的应用

    RFID在工业自动化产线工艺中的应用 随着工业自动化技术的不断发展,RFID(Radio Frequency Identification)技术在自动化产线数据采集方面得到了广泛应用.RFID技术是一 ...

  3. Arduino Uno + RFID 读取 把你的门禁卡读取看看有什么秘密

    欢迎关注「凌顺实验室」微信公众号 RFID技术现在都非常成熟和应用广泛 今天我们就来看看这个RFID如何实现读取里面的数据 看看RFID模块是什么模样的 实验效果 在串口监控器里面,我们把IC卡放在模 ...

  4. C# 服务端(API)连接 安卓设备 读取 IC卡(仅读取ID),RFID卡(包含ID卡),获取卡号(10进制)

    处理安卓设备NFC读卡 C#WebAPI做服务端 APP使用 uni-app开发, 走了不少弯路,这里记录一下 获取 卡10进制ID的方法 商米POS.安卓移动设备(手机)通过NFC功能 读取 IC卡 ...

  5. stm32驱动RFID高频读卡器读取IC卡

    stm32驱动RFID读卡器读取IC卡 1.介绍RFID 2.RFID控制指令 2.1 读IC卡号 2.2 读IC卡数据块 2.3 写数据到IC卡数据块 2.4 读取RFID读卡器用户数据 2.5 向 ...

  6. Arduino ESP32 读取Micro sd卡容量信息示例

    Arduino ESP32 读取Micro sd卡容量信息示例 接线说明 ESP32 ----Micro SD VIN (DEVKIT这个引脚有5V电压)---- VCC GND ----GND D2 ...

  7. Arduino版读取程序的规则_如何在Arduino开发板上使用机器人操作系统(ROS)

    Arduino开发板经常用于制作一些小型的机器人,并具有简单的逻辑定义控制.但是,由于板载计算能力和软件有限,开发人员常常无法升级到更复杂的机器人.通常,随着开发人员变得越来越有经验,他们会寻找专门用 ...

  8. Android NFC 读取IC卡的简单封装

    一.NFC简介 NFC是一种近距离无线通信技术,一种非接触式的识别和互联技术. NFC由非接触式射频识别标准(RFID)及互联互通技术演变而成,通过在芯片上集成了感应式读卡器.感应式卡片和点对点三种功 ...

  9. arduino运行java_调试在Arduino MKR1000上运行的Arduino Uno代码

    所以,我是Arduino的业余程序员,之前从未使用过Arduino MKR1000 . 我使用了Arduino Uno并使用Grove Ear夹心跳传感器和Grove温度传感器编写附加代码来检测心跳和 ...

最新文章

  1. 硬链接与软链接的区别有哪些?
  2. Python中的Optional和带默认值的参数
  3. Linux系统调用及其效率
  4. mysql用户名长度_如何增加PhpMyAdmin / mysql用户帐户的用户名长度?
  5. Python中的异常处理详解
  6. 连续 3 天,企业容器应用实战营上海站来啦!
  7. SAP ABAP 编程语言里的%_c_pointer代表什么
  8. 8-[多线程] 进程池线程池
  9. SMSSMS垃圾邮件检测器的专业攻击
  10. ViewGroup之getScrollX()
  11. C# WinForm窗体四周阴影效果
  12. 理解UIScrollView
  13. Oracle数据库常用sql语句
  14. 3.FXBLUE跟单原理
  15. BMZCTF:神秘压缩包
  16. 安徽大学计算机考研经验贴
  17. 九爷带你了解 nginx 的反向代理
  18. 微信公众平台搜索文章会调用搜狗百科内容?
  19. java web简单项目实例_简单粗暴,详细得不要不要的 JavaWeb快速入门实例(1)
  20. STM32开发基础知识——OLED开发基础

热门文章

  1. 计算机备品备件如何管理,备品备件管理系统
  2. BitCoke测评报告 | TokenInsight
  3. SpringMvc框架及SSM框架整合
  4. java学习路线(阿里p6)
  5. 金山助手流氓软件-被进程sjk_daemon.exe坑死
  6. Android 5.0系统特性全解析
  7. 【数据挖掘】知识总结——背景、定义、一般流程及应用(一)
  8. vue引入阿里巴巴图标(含彩色图标)
  9. mat1 and mat2 shapes cannot be multiplied ( )的解决
  10. Apache优化相关