Arduino音乐频谱

一、 项目简介
本制作是踩在前人的肩膀上走过来的,在清风duino基于arduino Pro Mimi_语音播放彩灯系统 基础上修改过来的,现在把不成熟的制作过程分享给大家,希望对需要的朋友有所帮助。

通过ardiuno单片机,语音模块(实际就是一个可以用单片机编程控制的MP3模块),RGBLED(WS2812b)彩条,机智云平台,用机智云DEMO手机APP作为控制界面,机智云APP充当了一个远程遥控器控制N9200B的播放,快进,后退等,然后通过N9200B的声音输出控制彩条WS2812B随音乐的变化而变化发出不同的彩色光达到音乐频谱的效果,无音乐时彩灯会随机变化色彩。

N9200B可以单独作为一个MP3用,接外接键盘控制,也可以配合MCU做其他之用,也可以不需要N9200B用其他的声音源来做一个简单的音乐频谱显示,本制作只是一种尝试还可以加上LCD显示播放状况,曲目多少等等,希望大家有更好的方案或者更好的改进,可与大家共同学习研究。

二、所用材料
  • 1ARDUINO_MIMI(也可以用其他的ARDUINO)一块
  • 2N9200B,语音(MP3)模块一块
  • 3esp82866_12F 一块(后缀F以后的都可以)
  • 4:WS2812B彩条20-30粒(多少看自已喜好了)
  • 5:小音箱一对或者8欧姆3W喇叭一个
  • 6:导线若干;5v/2-3A电源一个(本制作所需要的总电流在600MA左右)

三、开发环境
  • 1Arduino  IDE 184版本(当然从106185的都可以,我用的184版本的)
  • 2esp烧写软件ESPl_v3.6.1.0

四、制作过程
1:首先在机智云注册账号,进入后创建新的产品,加入数据点,创建好数据点后点击MCU开发,选择硬件方案: MCU,硬件平台: ArduinoUNOR3。填上你的 Product Secret然后生成程序,这里就OK了;
使用机智云的代码自动生成工具,方法请参阅bigfanofloT老师的“史上最详细的Arduinouno R3接入机智云教程”一文。

2:下载机智云官方esp8266固件
烧写ESP8266 注意新版固件烧写地址好像是01000,(未实验过,这里提醒下大家)

我用的是
GAgent_00ESP826_04020023_17032418_combine.bin 烧写地址是0X00000
到此基本的准备和程序就差不多了。下面是我的数据点
N9200引线功能图表

五、接线与N9200B控制命令

//**控制指令**//
  • 选择SD卡      0x04, 0xFB, 0x01, 0x0B, 0x0B
  • 选择U盘播放   0x04, 0xFB, 0x01,0x0A, 0x0A
  • 选择FLASH播放 0x04, 0xFB, 0x01, 0x0C, 0x0C
  • 全盘循环     0x0B, 0xF4, 0x02, 0x01, 0x00, 0x02
  • 单曲循环     0x0B, 0xF4, 0x02, 0x01, 0x01, 0x03
  • 全盘顺序     0x0B, 0xF4, 0x02, 0x01, 0x05, 0x07
  • 全盘随机     0x0B, 0xF4, 0x02, 0x01, 0x03, 0x05
  • 播放         0x04, 0xFB, 0x01, 0x01, 0x01
  • 暂停         0x04, 0xFB, 0x01, 0x02, 0x02
  • 停止         0x04, 0xFB, 0x01, 0x03, 0x03
  • 下一曲       0x04, 0xFB, 0x01, 0x05, 0x05
  • 上一曲       0x04, 0xFB, 0x01, 0x04, 0x04
  • 音量加       0x06, 0xF9, 0x01, 0x02, 0x02
  • 音量减       0x06, 0xF9, 0x01, 0x03, 0x03
  • 插播         0x04, 0xFB, 0x01, 0x01, 0x01
  • 上一目录     0x04, 0xFB, 0x01, 0x12, 0x12
  • 下一目录     0x04, 0xFB, 0x01, 0x13, 0x13
//**查询指令**//
  • 播放状态     0x04, 0xFB, 0x01, 0x00, 0x00
  • 在线设备    0x04, 0xFB, 0x01, 0x08, 0x08
  • 短文件名    0x04, 0xFB, 0x01, 0x15, 0x15
  • 循环模式    0x0B, 0xF4, 0x01, 0x00, 0x00
  • 当前曲目    0x04, 0xFB, 0x01, 0x0E, 0x0E
  • 当前设备    0x04, 0xFB, 0x01, 0x09, 0x09
  • 查询音量    0x06, 0xF9, 0x01, 0x00, 0x00
  • 查询总曲目   0x04,0xFB, 0x01, 0x0D, 0x0D
  • 目录总曲目   0x04,0xFB, 0x01, 0x18, 0x18
  • 目录首曲目   0x04,0xFB, 0x01, 0x17, 0x1

其他关于程序,程序也就是东拼西都出来的这里就不具体将了,请参考清风duino基于Arduino Pro Mimi_语音播放彩灯系统


程序里有详细的注释,本人文笔有限不对的地方请见谅,谢谢大家观赏。

效果图

效果.jpg (412.79 KB, 下载次数: 0)

下载附件

前天 18:33 上传


完整的ARDUINO程序,程序里有详细的注释
 N9200MP3_ws2812.zip (33.48 KB, 下载次数: 10)
制作说明文档  N200_WS2812音乐频谱文档.zip (336.45 KB, 下载次数: 1) 
该项目用于使用Arduino制作32频段音频(音乐)频谱分析仪/可视化器。 硬件组件: Arduino Nano R3× 1 电阻10k欧姆× 1 电阻4.75k欧姆× 3 电容器100 nF× 2 电阻100k欧姆× 2 SparkFun按钮开关12mm× 1 32x8 LED矩阵显示器× 1 手动工具和制造机器: 烙铁(通用) 该项目用于使用Arduino制作32频段音频(音乐)频谱分析仪。该项目的预期受众是任何音频爱好者,学生或初学者,他们对电子元件,Arduino和C编程有基本的了解。该项目中使用的组件是低成本的项目,易于组装。 该频谱分析仪的主要特点: 使用易于安装的库“arduinoFFT”和“MD_MAX72xx” 支持五种不同的显示模式,可通过按钮切换 音频信号的左右声道都是混合的,这样你就不会错过任何节拍 原型使用32x8 LED矩阵显示器,这可以改变和轻松修改 音频可以从耳机输出或音乐系统/放大器的线路输出馈送 电阻值不是很严格,您可以选择任何最接近的值。请确保R1和R2(参考原理图)具有相同的值。 程序流程图: 系统描述: Arduino板(ATmega328P)内置模数转换器(ADC),用于将输入音频信号转换为数字样本。ADC配置为采样时钟频率为38.46khz的输入信号。这是通过将ADC预分频器配置为32来实现的。采样频率为38.64Khz意味着数字样本可以再现高达19.32Kz(奈奎斯特定理)的输入频率,这对于音频信号来说已经足够了。 正如我在开始时提到的,该项目的目的是显示音频音乐信号的频谱。因此,左右音频通道混合在一起并馈入ADC的A0模拟输入。您可以使用音频分配器电缆,以便您可以将相同的音乐同时馈送到频谱分析仪和另一个放大器(如果需要)。 ADC配置为使用外部参考电压。在这个项目中,参考电压来自Arduino板上的3.3v稳压电源。当模拟信号在零电压电平之上和之下振荡时,我们需要在ADC的模拟输入端产生直流偏置。这可确保ADC输出不会截断输入信号的负周期。相同的3.3v稳定电压由两个电阻R1和R2分压,然后馈入模拟输入以进行直流偏置。使用此直流偏置,即使输入信号断开,ADC也会在输出中产生512。稍后在代码中,这个由DC偏置引起的512被减去,使得读数代表实际的输入信号变化。 ArduinoFFT库是将输入模拟信号转换为频谱的代码的核心。我发现这个库易于使用,并为该项目生成了最准确的输出。Prototype配置为生成64个样本,并使用这些样本进行FFT。ArduinoFFT库可以对16到128之间的样本进行FFT,这可以在程序中进行配置。但arduinoFFT库计算速度慢,有128个样本,因此我坚持64个样本中最好的最高。 本项目使用的显示为32列×8行LED矩阵。MD_MAX72xx库使显示控制部件非常容易。该库提供打开/关闭该程序中正在使用的列中任意数量的LED的功能。每个频带的幅度被映射在0到8之间,这取决于每个列中的LED的相应数量的LED被接通。 该程序提供五种显示模式,基本上通过在每列的不同位置打开/关闭LED来实现。您可以轻松修改/创建不同的模式。这里使用按钮来改变显示模式,转动显示图案移动到下一个,最后重置为默认模式。按钮连接到其中一个数字输入,并在每一轮显示刷新后扫描该输入。 频率响应: 经验证,系统能够响应高达18.6Khz的频率。
arduino音乐频谱是通过使用arduino开发板和相应的传感器,实现对音乐信号的分析和频谱显示的技术。通过接收音乐信号,arduino可以将其转换为数字信号进行处理。 实现arduino音乐频谱的关键是使用频率分析算法。常见的算法包括快速傅里叶变换(FFT)和快速沃尔什变换(FWT)。这些算法可以将音乐信号转换为频谱,即将信号分解为不同频率成分的能量。 在arduino中,可以通过连接声音传感器或麦克风模块来接收音乐信号。这些传感器可以将声音转换为模拟信号,然后通过模拟数字转换器(ADC)将其转换为数字信号。 接收到音乐信号后,arduino可以使用FFT等算法对信号进行频率分析。分析结果可以用不同的方式显示,常见的是频谱图。频谱图以频率为横轴,能量为纵轴,用不同颜色或灯条表示不同频率的能量大小。通过频谱图,我们可以直观地了解音乐的频域特征,例如高低音的分布、能量强弱等。 除了显示频谱图,arduino音乐频谱还可以与其他设备或系统进行互动。例如,可以将频谱显示在LED矩阵上,制作出具有动感效果的音乐灯光;也可以与电机、舞台灯光等设备进行联动控制,创造出更多的艺术效果。 总之,arduino音乐频谱是一种通过arduino开发板和传感器实现音乐信号频谱分析和显示的技术。它可以帮助我们更好地理解音乐的频域特征,并创造出丰富多样的音乐艺术效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值