DIY设计:音乐也能有七彩的颜色?一颗Wi-Fi芯片就能做到

发布时间:2016-10-29 阅读量:1247 来源: 发布人:

几年前,我写了可以将色彩分配给每个音符的算法,叫做ColorChord。它的奇妙之处在于,我每弹一个音符,就会分配给它一个颜色(同一个音符颜色相同)——无论是否有八度音阶。利用这些色值来控制LED,我有了一种把和弦与旋律视觉化的全新方式。可惜的是,算法有点粗糙。当时可用的奔腾处理器在实时运行算法方面存在困难,迫使我使用了专用的图形处理器。

几年后,一位朋友研究了我的算法,发现可以极大地提高它的速度。在他的基础上,我又把算法重写了两次。最终,它可以很轻松地在台式机的CPU上运行了,经过进一步的调整和修改,它可以在168兆赫STM32F407/417微控制器上运行。最后,我又想,它还能不能在更简单的设备上运行呢,比如Wi-Fi桥接模块一类的设备?

平心而论,我确实想到了一款Wi-Fi桥接设备:性能优越的ESP8266,来自乐鑫信息科技(上海)有限公司(以下简称乐鑫公司)。ESP的功能差不多相当于一个连接Wi-Fi设备的串口,可以将它插入你最喜欢的控制器里,利用AT格式的调制解调器命令接入无线网络。但黑客社区很快意识到,可以对ESP的板载处理器进行重设,实现更多功能。

ESP8266使用的是泰思立达处理器核心,出厂设置为80兆赫,但可以超频运行160兆赫。它的特性包括通用输入/输出端口(GPIO);具备直接内存访问(DMA)的集成芯片间声音(I2S),可进行快速数据传输;提供脉宽调制硬件支持,以及一个模数转换器(ADC)。通过在ESP上运行代码,可以让物联网设备和服务器拥有丰富的基于网络配置的图形用户界面。有了WebSockets,运行在ESP上的应用程序会以超过600赫兹的速度更新并接收远程用户的输入。
黑客社区开发了固件工具、一台编译器、演示和集成开发环境(IDE),可以实现在ESP上运行Arduino和NodeMCU代码。幸运的是,乐鑫公司抓住了这一机遇,发布并更新了其软件开发工具包(SDK),并发布了文档,而非把它藏在堆成山的保密协议后面。结果,ESP也从一块价值2美元的芯片(分线板大概价值10美元)发展成为一个32位的全功能无线微控制器,且追随者越来越多。

我想在ESP上运行ColorChord,以便它听声音、判断色值,然后再用它们去控制一系列WS2812B LED。WS2812B是可分别单独控制的色彩LED模块。每个LED都会接受一个串行信号,具体说明某一颜色的8比特RGB(红-绿-蓝)值。在串行里,每个模块会从它看到的前3个字节里选取它的颜色,脱去这些字节,然后将剩余内容传递给下一个模块。

对很多项目来说,许多人认为Arduino IDE和它的Wiring语言是理想选择。不过,我选择的是C语言,再搭配官方的Espressif SDK来打造我自己的固件。虽然它使用起来不太方便,但SDK提供了所需的所有功能,并提供了优化代码的能力。可以利用GCC编译器和SDK制作固件,然后通过一个串行端口将它上传至ESP。

在为我的项目写软件的时候,我便知道需要对板载ADC进行采样,分析来自附属连接的驻极体麦克风的声音。虽然官方SDK提供了可读取ADC的功能,但并没有精准到足以产生ColorChord算法所需的连续波形音频。在做了一些网上调查研究后,我找到了能够解决利用精确处理器中断请求读取ADC的人。通过中断请求,我发现我能以16千赫的速度读取ADC,并获得一个没有跳跃或抖动的恰当波形。

下一个问题是控制WS2812B串行。它们需要精确的计时操作,而要移出一长串行的所有色值需要花费一点时间。我想起了ESP的I2S总线和DMA。I2S总线一般用于读取或写入音频数据,不过也可以用做一个美化后的移位寄存器。将这条总线与DMA引擎连接起来,大量缓冲数据便能通过一个单独的引脚移至LED模块了,整个过程都没怎么使用CPU。

