如何制作由蓝牙控制的RGBLED立方体

第1步:理论
如果你对mu的理论不感兴趣为了开始实际构建而跳转到第2步
由于硬件和软件是这个项目同样重要的部分,让我们先看一下理论。
立方体的大脑是arduino nano 。它提供足够的i/o来与使用过的led驱动器相互作用,并建立与hc-05模块和其他控制硬件的蓝牙连接。如果你看过其他led立方体版本,你就会知道大多数人使用简单的移位寄存器来存储各个led颜色的亮度值。 此版本不使用移位寄存器,,而是使用所谓的“tlc5940”led驱动程序。正如我们稍后将看到的那样这为我们节省了大量时间以及大量额外硬件(例如电阻器)。
控制多维数据集的基本功能使用多路复用即可。在这种情况下,我们多路复用立方体的6层,意味着层中所有led的所有阳极(+)都已连接,而所有led的各个阴极都在同一列连接到底部。这意味着如果你想点亮位置x = 1,y = 2,z = 3,颜色:绿色的led,你需要在第3层的阳极提供5v,并将gnd连接到相应的列的阴极。绿色引脚x = 1,y = 2。所以实际上在某个时间点,实际上只有一层立方体被打开,但正如你将在后面的代码中看到的那样,我们正在关闭并且单个层面如此之快,我们的眼睛认为整个立方体都在。
控制诸如亮度,动画等内容我们使用连接的hc-05蓝牙模块 arduino nano。将模块与arduino一起使用非常简单,因为您只需要4针连接,并且可以通过arduino的默认serial-commuincation 简单地连接模块。在这个教练的最后,你将看到轻松如何编写自己的蓝牙应用程序来控制多维数据集。
注意:
在我的arduino电路板原理图中,您还可以看到一个小型原理图,用于连接 msgeq7芯片 以处理音频输入, 对于实际的多维数据集来说绝对没有必要,这只是我添加的附加功能,因此您可以忽略标有“msgeq7”的原理图
步骤2 :硬件:led立方体构建
因此,在讨论之前,让我们先看看如何构建cube本身。 arduino nano周围的控制电路。
零件清单用于立方体结构:
216x rgb led(共阳极)(aliexpress/ebay) - 》 6x6x6 = 216
带状电缆(1m 40pin应该足够)(aliexpress/ebay/amazon)
女性和男性标题(至少4x40pin)(aliexpress/ebay/亚马逊)
镀锡铜/银线0.8mm (~25米)(全球速卖通/ebay/亚马逊)
收缩管(aliexpress/ebay/亚马逊)
第一要做的事情,我现在很乏味但很必要,我们来测试led 。为此,我们将连接电源,例如带夹子的9v电池块简单连接到breaboard。您可以参见图3 ,led的最长引脚是阳极(+),因此您将此引脚连接到电池的+ 9v。现在,在将gnd连接到各个颜色之前,阴极(红色,绿色,蓝色)为每个阴极添加220欧姆电阻以限制电流。现在玩得开心测试所有216个led的所有颜色 。
在下一步中,我们将准备测试的led,以便我们以后可以轻松地将它们组装成列。
步骤3:led行
在我们将led焊接到各自的行之前,我们需要弯曲并切割引线。
正如您在第一张图片中所见,我简单地将 8mm孔(对于8mm led)钻入一块木头并且在led孔的左侧钻了3个非常小的钻头,在钻孔的右边钻了另一个。这些钻头是用于正确弯曲引线的标记,并且应该与led的孔中间距离大约1cm 。
这种技术的灵感来自steve manley,你可以在youtube上找到他在视频中略有不同的视频。
如图2和图3所示,在您切割和弯曲演奏线周围之前,确保方向引线对应于图片1 (蓝色在左上方,然后是绿色,然后是阳极+向右,红色再次向左)。弯曲到引线中的圆应该具有足够大的直径以适合镀锡铜线(0.8mm)。这个步骤使得非常容易可以很好地将led焊接到位。
现在所有的led都已准备就绪,我们希望将它们组装成6行
strong》连接阳极(+)的位置:
如图6所示构建一个小夹具,钻6个孔(直径0.8mm),距离为2.5厘米到下一个洞。这允许我们一次将6个led装入夹具中
要连接阳极,我们需要直线镀锡铜线长约16cm (有一些额外的余量)。为了使电线良好和笔直,您可以将电线的一端安装到例如电钻中,一次在桌子上固定约2米的电线,然后握住电钻使电线拉伸并且在钻孔几秒钟上拧紧并接通电源,并快速拉直电线。然后,您可以在固定部件的位置切割电线。 您也可以使用两把钳子并一次拧紧较小的线材,但这样更乏味
一旦你有16厘米长的电线你引导它们穿过夹具中led的阳极(+)孔并将阳极引脚焊接到电线上(图7 )
对于整个多维数据集,我们需要6x6 = 36 这些 led行
第4步:图层组装
正如我之前提到的,我们将复用多维数据集的图层,但对于装配而言,更容易构建6个6x6 led墙,然后将它们彼此相邻组装,并简单地运行连接行中阳极的单根镀锡铜线层在一起。
小心 这一步需要花费大量时间和耐心才能做到这一点,总的来说你必须焊接大约1000个焊料关于构建的关节所以要花点时间!
构建led墙:
对于夹具: 我们需要一块一块木头,上面有6条雕刻线,一条在另一条之上,以构筑一堵墙。您可以在图片2 (行间距离:2.5厘米)中看到夹具本身
您将6行led放入雕刻,阳极线朝下雕刻线,使3个阴极(r,g,b)朝上
连接阴极位于彼此之上(见图2)我们需要更多的电线(所以我们再次使用6列x 3阴极x 6墙= 108镀锡线片如上所述最后一步(2。)(同样的长度以及))
将电线片从色谱柱底部通过阴极的孔滑到顶行和在每个led上焊接电线
您这样做6次以获得6个led墙。
现在我们可以将walls组装成实际的立方体本身。但要抓住立方体,我们需要建立某种地平面。为此,我简单地使用了一些薄胶合板并在其中钻了0.8mm小孔,以适应悬挂在最低led行(所有6个led墙壁)上的电线。单个led的测量孔 记录在步骤3 中,每个led之间的距离为2.5cm。
孔已就位我们现在抓住第一堵墙并将其移动到胶合板最左侧的孔中。底部的led排应该坐在木头上,这样最后所有的墙都会对齐。
继续对其余的led墙做同样的事情,但请记住,墙的阳极始终面向同一方向。 (在图3中,墙的所有阳极都朝向左侧)
一旦整个立方体到位,我们需要将每层的阳极焊接在一起。要做到这一点我们采取另一条 ~16cm的直线并将其放置在第一层的顶部,使得线材在一层中接触6个墙壁的所有阳极线。注意新电线不接触任何阴极。 将导线焊接到位并对剩余的5个层重复相同的操作。
步骤5:立方体布线
既然立方体的物理结构已经到位,那么将电线添加到阴极和阳极以便以后连接它首先,我们在木平面的底部切割延长线,但是留在1.5cm左右以焊接在电线上。为了使软件代码更容易将led的各个颜色映射到led驱动器引脚,我们使用图1中描述的接线示意图。我们的tlc5940 led驱动器每个都有16个输出,这意味着我们需要(6x6)leds x 3色= 108/16 = 6,75 - 》所以我们需要7个tlc驱动器(最后一个不是完全使用了。
这意味着我们需要 7 x 16线 一端连接led阴极 和一个男性另一端是针头。因此,使用带状电缆 切割7x 16针电缆,长度约为20厘米。要焊接电缆另一端的公针头,请观看ztar-planet的视频。
从立方体的一角开始,电缆位于最左侧首先焊接了带状电缆。在我的情况下我开始使用右下角led的蓝色阴极
第二根电缆焊接到同一个led的绿色阴极, 红色阴极旁边,接下来是第一个led左边的led蓝色,然后是绿色的带领,然后是蓝色,进入下一个蓝色阴极,依此类推
所以你遵循这个原理图,这样序列始终是:蓝色阴极,红色cath。 ,green cath。,blue cath。,。..。..如图1所示。您从第一根16针电缆开始,一旦焊接电缆的最后一根引脚,就将最左边引脚上的下一根电缆连接到序列中的下一个阴极。所以电缆的最后一个引脚跟随下一根电缆的第一个引脚。
对于阳极,建议使用稍粗的电缆因为有更多的电流流过它,然后是阴极。为了获得立方体底部6层的阳极,我们还需要一些更多的镀锡铜线。这次我们钻多维数据集一侧的孔(参见图1,白色圆圈)并将铜线穿过这些孔并将它们焊接到相应的层阳极上。因此在图1中,标记为“0”的阳极是焊接到层0的阳极线的镀锡铜线片,1被焊接到层1的阳极,依此类推。对于电缆,您再次焊接电缆另一侧的6针公头,另一端连接到层阳极的延长线。
步骤6:led驱动板
零件 led驱动板:
7 x tlc5940
6/7 x 10 uf电容器
2 x 1000 uf电容器
7x 2.2kohm电阻器
7 x 28pin ic插座
7 x 0.1uf电容器
带状电缆
继续使用控制电路,让首先看一下led驱动板。如前所述,我们需要 7 tlc5940 连接到arduino nano。所有 tlc5940芯片都采用菊花链式连接,这意味着驱动器的所有控制引脚都是互连的(例如,第一个tlc的blank引脚连接到第二个的blank,第三,第四,。.. tlc)并全部连接到arduino 使用相同的电线,除了串行输入 首先从arduino数字引脚连接到第一个tlc,然后第一个tlc的串行输出引脚连接到第二个tlc的sin引脚,依此类推(见图4) 。..。..
所以 tlc板的原理图非常简单,因为您可以在附图中看到。
(如果你的话)想要在第8步之后找到董事会成员
我还附上了毛毡 的截图,其中包括引脚标签 以及gimp .xcf文件,每个控制引脚连接分层。
s 将所有ic插座焊接到位,然后将100nf电容添加到每个tlc,后跟 2.2kohm电阻 到iref 和gnd 以及右上角的7针接头。.之后您可以简单地从gimp文件中的“ sin层”开始,按照.xcf文件进行操作,其中展示了如何使用带状电缆连接驱动程序的串行输入/输出引脚,然后在gimp中启用clk层等等。确保你的+和 - 引脚连接到右上方的引脚接头原理图的其余部分应该是自我解释的,但确保向电路板添加足够的1000uf和10uf电容确切位置确定它们并不那么重要。
完成此板后,您可以继续下一步到arduino board 。
控制板的步骤7:arduino +蓝牙控制板
部件:
6 x irf 9540 p沟道 mosfet
1 x 10 uf电容器
1 x 1000 uf电容器
7 x 2.2kohm电阻器
1 x 1kohm电阻器
2 x 14 母针头
1 x arduino nano
1 x 1n4001二极管
1 x 0.1uf电容器
1 x dc jack p cb mount
1 x hc-05蓝牙模块
1 x 3.5mm音频插孔
arduino控制主板主要是处理多路复用以及提供led驱动板的引脚头对应。
在perfboard上焊接:
放置两个女性pin标头以充当arduino的套接字在董事会中间。
在arduino右侧(带有模拟引脚的一侧)将 6个mosfet连续放在一起添加一个2.2kohm的电阻介于第一个和最后一个每个之间。
现在将 6针接头放在mosfet前面(行的中间)并连接fet的6个漏极针脚(中间针脚) )fet 的到和 gate引脚(左侧引脚)到相应的arduino模拟引脚。
接下来,在arduino的另一侧焊接用于leddriver 连接的7pin接头,为电缆留出一些空间,并且焊接从arduino到引脚接头的所有连接。
添加一些电容(1-2 1000uf,1 10uf,arduino旁边的100nf)以获取可能的电流消耗。
在hc-05 模块的arduino 背面旁边焊接 4针接头,与vcc建立4个连接,rx,tx,gnd 并且不要忘记从hc-05的rx引脚和arduino的tx引脚制作分压器(见这里)
将 dc插孔放在电路板的任何边缘,旁边有一个开关,并将开关的右侧引脚连接到dc插孔的+ pin
最后将所有必要的电源连接从dc插孔的gnd引脚和开关(vcc)的右引脚连接到arduino,mosfet,电容器和hc-05,如图所示原理图。请记住添加二极管仅授予来自交换机vcc引脚的电源流入arduinos 5v引脚,而不是其他方式。(这可以保护arduino在通过usb连接进行编程时)
对于电源连接我使用直流电源插孔 使用简单的开关,您也可以使用usb连接器,如果你愿意的话。我将电源连接器外包到另一个小电路板上,非常适合我的木箱,但你可以简单地将它直接放在arduino板上。如第一步所述,原理图中还有一个msgeq7连接电路,但如果你不使用msgeq7,只需忽略它。 (有关msgeq7功能的更多信息,请单击此处)
不要忘记在每端使用带有公针接头的另一条7pin带状电缆连接arduino板和驱动板。
步骤8:可选:蚀刻电路板
所以如果你不喜欢焊接很多电缆当然你也可以蚀刻必要的pcb 如果你愿意的话。
在我的cube中arduino板和电源/音频连接器板都是蚀刻板使用附带的原理图/eagle文件。我第一次在原理图中犯了一个错误,所以我不得不像最后一步那样重做led驱动板。蚀刻电路板而不是使用电路板没有巨大的优势,因此可以随意蚀刻电路板或将其焊接在穿孔板上。
在附加 .zip 您可以找到board 文件以及schematic 文件。
请注意顶层迹线(红色)应该是线桥(因为我不能在家中蚀刻双面板)。未布线的迹线显示了通过电缆连接到母针头的连接。
原理图包括msgeq7功能,您可以通过删除该部分来省略在.pdf原理图的屏幕截图中标有“(msgeq7)”的示意图。
步骤9:连接多维数据集
连接所有部分通过将7针电缆插入arduino电路板和驱动板,立方体,确保方向正确!()。接下来将hc05模块插入4针接头并连接电源板(如果已分开)。
连接多维数据集的7x16引脚接头 make确保从第一个tlc开始(sin引脚直接连接到arduino的那个)。 从多维数据集中找到正确的16针电缆并将其连接到第一个tlc的针脚(确保cathode nr.0的电缆连接到第一个tlc out0引脚!) 。继续以正确的顺序将其他16针电缆连接到相应的tlc接头。
最后但并非最不重要的是,从多维数据集连接阳极的6pin电缆 在mosfet旁边的控制板上的6pin接头
为了完成立方体,我在表壳上增加了一些墙壁,上面还涂上了一些带有黑色油漆的胶合板,然后粘上它们。
现在我们完成了整个构建所需的所有硬件!
步骤10:软件:多路复用循环
现在理论上 arduino正在执行以下周期:
如果已经过了layerduration ,将下一层的值加载到tlc,关闭当前图层,打开下一层,重置layerduration,将新值提交给tlc
如果frameduration有通过,通过存储所有led的值来加载当前动画的新帧和颜色进入valueled []缓冲区,重置frameduration
如果蓝牙数据可用,对它们做出反应(更改动画,亮度。..。..)(稍后会提供更多信息)
正如您所见,他主要关注的是速度。更改图层的时间非常重要。
打开/关闭图层的速度越快,您获得的“框架”就越多。对于像这样的6x6x6 rgb led立方体我发现层持续时间为1700 microsec 。足够好,可以将闪烁保持在最低限度,并且应保持此值。 frameduration控制更多动画的速度,以便针对不同的动画进行更改。
在下一步中,我们将看看我们如何实际编写自己的动画。
步骤11:自定义动画
要实现动画,我们必须将valueled [] buffe r设置为每次我们想要的下一帧的值frameduration已通过。我们这样做是通过调用宏功能“setled(x,y,z,color,brightness)”
x,y,z是我们想要的led的坐标set和color(red,green或blue)是我们想要设置的颜色,brightness是我们设置的这种特定颜色的实际值。
所以例如实现一个简单显示的动画您可以在整个多维数据集中随机红色,绿色和蓝色,只需执行此操作:
void randomledsfull(){
for (uint8_t j = 0; j 《 cube_size; j++){
for (uint8_t x = 0; x 《 cube_size; x++){
for (uint8_t y = 0; y 《 cube_size; y++){
uint8_t rand = random8(3);
setled(x,y,j,rand,maxbright);
}
}
}
}
每次通过frameduration时都会调用此方法并且从循环()中的switch-case命令中选择。如果您编写新动画,只需将它们添加到switch-case中即可添加它们。
步骤12:附加:animationcreator
《另外,我使用javafx和java3d 编写了一个 animationcreator。
通过提供易于理解的ui,它使创建和编辑自定义动画非常容易。
您可以为4x4x4,6x6x6或8x8x8 led立方体创建,编辑,重命名和重新配置动画。
要创建新动画,只需点击文件》新建,在“立方体”下,您可以选择多维数据集大小,设置led的颜色,用颜色选择您想要的颜色选择器在左侧,然后左键单击该帧所需的led 。 添加另一个框架点击“下一步”或“+”。其余的ui控件非常自我解释,多维数据集图层旁边的复选框用于检查哪些图层应该受到移动影响,“保持框架“。 j ust测试它,你会立即弄清楚所有内容。
另外模拟动画你可以点击“查看3d”按钮这将打开另一个窗口,其中包含多维数据集的java3d模型。您可以旋转相机,同时按住鼠标左键(按r重置相机)。播放/暂停动画点击p键,重置动画点击q. “查看3d”按钮下面的textfield 表示当前的frametime ,ergo 动画的速度。
完成动画后,为其命名并点击文件》另存为。..并将动画保存到与cubo_control.ino草图相同的文件夹中。
要在草图中包含新动画,请在草图顶部打开cubo_control.ino并添加以下代码:
#include “rgbit.h” //replace
向下滚动到 btevent() 并将case语句添加到动画的开关大小
switch(curanim){
。..
case 10:
animation= &ani_cubesmove[0][0];
frame_time= ani_cubesmove_framtime;
maxcount= ani_cubesmove_frames;
break;
case 11: //your new animation
animation= &ani_rgbit[0][0];
frame_time= rgbit_frametime;
maxcount= ani_rgbit_frames;
break;
}
步骤13:蓝牙应用程序
实际上控制多维数据集,感谢 hc-05模块它非常简单构建蓝牙应用以将手机连接到多维数据集。
链接到应用: github
该应用开源,因此您可以自行添加其他动画/功能。
启动应用程序,它会要求您打开蓝牙
单击“搜索”,将显示可用的蓝牙连接列表。 从多维数据集中识别hc-05模块并单击它。
如果尝试连接多维数据集时出现错误,请尝试手动配置蓝牙设置中的hc-05模块
连接后应用程序切换到控制屏并建立了蓝牙连接
控件:
速度&亮度:更改滑块值以加快/减慢动画或更改亮度
动画:单击按钮可更改动画,默认情况下为动画循环(从左上方开始按钮对应curranim)
文本滚动:单击“文本”按钮,弹出一个对话框,输入一些将滚动的文本通过多维数据集
命令:您可以使用command textfield手动输入命令(查看cubo_control.ino的btevent()方法以获取语法)
snake:经典蛇游戏(红色:苹果,绿色:蛇头,蓝色:潜行尾巴)(控制:4个方向按钮,通过向前(向上)或向后转动电话触发向上和向下( down))
audio visualizer :msgeq7用于显示来自aux jack(动画7的按钮)的6个音频带
步骤14:展示
注意:因为它是v在恶劣的闪电条件下难以准确捕捉led立方体,我将立方体的亮度调低至15(最大值:255)。请注意,实际上人眼的全亮度无论如何都不会闪烁led。

oppo enjoy使用哪种芯片
国星光电斩获优秀供应商头衔
beats的耳机真的很烂吗_beats耳机音质怎么样
2019年第一季度移动RAN季度报告:三星领先一季度全球市场
高速风筒吹风机应用方案——吹风机PCBA方案设计
如何制作由蓝牙控制的RGBLED立方体
人工智能领域近期的蓬勃发展基于哪三个重要因素
预算3000元左右:一加5、小米6、努比亚Z17、荣耀9和荣耀V9都是不错的选择
mysql中replace的用法
音频常见的三种接口
AIoT技术应用,先打好物联传感基础
pcb内层用负片还是正片有区别吗?
OTM2602千兆分组网络测试仪的主要性能及应用
锤子坚果R1体验 值不值得买
锂电池保护板同口和分口的区别
直流电机如何改变转向
光耦隔离的作用是什么?
美光宣布首款LPDDR5 DRAM UFS多芯片封装正式送样 可节省功耗并减少存储器占用空间
纸基微流控芯片的发展成为近年来分析传感科学研究关注的重点之一
未来LED智能照明与驱动将会给人类生活带来跨时代的改变