AI 助力改造非智能升降桌:智能升降、语音控制、多端联动……
内容提要
作者改造自家非智能升降桌,用ESP32-S3模拟原厂I²C协议实现智能控制。通过抓包解析键码,解决上拉电阻和软件I²C不稳定问题,最终用硬件I²C加ToF传感器测高。实现Web、手机、手表、键盘、旋钮、语音等多端控制,并加入童锁、番茄钟等功能。
延伸解读
改造前先确认协议兼容性
文章强调,不同品牌、批次升降桌的通信协议可能不同,Upsy Desky 等开源方案不一定适配。作者通过拆解面板、识别 TM1650 芯片和逻辑分析仪抓包,才确认了自家桌子的 I²C 协议。因此,动手改造前,务必先确认自家控制面板的线序和协议,否则可能无法直接复用现有方案。
硬件 I²C 与软件 I²C 的取舍
作者最初尝试用软件 I²C 同时响应多个地址,以读取高度数据,但导致升降过程中频繁中断,完成率仅约 5%。最终放弃该方案,退回硬件 I²C 只处理按键,高度改用 ToF 传感器测量。这提醒我们,在涉及安全控制的场景中,稳定性和可靠性远比功能丰富更重要。
安全机制不可忽视
作者特别指出,改造后的童锁和 ToF 保护不能替代原厂安全认证,紧急情况应使用 STOP、原厂面板或直接断电。此外,文章提到原厂面板无童锁和障碍检测,存在安全隐患。因此,在 DIY 智能家居设备时,务必考虑安全冗余,避免因功能改造而引入新的风险。
Q&A
如何将非智能升降桌改造成智能升降桌?
作者通过ESP32-S3模拟原厂控制面板的I²C协议,抓包解析键码,并添加2kΩ上拉电阻解决通信问题,实现了智能控制。同时接入Web、手机、手表、键盘、旋钮、语音等多端控制,并加入童锁、番茄钟等功能。
为什么ESP32-S3模拟原厂面板后升降桌没有反应?
因为原厂面板上有上拉电阻,拔掉面板后总线缺少上拉,导致控制盒无法读取稳定的高电平。解决方法是在CLK和DAT线上各接一个2kΩ电阻到3.3V。
如何获取原厂升降桌的I²C通信协议?
使用逻辑分析仪连接控制面板的GND、CLK、DAT测试点,采样率设为12MHz,抓取静置、按键等状态的数据,解析出键码和地址。例如,空闲键码为0x2E,上升为0x47,下降为0x4F。
为什么软件I²C方案会导致升降桌运动中断?
软件I²C在中断中处理时序,容易受到干扰,导致响应不完整,完成率仅约5%,控制盒无法持续读取键码,因此运动中断。最终放弃软件I²C,改用硬件I²C Slave只响应0x24地址,高度改用ToF传感器测量。
如何实现升降桌的高度测量?
使用TOF400C(VL53L1X)传感器垂直朝下测量桌面到地面的距离,作为高度数据。同时使用TOF050C(VL6180X)水平朝右测量与障碍物的距离,用于低位上升保护。
升降桌支持哪些控制方式?
支持局域网Web、REST API、手机App(BLE优先)、Apple Watch(Digital Crown)、键盘快捷键、桌面旋钮、GoatRemote语音、小智AI语音、优篮子D200H实体键,以及原厂面板(通过双口RJ45透传)。
童锁功能是如何实现的?
童锁功能由ESP32固件实现,全局童锁开启后,除STOP和解除童锁外,所有来源(REST、蓝牙、原厂面板)都不能启动或维持运动。还支持自动童锁,通过授权手机每30秒发送Presence,断连3分钟后自动锁定。
如何通过语音控制升降桌?
通过小智AI硬件(JC3636W518C)或GoatRemote,语音指令经小智云智能体上的MCP工具,再通过Mac上的桥接程序调用局域网REST API,实现固定动作如坐姿、站姿、停止等。