
2.3 功能及总体设计
本作品主要分为两个模块进行设计:音乐模块和联网模块。音乐模块的主要功能是实现音乐播放器的相关功能,读取SD卡中的音乐文件(MP3、WAV音乐文件)的解码、译码以及播放、暂停等功能;联网模块的主要功能是将控制端从计算机解放出来,实现本项目中“Free”的含义,用手机远程操纵时,能接收到命令,并返回相应的结果语句给客户端,达到方便快捷的目的。
2.3.1 功能介绍
用户只需将MP3或WAV文件存于SD卡中,便可通过手机APP以遥控或对话的形式对作品进行远程控制,实现播放、暂停、上/下一曲、停止、随机、音量+/-,以及播放生日歌、闹铃、火情通知、校园广播等特色功能。SD卡中的音乐文件格式较常规,从网上下载的歌曲无须转换格式就可以直接存入卡中等待播放。不同于其他音响,本音响可实现远程控制,还可以通过选定音乐编号来直接播放喜欢的音乐。
2.3.2 总体设计
要实现上述功能需要将作品分成两个模块进行设计:音乐模块和联网模块。音乐模块选用功能较全的DFPlayer Mini MP3播放器模块和兼容性较好的8GB SD卡;联网模块由ESP8266-01S和贝壳物联平台构成,实现命令的无线传输。Arduino UNO R3开发板将两个模块连接起来,是项目的核心控制器。
1.整体框架图
项目的整体框架如图2-1所示。

图2-1 整体框架图
2.系统流程图
系统的流程如图2-2所示。

图2-2 系统流程图
接通电源后,客户端检查设备是否在线,若在线,则检查是否为有效命令输入,若是,则执行,否则保持上一状态,当上一命令执行完毕后,设备将进入等待状态。当有效命令是休眠状态时,设备进入低功耗状态,不再工作。
3.总电路图
系统总电路及Arduino UNO开发板、DFPlayer Mini MP3播放器、ESP8266-01S的引脚连线如图2-3所示。

图2-3 总电路图
元件引脚连线如下:
1)DFPlayer Mini MP3播放器与Arduino、小扬声器连线的模块如图2-4所示,引脚连线如表2-1所示。
2)ESP8266-01S与Arduino的连线模块如图2-5所示,引脚连线如表2-2所示。

图2-4 DFPlayer Mini MP3播放器模块
表2-1 DFPlayer Mini MP3播放器引脚连线


图2-5 ESP8266-01S模块
表2-2 ESP8266-01S引脚连线

2.3.3 模块介绍
本项目主要包括音乐模块和联网模块,下面分别给出各部分的功能、元件、电路图和相关代码。
1.音乐模块
1)功能介绍
实现播放、暂停等音乐播放器的基本功能。元器件包括DFPlayer Mini模块、SD卡、Arduino UNO R3开发板、小扬声器。电路如图2-6所示,模块引脚功能如表2-3所示,串口指令格式如表2-4所示,串口控制指令如表2-5所示。

图2-6 音乐模块电路图
表2-3 DFPlayer Mini模块引脚功能

表2-4 串口指令格式

表2-5 串口控制指令

2)库函数
头文件:

cpp文件:



3)相关代码



2.联网模块
1)功能介绍
与贝壳物联的服务器相连,实现命令的远程传输,并将音响、计算机网页端、手机应用端连接在一起,元器件包括ESP8266-01S、Arduino开发板及手机客户端。元器件的模块电路和控制端通信如图2-7和图2-8所示。手机控制端与设备的通信,在相关代码中已做说明,详见代码解析。

图2-7 ESP8266模块电路

图2-8 手机控制端与设备的通信
2)相关代码
代码1:对ESP8266进行透传设置,并自动连接贝壳物联的服务器。
AT ATE0 AT + RESTORE AT + CWMODE = 1 AT + CWJAP = "Jasmine","wrj04300" AT + CIPMODE = 1 AT + SAVETRANSLINK = 1,"121.42.180.30",8181,"TCP"
注意:每个命令输入后均需手动换行。
代码2:







