用Spresense扩大电子制作的广度!【第2篇】

使用Spresense制作高分辨率音乐播放器!

 

第1回 :什么是Spresense?

大家好,我是吉田!
这是使用索尼推出的Spresense 进行电子制作的第2篇,从这一篇起,我就要开始使用Spresense一些特有的功能,制作一些有趣的作品。
既然是索尼推出来的开发板,那就先用它做一个音频相关的作品——高分辨率音乐播放器吧!

1

本项目所需部件

Spresense

・Spresense 主板

spresense2

・Spresense 扩展板

・小型扬声器、或者入耳式耳机、头戴式耳机
(使用下图所示的可以插入耳机插孔、且带放大器的耳机)

b

・小型锂聚合物电池(860mAn)和电源插座
(※注:请小心处理,使用风险自负)

・Micro USB 数据线
・Micro SD 卡

 

本项目的流程

1. 连接Spresense 扩展板
2. 使用高分辨率解码器和示例Sketch播放音乐
3. 打造成小型音乐播放器式样,享受高分辨率音乐
4. 总结

1.连接Spresense扩展板

在上一篇中,我们使用了Spresense的主板,也就是Spresense的基础部分。在本项目中,因为要涉及到音频相关的功能,所以需要连接扩展板。Spresense扩展板配备了主板所没有的音频插孔和SD卡插槽。

2
3

先将扩展板的端口部位放在主板上,然后使用附带的端子进行固定。仅仅这样,就可以实现主板和扩展板之间的连动了。

4

当端口和端子发出“咔嗒”的一声时,就表示主板和扩展板合二为一,完成连接了(见下图)。

5

下一步,将所需的部件安装在扩展板上。
先将小型扬声器的插头插入扩展板的3.5mm插孔内。
接下来需要准备好Micro SD卡。SD卡里面要提前存储一些高分辨率音源的音乐文件,所以需要先将SD卡插入电脑。

6

目前Spresense能够支持的高分辨率音源为WAV格式文件。因为后面还要进行播放测试,所以需要准备一些音源样本。比如,通过下述ONKYO网站,就能下载各种格式的高分辨率音源样本,请按照个人喜好自行下载。
e-onkyo提供的免费高分辨率音源样本

7

我们暂且就下载马勒的WAV格式的交响曲吧,将其命名为HiRes1.wav,然后直接保存在SD卡中。

8

将文件保存至SD卡之后,将SD卡插入扩展板的SD卡插槽里面,再用USB数据线连接电脑和主板。

9

此时,我们需要在电脑上先启动Arduino IDE,然后在文件 > Sketch示例 > Spresense用的Sketch示例中的SDHCI 中,选择“UsbMsc”这一Sketch。
该Sketch是用于识别插在Spresense上的SD卡的Sketch,所以需要将其加载到Sprense里面。
加载完成后,启动串口监视器,这时监视器会弹出“USB MSC Prepared!”的消息,这就表示Spresense成功识别到了SD卡。

10

然后拔出连接在主板上的USB数据线,插入扩展板的USB端口,将扩展板连接至电脑。
这样一来,就能通过Spresense扩展板,将SD卡识别成磁盘并读取里面的内容了。

这样操作之后,如果能够看到SD卡里面的文件(如果是照片,则在“电脑端SD”这个磁盘内),则表示主板、扩展板、SD卡实现了相互连接。

2. 使用高分辨率解码器和示例Sketch播放音乐

接下来,要通过Spresense播放高分辨率WAV文件,还需要安装解码器。
话虽如此,但实际上Spresense Arduino Library里面已经有解码器了,所以只要在库里面选中之后,加载到SD卡里面就可以了。

11

然后,再把USB数据线插在扩展板上的那一端,改插至主板。
在Arduino IDE中点击文件 > Sketch示例 > Audio > dsp_installer,选中wav_dec_installer。

12

加载至Spresense之后,启动串口监视器。
串口监视器中会出现“Select where to install WAVDEC?”的提示,这时解码器的加载位置选择“ [1] SD Card”。

13

这样,“WAVDEC”这一解码器文件就被加载到了SD卡中。(之后,如果在SD卡中查看的话,所呈现出来的就是下图所示的界面。)

如此一来,提供音源的SD卡和播放音频的扬声器就全部配置完毕,接下来就要用到Spresense Library里面的用于播放音乐的示例Sketch了,赶紧体验一下高分辨率音频吧。

14

再次从Arduino的菜单中,选择文件 > Sketch示例 > Audio > application里面的player_hires

该Sketch的中间向后部分有一行是用于指定播放的文件名的命令,需要将此处的文件名改成自己准备好的音源文件名称。

myFile = theSD.open(“HiRes1.wav”);

如果音源的比特率是192kHz/24bit,则还需要进行下述变更。

AS_SAMPLINGRATE_192000

15

(如果是e-onkyo的音源,则其比特率是96kHz/24bit,不需要进行任何变更。)

16

接下来将它加载至Spresense,启动串口监视器。

启动之后,先是跳出“Initialization, Open!”,然后执行“Play!”命令,这样就会开始播放马勒的交响曲了!也许会因为扬声器的缘故,或者因为没有比较着听而很难判断音质是否达到了高分辨率级别,但总归是能够享受到高质量的音乐了!

