esp8266+frc522点亮led-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2311|回复: 0

esp8266+frc522点亮led

[复制链接]
发表于 2021-1-20 20:12 | 显示全部楼层 |阅读模式
本帖最后由 一入极客深似海 于 2021-1-21 12:02 编辑

刷卡点亮led,改一下就是控制门的开关,这里给大家提供一种简单的思路。只是一个方法,正所谓条条大路通北京。
此程序是在CSDN上一位博主的示例程序基础上修改的,这是他的地址 https://blog.csdn.net/qq_31878883/article/details/88971935


  1. /*
  2. * 此例程为ESP8266(ESP12-Module)连接FRC522
  3. *
  4. * 引脚接线图
  5. * SEP8266       FRC522
  6. * ---------------------------
  7. *   D1            RST
  8. *   D2            SDA
  9. *   D5            SCK
  10. *   D6            MSOI
  11. *   D7            MOSI
  12. *   GND           GND
  13. *   3.3V          3.3V
  14. *                 RQ (不接)   *   
  15. */
  16. #include <SPI.h>
  17. #include <MFRC522.h>
  18. #define RST_PIN         5           // 配置针脚
  19. #define SS_PIN          4
  20. #define LED D4                //定义刷卡正确控制引脚
  21. #define LED_err D8            //定义刷卡错误控制引脚


  22. MFRC522 mfrc522(SS_PIN, RST_PIN);   // 创建新的RFID实例
  23. MFRC522::MIFARE_Key key;

  24. int NfcNum[]={733,887,539,664,692,836};  //存储 需刷卡的值

  25. int NumBer ;                            //定义全局变量,将存储卡的总值

  26. void setup() {
  27.   Serial.begin(9600); // 设置串口波特率为9600
  28.   SPI.begin();        // SPI开始
  29.   mfrc522.PCD_Init(); // Init MFRC522 card

  30. /*  引脚初始化  */

  31.   pinMode(LED,OUTPUT);
  32.   pinMode(LED_err,OUTPUT);  
  33.   digitalWrite(LED_err,0);
  34.   digitalWrite(LED,1);
  35.    Serial.println();
  36.    Serial.println("初始化完成");
  37. }


  38. void loop() {
  39.   // 寻找新卡
  40.   if ( ! mfrc522.PICC_IsNewCardPresent()) {
  41.     //Serial.println("没有找到卡");
  42.     return;
  43.   }

  44.   // 选择一张卡
  45.   if ( ! mfrc522.PICC_ReadCardSerial()) {
  46.     Serial.println("没有卡可选");
  47.     return;
  48.   }

  49.   // 显示卡片的详细信息
  50.   Serial.print(F("卡片 UID:"));
  51.   dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
  52.   Serial.println();
  53.   Serial.print(F("卡片类型: "));
  54.   MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
  55.   Serial.println(mfrc522.PICC_GetTypeName(piccType));

  56.   MFRC522::StatusCode status;
  57.   if (status != MFRC522::STATUS_OK) {
  58.     Serial.print(F("身份验证失败?或者是卡链接失败"));
  59.     Serial.println(mfrc522.GetStatusCodeName(status));
  60.     return;
  61.   }
  62.   //停止 PICC
  63.   mfrc522.PICC_HaltA();
  64.   //停止加密PCD
  65.   mfrc522.PCD_StopCrypto1();

  66.   return;
  67. }

  68. /**
  69.    将字节数组转储为串行的十六进制值
  70. */
  71. void dump_byte_array(byte *buffer, byte bufferSize) {

  72. //  byte num;
  73.   for (byte i = 0; i < bufferSize; i++) {
  74.     Serial.print(buffer[i] < 0x10 ? " 0" : " ");
  75.     Serial.print(buffer[i], HEX);  
  76.      NumBer+=buffer[i];                //将指针记录的值汇总成一个总值               
  77.   }
  78.   Serial.println();
  79.     Serial.print("NumBer全值:");    //待上个循环完成后,打印NumBer的值
  80.       Serial.println(NumBer);  

  81.          diandeng();
  82.          NumBer=0;                // diandeng()  完成后将NumBer的值清零,不然影响下次刷卡的计算
  83. }

  84. /*  对NumBer和NfcNum[]数组的值进行对比,相同则开门,不同则报错 */

  85. void diandeng(){

  86.   unsigned char NFC_OK=0;     
  87.   unsigned char h=0;
  88.   
  89.   for( h=0;h<6;h++)
  90.   {
  91.       if(NumBer==NfcNum[h])
  92.       {
  93.         NFC_OK=1;
  94.         break;
  95.       }
  96.       else
  97.       {
  98.         NFC_OK=0;
  99.       }
  100.   }
  101.      if(NFC_OK==1)
  102.     {
  103.        digitalWrite(LED,0);
  104.        Serial.println("刷卡正确:开门");
  105.        Serial.println("5秒倒计时");
  106.        delay(5000);
  107.        Serial.println("关门");
  108.        digitalWrite(LED,1);
  109.     }
  110.    else
  111.    {
  112.        Serial.println("卡不对,请重试");
  113.        Serial.println("请在灯闪灭后重试");
  114.        for(char i=0;i<3;i++)
  115.        {
  116.           digitalWrite(LED_err,1);
  117.           delay(500);
  118.           digitalWrite(LED_err,0);
  119.           delay(500);
  120.        }
  121.     }
  122. }
复制代码
视频链接,https://www.bilibili.com/video/BV1ez4y1S7CB
QQ截图20210120201123.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 07:04 , Processed in 0.076842 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表