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.pswp.cn/news/377821.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377821.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377821.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PushManager

http://suchandalex.googlecode.com/svn/trunk/beOui/beWe/client/Classes/PushNotificationManager.m轉載于:https://www.cnblogs.com/vincent-lu/archive/2012/01/18/2325740.html

krsort_PHP krsort()函數與示例

krsortPHP krsort()函數 (PHP krsort() function) krsort() function is used to sort an associative array in descending order based on the keys, as we know that an associative array contains keys and values, this method sorts an array according to the keys. kr…

ESP12E Shield+Arduino UNO R3開發板+DHT11溫濕度模塊+雙色LED燈+有源蜂鳴器+光敏電阻模塊+I2CLCD1602液晶顯示器所構成的室內檢測系統

室內檢測系統由ESP12E ShieldArduino UNO R3開發板DHT11溫濕度模塊雙色LED燈有源蜂鳴器光敏電阻模塊I2CLCD1602液晶顯示器所構成。DHT11溫濕度模塊獲取室內溫濕度數據通過I2CLCD1602液晶顯示器進行顯示&#xff0c;另一方面通過ESP12E Shield將數據上傳至云平臺。光敏電阻進行捕…

輸入輸出函數:

一、printf函數&#xff1a;     printf("Hello World!\n");     printf("My age is %d\n",26);     int age 17;     printf("My age is %d\n",age);  %d 或 %i: 帶符號 十進制整數。   %o:不帶符號 八進制整數。   %x:…

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…

JavaScript中的地圖與對象

JavaScript對象與地圖 (JavaScript Objects vs Maps) Objects are super popular in JavaScript so its not a term you are hearing for the first time even if youre a novice JS developer. Objects, in general, are a very common data structure that is used very ofte…

深發展銀行編碼器(解剖)

電池拆下來&#xff0c;再裝上&#xff0c;還能繼續用下&#xff0c;不會被重置 轉載于:https://www.cnblogs.com/ahuo/archive/2012/01/25/2329485.html

關于$.getJson

這是一個Ajax函數的縮寫&#xff0c;這相當于: 123456$.ajax({dataType: "json",url: url,data: data,success: success});數據會被附加到一個查詢字符串的URL中&#xff0c;發送到服務器。如果該值的data參數是一個普通的對象&#xff0c;它會轉換為一個字符串并使用…

leetcode 1. 兩數之和 思考分析

1、題目 給定一個整數數組 nums 和一個目標值 target&#xff0c;請你在該數組中找出和為目標值的那 兩個 整數&#xff0c;并返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是&#xff0c;數組中同一個元素不能使用兩遍。 2、思考分析 雙for循環的時間復雜度…

六、邏輯回歸

一、何為邏輯回歸 邏輯回歸可以簡單理解為是基于多元線性回歸的一種縮放。 多元線性回歸y的取值范圍在(-∞&#xff0c;∞)&#xff0c;數據集中的x是準確的一個數值。 用這樣的一個數據集代入線性回歸算法當中會得到一個模型。 這個模型所具備的功能就是當有人給這個模型一個…

C# 調用Windows API實現兩個進程間的通信

使用Windows API實現兩個進程間&#xff08;含窗體&#xff09;的通信http://blog.csdn.net/huangxinfeng/article/details/5513608 從C#下使用WM_COPYDATA傳輸數據說到Marshal的應用http://www.cnblogs.com/jiangyh-is-me/archive/2006/06/05/417381.html 問題解決&#xff1a…

如何在Golang中返回錯誤?

In Golang, we return errors explicitly using the return statement. This contrasts with the exceptions used in languages like java, python. The approach in Golang to makes it easy to see which function returns an error? 在Golang中&#xff0c;我們使用return…

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;發布房源、發布論壇帖子可獲得…

Eclipse中classpath和deploy assembly的文件位置

classpath的配置信息存儲在工程根目錄下的.classpath文件 deploy assembly配置信息存儲在工程目錄下的.settings\org.eclipse.wst.common.component文件中轉載于:https://www.cnblogs.com/jubincn/p/3381087.html

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…

ruby 嵌套函數_Ruby嵌套直到循環帶有示例

ruby 嵌套函數嵌套直到循環 (Nested until loop) Alike for, while, and do...while, until loop can also be nested for meeting the specific purpose. In this type of nesting, two until loops work in the combination such that at first, the outer loop is triggered…

SQL Server 2008中SQL增強功能點Merge

sql server 2008提供了一個增強的Sql命令Merge,用法參看MSDN。能根據兩張表數據的不同&#xff0c;對兩張表進行數據執行插入&#xff0c;更新或刪除等操作&#xff0c;一般用在數據的抽取&#xff0c;例如&#xff0c;根據在另一個表中找到的差異在一個表中插入、更新或刪除行…