RFID模块+WIFI模块+振动传感器+有源蜂鸣器+舵机+Arduino UNO R3所构成的门禁系统模块

该系统模块主要由RFID模块+WIFI模块+振动传感器+有源蜂鸣器+舵机+Arduino UNO R3组成的门禁系统模块。这里使用舵机充当门锁,用户可以刷卡开门,也可以通过APP控制舵机状态达到开门的效果。若有不法分子想要强行进入室内,对门进行撞击或者人为的破坏,振动传感器检测到有一定强度的震感时会触发有源蜂鸣器发出警报。

一、设备准备

Arduino UNO R3
在这里插入图片描述
RFID模块
在这里插入图片描述
有源蜂鸣器
在这里插入图片描述
振动传感器
在这里插入图片描述
舵机
在这里插入图片描述
WIFI模块
在这里插入图片描述

二、设备连接

RFID模块

RFID读卡器Arduino UNO R3
3.3V3.3V
RSTP9
GNDGND
MISOP12
MOSIP11
SCKP13
SDAP10

有源蜂鸣器

有源蜂鸣器Arduino UNO R3
VCC5V
GNDGND
I/OP7

振动传感器

振动传感器Arduino UNO R3
VCC5V
GNDGND
DOP8

舵机模块

舵机Arduino UNO R3
黄线P6
灰线GND
红线5V

WIFI模块(局域模式)

WIFI模块Arduino UNO R3
RXTX
TXRX
GNDGND
5V5V

三、配置网络

将代码下载到Arduino UNO R3开发板上
WIFI模块需要调节到局域模式,此时打开手机wifi热点,即可检测到WiFi模块所组成的网络,在这里插入图片描述,进行连接。
APP下载路径,打开下载安装好的手机APP

在这里插入图片描述
之后,点击右上角的连接在这里插入图片描述
连接成功之后,即可点击 开锁(49) 对舵机进行控制,此时就可以APP控制开门了。

四、完整代码

#include <SPI.h> //RFID库文件  
#include <MFRC522.h>//RFID库文件
#include <Servo.h>  //Arduino IDE自带的舵机库文件String CardInfo[4][2] ={{"f32f3a1c", "yanyu"},{"43855194", "beyond"}
};//这里的卡片信息通过Serial.print("Card:" + temp + "\n");进行串口显示,将自己的卡片信息进行修改即可
int MaxNum = 4; //这里存储最大的卡信息数与上面数组保持一致.#define Servo_Pin       6      //模拟开门
#define Beep_Pin        7      //蜂鸣器成功提示#define RST_PIN         9      // RFID 的RST引脚
#define SS_PIN          10     // RFID 的SDA(SS)引脚const int vibswPin = 8; //震动传感器
int val = 0; //initialize the variable val as 0MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.MFRC522::MIFARE_Key key;
int comdata;
Servo myservo;      //定义舵机对象myservo
boolean g_boolSuccess = false; //刷卡成功标识 
/*通信协议*/
int incomingByte = 0;       // 接收到的 data byte
String inputString = "";         // 用来储存接收到的内容
boolean newLineReceived = false; // 前一次数据结束标志
boolean startBit  = false;  //协议开始标志
String returntemp = ""; //存储返回值 void Beep_Success()         //刷卡成功铃声
{for(int i = 0; i < 3; i++)  //鸣叫三次{digitalWrite(Beep_Pin, LOW); //打开蜂鸣器delay(100);//延时100digitalWrite(Beep_Pin, HIGH); //关闭蜂鸣器  delay(100);//延时100}
}void Beep_Fail()  //刷卡失败铃声
{digitalWrite(Beep_Pin, LOW); //打开蜂鸣器delay(1500);//延时1500digitalWrite(Beep_Pin, HIGH); //关闭蜂鸣器  
}void setup() 
{Serial.begin(9600); //波特率9600 (Wifi通讯设定波特率)pinMode(Servo_Pin, OUTPUT);  //初始化舵机为输出模式pinMode(Beep_Pin, OUTPUT); //初始化蜂鸣器为输出模式    pinMode(vibswPin,INPUT); //initialize vibration switch as an inputwhile (!Serial);    // 如果没有打开串行端口,就什么也不做(添加基于ATMEGA32U4的Arduinos)SPI.begin();        //初始化SPImfrc522.PCD_Init(); // 初始化 MFRC522myservo.attach(Servo_Pin);    //设置舵机控制引脚为3myservo.write(0);    //初始化舵机位置0digitalWrite(Beep_Pin, HIGH); //关闭蜂鸣器  
}void loop() {  val = digitalRead(vibswPin); //read the value from vibration switchSerial.println(val);if(val == 1)  //without vibration signal{digitalWrite(Beep_Pin,LOW);delay(2000);}else{digitalWrite(Beep_Pin,HIGH);delay(2000);}while (Serial.available()){comdata= Serial.read();if(comdata==49){Serial.print("open the door\n");Beep_Success();//刷卡成功铃声myservo.write(90); //舵机旋转至90度delay(3000);      // 延时3000msmyservo.write(0);//舵机旋转至0度}delay(100);}/* 寻找新的卡片*/if ( ! mfrc522.PICC_IsNewCardPresent())return;/* 选择一张卡片*/if ( ! mfrc522.PICC_ReadCardSerial())return;/* 显示PICC的信息,将卡的信息写入temp */ String temp,str;  //定义字符串temp,strfor (byte i = 0; i < mfrc522.uid.size; i++){str = String(mfrc522.uid.uidByte[i], HEX);    // 将数据转换成16进制的字符 if(str.length() == 1) //保证str的长度有两位{str = "0" + str;}temp += str; //将字符str放入temp       }Serial.print("Card:" + temp + "\n");  //这里打开可以查看实际的卡,方便填写数组/* 将temp的信息与存储的卡信息库CardInfo[4][2]进行比对*/for(int i = 0; i < MaxNum; i++){if(CardInfo[i][0] == temp) //如果在CardInfo[i][0]中比对到卡片的信息{//Serial.print(CardInfo[i][1] + " Open door!\n");Serial.print("$RFID-" + CardInfo[i][0] + "-" + CardInfo[i][1] + "-1-0#"); //将卡的信息打印到串口g_boolSuccess = true;  //刷卡成功标识}}if(g_boolSuccess == true) //如果刷卡成功{Beep_Success();//刷卡成功铃声myservo.write(90); //舵机旋转至90度delay(3000);      // 延时3000msmyservo.write(0);//舵机旋转至0度}else//刷卡失败{Beep_Fail();//刷卡失败铃声}g_boolSuccess = false;//刷卡失败标识mfrc522.PICC_HaltA();      //停止读写mfrc522.PCD_StopCrypto1(); //  停止向PCD加密
}void serialEvent()
{while (Serial.available())                    //如果串口接收到数据则进入循环{    incomingByte = Serial.read();              //一个字节一个字节地读,下一句是读到的放入字符串数组中组成一个完成的数据包if(incomingByte == '$')                     //如果到来的字节是'$',开始读取 {startBit= true;}if(startBit == true){inputString += (char) incomingByte;     // 全双工串口可以不用在下面加延时,半双工则要加的//}  if (incomingByte == '^') {newLineReceived = true;                 //如果到来的字节是'#',读取结束startBit = false;}}
}

