实验33:RFID门禁卡实验

news2025/7/9 17:00:18

OK,本实验分为两个部分

一、读卡

二、显示不同的卡的信息,同时继电器动作

01 硬件电路设计


 读卡ID,两张卡,白卡和蓝卡,用txt文件名称体现

lib里面是库文件

把它放在自己的Arduino相应的文件家里,最好是从lib里面有单独的文件夹,用传感器名称命名的文件夹,放着一个文件夹进去就可以了

C:\Program Files (x86)\Arduino\libraries

我的是这一个,你的根据自己的文件夹路径来就可以了

 这是整体电路连接

接口:

RFID 射频模块与 Arduino Uno 之间的连线如下:

RFID 射频模块

Arduino Uno

3.3V

3.3V

RST

2

GND

GND

MISO

3

MOSI

4

SCK

5

SDA

6

IRQ

7

12C LCD1602 与 Arduino Uno 之间的接线:

I2C LCD1602

Arduino Uno

GND

GND

vcc

5V

SDA

A4

ScL.

A5

继电器模块和 Arduino Uno 之间的接线:

继电器模块

Arduino Uno

SIG

8

VCC

5V

GND

GND

面包板怎么接继电器我就不介绍了,前面指导书里有,同学们自己看看就可以了,找继电器一章

02 软件


#include "rfid1.h"
RFID1 rfid;
char serNum[5];

void setup() {
  // put your setup code here, to run once:
rfid.begin(7,5,4,3,6,2);
delay(100);
rfid.init();
Serial.begin(115200);
}

void loop() {
  uchar status;
  uchar str[MAX_LEN];
  status=rfid.request(PICC_REQIDL,str);
  if(status!=MI_OK)
  return; 
  rfid.showCardType(str);
  status=rfid.anticoll(str);
  if(status==MI_OK)
  {
    Serial.print("The card's number is:");
    memcpy(serNum,str,5);
    rfid.showCardID(serNum);
    Serial.println();
    Serial.println();
  }
  delay(500);
  rfid.halt();
}

获得ID,也就是卡号

#include "rfid.h"
#include<LiquidCrystal_I2C.h>
#include<Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RFID rfid;
#define relayPin 8
uchar serNum[5];
void setup() {
  // put your setup code here, to run once:
lcd.init();
lcd.backlight();
Serial.begin(9600);
rfid.begin(7,5,4,3,6,2);
delay(100);
rfid.init();
pinMode(relayPin,OUTPUT);
digitalWrite(relayPin,LOW);
lcd.setCursor(0,0);
lcd.print("   Welcome!   ");
delay(2000);
}

void loop() {
  uchar status;
  uchar str[MAX_LEN];
  status=rfid.request(PICC_REQIDL,str);
  if(status!=MI_OK)
  {
    return;
  }
  rfid.showCardType(str);
  status=rfid.anticoll(str);
  if(status==MI_OK)
  {
    lcd.setCursor(0,0);
    lcd.print("ID:");
    memcpy(serNum,str,5);
    rfid.showCardID(serNum);
    uchar* id=serNum;
    if(id[0]==0x73&&id[1]==0xDC&&id[2]==0xE4&&id[3]==0x1D)
    {
      digitalWrite(relayPin,HIGH);
      lcd.setCursor(0,1);
      lcd.print("Hello good boy~");
      delay(2000);
      lcd.clear();
      digitalWrite(relayPin,LOW);
    }
    else if(id[0]==0xE3&&id[1]==0xFD&&id[2]==0x27&&id[3]==0x94)
       {
      digitalWrite(relayPin,HIGH);
      lcd.setCursor(0,1);
      lcd.print("Hello good girl~");
      delay(2000);
      lcd.clear();
      digitalWrite(relayPin,LOW);
    }
    else
    {
      lcd.setCursor(0,1);
      lcd.print("Hello unkown guy~");
      delay(2000);
      lcd.clear();
    }
  }
  lcd.setCursor(0,0);
  lcd.print("   Welcome!   ");
  delay(2000);
  rfid.halt();
}
  

卡测试代码

具体代码就不解释了

每个老师习惯不同哈哈

03 实验结果


RFID读卡

读卡实验视频

读卡-LCD显示卡主人信息-继电器动作灯亮2秒

卡测试代码

我没有别的卡了,其实其它卡扫卡有操作,没有别的卡,也懒得找,就不演示了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库 -- 内置函数

今天来一起学习MySQL数据库的内置函数。 目录 日期函数 current_date current_time current_timestamp date_add date_sub datediff 实例演示 创建一张表&#xff0c;记录生日 创建一个留言表 字符串函数 charset concat length replace substring ucase…

第02章 变量

变量介绍 定义 定义&#xff1a;变量是程序的基本组成单位&#xff0c;变&#xff08;变化&#xff09;量&#xff08;值&#xff09; 变量有三个基本要素&#xff1a;数据类型 变量名称 值 变量相当于内存中的一个数据存储空间的表示&#xff0c;可以把变量看作是一个房间…

Pthread 并发编程(三)——深入理解线程取消机制

基本介绍 线程取消机制是 pthread 给我们提供的一种用于取消线程执行的一种机制&#xff0c;这种机制是在线程内部实现的&#xff0c;仅仅能够在共享内存的多线程程序当中使用。 基本使用 #include <stdio.h>#include <pthread.h>#include <assert.h>#incl…

数字化助力生产制造管理:专项生产管理系统

对于现今的生产企业而言&#xff0c;大家都是希望可以让整个制造生产过程更加的规范。同时越来越多的企业也已经分析到&#xff0c;在现有的社会生产方式中&#xff0c;如果不能够使加工业和制造业有先进的更为现代化的管理模式&#xff0c;是难以取得更好的竞争优势的。因此在…

