邱文江,黄友文
(江西理工大学 信息工程学院,赣州 341000)
邱文江(硕士研究生),研究方向为嵌入式系统;黄友文(研究生导师),研究方向为视频压缩编码、SoC设计系统、嵌入式系统。
目前市场上音乐播放器款式多样,能实现很丰富的功能,外观设计也更美观,更能满足用户的需要。但是,现有的音乐播放系统大多采用键盘、触摸平板等设备对音乐播放系统进行控制,使用此种控制终端只能进行本地控制,不能实现远程控制,造成控制方式不够方便、快捷。现代人对生活品质要求越来越高,要求音乐播放系统的操作越来越简单化、智能化[1]。
本设计基于已经发展成熟的WiFi无线网络,充分利用WiFi覆盖范围广、传输速度快、抗干扰能力强等优点。Android具有开源性、封装性、性价比高等优点,基于Android系统开发的客户端软件移植性强,通用性高。采用手机作为控制终端,便于操作。手机通过无线网络(WiFi)对音乐播放系统进行控制,可以实现方便、快捷、智能化的要求。
采用STM32F103作为微控制器有很多优势,STM32F系列属于中等容量增强型,是32位基于ARM核心的带64或者128KB闪存的微控制器,在市场上是性价比很高的产品。本设计主要有控制模块、WiFi无线模块、音频解码模块VS1003B、SD卡,其系统结构框图如图1所示。
图1 系统结构框图
工作流程:点击智能手机客户端软件上的播放按钮,通过WiFi模块接收到命令后,STM32F103读取SD卡中的MP3音乐文件,然后将读取的数据通过SPI传输到音频解码芯片VS1003B,经过解码转换后发送到耳机听筒,实现播放音乐功能;点击暂停按钮,STM32F103停止读取SD卡里的MP3音乐文件数据,这样就能实现停止播放音乐功能;点击其他按钮,也能实现相应的功能。
本设计主要特点如下:
①在开放的Android系统控制终端设计的基础上,使用支持组件的重用和替换应用程序框架。使用交互式图形界面清晰美观,操作控制简单,设计出来的产品经过用户体验反映非常好[2]。
② 本设计摒除了传统音乐播放系统对专用控制按键的依赖,通过用户的手机就能实现对音乐播放器播放、暂停等的控制,大大方便了用户的操作。这样设计出来的音乐播放系统不仅具有一般音乐播放器的功能,而且具有将控制端和硬件部分分离的优势,实现了对音乐播放系统的远距离控制。
VS1003B是一个单片MP3/WMA/MIDI音频解码器和ADPCM解码器。它包含一个高性能、自主产权的低功耗的DSP处理器核VS_DSP4,工作数据存储器为用户应用提供5KB的指令ROM和0.5KB的数据RAM。其还具有串行的控制和数据接口、1个高品质可变采样率的ADC和立体声DAC、4个常规用途的I/O 口、1个UART,以及1个地线缓冲器和耳机放大器[3]。
STM32F103将从SD卡里读取的MP3音频数据流传给音频解码模块,音频解码模块将该数据流解析并转换成模拟信号后再进行输出。VS1003B与STM32F103的数据通信是通过J2排针上的SPI总线方式进行的。音频解码模块电路的原理图如图2所示。
图2 音频模块解码电路图
SD卡是最为通用的数据存储卡,具有价格低、存储容量大、使用方便、通用性与安全性强等优点,因此 MP3、MP4、MP5、Pad和数码相机等设备上的存储卡均为SD卡。SD卡支持的总线模式为SD模式和SPI模式[4],本设计中采用SPI模式。图3为SD卡模块(J10排针上的SPI模式)的接口电路。
图3 SD卡模块图
WiFi(Wireless Fidelity,无线保真技术)的最大优点是传输速度较高,而且能自动调整带宽,可以有效地保障网络的稳定性和可靠性。该设计采用的 WM-G-MR-08模块不仅具有WiFi的功能,而且能提供小尺寸和高数据速率的无线连接,可应用于无线PDA、DSC、媒体适配器、微型打印机、条码扫描器、VOIP电话等。数据存储装置是该 WM-G-MR-08潜在的应用,在嵌入式上的应用主要集中在移动装置方面。在设计中,WM-G-MR-08模块通过开发板上的J1排针的SPI引脚与主控芯片通信,ANT1SMACON为无线网卡,其原理图如图4所示。
图4 WM-G-MR-08模块图
设计采用RealView MDK开发套件作为软件开发平台,嵌入式软件采用C语言编写,操作系统采用μC/OS-II。μC/OS-II是用C语言和汇编语言编写的,结构简洁精练,可读性很强,同时又具备实时操作系统的大部分功能,并且通过适当的扩展之后,可被广泛用于多种应用场合[5]。
系统启动后,先初始化STM32F103,然后初始化SD卡、音频解码模块、WiFi无线模块,最后是μC/OS-II系统初始化。当WiFi指令判断为播放指令时,由微控制器将SD卡的一些基本信息送到FAT文件系统接口处进行读取,获取SD卡的容量、FAT表及根目录所在的起始扇区。通过这些信息就可以判断出SD卡是否存储有音频解码模块可以解码并播放的音乐文件。若有该音乐文件,控制器将通过SPI总线方式读出该文件的音频信息,并将音频的数据流信息送入到音频解码模块中,由VS1003B芯片解码后,再通过内含的高质量的立体DAC和耳机驱动电路,就可以实现音乐的播放。程序流程图如图5所示。
图5 程序流程图
手机客户端软件开发用到的开发工具包括Eclipse、JDK、ADT和Android SDK。开发环境搭建过程如下:首先安装JDK,再分别解压Eclipse和Android SDK,接着为Eclipse安装ADT插件,最后配置Android SDK,最终搭建好 Android开发环境[6]。
针对客户端软件,采用ImageView+TestView进行UI设计,选择合适的图片作为背景并添加ButtonStart、Button-Stop、ButtonOff等功能按钮,实现对音乐播放系统的播放、暂停、关闭等控制。设计好UI界面后,通过为各个按钮添加setOnClickListener事件响应用户操作。根据命令按钮的不同,在响应函数中通过网络向子机节点发送不同的命令实现相应的控制功能。
本设计是在ARM7平台上构建WiFi,成本优势明显。采用当前较新的控制方式——智能手机软件控制+无线网络,不仅能充分利用WiFi的传输速度快、覆盖范围广等优势,而且基于Android的平台建设成本低、使用方便。同时,这种方式采用的手机软件具有通用性,市场应用价值高,易于推广,能为用户提供优质、方便快捷的音乐播放服务。
[1]杨心怀,周洁.便携式 MP3播放器的设计[J].电子技术应用,2003(2):21-25.
[2]王朝华,童怀,陈德艳,等.基于Android的智能家居系统的研究与实现[J].计算机技术与发展,2012(6):225-228.
[3]洪家平.基于VS1003解码器的MP3播放器设计[J].单片机与嵌入式系统应用,2010(11).
[4]高美珍.基于嵌入式系统的 MP3播放器设计[J].湖北师范学院学报:自然科学版,2010(12).
[5]任哲.嵌入式实时操作系统μC/OS-II原理及应用[M].北京:北京航空航天大学出版社,2005:227-240.
[6]耿东久,索岳,陈渝,等.基于Android手机远程访问和控制系统[J].计算机应用,2011(2):3-559.