智能家居门铃,具备WiFi、安全检测和移动警报功能

  • 采用光耦合器进行安全的 230V 检测,并将电源和逻辑电路分离。
  • ESP-01、3,3V 电源(LM317T)和 3D 外壳组装,打造简洁的项目。
  • 使用中断、MQTT 和 OpenHAB 实现可靠的移动警报和短信选项。

智能门铃

叮咚!我相信你家肯定有个普通的门铃,它能正常工作,但我们并非总能听到:我们可能躲在角落里,吸尘器开到最大声,戴着耳机,或者周围环境太过嘈杂,以至于错过了快递员的通知。把普通门铃升级成智能门铃,通过手机(如果你戴手表的话,也可以通过手表)通知你,这真是个绝妙的主意,可以确保你再也不会错过快递或访客了。

此外,有些人希望更进一步,要求门铃在有人按下按钮时播放传统的铃声、点亮指示灯,理想情况下还能发送短信。这就引出了一些合理的问题:应该使用两个通过 Wi-Fi 连接的微控制器(例如两个 ESP32),还是选择更简单的方案,例如射频链路?应该使用现有的 230V 电源门铃,还是应该完全重新设计一个?在接下来的段落中,我将解释不同的方法、组件、安全组装步骤,以及一个使用 MQTT、OpenHAB 和 Pushbullet 的软件解决方案,以确保项目完善、美观且功能齐全,同时又不会让您感到不知所措。

架构:从两个MCU到射频,再到WiFi

在考虑设计方案时,首先想到的就是在同一个家庭网络中使用两个MCU:一个模块放在室内,一个放在室外,通过Wi-Fi通信。这种方法确实可行,但如果仅仅为了门铃就使用两个ESP32,那就有点过于复杂且成本过高了。真正的目标其实很简单:一个外部按钮触发内部逻辑,然后由内部逻辑处理所有其他功能(声音、LED、手机通知,甚至短信)。

更轻便的方案是在外部按钮和内部微控制器之间放置一个简单的射频发射器和接收器。其优点在于按钮端无需完整的微控制器:只需一个价格低廉的射频模块、一块电池和一个设计精良的电路,即可在按下按钮时发送信号。在室内,一个支持 Wi-Fi 的微控制器接收来自射频接收器的警报信号,并处理后续操作:发出“叮咚”声、点亮 LED、发送通知,以及根据需要通过外部服务触发短信发送。

如果您想保留现有线路并继续使用230V 门铃,还有一种绝佳的方法:在门铃响起时检测电压。这种检测采用电气隔离技术,并将信号传递给 Wi-Fi 微控制器,微控制器会广播该事件并通知您。这样,您无需更换门铃,只需对其进行升级即可。

对于不愿自己动手的用户来说,购买一体化系统也是一个不错的选择。市面上已有配备IP65防护等级和1080P摄像头的无线智能可视对讲系统,它们既可以作为可视门铃,也可以作为双向通话系统。一些商家甚至在产品页面上添加了“分享”功能,许多商家还提供“您是否看到更低的价格?”的表单,要求您填写是否在实体店购买、所在地区以及其他详细信息,以便他们判断是否可以匹配价格。简而言之,市面上有很多功能齐全的商业解决方案,但如果您喜欢动手改造,DIY方案会更经济实惠,也更具个性化。

智能门铃项目

安全检测230V电压:光耦合器来帮忙

许多传统门铃仅在有人按下按钮时才由 230V 电源供电。安全“监听”此事件的关键在于将电源与逻辑电路完全隔离。光耦合器正是为此而生:它是一种通过光信号在两个独立电路之间传输的器件,确保市电与 3,3V 电子设备之间没有直接的电气连接。

为了简化操作,您可以购买一块预制电路板,它可以检测 230V 电压并为您的微控制器提供安全输出。这些电路板通常包含光耦合器和合适的电阻,可以保护您的微控制器。如果您不想从头开始设计,这是一个快速且可靠的解决方案。如果您喜欢自己动手制作,另一种选择是用一些容易找到的元件自行复制该电路,并保持电源和逻辑电路物理分离的原则。

注意接线和间距:建议在电路板上的 230V 电源轨和微控制器电源之间留出足够的间隙。如果您使用的是穿孔板,请确保足够的间隙,并尽可能将所有部件封装在一个设计精良的外壳中,以防止意外接触。光耦合器本身就能提供一层保障,让您高枕无忧。