Hadoop搭建

一、安装虚拟机 root 123456789 1、安装完系统后配置虚拟机ip vim /etc/sysconfig/network-scripts/ifcfg-ens33 DEFROUTE"yes" IPV4_FAILURE_FATAL"no" IPV6INIT"yes" IPV6_AUTOCONF"yes" IPV6_DEFROUTE"yes" IPV6_FAIL…

Git学习1

Git学习历程——努力入世的后浪~。 目录 一、Git安装 二、Git的初级使用 1.Git配置文件 2.Git基本命令 2.1 git init 2.2 ls -al 2.3 touch 2.4 git add 2.5 git commit -m 2.6 git status 2.7 git rm 2.8 git log 2.9 git reset --hard 2.10 git reflog 三、Git…

Linux操作系统面试题

Linux 概述 什么是Linux Linux是一套开源的类似Unix操作系统&#xff0c;是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络 为核心的设计思想&#xff0…

pytorch深度学习实战lesson22

第二十二课 LeNet LeNet神经网络由深度学习三巨头之一的Yan LeCun提出&#xff0c;他同时也是卷积神经网络 (CNN&#xff0c;Convolutional Neural Networks)之父。 LeNet主要用来进行手写字符的识别与分类&#xff0c;并在美国的银行中投入了使用。LeNet的实现确立了CNN的结构…

KKFileView在线预览禁用复制右键图片保存等操作

KKFileView在线预览禁用复制右键图片保存等操作一、需求背景二、修改kkFileview1.docx、doc文档不可复制、F12、右键、打印限制问题2.图片限制拖拽处理3.限制Excel转换后复制等操作4.PDF模式禁用右上角菜单栏一、需求背景 公司的运营平台&#xff0c;管理了一些如合同等内容&a…

【记录】软件自动修复工具Jaid配置、调试、运行及相关问题的解决方案

文章目录1. 前言2. Jaid原论文3. 环境4. 配置5. 调试6. 碰到的问题7. 一些发现8. 小结9. 参考文献1. 前言 创作开始时间&#xff1a;2022年11月18日20:50:38 如题&#xff0c;本文记录一下软件自动修复工具Jaid配置、调试、运行及相关问题的解决方案。 2. Jaid原论文 【ASE…

Jenkins+Docker+SVN实现SpringBoot项目半自动化部署

起因&#xff1a;入职后公司需要的技能&#xff0c;全部项目都使用的JenkinsDocker部署 Jenkins详细教程&#xff1a;知乎大佬写的文章 Docker详细教程&#xff1a;一个大佬的博客 SVN使用教程&#xff1a;一个大佬的博客 深入了解Jenkins、Docker、SVN&#xff0c;去上面三个大…

图书管理系统【java】

目录 &#x1f947;1.设计背景 &#x1f50e;2.设计思路 &#x1f511;3.book包 &#x1f4d7;3.1 Book类的实现 &#x1f4d5;3.2 BookList类的实现(书架) &#x1f511;4.user包 &#x1f4d9;4.1 User类的实现 &#x1f4d2;4.2 AdminUser&#xff08;管理员&#x…

MySQL导出csv数据文件

之前使用MySQL导出过一次线上数据&#xff0c;当时解决了乱码和数据没有正常分隔的问题。 参见这篇文章: 记一次“曲折“的MySQL数据导出 前几个月换了工作电脑&#xff0c;这几天又需要导出几十万的线上数据&#xff0c;在导出过程中还是出现了一些问题&#xff0c;再记录一…

OpenWrt 固件编译教程

一、编译环境准备 编译平台 阿里云 Ubuntu 20.04.5 LTS 安装编译环境依赖 sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion f…

ICME 会议介绍

官网翻译来的&#xff0c;具体内容还是看官网&#xff1a;IEEE ICME23 Author Information and Submission Instructions 目录 常会和特别会议 研讨会 行业/应用文件 演示 一般信息 示例文件、格式化指南和模板 电子论文提交 提交论文的分步说明 感兴趣的主题包括但不…

右键发送到菜单+批处理实现批量自动化为文件名添加统一的后缀

WinR打开运行&#xff0c;并输入shell:sendto&#xff0c;打开系统右键发送到菜单的所在文件夹。 新建记事本文档&#xff0c;修改文件名为公开.bat&#xff0c;编辑并保存如下内容&#xff1a; echo off :loop if not "%~1" "" (ren "%~1" &…

[附源码]SSM计算机毕业设计在线二手车交易信息管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Linux系统配置 Samba客户端

配置 Samba客户端 1.Windows 客户端访问 samba 共享 无论Samba共享服务是部署在Windows系统上&#xff0c;还是部署在Linux系统上&#xff0c;通过Windows系统进行访问时&#xff0c;其步骤和方法都是一样的。下面假设Samba共享服务部署在Linux系统上&#xff0c;并通过Wind…

11返场钜惠,格式转换、图片/视频压缩免费小技巧

&#x1f4e3; 话不多说&#xff0c;直接上干货&#xff01; &#x1f525; 11返场钜惠&#xff0c;牛学长转码大师免费送&#xff01;&#xff01;&#xff01;&#x1f525; 那么牛学长转码大师能帮助您些什么呢&#xff1f;一起看看吧~ 一、格式转换 作为一款专业的格式…

Redis集群部署的三种模式

一、Redis简介 Redis 是一款完全开源免费、遵守BSD协议的高性能(NOSQL)的key-value数据库。它使用ANSI C语言编写&#xff0c;支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis的使用场景有如下一些&#xff1a; 读写效率要…