在物联网的时代,有很多平凡的项目可以通过添加互联网连接变得更有趣。LED照明就是一个这样的例子。有各种预制的商业解决方案,例如Philips Hue。其中大多数使用Zigbee无线协议,需要设备和WiFi路由器之间的额外网关。该项目使用粒子光子实现了一个纯基于WiFi的系统。光子可以直接连接到家庭WiFi网络,无需网关。Blynk用于创建可在Android和iOS设备上使用的自定义远程。
本项目的目标包括:
- 创建一个可以通过WiFi从智能手机控制的RGB LED控制器。
- 具有多种效果模式,如呼吸、变色等。
- 能够将LED的闪烁与附近音乐源的音乐同步。
所需资源
- Particle Dev IDE 2-云版本Particle Build 1 也可以工作,但我发现使用桌面版本更容易。【https://www.particle.io/blog/,https://login.particle.io/login?redirect=https://build.particle.io/build/new】
- Blynk App 【https://blynk.io/】
- LED-Controller-Source.zip -包括KiCad原理图/布局、gerber文件、源代码和外壳STL文件。 【https://forum.digikey.com/c/eewiki/57】
数量 | 标号 | 型号 | 值 |
6 | C1, C2, C5, C6, C7, C8 | 445-173583-1-ND | 1u |
5 | C3, C9, C10, C11, C12 | 490-8809-ND | 0.1u |
1 | C4 | 478-1883-ND | 0.33u |
1 | J1 | CP-050AH-ND | 套管 - 电源连接器 |
1 | J2 | S5479-ND | 4 位置 接头 连接器 |
1 | MK1 | 102-1721-ND | 麦克风 |
3 | Q1, Q2, Q3 | FDP8880FS-ND | NMOS |
1 | R1 | 2.2KH-ND | 2.2k |
3 | R2, R3, R4 | 10KH-ND | 10k |
1 | R5 | 1.0MH-ND | 1M |
2 | R6, R7 | 1KH-ND | 1k |
1 | R8 | 680QBK-ND | 680 |
1 | RV1 | PDB12-H4301-105BF-ND | 1M |
1 | U1 | 296-1857-5-ND | TLC555 |
1 | U2 | MCP601-I/P-ND | MCP601P |
1 | U3 | 1878-1000-ND | 光子模块 |
1 | U4 | MC78M05CTGOS-ND 1 | MC78M05CDT |
3 | U5, U6, U7 | MCP1407-E/AT-ND | MCP1407 |
1 | 1647-1035-2-ND | RGB LED 灯带 | |
1 | 102-3665-ND | 12V 60W 电源 | |
2 | S6100-ND | 1 2 位置 0.1" 母形插口 | |
4 | 1772-1337-ND | #4-40 六角支座3/16" | |
4 | 36-9901-ND | Phillips #4-40 机械螺钉 |
表1 物料清单
硬件如下图1所示,电路有3个主要部分和4个辅助部分。每个部分总结如下。
- 上排包含电源电路。
12V通过电源连接器接入,并通过线性调节器U4,然后输出到LED连接器。
- 在麦克风部分:
- 麦克风MK1用于拾取背景音乐,光子可以使用它来同步LED。
- 电阻R2和R3为音频信号添加约1.65V的直流偏压。
- R6和C12产生具有2400Hz频率截止的低通滤波器。由于光子将使LED与音乐的“脉冲”同步,因此只需要低频(100-1 kHz)。
- 运算放大器U2以取决于R5和电位计RV1的增益放大信号。基本增益设置为1000,但可以通过将电位计设置为其最大值来增加到2000。根据需要调整R5的值以增加或降低灵敏度。
- 运算放大器反馈路径中的电容C2确保信号中只有AC分量被放大,而DC分量不受影响。
- 在左下角,处于稳定模式的555定时器产生4.8 kHz的方波,用于建立光子ADC的采样率。
- 光子接收放大的音频信号和来自555定时器的触发器以设置采样率。它还为LED生成PWM信号。
- 来自光子的PWM信号被传递到MOSFET驱动器U5、U6和U7。这些驱动器允许输出MOSFET(Q1、Q2、Q3)的栅极以更高的电压驱动,从而降低Rdson,同时也在LED的12V信号和光子之间提供额外的隔离屏障。
图1 电路示意图
下图2显示了PCB布局。所有部件都是通孔,以便于手动组装,但使用表面安装部件可以大大减小尺寸。
图2 PCB布局
Blynk设置
该项目的Blynk远程程序使用7个小部件,对于一个免费用户,要求获得所有可得的积分。布局如图3所示。
图3 Blynk远程应用程序
小部件配置如下所示。为所有小部件启用了发布时发送,以最大限度地减少数据使用。每个设置都分配了自己的虚拟引脚,当更改设置时,将调用光子上的用户定义函数。
- 颜色调制菜单(V0)
- 常亮
- 彩虹-不断地在彩色光谱中循环。
- 亮度调制菜单(V1)
- 常亮
- 呼吸-逐渐消失。
- 音频同步-与音乐节拍同步。
- 亮度滑块(V2)
- 设置最大总亮度
- 范围:0→ 100%
- 默认值:25%
- 亮度速度滑块(V3)
- 设置呼吸或音频模式下亮度变化的速率
- 范围:80→ 5毫秒
- 默认值:30毫秒
- 声音阈值滑块(V4)
- 调整在音频模式下触发LED所需的级别
- 范围:0→ 2048
- 默认值:1500
- 颜色速度滑块(V5)
- 设置彩虹模式下颜色变化的速率
- 范围:80→ 5毫秒
- 默认值:30毫秒
- zeRGBa颜色选择器(V6)
- 将输出合并到单个虚拟引脚
- 范围:0→ 每种颜色255
光子的完整应用程序代码以及用于生成滤波器系数头文件的Octave/MMatlab脚本如下所示。总结如下:
- 应用程序代码通过使用SYSTEM_THREAD(ENABLED)与后台粒子任务并行运行。这允许setup()运行,直到需要WiFi连接而不被阻止为止。
- RGB控制器程序的主循环只需调用Blynk.run()来获取应用程序的更新。所有其他处理都在亮度和颜色计时器的回调函数中执行。
- BLYNK_WRITE()宏定义了当从BLYNK应用程序中的小部件检测到更改时要采取的操作,如图3所示。
- update_leds()在每次调用一个计时器回调函数时修改PWM占空比。
- get_sample()以~4800 Hz的速率调用。当选择音频模式时,此功能将读取ADC,并使用以下八倍频脚本创建的100阶FIR带通滤波器对输入进行滤波。
- 使用具有20位小数精度的定点算法执行计算。fixed_mult()用于执行乘法运算,并包含获得正确结果所需的额外类型转换和移位。
rgb_conrtoller.ino.txt (10.2 KB)【https://forum.digikey.com/uploads/short-url/x9RCGqsXwdVE3Qsp3NYJoKetWfF.txt】
rbg_fir.m (1.2 KB)【https://forum.digikey.com/uploads/short-url/ijpHerAiGU1UpFhLtZLusPXNluA.m】
coeffs.h (818 Bytes)【https://forum.digikey.com/uploads/short-url/kTIdsY2cR2pryyQVZMAEWqjGrCS.h】
rbg_fir.m (1.2 KB)【https://forum.digikey.com/uploads/short-url/ijpHerAiGU1UpFhLtZLusPXNluA.m】
coeffs.h (818 Bytes)【https://forum.digikey.com/uploads/short-url/kTIdsY2cR2pryyQVZMAEWqjGrCS.h】
附件
一个简单的盒子被3D打印以容纳PCB。板和支座的安装孔的尺寸对于M3或#4-40螺钉来说是宽松的。STL文件可以在下面下载。
LED-Box-STL.zip (50.7 KB) https://forum.digikey.com/uploads/short-url/wC9gc8d83xkTUTFU0WmGZX9t2pu.zip
总结
该项目允许用户设置相对简单的无线LED照明系统。通过WiFi使用Blynk应用程序控制LED。颜色和亮度可以通过应用程序进行调整,还可以选择一些特殊模式。该系统还包括一个麦克风,以创建音频同步效果。这些功能应该为任何想要创建自己的WiFi控制LED系统的人打下坚实的基础。
莫非,人类从游戏中来,到游戏中去,虚拟现实循环往复的转换?灵魂在元宇宙中虚拟的玩?在宇宙中现实的玩?所以才有人类不是进化而是演化一说?