自制一款可编程、可自定义的桌面灯具:通过添加小型磁性模块,可实现无限功能
灵感源自真实空间站如何通过磁性连接器组装并扩展组件以满足需求,我正在尝试打造一个可编程的桌面装置。但SateLight不仅仅是一盏普通的台灯,它四周配有磁性接口,你可以通过传感器、灯光、机械部件和装饰元素不断扩展,打造出各种独特或奇思妙想的微型太空站组合。
其扩展能力近乎无限:温度读数显示、LCD模块展示数据、触摸控制,以及各种创意装置都可以借助这套系统,让这个项目成为你自己的专属作品!磁性接口能够轻松穿过所有必要线路(5V电源、地线、I2C_SDA、I2C_SCL)。
这款小巧设备的未来潜力巨大。以ESP32为核心,可以构建一个本地运行的网页界面,用于设置灯光模式、查看传感器数据、生成图表、创建自动化程序,甚至更多功能。可能性无穷无尽。
挑战:想象一下,你能为这个项目加入哪些最疯狂的模块?
详情
我一直喜欢制作那些外观和交互性比单纯功能更重要的电子设备。
与其设计一个单一用途的智能灯,我更想尝试开发一个可自定义的桌面版本,通过软件和硬件不断进化。
这个项目的核心是ESP32芯片。此外,还可以使用其他互补的I2C模块来实现环境和用户输入的感知。长远目标是打造一个模块化的物理平台,能够连接多种不同硬件,从而扩展设备的功能。
基础设备本身可以作为小型氛围灯使用,但通过添加额外模块,还能赋予它完全不同的功能。
概念验证
这个项目的最初阶段,源于我对“SateLight——天花板灯”项目中一条评论的回忆:有人建议加入互锁模块,以构建空间站的不同配置。然而,很少有人希望整颗卫星悬挂在天花板上,而且添加模块不仅是一次性的工程,还可能带来平衡问题。
与此同时,我在办公室里正在处理一些1-Wire传感器的接口问题。在固件中,我设计了一种复杂的热插拔方式,用于向系统添加或移除传感器。系统可以定期检测到这些传感器,并根据需要将其加入或从日志中移除。
传感器时而出现,时而消失,模块之间相互连接。这时我灵机一动:为什么不打造一个模块化系统,让你自己组装SateLight设备呢?而且体积更小,操作更方便。
但如何让这个系统真正满足需求呢?还记得那些智能手机用的磁吸充电线吗?它们确实很酷、可重复使用,且安装非常牢固。
我清楚自己的目标。
我买了一些带4个针脚的圆形磁性连接器,测试它们能承受多大的重量。我担心剪切力会毁掉整个项目,但出乎意料的是,制造商已经通过特殊几何结构解决了这个问题。经过使用3D打印机制作了几个磁铁支架和测试装置,并反复试验后,我发现这些磁性连接器完全可以轻松固定轻量电子模块。
激动之下,我坐下来设计了这个项目的第一个机身版本——一个简单的圆柱形外壳,用来固定连接器,并开始测试是否能通过它们传输数据。
经过费力地将磁铁的电线连接到ESP(同时烧了一些LED和一个ESP)后,我成功控制了一条Neo-pixel灯带。
第二天尝试从我用Arduino Nano和光敏电阻自制的定制1-Wire传感器获取一些灯光数据,这次也取得了成功。
终于,我可以认真投入这个项目了。
退后一步
在用塑料拼凑出一个简陋的原型,加上一些自定义模块和焊接后,我终于有了继续制作外壳和PCB电路板设计所需的证据。
然而,我心里一直有个困扰。起初,我打算使用5针接口来传输电源、I2C和NeoPixel数据,但遗憾的是,似乎这种产品并不存在。于是,我决定改用电源、单总线(1-Wire)和NeoPixel来替代。
接下来几天,我完成了第一个自制单总线光感传感器的电路图和设计:一个Arduino Nano搭配LDR(光敏电阻)与ESP通信。不过,我正试图通过开发复杂的自制传感器库以及使用一些人们可能不熟悉的稀有硬件,将项目与社区隔离开来。
因此,必须做出重大调整。
经过一番思考,我最终决定简化LED模块,而不是让所有想参与这个项目的人感到挑战。我重新整理了所有PCB设计,并用手中现有的Arduino Nano和一条NeoPixel灯带,搭建了一个小型空气回路。
经过一些编码后,ESP可以控制LED灯带的亮灭。但由于I2C转SK6812 RGBW桥接器只能控制普通的RGB Neo-pixels,颜色会随机变化。然而,由于LED始终显示相同的颜色,并且能够正常渐变,这一小规模原型最终得以稳定运行。
在集成温度湿度I2C传感器之后,重新设计的时机也到了。
本文编译自hackster.io





