一个以死亡搁浅Odradek装置为原型的智能台灯,台灯由5个单独的发光叶片组合而成,每个叶片拥有3个自由度,你可以随时调整需要的角度;台灯内部集成XIAO nRF52840 Sense蓝牙主控板和WS2812幻彩灯带,这意味着你可以通过手机APP控制它显示不同的颜色和亮度。
单调杂乱的桌面总是使人不能保持良好的心情,特别是在游戏中取得失败的对局之后。我总是会将原因归结在我的鼠标、键盘、猫咪或者光线上。为了让桌面看起来不那么单调,我还是决定做点什么,碰巧看到了Nils Kal分享的 Death Stranding Desk Lamp,这是一个很棒的模型,机械感十足,并且完美还原了死亡搁浅游戏的Odradek装置。我们没有什么理由拒绝制作这样一款炫酷的台灯。在仔细观察 Nils 的描述和照片后发现他仅仅是连接了普通的单色灯带,并通过一个拨动开关来控制它,这对于我来说显得过于单调了。所以我决定复刻 Death Stranding Desk Lamp的同时去改进它增加更多的功能和效果以便可以用在不同的场景和氛围。
演示视频:查看链接
首先我会选取可编程的彩色灯带来达到不同颜色和显示效果的作用,WS2812正是不错的选择,由于该项目难度较低,无需自己绘制PCB文件,所以只需要购买WS2812灯带即可。在主控制器方面,我选用Seeed Studio XIAO nRF52840 Sense开发板,这是一款带有蓝牙并且板载IMU和MIC的开发板,功能小巧,体积强大(不是)...
我可以通过TinyML训练自己的声音模型使它可以识别特定的关键词,这样我就可以通过语音控制灯的开关和不同的显示效果了。灯带和主控板是最核心的电子器件,当然台灯的主体离不开3D打印,我使用PLA材料打印了整体结构,如果你没有打印机也可以在附近的Work Shorp中寻求到帮助。
以下是详细的前期准备零件清单:
3D打印零件(PLA、ABS等常见材料即可) WS2812灯带 * 2米
XIAO nRF52840 Sense * 1
10mm船型拨动开关 *1
DC母座 * 1
导线 * 3.5m (应选用横截面积大于0.3mm²的导线,否则大电流通过会有加热和融化的安全风险)
TTP223芯片 * 1
5mm 5v 单色LED灯 * 1
5v 2.5A电源适配器 * 1
焊接工具
热熔胶
10* M3x4螺丝
15* M3x12 螺丝
5* M3x20 螺丝
21* M3 螺母
5* M4x20 螺丝
5* M4 螺母
首先我们根据图纸打印出所有3D零件,如果你使用与我一样的可编程彩灯,那么每个叶片会有3根导线(VCC,GND,SIG),原作者的零件只预留2根导线的连接孔,此时你需要下载我优化过后的零件,这样才能保证3根导线都能够顺利通过连接孔。当然你也可以选择不可编程的单色灯带,只需要电源即可驱动。
当你准备好所有的零件之后,让我们先来看一下整个作品工作逻辑和硬件连接,这可以帮助你后期进行调试和维护。
首先灯带的电源Pin并联接在主控板的电源Pin上,信号Pin分别接在D0-D4,由于XIAO nRF52840 Sense 带有多路引脚复用功能 所以我们可以将D0-D4定义为PWM使用,然后将TTP223接入D5引脚,然后读取改引脚的模拟量值就能判断触摸输入是否被按下。
TTP223芯片需要在GND和VCC之间连接一个100nF的电容,用于调整灵敏度,我使用0.1mm漆包线进行焊接,然后使用热熔胶进行保护和固定,这样占用体积可以非常小。
该TTP223电路来自于立创的开源作者:https://oshwhub.com/gameboy96/ttp223
然后按照3D打印零件的大小,重新裁剪和焊接灯带以便满足最大的显示面积,分别焊接完成5个灯带后,对所有灯带进行测试,确保所有灯都是正常的。注意此时灯带的预留导线应该大于20cm
测试演示:查看链接
然后将它们按照图片顺序组合在一起
此时最难的硬件部分已经完成了,接下来你可以玩一玩你的小猫咪,毕竟它是如此可爱。
bobo:查看链接
将5个叶片焊接完成并且组合在一起后,我们将按照硬件接线图,将正极和负极分别连接在一起,然后将信号线接在不同的引脚上,
这里我将TTP223触摸模块的输入引脚通过一根0.2mm黄铜丝连接在正面,然后输出引脚连接到主控板的D5引脚,这样就可以通过触摸“花蕊”来输入触摸信号完成不同的功能切换。
当硬件线路连接之后,我们需要开始编写软件为它注入灵魂了,否则它不会执行任何功能。
让我们从简单的地方开始,我们使用EDGE IMPUSE平台训练自己的TinyML 语音识别模型,请注册一个EDGE IMPUSE账号,参考Marcelo Rovai的优秀教程来训练自己的识别关键词,我使用“Bling Bling”和连续的2个响指声音以及普通室内的背景音,来作为关键词识别,训练自己的人工智能模型,首次训练的效果并不是很好,只有60%的识别成功率,这是因为我只是为每个标签输入了10个数据,并且由于是在深夜录制,我的声音必须很小,所以造成模型效果欠佳,在晚些时候我将会花费一些时间 在合适的场景录入更多的数据 以便提高语音识别关键词的准确性。(该部分将在晚些时候更新,应该吧?)
当训练完成一个比较满意的模型之后,我们可以将该模型导出为arduino library,使用library中默认的分类代码进行实际的准确度验证,验证无误后提取分类输出的关键函数用作主程序的中断输入。
然后我们进入到主程序,主程序由3个部分组成,
开机动画
触摸开关显示不同的灯效
手机APP远程控制
我已经将代码写完(像一座摇摇欲坠的纸牌屋)你可以在文章底部找到有关文件,
需要注意的是在这个项目中,我使用19+19+17+17+14=86颗灯珠,每个灯珠正常消耗电流为20mA,所以请准备至少5v 2A的电源适配器,否则在上传程序之后,台灯显示效果可能会不正常。上传完成代码之后请进行进一步的测试确保功能正常可用。
程序的功能是:当开机时,台灯将会变幻一次彩虹色,然后保持冷白色常亮;当触摸开关被触碰时,台灯将持续显示彩虹色(非常适合用来蹦迪跳舞),
查看链接
然后蓝牙遥控功能,你可以下载Bluefruit Connect 手机软件进行蓝牙配对和连接,
然后选择neopixel就可以对单个灯珠进行控制颜色,在nodepad里面可以对全部灯珠进行颜色控制
Color picker在controller选项中
当验证功能一切正常,我们就可以将它们组合起来了,使用m3*20mm 螺丝与螺母将底座进行固定,详细的组装文件请参考文章后面提供的文件。
然后将灯柱与台灯主体进行固定,并且正确焊接DC插座。
完成以上步骤之后,你可以将台灯固定在自己的桌面上,开始玩耍把!
功能演示:查看链接
以上内容已经全部开源 下载地址:查看链接
该下载链接用的是亚马逊云 可能需要
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持