ESP8266 RC522
一、读取卡片信息
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 5 // 配置针脚
#define SS_PIN 4
MFRC522 mfrc522(SS_PIN, RST_PIN); // 创建新的RFID实例
MFRC522::MIFARE_Key key;
void setup() {Serial.begin(9600); // 设置串口波特率为9600SPI.begin(); // SPI开始mfrc522.PCD_Init(); // Init MFRC522 cardSerial.println("test-demo-start");
}void loop() {// 寻找新卡if ( ! mfrc522.PICC_IsNewCardPresent()) {//Serial.println("没有找到卡");return;}// 选择一张卡if ( ! mfrc522.PICC_ReadCardSerial()) {Serial.println("没有卡可选");return;}// 显示卡片的详细信息Serial.print(F("卡片 UID:"));dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);Serial.println();Serial.print(F("卡片类型: "));MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);Serial.println(mfrc522.PICC_GetTypeName(piccType));// 检查兼容性if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI&& piccType != MFRC522::PICC_TYPE_MIFARE_1K&& piccType != MFRC522::PICC_TYPE_MIFARE_4K) {Serial.println(F("仅仅适合Mifare Classic卡的读写"));return;}MFRC522::StatusCode status;if (status != MFRC522::STATUS_OK) {Serial.print(F("身份验证失败?或者是卡链接失败"));Serial.println(mfrc522.GetStatusCodeName(status));return;}//停止 PICCmfrc522.PICC_HaltA();//停止加密PCDmfrc522.PCD_StopCrypto1();return;
}/**将字节数组转储为串行的十六进制值
*/
void dump_byte_array(byte *buffer, byte bufferSize) {for (byte i = 0; i < bufferSize; i++) {Serial.print(buffer[i] < 0x10 ? " 0" : " ");Serial.print(buffer[i], HEX);}
}
二、完整程序
//RC522
#define BLINKER_WIFI#include <Blinker.h>
#include <SPI.h>
#include <String.h>
#include <MFRC522.h>
#define SS_PIN 4
#define RST_PIN 5
MFRC522 rfid(SS_PIN, RST_PIN);
byte nuidPICC[4];
int a_1=1;
//初始化
char auth[] = "eb6b127b98b2";
char ssid[] = "ESP8266";
char pswd[] = "12345678";// 新建组件对象
BlinkerButton Button1("btn-abc");// 按下按键即会执行该函数
void button1_callback(const String & state) {BLINKER_LOG("get button state: ", state);digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));Serial.print("S");
}void setup()
{Serial.begin(115200);//SPISPI.begin();rfid.PCD_Init(); pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);// 初始化blinkerBlinker.begin(auth, ssid, pswd);Button1.attach(button1_callback);//设置引脚
}//hex
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
if(nuidPICC[0]==0xAA&& nuidPICC[1]==0xFD && nuidPICC[2]==0xA9 && nuidPICC[3]==0x26)// 卡号ID
{Serial.print("1");a_1=1;//这里要开门}
//人员2 else if (nuidPICC[0]==0xAA&& nuidPICC[1]==0xF9 && nuidPICC[2]==0xD9 && nuidPICC[3]==0x26)
{Serial.print("2");a_1=1;//这里要开门}
//人员3 else if (nuidPICC[0]==0xAA&& nuidPICC[1]==0xE1 && nuidPICC[2]==0x11 && nuidPICC[3]==0x26)
{Serial.print("3");a_1=1;//这里要开门}
//人员4 else if (nuidPICC[0]==0xAA&& nuidPICC[1]==0x99 && nuidPICC[2]==0x3F && nuidPICC[3]==0xAD)
{ Serial.print("4");a_1=1;//这里要开门}
//人员5 else if (nuidPICC[0]==0x25&& nuidPICC[1]==0x5C && nuidPICC[2]==0x42 && nuidPICC[3]==0x25)
{Serial.print("5");a_1=1;//这里要开门}
//人员6 else if (nuidPICC[0]==0x25&& nuidPICC[1]==0x5C && nuidPICC[2]==0x42 && nuidPICC[3]==0x25)
{Serial.print("6");a_1=1;//这里要开门}
//人员7 else if (nuidPICC[0]==0x35&& nuidPICC[1]==0xB3 && nuidPICC[2]==0x70 && nuidPICC[3]==0x50)
{Serial.print("7");a_1=1;//这里要开门}
//人员8 else if (nuidPICC[0]==0x39&& nuidPICC[1]==0x8E && nuidPICC[2]==0x3B && nuidPICC[3]==0x10)
{Serial.print("8");a_1=1;//这里要开门}
//人员9 else if (nuidPICC[0]==0x25&& nuidPICC[1]==0xBA && nuidPICC[2]==0x3C && nuidPICC[3]==0x50)
{Serial.print("9");a_1=1;//这里要开门}
//人员10 else if (nuidPICC[0]==0x35&& nuidPICC[1]==0x65 && nuidPICC[2]==0x95 && nuidPICC[3]==0x50)
{Serial.print("0");a_1=1;//这里要开门}
}
//注册+识别
void zhuce(){if ( ! rfid.PICC_IsNewCardPresent())
return;if ( ! rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); // 将NUID保存到nuidPICC数组
for (byte i = 0; i < 4; i++){nuidPICC[i] = rfid.uid.uidByte[i];}
//Serial.print("十六进制UID:");
printHex(rfid.uid.uidByte, rfid.uid.size); //Hex:16进制
//Serial.println();
//
//Serial.print("十进制UID:");
printDec(rfid.uid.uidByte, rfid.uid.size); //Dec:10进制
//Serial.println();// 使放置在读卡区的IC卡进入休眠状态,不再重复读卡,Halt(停止)
rfid.PICC_HaltA();
// 停止读卡模块编码
rfid.PCD_StopCrypto1();}void loop(){zhuce();
Blinker.run();
}
三、接线
ESP8266 RC522相关推荐
- #智能宿舍门禁 esp8266+RC522模块+DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网
esp8266+RC522模块+DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网 提示: 提示: 文章目录 esp8266+RC522模块+DFPlay Mini Mp3模块实现 ...
- 【玩转RT-Thread】CPK-RA6M4智慧门禁系统教学
文章目录 1.项目介绍 2.前期准备 3.模块介绍及使用 3.1 AHT10 3.1.1底层I2C通信协议简介 3.1.2 sensor框架的使用 3.1.3 AHT10对接到sensor框架 3.2 ...
- ESP8266 对接RFID RC522 设备读取门禁卡
文章目录 前言 一.所需材料 二.电路接线图和实物图 三 RC522 基础知识普及 四. RFID库安装 五. Arduino代码解析 六. 解析过程实物展示 七.总结 前言 在本篇文章中,您将 使用 ...
- arduino(9):使用ESP8266,连接到RFID RC522 设备上,读取门禁卡上的设备信息
目录 前言 1,关于arduino 使用 rfid-rc522 2,使用 3,总结 前言 相关arduino 全部分类: https://blog.csdn.net/freewebsys/catego ...
- 基于Arduino、ESP8266的物联网项目开发方案整理、毕业设计(第一波)
文章目录 1.背景 2.资料介绍 2.1 Arduino官方认证 2.1.1 开发板类 2.1.2 温湿度传感器 2.1.3 光照度传感器 2.1.4 测距传感器 2.1.5 声音模块 2.1.6 显 ...
- 带联网功能的RFID宿舍门禁(四)-NodeMCU网站与RC522共同控制舵机转动
文章后续更新:http://mwhls.top/?p=659 新的更新内容请到mwhls.top查看. 如果没有图片请到上方的文章首发页面查看. 带联网功能的RFID宿舍门禁项目目录 我有点厉害,这个 ...
- ESP32开发之旅——RC522模块的使用
ESP32开发之旅--RC522模块的使用 前言 在本文中,您将学会如何使用ESP32连接RFID模块RC522,本文提供了简单的示例供学习参考. 需要注意的是,本文中的ESP32是使用Micro P ...
- esp8266制作NFC电子门锁支持手机控制
话不多说,咱先上图上视频 nfc门锁 使用方法还是很简单的,有当前卡id是刷卡,舵机就会动作.当没有保存当前卡时只需要按一下按钮就可以把当前卡的信息保存到eeprom中,可以实现掉电存储. 必要硬件: ...
- 安装esp8266库_基于ESP8266,DIY低成本智能远程开关灯小装置
废话不多说,直接开始 首先需要必备的环境arduino ide,Blinker app(应用商店均可下载)以及必备的一些库(aduino ide1.8.7及以上版本,esp8266拓展,blinker ...
最新文章
- c语言未结束的引用标识符,2015年9月计算机二级《C语言》高分突破模拟卷(4)
- android wear升级方法,LG G Watch官方工具包刷Android wear5.1.1教程(附刷机包)
- 【技术杂谈】RPC和RESTful API入门篇
- Linux下基于Libmad库的MP3音乐播放器编写
- python 人脸轮廓提取_实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!...
- java项目构建部署包
- JAVA学习--集合的遍历
- DevExpress小结(简略)
- 谷歌恐龙游戏HTML,谷歌浏览器小恐龙游戏
- 网络毕业设计 ——无线网规划与设计
- 高校选课系统的设计与实现
- 小程序的转发分享功能
- 【每日一题】一起冲击蓝桥杯吧——Day4【蓝桥真题一起练】
- 学会有礼貌的拒绝应聘者
- vue中使用ajax全局配置,jQuery和vue 设置ajax全局请求
- 51单片机二进制转bcd码c语言,二进制数转换为BCD码(义隆单片机)
- WPF教程(十二)资源
- java案例-实现斗地主游戏案例
- 计算机二级公共基础知识
- aruba交换机配置命令_aruba交换机配置-实战篇
热门文章
- Delphi 串口通信技术资料
- CH32V103_MG996R 舵机驱动
- 安卓 设置默认短信应用(两种实现)
- 让你的短信应用迎接Android 4.4(KitKat)
- win7计算机建立无线网络连接不上,教你电脑连接不上无线网络怎么办
- Scratch-31讲 植物大战僵尸
- 如何从短信链接打开跳转到微信App内
- python 的plotly.express 如何修改默认渐变色
- 计算机应用基础数据处理教案,计算机应用基础教案
- 计算机主板维修高手 pdf,学习精华总结主板维修入门到高手.pdf