大部分低层输入和输出都是由配套硬件处理的,所以ESP核心便得到了解放,无须运行ColorChord算法这一繁重的任务。我把用于桌面版、经过高度优化的ColorChord C代码放在ESP上,然后运行。令我震惊的是,ESP竟然没有崩溃。它与我家的网络相连,当访问它的网页界面时,一切好像都在运行。为了让自己相信它真的在运行,我对着麦克风哼哼——LED发出了亮黄色。而且ESP的运行速度是80 兆赫,还不到它潜力速度的一半!对网页界面添加了其他特性后,我可以对算法进行设置、调整,查看所有音符的状态,甚至还能通过示波器看到麦克风收到的波形。我成功了!

整个装置很小巧,足以附着在萨克斯风上。然后我把LED放在萨克斯风管口里面,这样的话,有人吹萨克斯风时——比如我的朋友大卫·查普曼(David Chapman)——它不仅能发出声音,还能亮出颜色。

几年前,我写了可以将色彩分配给每个音符的算法,叫做ColorChord。它的奇妙之处在于,我每弹一个音符,就会分配给它一个颜色(同一个音符颜色相同)——无论是否有八度音阶。利用这些色值来控制LED,我有了一种把和弦与旋律视觉化的全新方式。可惜的是,算法有点粗糙。当时可用的奔腾处理器在实时运行算法方面存在困难,迫使我使用了专用的图形处理器。

几年后,一位朋友研究了我的算法,发现可以极大地提高它的速度。在他的基础上,我又把算法重写了两次。最终,它可以很轻松地在台式机的CPU上运行了,经过进一步的调整和修改,它可以在168兆赫STM32F407/417微控制器上运行。最后,我又想,它还能不能在更简单的设备上运行呢,比如Wi-Fi桥接模块一类的设备?

平心而论,我确实想到了一款Wi-Fi桥接设备:性能优越的ESP8266,来自乐鑫信息科技(上海)有限公司(以下简称乐鑫公司)。ESP的功能差不多相当于一个连接Wi-Fi设备的串口,可以将它插入你最喜欢的控制器里,利用AT格式的调制解调器命令接入无线网络。但黑客社区很快意识到,可以对ESP的板载处理器进行重设,实现更多功能。

ESP8266使用的是泰思立达处理器核心,出厂设置为80兆赫,但可以超频运行160兆赫。它的特性包括通用输入/输出端口(GPIO);具备直接内存访问(DMA)的集成芯片间声音(I2S),可进行快速数据传输;提供脉宽调制硬件支持,以及一个模数转换器(ADC)。通过在ESP上运行代码,可以让物联网设备和服务器拥有丰富的基于网络配置的图形用户界面。有了WebSockets,运行在ESP上的应用程序会以超过600赫兹的速度更新并接收远程用户的输入。

黑客社区开发了固件工具、一台编译器、演示和集成开发环境(IDE),可以实现在ESP上运行Arduino和NodeMCU代码。幸运的是,乐鑫公司抓住了这一机遇,发布并更新了其软件开发工具包(SDK),并发布了文档,而非把它藏在堆成山的保密协议后面。结果,ESP也从一块价值2美元的芯片(分线板大概价值10美元)发展成为一个32位的全功能无线微控制器,且追随者越来越多。

我想在ESP上运行ColorChord,以便它听声音、判断色值,然后再用它们去控制一系列WS2812B LED。WS2812B是可分别单独控制的色彩LED模块。每个LED都会接受一个串行信号,具体说明某一颜色的8比特RGB(红-绿-蓝)值。在串行里,每个模块会从它看到的前3个字节里选取它的颜色,脱去这些字节,然后将剩余内容传递给下一个模块。

