AI 助力改造非智能升降桌:智能升降、语音控制、多端联动……

💡 原文中文,约24200字,阅读约需58分钟。
📝

内容提要

作者改造自家非智能升降桌,用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,实现固定动作如坐姿、站姿、停止等。

🏷️

标签

➡️

继续阅读