中二点 发表于 2019-12-25 11:29:38

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

https://makelogimg.dfrobot.com.cn/liEuQdaCgF6XncgrbveYY9k7iD-E?imageView2/2/w/1600

## 基于MIDI、Raspberry Pi的圣诞小屋



### 硬件清单
* **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)*

### 软件清单
* (https://docs.microsoft.com/zh-cn/windows/iot-core/downloads)
* (https://ardour.org/)
* (https://visualstudio.microsoft.com/vs/older-downloads/)
* (https://www.tobias-erichsen.de/software/loopmidi.html)

### 规划
下图用白色线条标注了LED灯带的位置。在项目的这一阶段,统计了装置需要的电源输出口共52个,每个灯带都需要配置对应的电源;同时还需要测量房屋,窗户等的尺寸。
>旁白:大户人家呀,在这个图里我第一眼看到的是一栋大别野和三辆车车。



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

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

下图显示了整个电路。草图显示了PCF8574 ,它是具有8个GPIO的端口扩展芯片。两者工作原理相同。


> **注释**
   
    DIN导轨:德国工业标准,使用导轨是工业电气元器件的一种安装方式
    GPIO(英语:General-purpose input/output),通用型之输入输出的简称
    PCF857是CMOS电路
> 一开始费解了好久CCTools的板子到底是什么,在把这个网站点了一遍之后大概知道了,下图电控箱里面除了树莓派以外绿色的板子应该都是这个牌子的。找了几个看着像的作为参考(在图片里都能找到):
> [(http://cctools.eu/ext_index.php/artikel/1805)]
> (http://cctools.eu/ext_index.php/artikel/1818)

下图为电控箱:



电控箱包含常规继电器(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:



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

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

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

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







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

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

NAudio库文件下载((https://naudio.codeplex.com) )



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


### 数据流图
下面的图片中是这个装置中所需组件的连接方式。


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



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

### 尺寸布局图


### 项目进行时的照片

图片太多上传到了相册里:[点击查看](https://mc.dfrobot.com.cn/home.php?mod=space&uid=822044&do=album&id=468)
### 视频演示
https://v.qq.com/x/page/a3040a20p1j.html

https://v.qq.com/x/page/h3040ef35mv.html

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

DFrJ5KYVQaH 发表于 2019-12-26 07:06:32

工程量很大哦

Llllllambt 发表于 2019-12-26 18:00:55

{:5_116:}看着很有趣

DFr1s6yUMyU 发表于 2019-12-27 21:18:50

中二点 发表于 2019-12-25 11:29
## 基于MIDI、Raspberry Pi的圣诞小屋




厉害,真不错!

星穆 发表于 2019-12-27 21:37:28

大佬可以教教我嘛,我实在是太喜欢这个了

Nicholas 发表于 2020-1-2 03:45:11

这个是大神

wwwdelphi 发表于 2020-1-4 14:53:16

大工程,厉害的大神!

changgg 发表于 2020-1-18 14:12:55

好好看{:6_209:}

虚无缥缈 发表于 2020-1-19 20:51:45

有趣!{:5_190:}

kylinpoet 发表于 2020-2-18 18:33:15

楼主强大,多谢分享。
页: [1]
查看完整版本: 在这个圣诞夜给房子装疯狂灯光动画系统