用时一个月DIY全网首个全设备联动模块化增高架~
之前用木板做了个显示器增高架,用来摆放智能音箱等设备,用了几个月觉得一点都不好玩,没有科技感,于是决定复刻一套B站大佬的3D打印模块化增高架。这个项目还挺火的,跟风的人不少。仔细研究后发现这些增高架只是简单的把部件堆上去,于是我自己用ESP32开发板做了一套全联动的增高架,实现了所有设备互通互联,实用性更高,以下是我的打造过程分享,文章写得较详细,可以给正准备做此类增高架的朋友作参考。

一、模块打造过程
从硬件到软件,整整折腾了一个月时间,整个过程可以说是相当不容易,踩了不少坑,也学到很经验,复盘一下整个打造过程吧。
增高架是模块化的,每个人可以根据自己的需求使用对应的模块,开工前我先确认了用到的模块,如下图,一共9个模块,保证每一个模块都是经常要用到的,不浪费空间:

光轴底座
这套增高架最早的创意是来自'有计划的P',但他设计的那些模块大多数人都用不到,我也是只用到了他的光轴底座。如图,用3D打印机把两个底座打出来,然后买了4根12mm直径、1米长度的光轴(升降桌总长1.2米),1米光轴10元一根,基本框架就成型了。

模块9:220V智能插座
按模块从右到左的顺序说起。
第9个模块是最简单的国标220v五孔插座,实际上就是装了一个带线圆孔插座,成本15元,用的是社区现有的模块,算是最简单的模块。然后把插头接在智能插座上,实现了"智能",设置成旁边的智能开关长按操作。这个插座还是有一定用处的,因为插线板在桌子最里面,现在需要调试设备之类的可以直接插在增高架上操作。

模块8:智能开关+手电充电模块
模块8是我打的第二个模块,也是第一个踩坑的模块。一开始是找的社区现有模块,正好我手上有同样的智能开关就直接用了,结果这个模块只是个半成品,开关两边的壁太薄了,一碰就会裂,且侧面都没有做平,估计是用其他模块改的。

无奈只好自己建模了,我也是刚学建模不久,这些模块看似简单实则是巨大的挑战,花了不少时间。这个模块主要用来安装带温湿度计的KS2智能开关,由于我的电脑在桌子下的缘故(转角处最里面),一直用智能开关开机,避免弯腰去按(实现方法是电脑和音响显示器都插在智能插线板上,BIOS设置通电开机,关机后插线板低功耗给所有设备延迟断电),挺实用的。
建模后发现一整个模块就装一个十几元的智能开关有点单调且浪费,于是想到我是手电爱好者,在模块上方开了个孔,平时把手电放进去就可以自动充电,这也太方便了吧~

孔里安装了傲雷的MCC磁吸充电器,傲雷手电的磁吸充电都是通用的,实测手上的探索家和baton系列都能用,平时拿取也方便。

模块7和模块6:智能充电器+伸缩线
我这样的数码玩家手上的设备不是一般的多,随时需要充电,所以在增高架上内置一个充电器是最实用的功能之一了。这里用酷泰科10号Ultra的原因是它可以接入米家,和增高架上的其他设备互动;二是手上正好有,不用额外花成本。
这两个模块也是都分别打印了两次,第一次是找的充电器模块太粗糙了,第二次是社区现有的伸缩线模块是100W的,我买的是66W的,66W的尺寸不一样,装上去两边有很宽的缝,于是只好自己建模搞定。这个酷泰科充电器单口100W超级烫且会很快降功率,3个口做100W完全没必要:

模块背面如图,用了一条插头延长线连接酷泰科充电器,预留了风扇开口,以后还可以加装风扇,目前用了一段时间感觉没必要,增高架充的都是一些功率不是太高的设备。10元一个的磁吸充电线买了3个,挺方便的,平时拉出来就能充,用完收回去让桌面不那么乱。

模块5:扩展预留,收纳
模块5位于ESP32开发板的旁边,最早的想法是做成扩展预留,因为esp32有扩展接口,到时可以开发出像指纹解锁、安装传感器和外置开关旋钮等功能。目前是打印了一个上下收纳模块,红色的收纳仓是可以拆卸的,暂时可以用来放置物品,以后万一需要给ESP32扩展功能了,把收纳仓拿掉,打印一个面板放上去就OK了:

