如何基于Arduino开发板制作RFID智能门锁 |
您所在的位置:网站首页 › rfid智能门锁 › 如何基于Arduino开发板制作RFID智能门锁 |
了解如何使用Arduino和电磁阀制作RFID门锁。 在本篇文章中,我们将详细介绍使用Arduino Mega 2560开发板制作一个RFID(射频识别)智能门锁系统的步骤。本文要实现的目标是通过使用特定卡片来打开门锁。如果扫描了错误的卡片标签,门将保持关闭并关闭蜂鸣器。 为了控制门锁,我们将使用Arduino开发板连接继电器模块,继而控制电磁阀。 必需的组件 ● Arduino Mega 2560开发板 ● I2C LCD显示屏 ● RC522 RFID读卡器模块 ● 单通道继电器模块 ● 电磁锁 ● 3X 18650电池组 ● 蜂鸣器 电路图和说明 第一步是将RC522 RFID读卡器模块连接到Arduino。要正确连接RFID模块和Arduino,请按照以下说明操作。
RFID con.png (19.31 KB, 下载次数: 156) 下载附件 保存到相册 2019-3-4 13:52 上传 RFID模块连接到Arduino Mega 2560的说明。 接下来,连接I2C LCD模块。
lcd con.png (13.55 KB, 下载次数: 165) 下载附件 保存到相册 2019-3-4 13:52 上传 连接I2C LCD模块和Arduino Mega 2560的说明。 然后,将继电器模块和门蜂鸣器连接到Arduino。有关连接模块、蜂鸣器和Arduino的信息,请参阅下面的图像参考。 注意:本文使用三个18650电池为门锁机构供电。
relay.png (300.27 KB, 下载次数: 169) 下载附件 保存到相册 2019-3-4 14:05 上传 连接继电器模块、门蜂鸣器和Arduino。 电路图也可供参考。
circuit diramg.png (76.16 KB, 下载次数: 165) 下载附件 保存到相册 2019-3-4 14:05 上传 连接的继电器模块、门蜂鸣器和Arduino Mega 2560的电路图。 代码说明 我们首先包括用于LCD和RFID读卡器的库。 MFRC522模块使用SPI通信与Arduino配合使用,因此我们还需要包含SPI库。 #include #include #include 复制代码在setup()函数中,启动通信协议。 lcd.begin(); // LCD screen SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522复制代码在loop()函数中,程序将首先检查是否在读卡器附近放置了新标签。如果确实找到了新标签,它将继续loop函数。否则,它将继续寻找一个。 放置新标签后,将读取该标签,然后存储与之关联的4字节UID编号。 // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; }复制代码接下来,检查4字节UID号是否与保存的UID号匹配。 如果匹配,门将打开,如果不匹配,门将保持关闭。
example.png (308.59 KB, 下载次数: 161) 下载附件 保存到相册 2019-3-4 14:13 上传 //Checking the card if (tag.substring(1) == "29 B9 ED 23") //change here the UID of the card/cards that you want to give access { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Access Granted"); lcd.setCursor(0, 1); lcd.print("Door Opened"); digitalWrite(relayPin, HIGH); delay(3000); digitalWrite(复制代码代码 代码中,输入卡片TAG的UID编号。如果您不知道,请从库中上传“dumpinfo”示例,并使用该示例得到该编号。以下是本篇文章使用的完整代码: #include #include #include constexpr uint8_t RST_PIN = 5; constexpr uint8_t SS_PIN = 53; LiquidCrystal_I2C lcd(0x27, 16, 2); //Parameters: (rs, enable, d4, d5, d6, d7) MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance int buzzerPin = 8; int relayPin = 9; void setup() { pinMode(buzzerPin, OUTPUT); pinMode(relayPin, OUTPUT); digitalWrite(relayPin, LOW); lcd.begin(); // LCD screen SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 lcd.setCursor(0, 0); lcd.print(" RFID Door Lock"); lcd.setCursor(0, 1); lcd.print(" by MakerPro"); delay(3000); lcd.clear(); } void loop() { lcd.setCursor(0, 0); lcd.print(" RFID Door Lock"); lcd.setCursor(0, 1); lcd.print(" Show Your Tag "); // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //Reading from the card String tag = ""; for (byte i = 0; i < mfrc522.uid.size; i++) { tag.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); tag.concat(String(mfrc522.uid.uidByte[i], HEX)); } tag.toUpperCase(); //Checking the card if (tag.substring(1) == "29 B9 ED 23") //change here the UID of the card/cards that you want to give access { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Access Granted"); lcd.setCursor(0, 1); lcd.print("Door Opened"); digitalWrite(relayPin, HIGH); delay(3000); digitalWrite(relayPin, LOW); lcd.clear(); } else { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wrong Tag Shown"); lcd.setCursor(0, 1); lcd.print("Access Denied"); digitalWrite(buzzerPin, HIGH); delay(3000); digitalWrite(buzzerPin, LOW); lcd.clear(); } }复制代码 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |