使用 WeMos D1 Mini 升级红外控制的窗户清洁机器人,添加 Wi-Fi、MQTT 和 Home Assistant 集成功能
我在乌克兰一个热门的购物平台上促销期间买了一台窗户清洁机器人。它运行良好,功能正常,但有一个缺点——红外(IR)遥控器。
当机器人在室内运行时,对指令的响应相当良好,但仍需保持在遥控器的直接视线范围内。然而,当机器人清洁窗户外部时,接收指令就会变得相当困难。有时我不得不站在玻璃旁边,反复按按钮,机器人才会做出反应。
这让我萌生了通过Wi-Fi或Zigbee连接来升级机器人的想法。
由于缺乏现成的集成模块,以及我对DIY Zigbee设备经验有限,Zigbee选项很快就被排除了。
而Wi-Fi则显得再合适不过了。我刚好有一台未使用的WeMos D1 mini,是之前一个项目中留下的,但最终没来得及开始。
拆开机器人后,我发现里面只有一块主板。在网上快速搜索后发现,这块PCB板被广泛应用于多种国产窗户清洁机器人中,大多数型号仅在外观设计和品牌上有所不同。
下一步是识别红外接收器。接收器的引脚标有 +、– 和 O(输出)。通过将 O(OUT)引脚连接到 WeMos D1 mini 的 D5 引脚,并将机器人和 WeMos 的地线连接在一起,我便可以使用标准的红外接收示例代码,来捕获原遥控器上每个按钮生成的原始编码。
一旦所有按钮代码都被捕获,便可以直接模拟遥控器按键操作。通过使用2N2222、2N3904或BC547晶体管,并将一个1 kΩ电阻连接到红外接收器的输出端,WeMos便可直接将捕获的指令注入机器人的控制电路中。
这实际上将WeMos变成了一种虚拟遥控器。
在检查主板时,我还发现了一个标有3.3V和GND的服务接口。一旦机器人接入电源,该接口就会供电,因此对于WeMos D1 mini来说,这是一个理想的电源,因为它可以直接使用3.3V供电运行。
不过,所有初始测试都是通过USB供电的WeMos完成的。
红外命令模拟的接线方式如下:
WeMos D1 mini D2 → 1 kΩ电阻 → 2N2222基极2N2222集电极 → WeMos D1 mini GND2N2222发射极 → 机器人红外接收器 OUT引脚
为了验证这一概念,我编写了一个简单的测试程序,通过串行端口传输之前捕获的命令。
成功了!机器人完美地响应了发送的指令。
下一步是通过添加初始Wi-Fi配置的接入点、支持MQTT与Home Assistant集成,以及通过网页界面实现OTA固件更新,来增强固件功能。
测试阶段完成后,WeMos 直接连接到机器人的服务接口:
WeMos 3.3V → 机器人 3.3V
WeMos GND → 机器人 GND
WeMos电路板连同晶体管电路随后被安装在机器人的外壳内部。
启动机器人后,一个Wi-Fi接入点随即可用。通过连接该接入点,我输入了Wi-Fi凭据,并在需要时填写了MQTT服务器设置。点击“保存”后,机器人自动重启。
设备重启后,从路由器获取了IP地址。通过在网页浏览器中打开该地址(例如192.168.0.2),即可访问基于网页的控制界面。该界面包含与之前捕获的遥控指令相对应的按钮。
机器人对通过网页界面发出的每一条指令都做出了正确响应。在我的具体型号中,仅仅将机器人插入电源插座是不够的,还必须按住电源按钮几秒钟,以启动吸尘电机,并让机器人牢固地附着在玻璃上。
此时,该项目已提供了一个功能完整的网页界面,并通过MQTT实现了与Home Assistant的无缝集成。
一切运行良好。机器人现在可以从Wi-Fi覆盖范围内的任何地方进行控制。然而,一个新的问题出现了:我该如何判断机器人仍在打扫,还是已经完成了任务?
例如,我通常会为每个窗户清洁两次。第一次使用清洁剂涂抹在玻璃上进行清洁,第二次则用于清除残留物,而无需再额外添加清洁剂。由于这种操作流程,了解机器人当前的工作状态变得非常重要。
经过研究其工作原理后,我得出结论:监控刷子电机将是最可靠的解决方案。如果刷子在转动,说明机器人正在主动清洁;如果刷子停止转动,很可能清洁周期已经结束。
机器人确实配备了一个蜂鸣器,清洁完成后会发出提示音。然而,在手动操作时蜂鸣器也会响起,这很容易导致误报。
因此,我决定改用监测刷电机的活动情况。结果发现,一个价格低廉的PC817光耦正是完美的解决方案。
问题在于,刷子电机会周期性地反转方向。根据运动情况,电机端子可能会接收到+24 V或-24 V的电压。因此,信号必须先转换为恒定极性,才能被WeMos安全检测到。
为此,采用了一种整流桥。可以使用小型的MB10S、DB107或KBP整流桥,也可以由四个独立的1N4148或1N4007二极管组装而成。
最终电路连接如下:
•桥式整流器“+”输出 → 22 kΩ电阻 → PC817引脚1
•桥式整流器“−”输出 → PC817引脚2
•PC817 引脚 4 → WeMos D1 mini D5
•PC817 引脚 3 → WeMos D1 mini GND
桥式整流器的两个交流输入端直接连接到电刷电机的端子上。
对于机器人24V版本,一个22kΩ的电阻可为光电耦合器内部LED提供安全的电流水平,同时确保可靠的检测。
固件使用以下配置:
状态检测逻辑很简单:
•刷子电机运行 → D5 = 低电平
•刷子电机停止 → D5 = 高电平
更新固件后,无需亲自靠近设备即可实时监控机器人的运行状态。
机器人的当前运行状态会显示在网页界面中,同时通过MQTT将相同信息发布到Home Assistant。这使得当清洁周期完成后能够接收通知,并围绕机器人运行建立各种自动化操作。
因此,原本需要持续人工监控的窗户清洁机器人变得高度自主。我不再每次都要跑过去检查清洁周期是否完成,或启动第二次清洁操作了。
附注:原装红外遥控器的全部功能均已保留。
本文编译自hackster.io