模块4:核心组件,ESP32开发板
之前说过其他人类似增高架虽然堆砌了不少高科技产品,但他们都无法实现互联互动互补,于是想起之前不是自己做过3D打印机监控屏吗,灵感一下就来了,用ESP32开发板做了个控制面板+服务器,用于控制其他设备、与其他设备进行联动,并且为他们提供数据,当然固件得自己写(具体有哪些功能,如何实现后边有介绍),3D打印模型也是独家,得自己建模,光这个模块就花了整整二十天时间。

开发板型号是ES3C28P,集成乐鑫的ESP32-S3芯片,带一片2.8寸电容触摸屏,240X320分辨率,驱动ILI9341V,价格58元。芯片规格是240MHz双核,512KB内存,16MB FLASH,有蓝牙和wifi。买的时候觉得512K内存能完全应付我的需求,就没有买带8M内存的ESP32-S3-N16R8,主要是带屏幕的N16R8要一百出头。

等我写固件的时候才发现512KB内存实在太少了,无法独立实现米家云桥的功能,大部分时间都在优化内存。(抄作业的伙伴只能买同款哈,否则要自己写固件了)。开发板安装不需要折腾,在模块上植入热熔螺母,盖上去拧好螺丝、插上USB-C数据线就好了。

模块3:国产StreamDock控制器
模块3是一块国产StreamDock控制器,我这里用的是妙联宝N3,有6个按键,3个旋钮,按键同时是个小显示屏,比如可以用来玩游戏时显示GPU温度等等,也可以分配各种快捷操作。社区里同款增高架用的最多的是黑爵AKP153,按键更多,本来我原本也是用这款的,正好也刷到了特价,结果小伙伴说让我先帮他买,买完之后特价没了,恢复原价,不让价(299元),无奈我只好跑小黄鱼买了这款妙联宝N3,是全新的,只花了150,剩下的钱还能买个副屏。

后来我研究了官方的开发文档,发现这款有旋钮的更适合我,试着学写了妙联宝的插件后,实现了HomeAssistant和米家双平台接入,它的旋钮可以控制旁边没有触摸的副屏,至于6个按键太少的问题,则可以让右边的ESP32来补充。
模块2:电脑副屏
副屏最要用来显示电脑CPU、GPU参数和状态,原本是计划用ESP32做的,但考虑到ESP32有更重要的工作,就单独买了一片乔思伯DS339。选它的原因是我看社区他们用的这种3.5寸大小的屏分辨率才400多,多多上要卖七八十,乔思伯DS339分辨率960X376,价格也是80多,为啥还要买那些小作坊产品?结果后来也是给它折腾得够呛的。

第一坑就是它页面写着规格90X35X11,还没到货之前我就按这个规格建模打印出来了(想着一个大厂不可能连尺寸都量不准吧),到货一看卡不进去?把侧边削掉一些后强行卡入,直接把模型都撑裂了,一开始我还以为打印出了问题,用卡尺一量才发现实际长度是长91mm...直接想锤人,成本不高但打一次要好几小时啊。

这些都是小事了,最坑的是它是一个USB接口的副屏,不是真正的显示屏,需要用自己的软件驱动,买之前都清楚了。谁能想到它自带的软件平时CPU占用率经常能达到10%-15%,看着不多,可我是i7-12700处理器啊?最后决定放弃的时候,想到有没有可能自己给它写个软件替代官方软件?研究了几天真的成功了咯,如前一张图,运行的是ESP32提供的3D打印监控画面,且配合esp32或者妙联宝,想显示什么就显示什么,CPU占用忽略不计~

模块1:USB扩展坞
最左侧是USB扩展坞,电脑主机在桌子下方,没有扩展坞就很难受,所以做增高架肯定要把它集成进去。我想把之前Steamdeck用的扩展坞拿来继续用,当初要三百块呢,社区没有同款,也是只能自己建模。这个扩展坞正面接口全是5G带宽的,好处是有个读卡器,可以直接插卡;背面有10G带宽USB但接口不实用。下边留了一个HDMI接口,有时接小屏幕测试可以用得到;右边是从其他模型上copy了一些存储槽,读卡器用完直接塞里面放着,避免乱放找不到:

