我有一扇带电锁的门,当我没有带钥匙时,或者当我想让别人进来但我不在时,我也想打开它。
该项目的最佳候选者是Shelly 1 继电器,因为:
对于软件方面的事情,我决定使用 Arduino 的IoT Remote 移动应用程序,它是免费的,允许您创建一个简单的界面而无需编写任何代码。该解决方案为我处理所有网络部分,因此我不必担心设置 Web 服务器、将其暴露在公共互联网、处理身份验证、编写远程通信协议等。一切都已由 Arduino Cloud 管理,并且我的代码变得非常简单。
当谈到打开一扇真实世界的门时,我们都应该有点偏执。Arduino IoT Remote 应用程序需要身份验证,您可以将 Arduino 帐户配置为需要两步身份验证以提高安全性,因此这已经是一个好的开始。但是,我想通过实施一种简单的一次性密码 (OTP) 机制来做更多事情,就像您用来访问银行帐户的机制一样。我确实信任 Arduino Cloud,但使用此解决方案,即使有人可以以某种方式进入我的手机和设备之间的通信通道,他们也无法打开门,因为他们需要由 Google 生成 OTP在我的手机上配置的身份验证器应用程序。
这部分很简单,按照以下步骤操作即可(有疑惑的可以看看官方教程):
1. 在Arduino Cloud中创建一个免费帐户
2. 创建一个新设备,选择“Generic 8266 Module”作为板类型。您将获得一个密钥:将其复制粘贴到某处。
3. 创建一个新东西,并使用您的 WiFi 凭据和您刚刚获得的密钥对其进行配置。
4. 为事物添加一个变量,称为“ access_code ”。使它成为一个字符串变量并保持所有默认值不变。
5. 创建一个新的仪表板并向其添加一个“信使”小部件。将小部件链接到 access_code 变量。
就是这样!很容易吧?
1. 获取您的 USB-TTL 串行适配器并确保它在 3.3V 下工作。
2. 拆除 Shelly 1 外壳以接触到编程引脚。
3、查看Shelly网站上的pinout ,按如下方式连接其引脚[Shelly -> USB-TTL adapter]:
为了将 GND 和 GPIO(在 Shelly 上)连接到 GND(在 USB-TTL 适配器上),您可能需要使用面包板,但任何其他方法都可以。
现在将 USB-TTL 适配器插入您的 PC。
为了使用一次性密码方法,您需要在手机上设置 Google 身份验证器,这非常简单,因为它只需要一个 QR 码就可以完成所有操作。
要生成二维码,您可以使用Luca Dentella(TOTP Arduino 库的作者)提供的这个非常方便的在线页面。配置字段如下:
现在按下“Go”按钮,您将获得一个漂亮的二维码:使用 Google Authenticator 扫描它,一切就绪!
最后,将“Arduino HEX array”和“Key length”字段的值复制到本页提供的草图代码中。您的手机和 Arduino 代码现已配对。
现在按照以下步骤操作:
1. 在 Arduino IoT Cloud 的 Web 界面中,将草图代码复制并粘贴到您刚刚创建的东西的“草图”部分。
2.点击“打开完整编辑器”;然后单击三个点并选择“下载草图”以将草图下载到本地。
3. 使用 Arduino IDE 打开草图。
4. 在 arduino_secrets.h 选项卡中填写值(您的 WiFi 凭据和您在步骤 #1 中获得的密钥)。
5.安装一个最新的esp8266内核:
6. 安装以下库:
7. 选择板卡串口。
8.点击“编译并上传”
此时,您的 Shelly 1 设备应该已刷入并可以使用了!
注意:使用 Arduino Cloud 通常不需要下载草图和使用 Arduino IDE,因为一切都可以从 Web 界面完成(顺便说一下,它预装了所有内核和库)。然而,这个项目需要一个最新的 esp8266 核心,它在 Arduino Cloud 上尚不可用。一旦 Arduino 团队在云端升级了 esp8266 核心,这一段就可以被更简单的基于网络的程序所取代。
此时,您已准备好安装所有内容:
1. 从 Shelly 1 上拆下所有电线。
2. 确保根据所需电压设置 Shelly 上的跳线(请参阅Shelly 文档,这一点非常重要)。
3. 将 Shelly 1 连接到您的电锁并输入电源。
此时您应该能够从 Google Authenticator 生成 OTP 代码并将其写入您之前创建的仪表板小部件:您的门将打开!
如果它似乎不起作用,这里有一些故障排除提示:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !