我是靠谱客的博主 鲜艳裙子,这篇文章主要介绍RFID模块+WIFI模块+振动传感器+有源蜂鸣器+舵机+Arduino UNO R3所构成的门禁系统模块一、设备准备二、设备连接三、配置网络四、完整代码五、视频效果演示,现在分享给大家,希望可以做个参考。
该系统模块主要由RFID模块+WIFI模块+振动传感器+有源蜂鸣器+舵机+Arduino UNO R3组成的门禁系统模块。这里使用舵机充当门锁,用户可以刷卡开门,也可以通过APP控制舵机状态达到开门的效果。若有不法分子想要强行进入室内,对门进行撞击或者人为的破坏,振动传感器检测到有一定强度的震感时会触发有源蜂鸣器发出警报。
一、设备准备
Arduino UNO R3
RFID模块
有源蜂鸣器
振动传感器
舵机
WIFI模块
二、设备连接
RFID模块
RFID读卡器 | Arduino UNO R3 |
---|---|
3.3V | 3.3V |
RST | P9 |
GND | GND |
MISO | P12 |
MOSI | P11 |
SCK | P13 |
SDA | P10 |
有源蜂鸣器
有源蜂鸣器 | Arduino UNO R3 |
---|---|
VCC | 5V |
GND | GND |
I/O | P7 |
振动传感器
振动传感器 | Arduino UNO R3 |
---|---|
VCC | 5V |
GND | GND |
DO | P8 |
舵机模块
舵机 | Arduino UNO R3 |
---|---|
黄线 | P6 |
灰线 | GND |
红线 | 5V |
WIFI模块(局域模式)
WIFI模块 | Arduino UNO R3 |
---|---|
RX | TX |
TX | RX |
GND | GND |
5V | 5V |
三、配置网络
将代码下载到Arduino UNO R3开发板上
WIFI模块需要调节到局域模式,此时打开手机wifi热点,即可检测到WiFi模块所组成的网络,,进行连接。
APP下载路径,打开下载安装好的手机APP
之后,点击右上角的连接
连接成功之后,即可点击 开锁(49) 对舵机进行控制,此时就可以APP控制开门了。
四、完整代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163#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 0 MFRC522 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);//延时100 digitalWrite(Beep_Pin, HIGH); //关闭蜂鸣器 delay(100);//延时100 } } void Beep_Fail() //刷卡失败铃声 { digitalWrite(Beep_Pin, LOW); //打开蜂鸣器 delay(1500);//延时1500 digitalWrite(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 input while (!Serial); // 如果没有打开串行端口,就什么也不做(添加基于ATMEGA32U4的Arduinos) SPI.begin(); //初始化SPI mfrc522.PCD_Init(); // 初始化 MFRC522 myservo.attach(Servo_Pin); //设置舵机控制引脚为3 myservo.write(0); //初始化舵机位置0 digitalWrite(Beep_Pin, HIGH); //关闭蜂鸣器 } void loop() { val = digitalRead(vibswPin); //read the value from vibration switch Serial.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 doorn"); Beep_Success();//刷卡成功铃声 myservo.write(90); //舵机旋转至90度 delay(3000); // 延时3000ms myservo.write(0);//舵机旋转至0度 } delay(100); } /* 寻找新的卡片*/ if ( ! mfrc522.PICC_IsNewCardPresent()) return; /* 选择一张卡片*/ if ( ! mfrc522.PICC_ReadCardSerial()) return; /* 显示PICC的信息,将卡的信息写入temp */ String temp,str; //定义字符串temp,str for (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); // 延时3000ms myservo.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站
最后
以上就是鲜艳裙子最近收集整理的关于RFID模块+WIFI模块+振动传感器+有源蜂鸣器+舵机+Arduino UNO R3所构成的门禁系统模块一、设备准备二、设备连接三、配置网络四、完整代码五、视频效果演示的全部内容,更多相关RFID模块+WIFI模块+振动传感器+有源蜂鸣器+舵机+Arduino内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复