买了一条1.5米长的USB-C全功能延长线连接电脑和扩展坞,用移动固态硬盘实测速度能达到900多M,损耗极小,这么长时间测试也很稳定:

这个模型也是折腾得够呛的,刚学建模没有经验,加上扩展坞边缘是不规则圆弧斜面,反复建模打印了四次都不完美,直到最后一次才想起,测试时切一一小片就行了啊,这样十几克料就能测出是否复合了,不需要全部打印,我这脑袋瓜子咋一下没转过来?

至此硬件部分算是完成了,打废的和用于测试的模型一大堆,大概浪费了3卷料,60块钱没了。不过看到成品还是很欣慰的。

二、模块功能和联动逻辑
接下来逐一介绍下我是如何实现联动的。
1.ESP32固件
esp32开发板是我这套增高架实现联动的核心,所有数据都是由ESP32采集推送,保证电脑关机后也能正常运作,同时按照标准模块化设计,没有的设备、用不到的页面可以在设置页关闭,能实现联动但不互相影响,没有了哪个设备都能照常工作。
主页看起来很紧凑,上方有时钟、日期和天气信息,下方是两个可自由设置的卡片,可以设置成经常需要关注的页面,下边介绍的所有页面都可以设置成卡片,比如我图片上分别是NAS信息和路由器状态。整个界面不包含任何图形元素,主要原因是个人不擅长UI设计,且这块ESP32只有512KB内存,16M FLASH,目前FLASH已经用到95%了,所以中文支持也没有加入,ESP没有内置中文字型,连℃符号都是我用画的点和C代替的。英文不好的也没事,打开同步模式看一下旁边副屏或者妙联宝同步的中文内容就行了。

我之前单独做过NAS监控屏和3D打印监控屏,目前是集于ESP32一身了。我现在有3台NAS服务器,可以在ESP32里添加3台NAS用于监控他们的实时工作状态,有些朋友可能对数据不敏感,比如之前我刚DIY的飞牛云散热没做好,死机两天了都不知道,现在不管是上班还是打瓦瞄一眼就清楚了。NAS监控数据源来自于NAS Docker安装的Netdata容器,几乎不消耗资源。

电脑监控界面和NAS差不多,可以分别显示CPU、和GPU占用率以及温度,GPU风扇转速、内存等关键信息,固件里设置了两种信息采集模式,一种是用Aida64软件的RemoteSensor,另一种是自己写的副屏客户端读取推送。

3D打印监控是刚需中的刚需,主要是我的打印机在阳台,虽说手机也能看打印信息,但有时候会忘记,像卡料的时候没有第一时间去换料就会产生冷却纹、打印完成了几小时都忘记了之类的事经常发生。放个监控屏在桌子上就不一样了,随时瞄一眼就知道了。数据是来自于拓竹云MQTT,可以实时获取打印进度、热床和喷嘴温度、预计完成时间以及AMS信息。

接下来是路由器界面,对的,路由器也加入了。如图,可以实时查看路由器上下行速率、设备连接数量,可以设置6个关注设备,实时得知它们的信号、是否在线以及网络类型,还可以进行测速、重启wifi、重启路由器等操作。

ESP32的路由器界面太紧凑了,可能会忘记哪个IP是谁,这时用副屏来显示信息就更丰富了,IP前可以显示用户自定义名称,这个名称是在路由器的DHCP绑定页面获取的。路由器页面数据获取需要支持LuCI路由器,比如大多数小米路由器。

我发现酷泰科10号Ultra充电器是通过蓝牙BLE链接的,而ESP32正好内置蓝牙,所以就为充电器做了个页面,采用蓝牙直连,不需要经过任何中转。有的朋友肯定会说充电器也自带屏幕啊,你这么做这个意义何在?用过的都知道,酷泰科的屏幕不是触摸屏,他的屏只能看不能操作。我这个界面正好对应做的3条伸缩线,可以实时显示充电功率等信息,除此之外点击哪个口就能开/关该口,点击下面的时钟图标可以设置延时关闭时间,是不是比充电器方便很多?直接拔线不好吗?这个问题我就不用解释了吧。

以上功能都是ESP全部可以独立完成的,不需要转接,但我既然有24小时不关机的NAS,又是全屋智能,肯定少不了Home Assistant,于是还设计了HA控制界面,设置了6个按钮用于快捷开灯、开窗帘等设置,只需要在配置页填入实体ID就行了,响应很快。与妙联宝同步的话还可以用实体按键控制,嫌ESP32界面土的话配合副屏就是另一种效果了。

顺带提一下,ESP32这样的设计以后可以往陆续向其他外围设备扩展,比如我手上有个张大妈送的墨水屏,叫DOT拓点,看了一下它的API之后(还有实例),很简单就实现了把ESP32的指定内容推送到墨水屏上,如下图就是推送的主页内容(就这个主页比它内置的信息更丰富),也可以推送3D打印机等ESP32上的任何内容。除了玩之外,还是有点用途,比如我ESP32是固定在增高架上的拿不走对吧,我去书房休息下的时候也可以拿走监控打印状态。

2.同步逻辑和独立显示
介绍完esp32之后,发现esp32虽然功能很多,但像我设备多,要来回切换不是很方便怎么办?所以就需要和增高架上的设备联动了。目前有两种方式:
同步联动:
ESP32、妙联宝、副屏都同步显示同一个页面,可以解决ESP32分辨率低、没有中文的问题,妙联宝和副屏UI是重新设计的;同时妙联宝有实体按键,大部分功能可以通过妙联宝实体按键控制,页面可以在妙联宝或者ESP32上进行切换。如图三个设备均显示飞牛NAS页面:

独立运行:
这个模式更实用,设置为独立显示模式后,副屏、妙联宝、ESP32可以分别显示不同的内容,比如同时监控一台NAS、一台3D打印机和一台电脑,或者是两台设备用于监控,妙联宝或者ESP32用于智能控制等等。如图三个设备分别显示HomeAssistan、群晖NAS、酷泰科充电器:

3.妙联宝插件
妙联宝N3有3个带屏幕的按键、3个实体按键以及3个旋钮,都是可以分配的,然后我看了一下官方的插件开发说明,也不难,为了实现同步就给它写了个和ESP32互联的插件,让它和ESP32互补对方的不足,同时也可以给没有触摸屏的副屏提供了页面切换功能。如图,我给妙联宝的第一个按键设置为页面名称和切换,另外5个分配为对应的参数或者控制,大旋钮用来调整ESP32的亮度,一个小旋钮用来切换副屏页面,一个按键用来切换同步/不同步方式:

把ESP32用作妙联宝扩展屏的时候,同样也给ESP32分配了6个触摸键,可以分配各种像打开网页、打开软件、快速锁定电脑、切换桌面、操作智能设备等等功能,智能控制方面同时支持米家和Home Assistant。

4.DS339副屏
之前说过这块副屏没有价值,想放弃的时候,在Github尝试搜索了一下,突然发现有个开源项目,可以让这个副屏显示歌词,研究了一下发现其实现方法是使用官方API,但这个官方API之前是找不到的,官方API虽然只提供了把960x376的BGRA帧送进USB副屏的方法,但通过自己研究、做内容渲染,终于实现了自定义内容推流,完美替代鸡肋的官方主题,实现了和其他设备互动。

利用副屏分辨率高的优势,可以在显示智能控制页面时增加更多参数和信息,比如增加了快递信息推送、电费余额等等,除此之外为保持架构不变,其他功能的数据都是来自ESP32开发板推送。

利用副屏的优势,还多做了两个副屏专属页面,包括扩展坞信息和增高架总览,其中扩展坞信息算是实现了增高架上所有带电的设备全互联,读取扩展坞对应接口的信息,比如插入存储卡时,能获取存储卡的信息,包括volume名和容量。这个功能确实没有什么用处,算是做着玩的。

三、写在最后
目前就更新到这里吧,过两天会上传用到的3D打印模型以及固件,欢迎提意见、吐槽。

校验提示文案
校验提示文案