在这个圣诞夜给房子装疯狂灯光动画系统

2019-12-251.1万
精华项目
AI 快速预览详细 收起
在这个项目中,作者介绍了如何使用MIDI和Raspberry Pi来创建一个圣诞夜灯光动画系统。硬件清单包括Raspberry Pi 2 Model B、固态继电器、PCF8574等。软件方面,使用了Ardour和loopMIDI。通过MIDI to Orchestrator bridge,可以将MIDI事件映射到多个输出,并通过UDP协议发送给电控箱。最终效果是通过LED灯带实现动态灯光效果,为圣诞节增添氛围。


基于MIDI、Raspberry Pi的圣诞小屋

在这个圣诞夜给房子装疯狂灯光动画系统图14

硬件清单

  • Raspberry Pi 2 Model B x 1

  • 固态继电器 × 32
    (PF240D25 -  SSR, 3-15VDC, 12-280VAC, 25A)      

  • PCF8574 × 4  

  • 12V / 1,25A电源 × 1
    *(MW DR-15-12 Schaltnetzteil, Hutschiene)

  • 5V / 2,4A电源 × 1
    (MW DR-15-5 Schaltnetzteil, Hutschiene)

软件清单

规划

下图用白色线条标注了LED灯带的位置。在项目的这一阶段,统计了装置需要的电源输出口共52个,每个灯带都需要配置对应的电源;同时还需要测量房屋,窗户等的尺寸。

旁白:大户人家呀,在这个图里我第一眼看到的是一栋大别野和三辆车车。

在这个圣诞夜给房子装疯狂灯光动画系统图1

注意:电网连着千万家,安全系着你我他,安全用电意识不可少。使用230V极为危险!切勿在面包板上使用230V。以下草图仅供参考!电路的安装需要专业电工来进行!

每条LED灯带都通过一个配电器进行控制,配电器内部带有DIN导轨。这个装置用到了来自CCTools(http://cctools.eu) 的板子,其中包含所需的固态继电器、电阻和用于保护继电器的元件。继电器需要一个5V的端口扩展板。CCTools的MAX7311端口扩展板,带有16个GPIO。可以将端口扩展芯片放在DIN导轨上,并通过螺钉连接电缆

下图显示了整个电路。草图显示了PCF8574 ,它是具有8个GPIO的端口扩展芯片。两者工作原理相同。
在这个圣诞夜给房子装疯狂灯光动画系统图2

注释

DIN导轨:德国工业标准,使用导轨是工业电气元器件的一种安装方式
GPIO(英语:General-purpose input/output),通用型之输入输出的简称
PCF857是CMOS电路

一开始费解了好久CCTools的板子到底是什么,在把这个网站点了一遍之后大概知道了,下图电控箱里面除了树莓派以外绿色的板子应该都是这个牌子的。找了几个看着像的作为参考(在图片里都能找到):
[HSRel5 - I²C-Bus-Relaisplatine]
HSRel8(+8) - 8fach-Relaisplatine

下图为电控箱:
在这个圣诞夜给房子装疯狂灯光动画系统图7

电控箱包含常规继电器(12V,橙色)和固态继电器(5V,黑色)。固态继电器的最大功率只有200W,因此需要更高的功率时需要使用常规继电器,但缺点是不能快速切换。Raspberry Pi 2位于左下方。

电控箱使用基于(headless模式下的)UWP的应用,用以接收专用接口上的UDP数据包。每个UDP包都包含一个前缀和所有输出的当前状态。因此,数据包不可能仅发送一次。但电控箱在处理UDP包时会自动忽略其余数据包。这意味着不会因为数据包排队而造成阻塞。这样可以确保发送大量事件不会造成延迟。

注释

headless模式:Headless模式是在缺少显示屏、键盘或者鼠标时的系统配置
UDP数据包:UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包。

MIDI 音频编辑器

推荐以下MIDI音频编辑器(Ardour: https://ardour.org),物美价廉,物超所值。Ardor是一款录音软件。因此,需要连接一个MIDI设备用来录制声音。然后,在点击播放时,按下的音符将发送到MIDI输出设备。以下屏幕显示了运行中的Ardor:

在这个圣诞夜给房子装疯狂灯光动画系统图3

屏幕上显示了歌曲“ Silent Night”的已加载项。有多个带有不同种类动画的MIDI音轨。它们已经通过MIDI键盘演奏并输入了精确的节奏和旋律。

MIDI to Orchestrator bridge

该虚拟MIDI输出设备称为“ MIDI 2 Orchestrator Bridge”(以下称为“bridge”),也是该项目的一部分,并包含在GIT库中。它具有以下功能:

  • 将传入的MIDI事件(例如“NoteOn(打开)”或“ NoteOff(关闭)”)映射到多个输出
  • 通过UDP协议发送电控箱的完整状态
  • 提供一个界面仿真器,以允许远程控制
  • 显示调试信息,例如日志和当前功耗
  • 允许手动启用或禁用任一输出
  • 显示每个输出的实际状态
  • 显示从Ardor传入的信息

以下屏幕显示了具有上述功能的Orchestrator Bridge:

在这个圣诞夜给房子装疯狂灯光动画系统图4
在这个圣诞夜给房子装疯狂灯光动画系统图8
在这个圣诞夜给房子装疯狂灯光动画系统图9
在这个圣诞夜给房子装疯狂灯光动画系统图10
在这个圣诞夜给房子装疯狂灯光动画系统图11

仿真器的布局(右上)与实际屋子上安装的灯带位置相同。这样就可以在不看房子的情况下录制动画。当播放动画时,bridge将通过UDP将其转发给电控箱。右下角有一个复选框可启用或禁用此功能。

最重要的功能是创建“Mappings(映射)”。这些映射将音符与输出连接起来。映射包含音符和被音符激活的输出的列表。输出会被关闭直到释放音符为止。也可以选择一个通道来创建许多映射,而无需大量按键。

NAudio库文件下载(https://naudio.codeplex.com
下载附件restup-master.zip

loopMIDI

这个装置会需要用到一个特殊的工具'loopMIDI'(http://www.tobias-erichsen.de/software/loopmidi.html) 这个工具可以在本地PC上创建一个虚拟的MIDI回环端口。需要此端口才能将Ardor与“bridge”连接在一起。“bridge”并未创建新的虚拟MIDI端口。这意味着Ardor和“bridge”通过相同的循环端口连接,并发送和接收事件。
下载附件NAudio-master.zip

数据流图

下面的图片中是这个装置中所需组件的连接方式。
在这个圣诞夜给房子装疯狂灯光动画系统图5

效果

因为大部分使用的是LED灯带,并没有防水的功能。为了安全起见,需要将他们安装在了安全的地方。但也会用到一些LED灯珠。每一条灯带都单独接了230v的电缆,这些电缆通向屋子后面的电控箱。夜里,当所有灯带被打开的时候,看上去是下面这样:

在这个圣诞夜给房子装疯狂灯光动画系统图6

还有一个应用程序(基于HTML,JavaScript)可以手动打开和关闭所有灯。该应用程序还使用库“ restup”(https://github.com/tomkuijsten/restup )托管在树莓派上。

尺寸布局图

在这个圣诞夜给房子装疯狂灯光动画系统图12

项目进行时的照片

在这个圣诞夜给房子装疯狂灯光动画系统图13
图片太多上传到了相册里:点击查看

视频演示






项目制作者:Christian Kratky
本文未经许可不得转载

LightPi-master.zip

978.16 KB, 下载次数: 6220

Schematics.zip

276.08 KB, 下载次数: 6299

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(9)
kylinpoet
kylinpoet
楼主强大,多谢分享。
虚无缥缈
虚无缥缈
有趣!
changgg
changgg
好好看
wwwdelphi
wwwdelphi
大工程,厉害的大神!
Nicholas
Nicholas
这个是大神
星穆
星穆
大佬可以教教我嘛,我实在是太喜欢这个了
DFr1s6yUMyU
DFr1s6yUMyU
厉害,真不错!
Llllllambt
Llllllambt
看着很有趣
DFrJ5KYVQaH
DFrJ5KYVQaH
工程量很大哦
- 没有更多了 -