RFID所需库文件
将下载好的压缩包解压,把文件RC522复制到你的编译器Arduino的libraries文件夹下
在这里插入图片描述

五、视频效果演示

基于Arduino UNO R3开发板的安全检测系统的实现---RFID门禁系统APP控制

视频链接CSDN
视频链接B站

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

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

相关文章

ESP12E Shield+Arduino UNO R3开发板+DHT11温湿度模块+双色LED灯+有源蜂鸣器+光敏电阻模块+I2CLCD1602液晶显示器所构成的室内检测系统

室内检测系统由ESP12E ShieldArduino UNO R3开发板DHT11温湿度模块双色LED灯有源蜂鸣器光敏电阻模块I2CLCD1602液晶显示器所构成。DHT11温湿度模块获取室内温湿度数据通过I2CLCD1602液晶显示器进行显示&#xff0c;另一方面通过ESP12E Shield将数据上传至云平台。光敏电阻进行捕…

leetcode 202. 快乐数 思考分析(哈希集合与双指针解)

1、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为&#xff1a;对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和&#xff0c;然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果 可以变为 1&am…

五、线性回归和多项式回归实现

官网API 一、线性回归 针对的是损失函数loss faction Ⅰ、Lasso Regression 采用L1正则&#xff0c;会使得w值整体偏小&#xff1b;w会变小从而达到降维的目的 import numpy as np from sklearn.linear_model import Lasso from sklearn.linear_model import SGDRegresso…

深发展银行编码器(解剖)

电池拆下来&#xff0c;再装上&#xff0c;还能继续用下&#xff0c;不会被重置 转载于:https://www.cnblogs.com/ahuo/archive/2012/01/25/2329485.html

leetcode 1. 两数之和 思考分析

1、题目 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素不能使用两遍。 2、思考分析 双for循环的时间复杂度…

六、逻辑回归