另一个重要组件是电源:我们将使用的微控制器工作电压为3,3V。如果您没有 3,3V 电源,可以使用LM317T稳压器将 5V电源降压至稳定的 3,3V。这种组合(5V 电源 + 稳压器)在 DIY 项目中非常常见;它既经济又有效。

智能门铃安装

实用硬件:ESP-01、3D 外壳和线束

要为系统添加 WiFi 连接功能, ESP-01是一个经典且广为人知的选择。它体积小巧、价格实惠、易于编程,最重要的是,对于门铃来说完全够用。与功能强大的 ESP32(更适合大型项目)相比,ESP-01 完全可以胜任事件读取、网络连接、MQTT 发布和触发通知等功能。

在实际组装过程中,为了实现紧凑安全的安装,可以将所有部件封装在一个3D 打印的盒子里。将 ESP-01 电路板和电源板(以及一个接线端子插槽)组合在一起后,整个装置有时几乎可以完美地装入传统门铃的空间内。这样,您可以将电子元件放置在靠近门铃的位置,从而保持家居的整体美观,避免任何突兀的装置。

接线也很重要。建议将门铃的火线、电子元件的火线(必须单独连接,以确保麦克风始终有电,即使门铃未被按下)以及零线连接到一个标识清晰的接线端子上。这样,您就可以检测到门铃是否通电,同时保持智能系统在线,以便发送事件和通知。请记住以下原则:所有线路必须连接在正确的位置,并且电源和逻辑电路必须物理隔离。

对于DIY爱好者来说,只要保持安全距离,在万用板上组装电路就非常方便。有些人承诺将来会改用定制PCB,但就目前而言,一块制作精良的万用板已经足够好了。如果您想记录设计,可以将原理图保存到您常用的工具中(例如EAGLE文件),这样便于分享和审阅。

智能门铃电子产品

软件和通知:中断、MQTT、OpenHAB 和 Pushbullet

接下来我们来看“大脑”。在ESP-01的固件部分,检测事件的有效方法是使用边沿触发中断。一个实用的小技巧是:将引脚3(串口的RX引脚)定义为中断引脚,这样当检测器(或光电传感器)检测到电压时,就会触发一个例程来标记蜂鸣器的状态。

许多示例中的典型配置使用类似这样的代码行:`attachInterrupt(digitalPinToInterrupt(sensePin), onDoorbellStateChange, FALLING); `。在 ESP8266/ESP-01 固件上,使用`ICACHE_RAM_ATTR`装饰的例程可能如下所示:`void ICACHE_RAM_ATTR onDoorbellStateChange() { lastTrueState = millis(); doorbellState = true; }`。这可以节省触发时间并将“有人按门铃”状态设置为 true。

在主循环中,经过一段合理的时间后,标志位会被重置以允许接收新的通知。这涉及到一个类似`if (doorbellState && (now – lastTrueState) > 5000) { doorbellState = false; isStateSent = false; }` 的时间检查。这确保如果自上次呼叫以来已过去 5 秒,则该事件被视为已关闭,如果有人再次按下按钮,则可以再次发送通知。这可以防止因一次长按或反复按压而导致的垃圾通知。

对于家庭自动化和智能家居标准的集成,MQTT非常便捷。您可以设置自己的 MQTT 代理并将其集成到OpenHAB中,在 OpenHAB 中创建一个“事物”(Thing)及其对应的“项目”(Item),用于表示门铃的状态(例如,关闭/开启)。之后,您可以使用首选服务配置通知:Pushbullet是一个经典的选择,您可以设置一条规则,当项目状态从“关闭”变为“开启”时触发警报。

在 OpenHAB 中,该规则的框架可能如下所示:`rule "RuleName" when Item ItemName changed from OFF to ON then val actions = getActions("pushbullet", "ItemNamePushbulletBot") if (actions !== null) { actions.sendPushbulletNote("Main doorbell", "Main doorbell", "Someone is at the main door") } end`。简单来说:一旦 Item 变为 ON,就向您的设备发送一条通知。如果您需要使用短信,可以将 `Pushbullet` 替换为短信服务或在您的家庭自动化平台上提供绑定的网关。

如果您不想触碰原有的门铃,而是想通过手机查看,请记住市面上有配备 1080P 高清摄像头和 IP65 防护等级的无线可视门铃可供选择。这些门铃内置可视对讲功能,许多商店甚至会在产品页面上添加“分享”按钮和常用的“您是否找到更低的价格?”表单,以保持价格竞争力;他们甚至可能会询问您是否在实体店看到过该产品以及您所在的省份,以便评估您的询价。虽然价格通常比不上精心设计的 DIY 安装,但无线可视门铃不失为一个便捷的选择。

智能门铃软件

另一个实用的软件技巧:设备应保持稳定的 Wi-Fi 连接,并在连接断开时自动重新连接到 MQTT 服务器。ESP 通常包含“无连接时重新连接”的例程,并使用定时器来防止其陷入无限循环的重新连接尝试。软件监控程序可以避免许多实际问题。

您可以设置指示灯与事件同步闪烁(例如,通话触发后闪烁5 秒),然后熄灭。为了更微妙地显示通话状态,可以使用PWM渐变闪烁来指示“通话进行中”,并使用短暂的常亮来指示“通话已记录”。这些视觉提示虽然并非必需,但在您手机不在身边时却非常实用。

如果您正在考虑发送短信,请记住,有一些服务和 API 允许您通过简单的 HTTP 调用从微控制器 (MCU) 发送短信,或者更好的选择是从您的家庭自动化服务器发送。后者可以减轻微控制器的负载并集中管理逻辑(例如,仅当房屋处于“离家”模式时才发送短信)。此外,短信通常按次收费,因此最好实施简单的反垃圾邮件规则,以防止每隔 X 分钟发送超过一条短信。

顺便一提,如果您将所有功能都集成到 OpenHAB(或类似平台)中,您就需要将“发现和发布”(MCU)与“自动化和通知”(服务器)分开。这种职责划分使系统更易于维护:微控制器专注于单一任务,而更灵活的服务器则负责处理通知、过滤器、规则和历史通话记录。

接线完成后,在工作台上测试完毕,就可以开始安装了:您可能需要为门铃拉一根新线,以确保智能设备持续供电。在许多家庭中,现有的线管足以满足需求,只需对附近的接线盒进行一些简单的调整即可。安全操作至关重要:断开电源,识别导线,查阅相关规定,如有任何疑问,请联系专业人员。

如果您觉得还缺少一些功能,下一步可以尝试测量门铃被按的次数(基本遥测),使用被动红外 (PIR) 运动传感器,将指标数据公开到您的系统中(例如,通过 MQTT 传输到时间序列数据库),甚至可以在门铃被触发时使用 IP 摄像头录制视频片段。这些功能并非项目的核心组成部分,但自动化确实能带来这些好处。

关于外壳的制作,请务必确保3D打印外壳通风良好,以免稳压器(如果您使用的是LM317T)过热。使用小型散热片并在元件之间留出空间会有所帮助。此外,在内部标记“振铃相”、“电源相”和“零线”将大大简化日后的修改或扩展,避免几个月后重新开始项目时出现猜测的情况。

回到最初的讨论(两个MCU vs. RF),如果您担心室外按钮的功耗,并希望尽可能简化电路,那么RF+室内MCU组合是最佳选择:室外发射器可以设计得非常小巧且功耗低,所有设备都可以在室内保持“就绪”状态,并配备稳定的电源。如果您不想使用无线电链路,并且门铃的线路已经铺设完毕,那么使用光耦合器和单个MCU进行230V电压检测则是一种简单、可靠且简洁的方案。

最后,还有几个最佳实践:记录原理图(即使只是带注释的原型照片),将代码上传到你的代码仓库,并添加一个包含引脚图的 README 文件。一些小细节,例如标明引脚 3 (RX)用作中断,可以避免在未经检查的情况下激活串口时出现问题,即使其他人(甚至包括你自己)也不用担心。如果你分享项目,那就更好了:其他人可以复现它、改进它,或者给你提供一些想法。

显然,对于既想保留门铃并接收警报的创客,也适合那些更倾向于配备摄像头和IP65防护等级的完整商用系统的用户,都有相应的解决方案。如果您喜欢DIY,那么将安全检测器、ESP-01、带LM317T的3,3V电源、3D外壳、边沿中断、MQTT、OpenHAB和Pushbullet组合起来,就能打造出一个可靠、可扩展且高度定制化的智能门铃,并且无需重新构建系统即可添加短信或其他任何通道。

与Arduino传感器兼容的Arduino板
相关文章:
Arduino传感器,适合新手用户

在 Google 中将其添加为首选来源