带Arduino和RFID的DIY智能锁

您走到一个只有您有钥匙的看不见的锁,然后甚至不触摸就打开它。听起来不错?今天,我们将以Arduino为骨干和一些便宜的组件来构建基于RFID的简单智能锁。

该项目背后的技术已在许多行业中使用。在现代化的办公室工作或使用公共交通工具的任何人都可能每天都会使用它。 RFID(射频识别)可以识别存储在卡或加密狗中芯片上的数据,并将其与已扫描的标签列表进行比较。

我们将建立一个测试电路,以控制使用Mifare MFRC522阅读器模块,用于打开和关闭锁。我们将使用主钥匙卡添加或删除对不同标签的访问,并创建一个简单的LED读数以告诉我们系统中正在发生什么。

最后,我们将添加一个螺线管来充当

MFRC522读取器可以读取和写入数据到RC522芯片,并将这些数据存储在Arduino的EEPROM系统中。

  • Arduino。我们使用了Uno,尽管任何Arduino板或克隆都足够。
  • 3 x 220欧姆电阻
  • 1 x 10k欧姆电阻
  • 逻辑级N通道Mosfet
  • MFRC522模块,至少要读取两个卡/卡。大多数都带有一个,并且可以不到2美元的价格购买,但是您可能已经以公共旅行卡的形式在钱包中放了一个。
  • 红色,蓝色和绿色的LED
  • 12v电磁阀($ 2)
  • 12v电源
  • 面包板和连接线
  • MFRC522模块

    这种设置的核心是便宜的MFRC522模块,它带有包含 s50 芯片的卡和密钥卡,每个模块都存储有自己的唯一永久标识号(UID)。它们在功能上都相同,只是形状不同。

    首先在Arduino IDE的库管理器中搜索 MFRC522 库,然后安装它。或者,您可以下载库并手动将其安装到库文件夹。如果您是Arduino的新手,您可能会觉得入门入门很有用!

    该库还包含一个Fritzing图,我已注释了该图,指示如何将模块连接到Arduino。

    请注意:此板工作在3.3V而不是5V电压下,因此请小心将其连接到右侧引脚。

    要测试设置,请打开 DumpInfo 文件>示例> MFRC522> DumpInfo 中绘制草图,然后将其上传到Arduino开发板。打开串行监视器,然后将其中一个RFID对象放在读取器上。您应该看到类似这样的内容:

    如果读取中出现错误,说明 MIFARE_Read()失败:通信超时,或 PCD_Authenticate()失败:超时交流中,请放心。这很可能意味着您没有将标签放在读取器上的时间太长,无法读取所有数据。只要您获得卡的UID(只要标签在读取器的范围内,就会读取该卡),它将与该项目一起使用。如果您根本无法阅读,请检查接线,然后重试。

    电路的其余部分

    现在,我们已经验证了我们模块的正常工作,请添加其余部分的组件。像这样连接您的组件:

  • 我们的12v电源(目前未插入)连接到面包板的导轨。将Arduino GND引脚和MFRC522 GND引脚连接到接地轨。
  • LED通过220欧姆电阻连接到引脚2、3和4以及接地轨。
  • 连接12v电磁阀的正极和VIN。 Arduino连接到面包板上的12v导轨。
  • 使用此设置,每当我们从Arduino向MOSFET发送一个HIGH信号时,它将允许电流流到电磁阀。尽管您需要一个降压变压器来为Arduino提供高于12V的电压,但是并没有阻止您使用功率更高或功率更大的螺线管的功能。还要密切注意MOSFET的数据表,以确保不会使它过载。

    一旦将它们放在一起,它应该看起来像这样:

    而没必要,我创建了一个小装备来用废木料模拟门锁。

    修改草图

    构建电路之后,就该设置Arduino Sketch了。方便的是,MFRC522库附带了一个名为访问控制的示例草图,该草图几乎完全可以完成我们想要做的事情。将您的Arduino连接到计算机,然后在Arduino IDE中打开文件>示例> MFRC522> AccessControl

    示例草图以及相关内容中均提供了大量信息。库的GitHub页面。我们只需要修改几行。或者,您可以从GitHub Gist下载我们的修改后的代码。

    首先,该草图是为具有单个RGB LED且使用共阳极的电路设计的。我们将不会使用它,因此只需在本节中进行注释即可。

    //#define COMMON_ANODE

    现在,将我们的LED引脚与草图中定义的引脚匹配。

    #define redLed 3    // Set Led Pins#define greenLed 4#define blueLed 2

    我们需要更换继电器引脚(尽管在这种情况下,我们使用的是MOSFET)以匹配我们的设置。

    #define relay 5  // Set MOSFET Pin

    为便于以后更改锁保持打开状态的时间,我们将为其创建一个变量。

    int lockDelay=10000; // lock stays open for 10 seconds.

    我们只需要再做一个更改。在 loop 方法的底部,埋在if语句中的是方法调用 granted(300)。我们需要对其进行更改,以便它使用我们的 lockDelay 变量。

    granted(lockDelay); // Open the door lock for lockDelay duration

    使用新名称保存草图,并将其上传到Arduino。完成后,打开串行监视器。第一次执行此操作时,它将要求您扫描某些内容以用作主卡。将您的卡放在读卡器上,卡的UID应该会显示在串行监视器上,并显示消息一切就绪

    就是这样!您的主密钥已设置完毕。从计算机上拔下Arduino开发板。即使关闭电源,您的主密钥细节也将保存在Arduino的EEPROM中。

    测试完整设置

    最后一次快速查看一下接线以检查是否一切正常到位,然后连接12v电源。在这一点上,值得一提的是,您应该警惕螺线管的占空比。我为此测试使用的便宜的螺线管没有100%的占空比,因此不应将其长时间放置在锁定位置。要使其成为永久设置,请使用占空比为100%的螺线管。更好的是常闭(NC)电磁阀,在不通电时仍保持锁定状态。这也意味着任何想绕过系统的人都不能简单地拔掉它的电源!

    电路上电时,蓝色LED应该亮起,以表明该设备可以运行。将主卡放在读卡器上,使其处于管理模式,这将导致所有三个LED闪烁。当它们闪烁时,您可以将其他卡或卡片放在读卡器上,以添加或取消访问权限。它将闪烁绿色以提供访问权限,并闪烁蓝色以取走。再次使用主卡退出管理模式。

    现在,当您手持可访问读卡器的卡或密钥卡时,它应呈绿色闪烁并打开锁。如果它呈红色闪烁,则表示访问被拒绝!

    全部完成!

    尽管此项目只是在您自己的DIY设置中使用RFID设备的简单开始,但这并不是最安全的方法设定。我们不建议陪审团将其装到您的前门。

    您可以将整个机械装置组装成一个盒子,然后使用螺线管将其锁定。在包装盒中填入Cookie,然后使用您的主密钥确定谁有权访问和谁没有访问权。成为Cookie的主人!

    您可以完全取消螺线管,并在其中安装一个LED灯条,并使用RFID激活灯。当可以将具有访问权限的卡或便携式计算机拿到阅读器时,您可以使用相同的想法将Wi-Fi密码之类的数据显示在小屏幕上。

    您是否一直在使用RFID在家里布置?在下面的评论部分中让我们知道您的项目!

    图片来源:Annarie Young通过Shutterstock.com

    标签: Arduino 家庭安全 智能锁