一、何为逻辑回归 逻辑回归可以简单理解为是基于多元线性回归的一种缩放。 多元线性回归y的取值范围在(-∞&#xff0c;∞)&#xff0c;数据集中的x是准确的一个数值。 用这样的一个数据集代入线性回归算法当中会得到一个模型。 这个模型所具备的功能就是当有人给这个模型一个…

leetcode 383. 赎金信 思考分析

题目 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串&#xff0c;判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成&#xff0c;返回 true &#xff1b;否则返回 false。 (题目说明&#xff1a;为了不暴露赎金信字迹&#x…

Numpy(科学计算库)---讲解

本内容来自《跟着迪哥学Python数据分析与机器学习实战》&#xff0c;该篇博客将其内容进行了整理&#xff0c;加上了自己的理解&#xff0c;所做小笔记。若有侵权&#xff0c;联系立删。 迪哥说以下的许多函数方法都不用死记硬背&#xff0c;多查API多看文档&#xff0c;确实&a…

仿安居客好租网房产源码

网站设计简约&#xff0c;大方&#xff0c;清爽开发技术&#xff1a;ASP.NET3.5,SQL2005,VS2008功能简介1、小区&#xff0c;二手房&#xff0c;租房小区发布&#xff0c;编辑&#xff0c;修改功能&#xff0c;图片批量上传2、支持积分&#xff0c;发布房源、发布论坛帖子可获得…

LeetCode 454. 四数相加 II 思考分析

题目 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) &#xff0c;使得 A[i] B[j] C[k] D[l] 0。 为了使问题简单化&#xff0c;所有的 A, B, C, D 具有相同的长度 N&#xff0c;且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间&am…

【转】Spark源码分析之-scheduler模块

原文地址&#xff1a;http://jerryshao.me/architecture/2013/04/21/Spark%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B-scheduler%E6%A8%A1%E5%9D%97/ Background Spark在资源管理和调度方式上采用了类似于Hadoop YARN的方式&#xff0c;最上层是资源调度器&#xff0c;它负…

【C++grammar】析构、友元、拷贝构造函数、深浅拷贝

目录1、Destructor&#xff08;析构函数&#xff09;在堆和栈(函数作用域与内嵌作用域)上分别创建Employee对象&#xff0c;观察析构函数的行为2、Friend&#xff08;友元&#xff09;1、为何需要友元2、友元函数和友元类3、关于友元的一些问题3、Copy Constructor&#xff08;…

Android PreferenceActivity 使用

我想大家对于android的系统配置界面应该不会陌生吧&#xff0c;即便陌生&#xff0c;那么下面的界面应该似曾相识吧&#xff0c;假若还是不认识&#xff0c;那么也没有关系&#xff0c;我们这一节主要就是介绍并讲解android 中系统配置界面的使用&#xff0c;相信大家看完本节后…

Pandas(数据分析处理库)---讲解

本内容来自《跟着迪哥学Python数据分析与机器学习实战》&#xff0c;该篇博客将其内容进行了整理&#xff0c;加上了自己的理解&#xff0c;所做小笔记。若有侵权&#xff0c;联系立删。 迪哥说以下的许多函数方法都不用死记硬背&#xff0c;多查API多看文档&#xff0c;确实&a…

leetcode 78. 子集 思考分析

题目 给定一组不含重复元素的整数数组 nums&#xff0c;返回该数组所有可能的子集&#xff08;幂集&#xff09;。 说明&#xff1a;解集不能包含重复的子集。 思考分析 画出解空间树。 我们可以发现我们所需要的结果是解空间的所有结点。而我们之前组合问题和分割问题都是…

设计模式读书笔记-----备忘录模式

个人比较喜欢玩单机游戏&#xff0c;什么仙剑、古剑、鬼泣、使命召唤、三国无双等等一系列的游戏我都玩过(现在期待凡人修仙传)&#xff0c;对于这些游戏除了剧情好、场面大、爽快之外&#xff0c;还可以随时存档&#xff0c;等到下次想玩了又可以从刚开始的位置玩起(貌似现在的…

【C++grammar】vector类和字符串字面量

C的vector类 用数组存放数据时&#xff0c;容量大小不可变&#xff0c;vector对象容量可自动增大。 vector的操作&#xff1a; 调用push_back函数时&#xff0c;vector对象的容量可能会增大。 观察下列操作对vector的影响&#xff1a; #include <vector> #include <…

Matplotlib(数据可视化库)---讲解

本内容来自《跟着迪哥学Python数据分析与机器学习实战》&#xff0c;该篇博客将其内容进行了整理&#xff0c;加上了自己的理解&#xff0c;所做小笔记。若有侵权&#xff0c;联系立删。 迪哥说以下的许多函数方法都不用死记硬背&#xff0c;多查API多看文档&#xff0c;确实&a…

Shader Compiler 界面进展1

先从模仿Composer的界面开始. 目前的进展:不用不知道,虽然wxweidgets有很多界面工具如DialogBlocks(DB), 但仍然不好使. 我使用wxAui界面, DialogBlocks并不支持输出其xrc格式, 我猜是wx本身就没有解析wxAui的xrc格式.像wxAuiToolBar或其他wxToolBar, DB工具也不能独立输出xrc.…

leetcode 90. 子集 II 思考分析

与本题相关联的题目解析&#xff1a; leetcode 78. 子集 思考分析 leetcode 40. 组合总和 II思考分析 题目 给定一个可能包含重复元素的整数数组 nums&#xff0c;返回该数组所有可能的子集&#xff08;幂集&#xff09;。 说明&#xff1a;解集不能包含重复的子集。 思考 …