3. 打造成小型音乐播放器式样,享受高分辨率音乐

如果就做成这个样子,那看上去也未免过于寒酸。所以,最后我将使用Spresense的包装盒,将其打造成小型音乐播放器的式样。

17

首先,为了控制该电子作品的整体尺寸,需要给主板连接小型锂聚合物充电电池。因为主板带了电源端子(左边照片中右上角带+−符号部位),将电源插座就焊在这个位置。

18

因为Spresense配了电路,所以只需要将电池插入这个电源插座,就能同时给主板和扩展板供电。Spresense不愧是以低功耗著称的开发板,仅仅是这种小型电池,也能使用好几个小时。

19

接下来的处理,与其说是电子制作,还不如说是单纯的手工制作。Spresense的包装盒尺寸正好合适,我们就用空包装盒来制作播放器的外壳。
先在包装盒上裁剪出一个长方形的孔,大小能够看到主板即可,但是要确保从正面可以看到LED以及复位按钮。
盒子的上方要留出耳机插口孔以及SD卡插拔所需的空间。

20

再用双面胶等工具,固定好Spresense主板、扩展板以及电池。
在盒子下方也需要开一个可以插USB数据线的孔。

如此一来,播放器从正面看,其外形如下,在盒子上方可以进行SD卡的插拔操作,下方可以用USB数据线连接电脑,更换音乐文件。

spresense

接下来,通过USB数据线连接主板和电脑,对示例Sketch “player_hires”稍作修改。

首先,需要在最开始的setup()部分追加函数,用来控制主板上的LED(从LED0到LED4,共4个)。

void setup()
{
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);

再在程序中间位置的音乐生成部分(Play!部分),如下所示,将digitalWrite编辑为HIGH,这样就可以让LED亮灯。

puts(“Play!”);
digitalWrite(LED0, HIGH);
delay(100);
digitalWrite(LED1, HIGH);
delay(100);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED3, HIGH);
delay(100);

最后,在音乐结束部分(Main player File End!部分),如下所示,将digitalWrite编辑为LOW,这样LED就只会在音乐播放期间亮灯。

printf(“Main player File End!\n”);
digitalWrite(LED0, LOW);
delay(100);
digitalWrite(LED1, LOW);
delay(100);
digitalWrite(LED2, LOW);
delay(100);
digitalWrite(LED3, LOW);
delay(100);

编辑完成之后,将该Sketch名称改成类似于“player_hires_led”这样的名称,加载至Spresense。

所有操作完成之后,我们就来欣赏音乐吧。音乐播放期间,四个绿色LED都会亮起来,亮灯就表示播放器正在播放音乐。
※出于版权保护的考虑,下述视频不带音频。

 

4. 总结

在本项目中,通过使用索尼的Spresense扩展板,轻松地实现了高分辨率音源的播放。
因为扩展板自带SD卡插槽、音频插孔,且Spresense Arduino Library里面原本就有高分辨率解码器,所以本项目的实现非常简单。
低功耗原本就是Spresense的卖点之一,所以即使用一块小电池,也能支持相当长时间的音乐播放。可以说,该开发板在各类移动设备的制作方面非常实用。

在下一个项目中,我将使用ROHM推出的与Spresense兼容的附加板,在电子作品中,添加更多的通过Spresense可以实现的功能(比如传感器检测),敬请期待!

(吉田)

本系列连载的内容

第1篇:什么是Spresense?
第2篇:使用Spresense制作高分辨率音乐播放器!(本文)
第3篇:使用ROHM附加板,通过Spresense轻松实现传感器检测!
第4篇:使用ROHM的BLE附加板,通过智能手机玩转高分辨率音乐播放器!
第5篇:使用Spresense相机板制作数码相机!

吉田 显一(Yoshiken)
吉田 显一(Yoshiken)

在普通公司工作的上班族,非常喜欢创作的周末创客,出版了电子书MESHBOOK,平时也写写博客。
http://blog.ktrips.net

相关文章

  1. arduino-h02_14

    用Arduino制作的太阳能电池板供电数字养殖箱【后篇】

  2. 用Spresense扩大电子制作的广度!【第5篇】

  3. 用Spresense扩大电子制作的广度!【第4篇】

  4. 用Spresense扩大电子制作的广度!【第3篇】

  5. title_image

    用Spresense扩大电子制作的广度!【第1篇】

  6. learning-electronics-03-00

    超越LED闪烁!更多了解电子制作“N讲”【第3篇】

  7. learning-electronics-02-08

    超越LED闪烁!更多了解电子制作“N讲”【第2篇】

  8. learning-electronics-01-09

    超越LED闪烁!更多了解电子制作“N讲”【第1篇】

  9. 电机的种类有哪些?电子制作中使用的电机种类介绍

TECH INFO

  • Sugiken老师的电机驱动器课堂
  • 重点必看
  • 技术分享
  • Arduino入门指南

基础知识

  • Si功率元器件
  • IGBT功率元器件
  • 热设计
  • 电路仿真
  • 开关噪声-EMC
  • AC/DC
  • DC/DC
  • 电机
  • 传递函数

工程技巧


Sugiken老师的电机驱动器课堂

PICK UP

PAGE TOP