智能门锁:无需钥匙的蓝牙控制门锁

在现代家居安全中,智能门锁正变得越来越流行。今天,将探讨如何制作一个无需钥匙、通过蓝牙控制的智能门锁。这种门锁安装在门内侧,因此小偷无法从外部破坏门锁。还将介绍如何开发一个安卓应用来控制这个门锁。

材料清单

为了制作这个智能门锁,需要以下材料:

  • ArduinoUNO:作为门锁的主控制板。
  • 蓝牙模块HC-05:这是一个低成本且非常流行的蓝牙模块,用于Arduino项目。
  • 9g微伺服电机:这是一个可以非常精确地从0到180度旋转的微伺服电机。
  • 3D打印门锁:原始设计由Thingiverse用户Michal Altair Valasek设计。

如果没有3D打印机,可以从网上购买,价格大约为145美元。

原理图

组件之间的连接非常简单。HC-05模块有四个引脚连接到Arduino,伺服电机有3个引脚连接到Arduino。原理图清晰地显示了连接方式。

代码使用

蓝牙控制智能门锁的代码非常简单。设计了一个安卓应用,该应用发送带有密码的命令。实际上,设置了两个命令,一个是"OPEN",另一个是"CLOSE",密码可以包含任何数字、字母或它们的组合。在应用中,使用了两个按钮——一个用于打开门,另一个用于关闭门。

当在密码框中输入密码并点击打开按钮时,应用会将"OPEN"命令与密码连接并发送到Arduino。在命令中添加了"="符号,作为分隔符。收到手机发送的字符串后,Arduino程序会将命令和密码从接收到的字符串中分离出来,并保存到两个单独的变量中。然后首先检查密码,如果密码与保存的密码匹配,那么对于"OPEN"命令,门就会打开;对于"CLOSE"命令,门就会关闭。"="有助于分离命令和密码。

void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); inputString += inChar; if (inChar == '\n' || inChar == '\r') { stringComplete = true; } } }

收到来自蓝牙模块的数据后,以下代码片段有助于Arduino从接收到的数据中分离出命令和密码。

int pos = inputString.indexOf('='); if (pos > -1) { command = inputString.substring(0, pos); value = inputString.substring(pos+1, inputString.length()-1); }

然后使用if-else块来比较接收到的密码与预设密码,并根据此驱动伺服电机打开或关闭锁。

if (!password.compareTo(value) && (command == "OPEN")) { openDoor(); Serial.println("OPEN"); delay(100); } else if (!password.compareTo(value) && (command == "CLOSE")) { closeDoor(); Serial.println("CLOSE"); delay(100); } else if (password.compareTo(value)) { Serial.println("WRONG"); delay(100); }

如果Arduino收到错误的密码,它会向安卓手机发送一条消息,告知密码错误。实际上,Arduino发送了"WRONG"字符串。安卓程序然后显示错误密码消息。完整的草图包含在zip文件中。

3D设计门锁

所有锁的部分都是3D打印的。要感谢Thingiverse用户ridercz的精美设计。他设计并发布了这个基于伺服的门锁在thingiverse.com上。除了Rack_Holder.stl文件,所有文件都是从他的设计中获取的。可以从下面或Thingiverse.com下载文件。

组装3D打印部件

要组装所有打印的部件,可以按照下面的视频指南进行。组装后,使用四个螺丝将所有部件紧紧固定。

使用MIT App Inventor为安卓手机开发了应用程序。使用App Inventor是因为它不需要任何编码,也不需要软件安装。只需要一个谷歌账户。访问http://ai2.appinventor.mit.edu/,系统会要求使用谷歌账户登录。

完整的App Inventor源文件(BTcontrol.aia)附在这里。如果不想自己制作或修改应用程序,只需下载BTcontrol.apk并安装到安卓手机上。

还可以点击以下链接从Google Play商店下载:https://play.google.com/store/apps/details?id=appinventor.ai_khairul_uapstu.BTcontrol&hl=en

如果想修改源代码,点击"项目"菜单,选择"从计算机导入项目(.aia)",然后从计算机中浏览BTcontrol.aia文件。导入后,可以轻松修改它。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485