×

BeagleBone LED音频光谱仪

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-20

陈利妮

分享资料个

描述

我们的项目涉及连接六个 LED 矩阵和音频输入。目标是获取音频输入,执行频域分析,然后将频谱显示在作为光谱仪的 LED 矩阵上。

我们设法获得音频输入并在主机上进行频域分析。然后主机将像素数据发送到使用猎鹰播放器控制 LED 矩阵并创建音频频谱仪的袖珍比格犬。

在以下位置查看正在运行的项目:

 

另请查看我们的维基百科项目页面:https ://elinux.org/ECE434_Project_-_LED_Matrix

第一步:硬件设置

我们很幸运在收到 LED 面板时收到了已经放在一起的 LED 面板。要连接 LED 面板,请对齐面板背面的箭头,使它们都朝向相同的方向,然后将每个面板水平连接到与其相邻的面板。最后两个面板将连接到 PocketBealge 的 PocketScroller Cape。PocketBeagle 直接连接到 PocketScroller Cape。

第二步:安装

转到https://github.com/grinstba/LEDMatrix并将存储库克隆到您的计算机

转到https://falcon-player.gitbooks.io/falcon-player-manual/content/chapter_three_installation/downloading_the_falcon_player.html并按照说明下载最新的 falcon 播放器映像,然后将其闪存到您的一张 SD 卡中。确保下载 Beagle Bone 映像而不是 Raspberry Pi 映像。此外,我们没有在 eMMC 上运行猎鹰播放器。

安装 falcon 播放器后,启动您的 Beagle Bone 并使用以下凭据 ssh 进入它:

  • 用户名:fpp
  • 密码:猎鹰

默认情况下,我们正在运行的图像不允许 root 登录。您将需要根登录才能在 Beagle Bone 上访问互联网。为了设置互联网访问,首先使用上面列出的默认用户名和密码 ssh 进入 Beagle Bone。下面的root访问说明修改自https://elinux.org/EBC_Exercise_02_Out-of-the-Box, _Bone

然后在 Beagle Bone 上运行以下命令

bone$ sudo bash
root@bone# nano /etc/ssh/sshd_config

搜索行

#PermitRootLogin prohibit-password

并将其更改为

PermitRootLogin yes

保存文件并退出编辑器。重新启动 ssh 以便它重新读取文件。

root@bone# systemctl restart sshd

并为 root 分配密码。

root@bone# passwd

现在在主机上打开另一个窗口并输入:

host$ ssh-copy-id root@bone

并输入根密码。测试它:

host$ ssh root@bone

您应该无需密码即可连接。现在回到 Bone 并关闭 root 密码访问。

root@bone# nano /etc/ssh/sshd_config

恢复线路:

#PermitRootLogin prohibit-password

并重新启动 sshd。

root@bone# systemctl restart sshd
root@bone# exit
bone$ exit

现在,在您的主机上运行以下命令来获取网络信息:

host# ip -a

对于我们来说,在 WiFi 网络上以下列方式运行ipMaskquerade.sh脚本:并重新启动 sshd。

host# ./ipMaskquerade.sh ens33

然后运行firstssh.sh脚本

host# ./firstssh.sh

连接到互联网后,继续将我们的 GitHub 项目从https://github.com/grinstba/LEDMatrix克隆到 pocket beagle 上

克隆项目后,运行install.sh脚本以安装项目运行所需的包。

第二步:用户说明

以下许多图片和说明来自 Mark A. Yoder 的文档,可在此处找到

为了点亮整个 32x64 LED 面板白色(红色、绿色和蓝色全部亮起),您至少需要一个 5V 4A 电源。每个面板都有一个电源连接和一个数据输入和数据输出连接。数据输入连接控制面板的操作方式,数据输出连接允许您将面板菊花链在一起以创建大型显示。下图显示了连接。

poYBAGOSoIaAS_w1AAFRxzFlp_s912.jpg
 

https://markayoder.github.io/PRUCookbook/01case/case.html#case_rgb_matrix

一旦 falcon 播放器映像已闪存到 SD 卡,将 SD 卡插入 Beagle Bone 并通过 USB 电缆将其连接到主机。浏览器访问https://192.168.7.2 ,您将看到如下所示的 falcon 播放器控制面板。

pYYBAGOSoIiAItQBAADTiwmuD2w265.png
 

https://markayoder.github.io/PRUCookbook/01case/case.html#case_rgb_matrix

您可以使用控制面板中的设置来设置 LED 矩阵的方向。首先将状态页面上的FPPD模式切换为桥接,如下图所示。

https://github.com/grinstba/LEDMatrix /blob/master/Setup/StatusPageBridgeSetup.PNG

然后,导航到“输入/输出设置”选项卡并单击“通道输入”。将 96 个输入通道配置为具有 384 的宇宙大小,如下图所示。

pYYBAGOSoIyAO-m7AADGlSUHnlk991.png
 

https://github.com/grinstba/LEDMatrix /blob/master/Setup/UniverseSetupInputChannels.PNG

在同一个输入/输出设置选项卡中,单击“通道输出”。将 96 个输出通道配置为具有 384 的宇宙大小,如下图所示。

poYBAGOSoI-AOhbsAADF53q6N4Q552.png
 

https://github.com/grinstba/LEDMatrix /blob/master/Setup/UniverseSetupOutputChannels.PNG

接下来,在“输入/输出设置”选项卡下,导航到“LED 面板”。您可以在此处设置输出宇宙在物理 LED 面板上的表示方式。将面板布局设置为 2X3,将单个面板大小设置为 64X32 1/16 扫描,将面板伽玛设置为 2.2。您可以选择您想要的亮度。颜色深度是 8 位,连接是 Hat/Cap/Cape。LED 面板的颜色布局为 RGB,这意味着面板上的每个小方块灯都有 3 个通道;红色通道、绿色通道和蓝色通道。这意味着每个面板总共有 64X32X3 = 6144 个通道。因为我们有 6 个面板,所以我们总共有 6144X6 = 36864 个通道。将接线引出线设置为 PocketScroller。查看 LED 面板布局部分,留下“从前面查看配置?” 检查。由于面板布局为 2X3,每个物理输出有两个物理输出编号和 3 个面板编号。“前视图”的左列应设置为每一行的 O-1,随着从上到下,P 从 1-3 增加。“前视图”的左栏应设置为 O-2,从上到下,P 从 1-3 增加。每行的箭头应从右列指向左列。所有这些设置如下图所示。输入所有这些设置后,单击保存,然后单击屏幕顶部红色框中的“重新启动 FPPD”。查看物理 LED 矩阵背面显示的箭头,以确定放置它的方式,使其配置与您刚刚在 Falcon Player 上设置的方向相匹配。为了匹配这个设置,

poYBAGOSoJKAdxGvAACRd8OpDQk072.png
 

https://github.com/grinstba/LEDMatrix /blob/master/Setup/LEDPanelSetup.PNG

以这种方式设置 LED 矩阵后,底部带状电缆将连接到 J1,顶部带状电缆将连接到 PocketScroller 上的 J2。启动 LED 矩阵。此时,在 Falcon Player 中,您可以导航到 Status/Control 并单击“Display Testing”选项卡。将结束通道设置为 36864,然后选中“启用测试模式”复选框,如下所示。

pYYBAGOSoJSAE4gvAABu5aSHQUs381.png
 

https://github.com/grinstba/LEDMatrix /blob/master/Setup/DisplayTesting.PNG

此时,如果一切配置正确,LED 矩阵应点亮,如下所示。如果您选择打开矩阵上每个通道的测试模式,电源可能无法跟上负载,矩阵可能会关闭。

poYBAGOSoJqALzEWAACuSs9SWwA573.jpg
 

https://github.com/grinstba/LEDMatrix /blob/master/Setup/DisplayTestingPhysicalMatrix.jpg

单击“启用测试模式”复选框以停止测试显示。您现在可以运行频谱图程序了。导航到 LEDMatrix git 存储库在本地驱动器上的克隆位置。然后运行 ​​Spectrogram.py。

第三步:操作理论

下图显示了我们的项目如何工作的总体概述。扬声器输出的声音由我们笔记本电脑的麦克风接收。然后处理该音频信号以获得其振幅与频率的关系。然后,我们使用此信息来决定我们的 LED 灯条的高度,这些灯条会从主机传送到 PocketBeagle。

pYYBAGOSoJ6AB6yTAAAtCLxhn58791.jpg
 

https://github.com/grinstba/LEDMatrix /blob/master/Setup/Operation%20Overview.jpg

仔细观察我们的软件,下图分解了逻辑流程。首先,我们必须建立与运行在 PocketBeagle 上的 Falcon Player 的连接。然后我们为 LEDMatrix 设置音频处理参数和宇宙大小。一旦这些设置完成,程序就会不断地监听音频输入,对音频执行快速傅立叶变换,为我们提供振幅与频率信息,将这些值划分到我们指定的范围内,将这些振幅值转换为 LED 通道信息宇宙,并将 LED 信息发送到 PocketBeagle。

poYBAGOSoKCASQtlAABIcvrf1jk900.jpg
 

https://github.com/grinstba/LEDMatrix /blob/master/Setup/Software%20Operation.jpg

为了更好地理解我们如何利用宇宙来控制矩阵,我们创建了下图。我们选择了 universe 大小,以便每个 universe 都是两个完整的垂直 LED 列。这意味着从左到右总共有 96 个宇宙。我们的软件从左侧的宇宙 1 开始,在右侧以宇宙 96 结束。我们将频谱图中的每个条指定为 3 个宇宙宽,或 6 列 LED 宽。因此,我们有可能在矩阵上有 26 个柱。为了使条形之间的分隔看起来更好更容易,我们只使用 21 个条形,并在每个条形之间留出一个空间,我们不向其写入数据。由于宇宙从上到下环绕,每次计算振幅时,

pYYBAGOSoKOAHcORAABM4X7qYFg520.jpg
 

https://github.com/grinstba/LEDMatrix /blob/master/Setup/Panel%20Theory.jpg

结论:

最后,这个项目是一个有趣的挑战,让我们有机会测试我们的信号处理技能,并了解如何配置、控制和可靠地更新 LED 矩阵。一些有趣的潜在添加可能包括使用音频信号检测歌曲的 BPM(每分钟节拍数),并将条形颜色或其他模式更新为音乐的确切 BPM,而不是仅更新频率范围的振幅。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !