学物联网,来万物简单IoT物联网!!
一、产品简介
MFRC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,其特点低电压、低成本、体积小的非接触式读写芯片。MFRC522支持MIFARE系列更高速的非接触式通信,双向数据传输速率高达424Kbit/s,与主机之间主要主要通过SPI通信模式。
引脚定义:
- VCC:接电源3V3
- RST:reset复位
- GND:接电源地
- IRQ:事件中断引脚
- MISO:SPI MISO信号
- MOSI:SPI MOSI信号
- SCK:SPI 时钟信号
- SS:SPI 片选信号
二、技术参数
- 通行方式:采用常规SPI通讯
- 储存容量:8Kbit,16个分区,每分区两组密码
- 工作频率:13.56Mhz
- 通讯频率:106KBoud
- 读写距离:2.5~10cm
- 读写时间:1~2ms
- 工作温度:-20度~35度
- 擦写寿命:大于100000次
- 数据保存时间:大于10年
- 尺寸:85.5mm *5 4mm
三、软件接口
MFRC522(spiObj, CS) - 创建 MFRC522 驱动对象
- 函数原型:
mfrc522Obj = MFRC522(spiObj, csObj, resetObj)
- 参数说明:
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
spiObj | SPI | 是 | 传入SPI对象 |
csObj | GPIO | 是 | 传入片选信号 CS 对象 |
resetObj | GPIO | 是 | 传入复位信号 RESET 对象 |
- 返回值:
resetObj 对象成功,返回 MFRC522 对象;MFRC522 对象创建失败,抛出 Exception - 示例代码:
from machine import SPI, Pin
import mfrc522
# 初始化 SPI
spiObj = SPI(2, baudrate=2000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
# 初始化片选
csObj = Pin(21, Pin.OUT)
# 初始化复位信号
resetObj = Pin(22, Pin.OUT)
# 创建 MFRC522 驱动
mfrc522Obj = mfrc522.MFRC522(spiObj, csObj,resetObj)
print("MFRC522 inited!")
- 输出:
MFRC522 inited!
readCardID() - 将读取SD卡卡号
- 函数功能:
SD卡接触MFRC522读写器,可以读取SD卡的卡号 - 函数原型:
mfrc522Obj.readCardID()
- 参数说明:
无 - 返回值:
无 - 示例:
from machine import SPI, Pin
import mfrc522
import utime
# 初始化 SPI
spiObj = SPI(2, baudrate=2000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
# 初始化片选
csObj = Pin(21, Pin.OUT)
# 初始化复位信号
resetObj = Pin(22, Pin.OUT)
# 创建 MFRC522 驱动
mfrc522Obj = mfrc522.MFRC522(spiObj, csObj,resetObj)
print("MFRC522 inited!")
while True:
rfid_card = mfrc522Obj.readCardID()
print(rfid_card)
utime.sleep_ms(200)
- 输出:
MFRC522 inited
979024648674
readText() - 将读取SD卡信息
- 函数功能:
SD卡接触MFRC522读写器,可以读取SD卡的信息 - 函数原型:
mfrc522Obj.readText()
- 参数说明:
无 - 返回值:
无
四、接口案例
- 代码:
from machine import SPI, Pin
import mfrc522
import utime
# 初始化 SPI
spiObj = SPI(2, baudrate=2000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
# 初始化片选
csObj = Pin(21, Pin.OUT)
# 初始化复位信号
resetObj = Pin(22, Pin.OUT)
# 创建 MFRC522 驱动
mfrc522Obj = mfrc522.MFRC522(spiObj, csObj,resetObj)
print("MFRC522 inited!")
while True:
rfid_card = mfrc522Obj.readCardID()
print(rfid_card)
utime.sleep_ms(200)
- 输出:
MFRC522 inited
979024648674
参考文献及购买链接
[1] MFRC522购买链接