对很多项目来说,许多人认为Arduino IDE和它的Wiring语言是理想选择。不过,我选择的是C语言,再搭配官方的Espressif SDK来打造我自己的固件。虽然它使用起来不太方便,但SDK提供了所需的所有功能,并提供了优化代码的能力。可以利用GCC编译器和SDK制作固件,然后通过一个串行端口将它上传至ESP。

在为我的项目写软件的时候,我便知道需要对板载ADC进行采样,分析来自附属连接的驻极体麦克风的声音。虽然官方SDK提供了可读取ADC的功能,但并没有精准到足以产生ColorChord算法所需的连续波形音频。在做了一些网上调查研究后,我找到了能够解决利用精确处理器中断请求读取ADC的人。通过中断请求,我发现我能以16千赫的速度读取ADC,并获得一个没有跳跃或抖动的恰当波形。

下一个问题是控制WS2812B串行。它们需要精确的计时操作,而要移出一长串行的所有色值需要花费一点时间。我想起了ESP的I2S总线和DMA。I2S总线一般用于读取或写入音频数据,不过也可以用做一个美化后的移位寄存器。将这条总线与DMA引擎连接起来,大量缓冲数据便能通过一个单独的引脚移至LED模块了,整个过程都没怎么使用CPU。

大部分低层输入和输出都是由配套硬件处理的,所以ESP核心便得到了解放,无须运行ColorChord算法这一繁重的任务。我把用于桌面版、经过高度优化的ColorChord C代码放在ESP上,然后运行。令我震惊的是,ESP竟然没有崩溃。它与我家的网络相连,当访问它的网页界面时,一切好像都在运行。为了让自己相信它真的在运行,我对着麦克风哼哼——LED发出了亮黄色。而且ESP的运行速度是80 兆赫,还不到它潜力速度的一半!对网页界面添加了其他特性后,我可以对算法进行设置、调整,查看所有音符的状态,甚至还能通过示波器看到麦克风收到的波形。我成功了!

整个装置很小巧,足以附着在萨克斯风上。然后我把LED放在萨克斯风管口里面,这样的话,有人吹萨克斯风时——比如我的朋友大卫·查普曼(David Chapman)——它不仅能发出声音,还能亮出颜色。

相关资讯
红外传感器的选型要素与应用场景解析

红外传感器是一种利用红外线进行检测的电子设备,广泛应用于工业自动化,安防监控,智能家居,医疗设备等领域

DigiKey发布《机器人技术探秘》系列:联合Eaton与SICK深入探索机器人自动化新纪元

随着全球制造业迈向集成化与数字化,独立机器人单元正逐渐融入更广泛的自动化系统。DigiKey 本季发布的《机器人技术探秘》的第 5 季《未来工厂》视频系列,联合行业领先企业 Eaton 和 SICK,系统解析了从电气控制、传感技术到数据互联等多个层面的前沿解决方案。新一季邀请了多名专家,一起探讨支撑现代机器人制造与自动化的基础设施与创新技术。

SEMI-e 2025深圳半导体展9月启幕!全产业链覆盖,超千家龙头集结

SEMI-e深圳国际半导体展暨2025集成电路产业创新展将于2025年9月10日至12日在深圳国际会展中心(宝安新馆)隆重开幕。本届展会由CIOE中国光博会与集成电路创新联盟联合主办,中新材会展与爱集微共同承办,以“IC设计与应用”、“IC制造与供应链”及“化合物半导体”为核心主题,系统覆盖集成电路全产业链环节。

超11万人次观展,5723名海外买家到场!IOTE 2025深圳物联网展圆满落幕​

​在AIoT技术加速赋能全球数字化转型、中国持续引领物联网产业创新的大背景下,IOTE 2025第24届国际物联网展·深圳站于8月29日在深圳会展中心(宝安新馆)圆满落幕。本届展会以“生态智能·物联全球”为主题,联合AGIC人工智能展与ISVE智慧商显展,汇聚1001家产业链企业,覆盖8万平方米展区,三日内吸引观众超11万人次,其中海外专业买家达5723人,来自30多个国家和地区,充分彰显了展会的国际影响力与行业凝聚力。