实验一:IC卡门禁

wuchangjian2021-11-11 21:31:36编程学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

IC卡门禁

  • 前言
  • 一、准备物品?
  • 二、使用步骤
    • 1.加载库
    • 2.寻找源代码
    • 3.硬件连线
    • 4读取卡号
    • 4连接继电器和电子锁
    • 5最后一步了
    • 6温馨提示
  • 总结


前言

出于兴趣,本人自己采用上网查询以及自己动脑做出了一个用IC卡开门的小实验,也是本人做出的第一个成品把。特地将如何做出ic卡的方法记录在这里,以后会继续更新本人做的别的实验。敬请关注哈


提示:以下是本篇文章正文内容,下面案例可供参考

一、准备物品?

一块Arduino的板子, 一块RC522的感应模块,一个12V的电子锁,一个继电器,一个可以提供12v电压的装置(本人采用的是8块1.5V的电池串联在一起)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、使用步骤

1.加载库

在这里插入图片描述
在Arduino打开这个界面,然后点开管理库,会有如下的界面在这里插入图片描述
安装第二个MFRC522.如果在这个库安装器找不到MFRC522的话,可以去GITHUB里下载库安装包进行下载库。
油管地址:https://www.youtube.com/watch?v=KQiVLEhzzV0
代码地址:https://www.viralsciencecreativity.com/post/arduino-rfid-sensor-mfrc522-tutorial

2.寻找源代码

本人是在老师一个博客找到了关于门禁卡的油管视频,然后在视频下找到了这个源代码。当然门禁卡源代码还有好多,我列出的只是其中一种。
油管地址

代码如下(示例):



//RFID
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
 
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 4 //define green LED pin因为我的实验中没有用到LED灯,所以把继电器寄到了4端口
#define LED_R 5 //define red LED  同理没有用到LED所以之后程序中的LED_R对程序结果没有影响
#define BUZZER 2 //buzzer pin    2口是定义的蜂鸣器,依然是没有用到蜂鸣器,所以BUZZER对程序结果无影响。 

为了检测卡是否被检测到,因为本人在做的过程中经常有卡不被检测的情况出现
int i=0;

MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
Servo myServo; //define servo name   控制舵机
 
void setup() 
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
 // myServo.attach(3); //servo pin
 // myServo.write(0); //servo start position
  pinMode(LED_G, OUTPUT);
  digitalWrite(LED_G, HIGH);
  pinMode(LED_R, OUTPUT);
  //pinMode(BUZZER, OUTPUT);
  //noTone(BUZZER);
  Serial.println("Put your card to the reader...");
  Serial.println();

}
void loop() 
{
//为了检测卡是否被检测到,因为本人在做的过程中经常有卡不被检测的情况出现
  i++;
  Serial.print(i);
  Serial.print(LED_G);
  
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "27 42 90 B4") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
    Serial.println();
    delay(500);
    digitalWrite(LED_G, LOW);
  //  tone(BUZZER, 500);
    delay(300);
   // noTone(BUZZER);
   // myServo.write(180);
    delay(2000);
  //  myServo.write(0);
    digitalWrite(LED_G, HIGH);
  }
 
 else   {
    Serial.println(" Access denied");
   // digitalWrite(LED_R, HIGH);
   // tone(BUZZER, 300);
   // delay(1000);
    //digitalWrite(LED_R, LOW);
    //noTone(BUZZER);
  }
} 

3.硬件连线

在这里插入图片描述
根据上图将Arduino与RC522连接起来。连接后实物如下图。
在这里插入图片描述

4读取卡号

将连接好的硬件连到电脑上,读取IC卡的卡号。
上传时注意选对开发板和端口在这里插入图片描述
将程序上传到Arduino后将卡片放置RC522后,打开端口监视器,会出现一串字符如图所示在这里插入图片描述
将27 42 90 B4(不同的卡该处的号也可能不同)替换到程序如图位置
将
将标黄的地方换成刚才端口监视器显示的数字

4连接继电器和电子锁

如图所示连接电子锁与继电器(图中更改为IN-Digital4)
在这里插入图片描述
连接后实物如图(可能有些凌乱,哈哈哈,不要在意)
在这里插入图片描述

5最后一步了

将连接好的硬件连接到电脑上,将程序上传到Arduino里,将IC卡贴近RC522,门锁的锁头会进去。

6温馨提示

1、如果IC卡没办法检测到可以将电子锁断开,再检测一遍。可能是电子锁的连接有问题
2、一定要分清继电器的作用。继电器就是一个开关,并且分清继电器的各个口的作用。
3、如果有问题,一定一定一定要耐下心来将程序读一下子,搞明白程序中的逻辑关系,如果遇到没有放卡锁头进去,放卡锁头出来,必定是因为逻辑搞错了,只需要在程序中将逻辑换一下就可。


总结

这是本人第一次写这么多的实验经验吧(脑子不够用,先想出这个词哈哈哈)肯定语言,逻辑有好多不对的地方,慢慢来嘛哈哈哈。之后会出更多的小实验,语言也会更加准确,描述的更加清楚,逻辑更加明了。能让读者轻轻松松的做出自己想做的东西。谢谢观看哈哈哈。如果有什么地方我没说明白请在评论区留言,我会的话肯定解答的。本人也是菜鸡一枚,小白一个哈哈哈哈。祝各位看官晚安哈!!!

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。