《多功能智能播放器-控制程序设计.docx》由会员分享,可在线阅读,更多相关《多功能智能播放器-控制程序设计.docx(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、北京理工大学珠海学院2020届本科生毕业设计多功能智能播放器-控制程序设计学 院:专 业:姓 名:指导老师:工业自动化学院机械电子工程刘铭宇学 号:职 称:160404107379莫伟强讲师中国珠海二二年五月诚信承诺书本人郑重承诺:本人承诺呈交的毕业设计多功能智能播放器-控制程序设计是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。承诺人签名: 刘铭宇 .日期: 2020 年 5 月 5 日多功能智能播放器-控制程序设计摘 要当前,人们的生活质量日益提升,在最基本的吃、穿、住、行上,人们也在追求更高的生活体验。听音乐作
2、为人们的主要娱乐类型之一,现在已经与人们平时的生活密不可分。对于一台多功能智能播放器,首先基础的播放功能是其必不可少的功能之一,除了基础的播放功能外,我们计划该产品还能与手机蓝牙连接,并且能用语音控制、手机远程控制其正常使用。所以该多功能智能播放器在制作时不光要考虑到单纯软硬件的结合,也要考虑如何实现其与产品使用者之间的一个交互功能,这些问题在产品制作过程中都需要去解决。想要实现这些功能,则首先需要通过实现单一功能,在产品单一功能能正常使用后,再一步一步去尝试将各个单一功能结合在一起,实现一个能通过按键、语音、手机端控制的多功能智能播放器。关键词:多功能智能播放器,按键控制,语音控制,手机远程
3、控制Multi-function smart player-System control programmingAbstractAt present, peoples life quality is improving day by day, in the most basic food, clothing, housing, transportation, people are also in pursuit of higher life experience. Listening to music as one of the main entertainment types of peop
4、le, now has been inseparable from Peoples Daily life.For a multi-function smart player, the first basic playback function is one of its essential functions. In addition to the basic playback function, we plan that the product can also be connected to the bluetooth of the phone, and can be controlled
5、 by voice control and the phone remote control for normal use. Therefore, when making this multi-functional intelligent player, we should not only consider the combination of pure hardware and software, but also consider how to realize an interactive function between it and the product user. All the
6、se problems need to be solved in the production process. To achieve these functions, we first need to achieve a single function. After the single function of the product can be used normally, we will try to combine all the single functions step by step to achieve a multi-functional smart player that
7、 can be controlled by buttons, voice and mobile phone.Key words: multi-function smart player, the key control, voice control, mobile phone remote control目录1 绪论11.1 研究背景及意义11.1.1 研究背景11.1.2 本设计的目的及意义11.2 多功能智能播放器的国内外现状11.3 多功能智能播放器的发展方向21.4 研究的主要内容和目标21.5 论文组织结构安排31.6 本章小结32 开发平台及编程环境简介42.1 开发平台-Ardu
8、ino42.1.1 Arduino平台背景42.1.2 Arduino开发板52.2编程环境-Arduino IDE62.3 本章小结83 多功能智能播放器的总体设计方案93.1 设计概述93.2 多功能智能播放器的设计要求93.3 设计方案93.3.1 设计步骤93.3.2 设计流程图103.4 本章小结104 多功能智能播放器的控制程序设计114.1程序的功能以及接线说明114.2 蓝牙模块114.3 OLED显示器模块144.4 DFPlayer MP3模块154.5 按键部分174.6 LD3320语音模块194.7 程序功能调用204.8 本章小结215 控制程序的编译结果以及调试2
9、26 结论246.1 设计总结和难点246.2 设计创新点246.3 设计的不足点246.4 展望25参考文献26致 谢27附录1 程序28附录2 英文文献40附录3 英文文献翻译451 绪论1.1 研究背景及意义1.1.1 研究背景当前,随着科技以及社会时代的发展,人们的生活质量日益提升,除了最基本的衣、食、住、行以外,人们也越来越追求更好的生活体验,而这一点则成为了商机,使娱乐类电子产品市场日益壮大。听音乐作为人们日常生活中的主要娱乐类型之一,可以达到使人放松心情并且在工作、学习时舒缓压力等作用。而对于不满足于只用手机或者电脑听音乐的人,一个单独的音乐播放器是他们更好的选择。且随着人们对音
10、乐追求的不断提升,多功能智能音乐播放器的用户数量也在逐渐提升,并且会成为一个稳定的消费群体。作为年青一代新鲜产品,经过这几年市场上各个厂家不断的推广,多功能智能音乐播放器正在被越来越多的人接受并使用,且相对于中老年用户的数量提升,年轻用户数量的提升尤为明显,并且还有更为广阔的用户市场等待挖掘。在Arduino开源电子原型平台出现之前,基于单片机开发平台的电子产品设计相对复杂,需要设计开发人员具有一部分电子硬件知识,并且还需要懂得相关程序才能够去进行产品设计,这使得之前想要设计一款电子产品的门槛就变得非常高,于是开发电子产品的专业人士也非常少,电子产品的发展也十分缓慢。直到Arduino开源电子
11、原型平台的出现,使得曾经需要专业人士才能研发的新兴电子产品设计,门槛变得更低,非专业人士也可以通过一些简单的学习,即可掌握Arduino的基础使用方法,并用来制作各种新兴电子产品,其中就包括像多功能智能音乐播放器这样的电子产品。11.1.2 本设计的目的及意义在当前环境下,多功能智能音乐播放器有着巨大的发展潜力以及客户基数,本设计主要面向于对外接播放器有需求的客户人群,虽然目前市场上智能音乐播放器产品的开发水平以及达到了较高的水平,但是随着人们对产品要求的提高以及对新鲜感的追求,市场上的大多数电子产品的更新换代速度响应的也增快了许多。新兴电子产品能够丰富人们的生活,尤其对于年轻人,多功能智能音
12、乐播放器既能帮他们在繁忙的生活中放松心情,在能满足他们对新鲜电子产品的追求。1.2 多功能智能播放器的国内外现状目前,国外尤其是美国、日本等国多功能智能播放器技术比较成熟,美国的Apple Inc.以及日本的Sory Corporation等知名企业都在开发相关产品,在播放音乐以及语音互动的层面上还加入了人工智能,让客户通过互动的方式来享受音乐,相较于国内研发时间也比较早,并且发展水平较高,更新迅速。目前国内多功能智能播放器的研发处在研发过程中,虽然研发速度不低,但是相较于国外研发起步时间较晚,研发进展也没有国外企业成熟。很难顾全音质以及多功能两方面,使用的体验也不及国外产品,但是却有着很大的
13、发展空间以及市场,并且产品的设计会更考虑国内用户较多。随着人们的生活水平蒸蒸日上,广大消费者也更愿意去为了享受更舒适的生活而去消费,因此多功能智能播放器拥有巨大的市场以及良好的前程。也有越来越多的厂商加入到了多功能智能播放器的研发当中,其保证高音质的同时又拥有各种互动功能以及人工智能为其主要研究核心。21.3 多功能智能播放器的发展方向多功能智能播放器的发展方向与目前人们享受生活的方式相关,对于想要购买多功能智能播放器的人们来说,最重要的就是享受稳定的播放、良好的音质以及更智能的交互方式。因此多功能智能播放器有以下几点发展方向。(1) 更稳定的连接。由于多功能智能播放器是一个单独的外用设备,那
14、么则需要更加稳定的连接功能,虽然是最基础的功能,但也是最重要的功能,如果能保证长时间的稳定连接,客户的体感相对会高许多。来保证它能够连接到无线Wifi以及手机等相关设备。(2) 更好的音质。良好的音质也是顾客选择多功能智能播放器的重要指标,播放器的播放音质决定了它的顾客受众面,如何在一定的价格范围内提升播放器的音质,也是目前各企业研究的首要目标。(3) 更智能的交互方式。在拥有稳定的连接方式以及良好的音质条件下,更加智能的交互方式也是顾客追求的一点,播放器可以通过连接手机来更改它的设置以及风格,同时也可以查看产品使用情况和硬件信息。1.4 研究的主要内容和目标本设计选用了Arduino为开发平
15、台,以Arduino Mega 2560作为开发板,通过查阅相应的资料以及论文去学习,再通过网上寻找Arduino参考编程语句以及程序实例来进行参考学习他们的编程思路,在经过一定的学习和借鉴并打下一定的基础后,先通过完成各个基础功能的编程,再尝试一步一步将其结合在一起,不断完善程序。本设计需要完成的目标:(1) 查阅相关资料以及论文,学习Arduino编程参考语句以及学习借鉴他人的编程思路。(2) 根据所学内容及参考资料完成各个基础功能的编程。(3) 对各个基础功能的程序进行调试。(4) 尝试把调试成功的程序结合。(5) 对合并后的整个程序进行调试。(6) 分析总结编程中出现的问题,并对程序进
16、行调整和改进。1.5 论文组织结构安排第一章:绪论。描述主题研究的背景并引出本设计研究的意义,介绍国内外多功能智能播放器的发展现状,以及分析多功能智能播放器以后的房展方向,确定本设计研究的主要方向,并描述研究的主要内容及目标。第二章:开发平台及编程环境简介。介绍本设计控制程序部分所需要用到的开发平台以及编程环境,对开发平台的最终选择进行解释,并对开发平台以及编程环境的特点进行说明。第三章:多功能智能播放器的总体设计方案。对该设计的一个总体设计方案进行描述,概述本设计的设计要求,分布介绍本设计在每一阶段该如何实现。并绘制其运作流程图。第四章:多功能智能播放器的控制程序设计。对播放器能实现的功能进
17、行详细的介绍,描述其程序思路,介绍其每一步功能如何实现。第五章:控制程序的仿真调试结果及分析。本章结合第四章设计出的程序,对控制程序和实物进行编译以及调试。第六章:结论。对本设计进行总结,描述在进行毕业设计时遇到的难点,描述其设计创新点以及不足点,并说明本次毕业设计的展望。1.6 本章小结本章主要是对多功能智能播放器的背景、现状以及发展方向以及定位进行分析说明,分析了本产品的需要设计的主要内容,并且介绍了本设计中软件设计的主要过程和所要达到的目标,对论文的总体结构进行概括。2 开发平台及编程环境简介在本设计中,我们选用了Arduino作为开发平台、Aduino Mega 2560作为开发板,A
18、rduino IDE作为编程环境,并且选用了DFPlayer MP3模块、LD3320语音模块、OLED显示器模块、HC-06蓝牙模块来结合使用,完成本设计。2.1 开发平台-Arduino2.1.1 Arduino平台背景Arduino平台的起源则需要提到该平台的两位创始人,一位是意大利Ivrea一家高科技设计学校的老师Massimo Banzi,另一位则是西班牙籍晶片工程师David Cuartielles,当时David Cuartielles正巧在这所学校担当访问学者,才有了他们一起创作Arduino开发平台的故事。在以前还有一个适合学生以及初学者使用的开发平台下,Massimo Ba
19、nzi的学生经常因为很难找到既便宜又适合新手使用的微控制器而感到烦恼,学生们也向Massimo Banzi老师进行了反馈,在Massimo Banzi找到David Cuartielles并和其进行协商后,他们两人决定设计属于自己的开发平台。在制作开发平台的过程中,他们需要一种编程语言来支持对他们平台的开发,最终他们为开发平台选择并引入了Massimo Banzi的学生David Mellis为开发板设计的编程语言。在经过一段时间研发以及调试后,他们成功研发出了满足学生们要求的电路板,并为其命名为Arduino。3相比于其他开发平台来说Arduino平台则拥有以下特点:(1) 能够跨平台:目前
20、其他的大多数控制器只能在Windows系统上运行开发,但是Arduino IDE编程平台不光可以在主流操作系统Windows上运行,还可以在Linux、Macintosh OS X两个操作系统上运行,这使得Arduino的用户对于其他控制器用户在运行编程环境时来说有着更多的操作平台来给他们使用,让他们拥有更多的开发环境供选择。(2) 简洁明了:Arduino平台相较于其他操作系统来说用户使用起来更加简洁易懂,比较适合学生以及新入门的初学者,使他们能够通过初步的学习就能大致掌握并且尝试开发,并且Arduino平台还有着很强的灵活变换性,这使得Arduino平台的初学者不需要花费太多的时间在单片机
21、基础以及编程语言的学习上,初学者只需要经过简单的了解学习后,就可以进行在Arduino平台上进行项目的开发。(3) 开放性:不像部分平台中的一部分数据都是拒绝用户直接拿来使用的,Arduino平台中的硬件原理图、电路图、IDE软件及核心库文件都是开放的,只要是在开源协议范围内,Aduino平台的使用者不光可以对程序代码进行参考,还可以根据其喜好来修改设计代码并使用,给使用者提供了很大的便利。(4) 发展空间大:Arduino不仅是全球最热门的开源硬件,也是优秀的硬件开发平台,它收到世界上许多用户的青睐。Arduino简洁明了的开发方式使得开发者可以把更多的精力放在项目的创意以及开发上,所以Ar
22、duino拥有着十分广阔的发展空间,在较低的入门门槛以及简洁明了的开发方式下,Arduino能够撑起足够的用户基数并为用户提供足够大的创想空间,使得有创意、有想法的人不会因为编程语句何使用开发平台基础薄弱而难有进展。42.1.2 Arduino开发板本设计原本设想的是使用Arduino UNO开发板,但经过测试发现由于Arduino UNO开发板本身的内存容量较小,不能满足同时运行MP3、语音、蓝牙、物联网等模块同时使用,在Arduino UNO开发板运行单个MP3模块时,运行内存就将近达到了70%。经过小组内讨论,我们将Arduino UNO系列开发板更换成了Arduino Mega系列开发
23、板。最终使用的是Arduino Mega 2560开发板,Arduino Mega 2560开发板在拥有众多引脚和串口的同时,还拥有较大的运行内存,相比于Arduino UNO更适合本产品的研发。Arduino Mega 2560开发板是基于名为ATmega2560的处理器核心而研发出来的微控制板,它包含了54个数字输入/输出口、16路模拟输入端口、4路UART接口、1个16MHz晶体振荡器、1个USB接口、1个电源接口、1个ICSP header以及1个复位按钮。5Arduino Mega 2560开发板是Arduino Mega系列开发板的升级版,Arduino Mega 2560开发板与
24、之前的其他开发板最大的不同就在于:Arduino Mega 2560没有使用FTDI USB-to-serial驱动芯片,而是使用了ATmega16U2编程作为USB-to-serial的传输器。Arduino Mega 2560开发板图和Arduino Mega 2560开发板参数如图2.1、表2.1所示:图2.1 Arduino Mega 2560开发板表2.1 Arduino Mega 2560参数序号名称参数1控制器ATmega25602工作电压5V3输入电压(推荐)7-12V4输入电压(限制)6-20V5数字I/O口54(含15路PWM输出)6模拟输入口167每个I/O口直流电流40
25、mA83.3V口直流电流50mA9闪存(Flash MEmory)256KB(其中8KB用作bootloafer)10静态存储器(SPAM)8KB11EEPPOM4KB12时钟16MHz2.2编程环境-Arduino IDEArduino IDE是一款专门用于开发基于Arduino平台产品的工具,在一款产品硬件设备都齐全的情况下,还需要软件来赋予产品其执行功能的逻辑以及状态,硬件与软件两者缺一不可,Arduino IDE就是赋予基于Arduino开发产品逻辑的编程平台,主要被用来编写及开发Arduino程序,其拥有开放代码源的电路图设计、并且支持ISP在线烧录,同时还可以与C、Flash、Ma
26、x/Msp、VVVV、PD、Processing等多种语言程序兼容。并且其最多的特点就是拥有平台的兼容性,可以适用于Window、Max OS X还有Linux平台。6Arduino IDE界面图如图2.2所示:图2.2 Arduino IDE界面图Aruino IDE具有以下特色:(1) 界面简洁友好,语法简单,并且能方便的下载程序。(2) Arduino IDE自带内置程序,点击“文件-示例”就可以打开内置程序,并且带有很多种程序,可以帮助初学者快速掌握编程框架。并且在“帮助”中用户还可以点击相应选项进入官网页面查看相关介绍。(3) Arduino IDE的用户可以在程序开发接口免费下载开
27、放源代码的电路设计图,下载电路设计图之后用户也可以根据自己的需求去修改它。(4) Arduino IDE可以使用低价格的微处理器(比如AVR系列控制器),同时也可以采用USB接口供电,并且不需要外接电源也可以正常运转,也可以使用外部9VDC输入。(5) Arduino支持ISP在线烧录,可以将新的“bootloader”固件烧录进AVR芯片。在有了“bootloader”之后,可以通过串口或者“USB to Rs232”等方式在线更新固件。(6) 可以根据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制。并且可以简单地与传感器以及各种各样的电子元器件
28、连接。(7) 能与多种编程语言相兼容,例如:C语言、Flash、Max/Msp、VVVV、PD、Processing等。(8) 在软件应用方面,可以利用Arduino突破以往只局限于使用鼠标、键盘等外接输入设备的互动,通过Arduino不光可以简单的达成单个使用者的互动,也可以达成多个使用者的互动。2.3 本章小结本章主要介绍了本设计选用的开发平台以及编程环境,解释了最终我们为何不使用Arduino UNO作为开发版而是选择了Arduino Mega 2560作为开发板的原因,并对开发平台以及编程环境的主要功能以及特点进行讲解和分析。3 多功能智能播放器的总体设计方案本设计选用的是Arduin
29、o Mega 2560作为开发板,DFPlayer MP3模块、LD3320语音模块、OLED显示器模块、HC-06蓝牙模块为辅,来通过语音模块以及MP3模块的联动来实现语音控制功能,并且能通过语音实现播放、暂停、换歌等功能,也可以通过按键来控制,手机端通过蓝牙连接来实现手机app对播放器的控制。3.1 设计概述音乐播放器的设计需要开发者更加注重客户产品对的体验,所以开发者需要一款简洁的开发平台来提供产品的开发,从而将更多精力放在客户和产品互动的研发上,而本设计采用的Arduino开发平台相较于其他平台来说,更加简单清晰,比较容易掌握,有着较高的灵活性,更易开发。73.2 多功能智能播放器的设
30、计要求Arduino板上需要烧录程序来保证各个模块能够正常使用,来达成一个语音控制实现的效果,具体的设计要求如下:(1) 可以通过开发板上的按键,来控制播放器的播放、暂停、切换上一首歌、切换下一首歌等功能。(2) 可以通过语音识别来控制播放器的播放、暂停、切换上一首歌、切换下一首歌等功能。(3) 通过蓝牙连接手机来控制播放器的播放、暂停、切换上一首歌、切换下一首歌等功能。(4) 显示屏能够显示目前播放歌曲的文件名称。3.3 设计方案3.3.1 设计步骤本产品的控制程序设计分为三个阶段:第一阶段:了解开发平台以及硬件知识,了解运作原理,查阅资料,学习C语言控制逻辑,学习他人编程思路。第二阶段:尝
31、试编出基础功能程序及语音控制程序,再尝试将两者相结合,使播放器同时能实现按键操作以及语音控制。再将其他模块的程序加入进去,实现所有模块同时运行。第三阶段:对程序进行调试,检查程序逻辑的问题所在,再对程序进行优化。3.3.2 设计流程图首先,本设计使用的是Arduino Mega 2560开发板、DFPlayer MP33模块、LD3320语音模块、OLED显示器模块、HC-06蓝牙模块,拥有按键指令、语音指令、物联网指令三个指令输入方式。按键指令可以直接通过按键输入进Arduino Mega 2560开发板,Arduino开发板与DFPlayer MP3模块、LD33320语音模块、OLED显
32、示器模块、HC-06蓝牙模块连接,并且语音指令通过LD3320语音模块输入,手机端控制指令通过HC-06蓝牙模块输入,同时显示屏还能显示目前播放歌曲的文件名。播放器运作流程图如图3.1所示:图3.1 播放器运作流程图3.4 本章小结本章是对多功能智能播放器进行一个总体设计方案的叙述,以及汇总了本文对设计的功能要求,并对播放器运行流程进行讲解。4 多功能智能播放器的控制程序设计4.1程序的功能以及接线说明程序开始对播放器功能以及各个模块接线方式进行汇总。定义一个调试用的串口,后续调试时需要查看各功能执行情况的时候可以用到这个串口通信。功能及接线方式汇总如图4.1所示:图4.1 功能及接线方式汇总
33、4.2 蓝牙模块定义蓝牙串口为串口1,储存接收到的蓝牙数据,初始化蓝牙模块时将定义蓝牙通信波特率为9600,当需要初始化保存到蓝牙的数据时,通过将储存的数据增加到超过上限来让其初始化。8蓝牙模块初始化设定程序如图4.2所示:图4.2 蓝牙模块初始化设定程序这一步骤是读取蓝牙数据,判断是否从蓝牙那里接收到了正确的数据,将蓝牙模块里读取到的数据保存在RecData里并赋予它一个数值,当读取到*、r、n等数据时,表示这一行的代码已经接收完成,延时10毫秒等待垃圾数据完成。如果数据没有读完,那么就把数据读取完并清空,如果没有读取到*、r、n等数据,那么数值加一,当接收到储存的数值超过20时,舍弃多余的
34、数据,直接读取目前所有数据,如果没有读取到结束符或者数据储存爆满,就返回一个false让其继续读取数据。蓝牙信息读取程序如图4.3所示:图4.3 蓝牙信息读取程序读取蓝牙数据,根据检测到的指令来控制播放器的功能。strstr是拥有字符串处理功能的一个函数,通过strstr函数在RecData里面查找是否有“Next”、“Prev”、“Pause”等数据,如果检测相关数据时并不是没有“Next”、“Prev”、“Pause”等相关数据,那么检测到“Next”的指令时,MP3播放下一首;检测到“Prev”的指令时,MP3播放上一首;检测到“Pause”的指令时,MP3执行播放、暂停功能。为了能够继
35、续接收下一次的数据,需要把本次解析完数据清空。9蓝牙数据接收程序如图4.4所示:图4.4 蓝牙数据接收程序4.3 OLED显示器模块显示器模块先引用Wire.h(I2C设备通讯用)、Adafruit_GFX.h、Adafruit_SSD1306.h库文件因为此次设计不需要用到显示器模块的复位引脚,所以给予复位引脚一个“-1”的值。定义屏幕宽128像素、长63像素。10对显示器模块进行通信唤醒时,可以通过调试串口来判断其是否正常运转,如果初始化失败,串口监视器会显示“SSD1306 allocation failed”,如果初始化完成,那么则清空显示屏显示内容,保证下一次显示屏上面是没有显示内容
36、。显示器初始化设定程序如图4.5所示:图4.5 显示器初始化设定程序需要显示内容时就调用Display函数,其中包括显示内容的坐标,显示的内容,以及判断是否清屏,如果是true,则清屏,如果是false,则不清屏。设定字体大小为1,设定字体颜色为白色,将显示屏光标移动到需要显示内容的位置,再显示需要显示的内容。显示器显示内容程序如图4.6所示:图4.6 显示器显示内容程序4.4 DFPlayer MP3模块MP3模块程序首先先引用软串口和MP3库文件,定义MP3模块的串口为串口2,“IsPlaying”和”PlayingNum”用来记录MP3播放状态以及第几首,并将其内容保存。初始化MP3过程
37、中,设置MP3串口波特率为9600,并且设置MP3串口,MP3起初设定的值为30,在调试时发现30音量过大,就把音量改成了20,初始化设置结束后,停止MP3的运行。 MP3初始化设定程序如图4.7所示:图4.7 MP3初始化设定程序因为MP3播放器的播放、停止功能设置可以通过一个是非逻辑调用,所以可以在同一个函数里赋予其判断播放器处于播放状态中还是暂停状态中的功能。如果MP3播放器已经处在播放歌曲状态中,通过控制方式给与它一个“暂停”歌曲的命令,那么MP3播放器就会变成暂停的状态,如果播放器已经处在暂停歌曲状态中,通过控制方式给与它一个“播放”歌曲的命令,那么MP3播放器就会变成播放的状态。M
38、P3播放、暂停功能控制程序如图4.8所示:图4.8 MP3播放、暂停功能控制程序然后是MP3模块接受上、下一曲指令的时候,可以通过串口监视器来查看其是否正常执行功能。MP3模块接受下一曲指令的时候,会跳过目前播放的音乐,并播放下一首歌曲,如果播放的歌曲数已经超过TF卡中的歌曲数目,那么会播放文件中的最后一首歌,显示屏会显示当前播放歌曲的文件名称,并将播放状态改为“true”。同理,MP3模块接受上一曲指令的时候,会跳过目前播放的音乐,并播放上一首歌曲,如果播放的歌曲为第一首歌时,触发上一首功能时,播放器还是会播放第一首歌,显示屏会显示当前播放歌曲的文件名称,并将播放状态改为“true”。当出发
39、MP3停止播放指令函数时,串口监视器会显示“StopMp3”,MP3会停止播放,并且将播放状态改成“false”。MP3下一曲、上一曲、停止播放功能控制程序如图4.9所示:图4.9 MP3下一曲、上一曲、停止播放功能控制程序4.5 按键部分建立一个按键的类,定义按键的三个基础属性,第一个是对对按键的引脚进行定义,第二个是对按下按键后的引脚电平部分进行定义,第三个是对按键的时间节点进行定义,它可以通过扫描按下的的时间节点来判断其按下的时长。定义按键部分需要传输的数据,将传输进来的引脚数据以及按下后的电平数据保存起来,再设置按钮的引脚为输入上拉模式。再赋予其判断按钮是否按下的逻辑,如果没有按下可以
40、直接更新没有按下的时间节点,等待下一次按键按下的时间节点,如果触发了判断按钮是否按下的函数,为了防止误判,等到按键被松开时,判断其按下时间是否超过0.05秒,如果大于0.05秒,那么返回已经按下的信息,如果没有大于0.05秒,返回没有按下的信息。11按键模块功能定义程序如图4.10所示:图4.10 按键模块功能定义程序通过上面的按键模块功能定义完成后,就可以根据定义设定播放。暂停、上一曲、下一曲功能对应的按键。检查按键状态,如果识别到上一曲按键被按下,执行“上一曲”功能;如果识别到下一曲按键被按下,执行“下一曲”功能;如果识别到播放暂停按键被按下,播放器播放时执行“暂停”功能,播放器暂停时执行
41、“播放”功能。按键功能控制程序如图4.11所示:图4.11 按键功能控制程序4.6 LD3320语音模块语音模块程序先引用LD3320语音模块库文件,声明一个语音识别对象,初始化模块后分别添加上一曲、下一曲、暂停、播放指令,并赋予其对应编码0、1、2、3。12语音模块初始化设定程序如图4.12所示:图4.12 语音模块初始化设定程序语音判断识别部分,如果指令是“上一首”,那么播放上一首歌曲;如果指令是“下一首”,那么播放下一首歌曲;如果指令是“暂停”,那么MP3播放器得到一个停止的指令,并且状态变为停止;如果指令是“播放”,那么MP3播放器得到一个播放的指令,并且状态变为启动播放。串口监视器在
42、语音控制的同时也能查看其是否正常执行命令。语音模块功能控制程序如图4.13所示:图4.13 语音模块功能控制程序4.7 程序功能调用各个模块声明完成后,通过“set up”和“loop”两个函数调用程序功能,“set up”函数初始化变量及引脚,“loop”函数用来改变程序状态和响应时间,从容控制Arduino开发板。“set up”和“loop”函数部分如图4.14所示:图4.14 “set up”和“loop”函数部分4.8 本章小结本章是对播放器每一模块需要完成的功能进行介绍,描述编程思路,并说明其每一步功能如何实现,各个模块是如何进行联动的。5 控制程序的编译结果以及调试程序最终完成后
43、,在Arduino IDE编程平台上编译时没有报错,证明其不存在逻辑方面问题。程序编译情况如图5.1所示:图5.1 程序编译情况调试时也可以通过串口来查看其功能是否执行。串口监视器调试情况如图5.2所示:图5.2 串口监视器调试情况将各个模块实物连接完成后进行调试。就目前调试的情况来说,当我按下“播放、暂停”键时,MP3模块如果正在播放歌曲,那么它会暂停,如果它已经处在暂停状态中,那么它会结束暂停状态并播放歌曲,如果按“下一首”按键,那么它会结束播放目前正在播放的歌曲,并播放下一首歌曲,如果按“上一首”按键,那么它会结束播放目前正在播放的歌曲,并播放上一首歌曲。同理,语音控制也是如此,当我说“
44、播放、暂停”键时,MP3模块如果正在播放歌曲,那么它会暂停,如果它已经处在暂停状态中,那么它会结束暂停状态并播放歌曲,如果说“下一曲”,那么它会结束播放目前正在播放的歌曲,并播放下一首歌曲,如果说“上一首”,那么它会结束播放目前正在播放的歌曲,并播放上一首歌曲。显示屏能显示目前播放歌曲的歌曲名称,如我在TF卡里歌曲名称设置为“0001.mp3”,播放歌曲时显示器能显示“1.mp3”。实物连线调试图如图5.3所示:图5.3 实物连线调试图6 结论6.1 设计总结和难点在一开始接触毕业设计的过程中,由于有许多不懂,所以毕业设计的过程中走了很多弯路,在编写程序的过程之前,我们先用网上的例程对Ardu
45、ino开发板以及各个模块进行调试,下载程序观察其是否能正常用,因为特殊原因导致我们组员之间都互相见不上面,不能一起调试改进,只能网上远程沟通,而且我们也是第一次接触这方面的元器件,所以在调试的时候废了很大的功夫,由于对元器件的了解不足,在调试时发现Arduino UNO的开发板运行内存支持不了这么多模块,于是从Arduino UNO开发板换成了Arduino Mega 2560开发板,并且重新进行调试。在编程开始前,我们还需要通过查阅Arduino UNO开发板的使用手册以及参考网络例程来理清Arduino UNO开发板的每一个引脚的定义,在后面开发板从Arduino UNO换成Arduino
46、 Mega 2560之后,Arduino Mega 2560每一个引脚对应的功能和Arduino UNO略有不同,在程序设计当中还要将已写好的引脚对应程序进行更新。在编程的过程中,先去观看教学视频区学会最基本的程序逻辑及框架,再去参考别人之前做相同产品的时候他们想拥有的编程思路,然后顺着其逻辑根据自己设计的功能去编程,还需要对每个模块引入它们的库来调试。在编程过程中,由于自己的编程不是很熟练,在编译过程中也多次报错,而且还需要各个模块的程序环环相扣、缺一不可,多种功能相结合这方面的资料网上也相对较少,自己也是一步一步尝试,在经历了一次又一次的修改和调试后,才赋予其严密的编程逻辑。6.2 设计创
47、新点(1)能用按键控制MP3播放器的播放、暂停、上一首、下一首功能。(2)能用语音控制MP3播放器的播放、暂停、上一首、下一首功能。(3)能用手机端控制MP3播放器的播放、暂停、上一首、下一首功能。(4)显示屏能显示当前播放歌曲的数字序号。(5)使用Arduino Mega 2560开发板代替Arduino UNO开发板,预留了更多的内存空间。6.3 设计的不足点这次的毕业设计时间有限,而我们因为经验不足的原因在调试的过程中花费了大量的时间和精力,所以导致我们的功能不能像预想的那样完善,MP3播放器涉及到功能较少,只能做到基础的播放、暂停和切歌,贴心化的互动方式依旧是多功能智能播放器的一个发展重点,在这方面还有很多问题需要去解决。6.4 展望通过本次的毕业设计后,使我更加深入的了解了Arduin