APP下载

基于Arduino 的音乐播放器设计

2022-10-28王瑜

电子设计工程 2022年20期
关键词:开发板液晶播放器

王瑜

(西安航空学院机械工程学院,陕西西安 710077)

在生产、生活中需要播放音乐的场合很多,如工厂、图书馆、商场、学校、公园、电子导游、停车场、医疗设备等。随着科技和互联网的快速发展,电子产品随处可见,给人们的生活带来了便利。听音乐可以提升创造力、舒缓压力、解除疲劳、帮助睡眠,传统的多功能音乐播放器面向高端市场,难以普及到大众,而在我国中低端市场才是消费主力军[1]。该文设计了一款基于Arduino UNO 和ESP8266 开发板并结合BY8001 语音模块的音乐播放器。

Arduino UNO 的大脑是ATmega 328P,Arduino UNO 开发板有14 个数字I/O 引脚和6 个模拟输入引脚,一个16 MHz 的晶振,一个USB 接口,一个DC 接口等,硬件资源丰富,使用电池可以驱动,使用方便、成本低。可以通过Arduino IDE 进行编程,并下载到Arduino UNO 开发板中,不需要外接编程器。音乐播放器所有的硬件设备均在Arduino UNO 开发板上进行集成和控制。通过Arduino IDE 软件程序的控制完成各个模块之间接口的数据传递和协同工作[2-3]。ESP8266 开发板上嵌入了ESP8266 芯片,该开发板采用板载PCB 天线,支持STA、AP、STA+AP 三种工作模式,支持无线802.11 b/g/n标准,支持UART/GPIO 数据通信接口[4],利用ESP8266 开发板获取网络时间,可以实时显示在OLED上。BY8001语音模块采用BY8001-SSOP24 MP3 主控芯片,支持MP3、WAV 格式双解码。模块内置TF 卡座,可插卡进行更换语音内容,支持MP3、WAV高品质音频格式文件,声音优美,模块支持24位DAC输出,其动态范围为90 dB、信噪比为85 dB[5]。

1 系统的结构及工作原理

音乐播放器结构框图如图1 所示,该系统主要由Arduino UNO 开发板、ESP8266 开发板、语音模块、TF 卡、喇叭、OLED 液晶显示器、按键、电源组成[6]。电源给整个系统供电,语音模块、TF 卡、喇叭根据由按键输入的控制信号来播放音乐或语音,在播放前需要将音乐或语音文件复制到TF 卡中。ESP8266 开发板获取网络时间,通过串口发送到Arduino UNO 开发板,利用两个开发板之间的通信,实现网络时间的传输,并显示在OLED 液晶显示器上,从而实现音乐播放器存储音乐或音频文件,并根据按键选择播放音乐或音频、显示播放信息、显示网络时间等功能。

图1 音乐播放器结构框图

2 系统硬件设计

2.1 音乐/语音播放电路

音乐播放器选用BY8001 语音模块作为音乐/语音播放模块,由按键输入信号控制BY8001 语音模块播放TF 卡中的音乐/语音信息。TF 卡中的音乐/语音文件的排序按照存储的先后顺序,为了确保从电脑存入TF卡内的音乐/语音文件的顺序正确。首先,在电脑上将音乐/语音文件命名排序好(在SD 卡内修改音乐/语音文件排序无效),可以将音乐/语音文件命名为0001XXX.MP3、0002XXX.MP3、0003XXX.MP3…。BY8001 语音模块的16 个引脚分别为BUSY(忙信号)、RX、TX、DACR(DAC 右声道输出)、DACL(DAC左声道输出)、SPK1、SPK2、VCC、I/O1~I/O5(触发输入口1~5)、GND、DP(USB 数据线)、DM(USB 数据线)。BY8001 语音模块有五个触发I/O 口,最多支持15 段按键一对一触发播放。音乐播放器的音乐/语音播放电路如图2 所示,按键的一端接地,另一端接BY8001 的I/O1、I/O2 引脚,同时和Arduino UNO 的引脚3、引脚4 连接,该设计的按键选择独立式按键,即每一个I/O 口上只接一个按键,另一端接地,这种接法的优点是编程简单、系统稳定[7-8]。

图2 音乐/语音播放电路

2.2 OLED显示电路

OLED显示电路如图3所示,OLED用来显示当前时间、曲目信息等内容[9],显示器选取0.96 寸128×64分辨率OLED 液晶显示屏,采用SSD1306 驱动芯片,基于三线SPI 通信的七线制OLED 显示屏模块,采用三条通信线路传输数据[10]。OLED 的7 个引脚分别为GND、VCC(3.3~5 V)D0(时钟线)、D1(数据线)、RES(复位线)、DC(数据命令选择线)和CS(SPI 片选线)。OLED 的7 个引脚和Arduino 的连接关系如下:OLED 的电源接Arduino 的VCC引脚;OLED 的地接Arduino 的GND 引脚;OLED 的D0 接Arduino 的13 引脚;OLED 的D1 接Arduino 的11引脚;OLED 的RES接Arduino 的8引脚;OLED 的DC 接Arduino 的9 引脚;OLED 的CS 接Arduino 的10 引脚[11]。

图3 OLED显示电路

当按下“显示当前时间”按键时,在OLED 液晶显示器上显示当前时间,如图4 所示;当按下“曲目选择”按键时,在OLED 液晶显示器上显示“曲目选择”菜单,如图5 所示;当按下“播放曲目1”按键时,利用音乐/语音播放电路播放TF 卡中的曲目1,并在OLED 液晶显示器上显示曲目1 播放界面,如图6 所示;当按下“播放曲目2”按键时,利用音乐/语音播放电路播放TF 卡中的曲目2,并在OLED 液晶显示器上显示曲目2 播放界面,如图7 所示[12]。

图4 显示当前时间

图5 “曲目选择”菜单

图6 曲目1播放界面

图7 曲目2播放界面

2.3 Arduino UNO和ESP8266开发板通信电路

系统选用ESP8266开发板获取网络时间,ESP8266开发板有丰富的GPIO接口、扩展口和串口等,ESP8266开发板和Arduino UNO 的连接电路如图8 所示。ESP8266 开发板的GND 引脚和Arduino UNO 的GND引脚相连;ESP8266 的GPIO1 引脚和Arduino UNO 的RX 引脚相连;ESP8266 的GPIO3 引脚和Arduino UNO 的TX 引脚相连[13-14]。ESP8266 开发板连接WiFi,获取网络时间,通过串口发送到Arduino UNO,并根据按键功能利用OLED 液晶显示器显示当前时间,这种方法获得的时间精准,只要有网络即可,而不需要校时[15-16]。

图8 ESP8266开发板和Arduino UNO的连接电路

3 软件设计

3.1 OLED软件设计

OLED 液晶显示器是一种高对比度、高分辨率的显示器,具有良好的显示界面,可以显示字符、图形、汉字甚至更高级的动画,极大地提高了系统的可操作性[17]。利用Arduino UNO 控制OLED 液晶显示器显示字符、图形等信息,需要使用OLED 模块的专用库SSD1306 和图形库GFX。

首先,利用PCtoLCD2002 字模提取软件将OLED显示的图形转换为点阵数据。接着,将数据存储到数组中。最后,利用库函数可以实现将图形显示在OLED 液晶显示器上。

3.2 字模提取

文中使用PCtoLCD2002软件提取字模,双击桌面图标,打开软件。软件有图形模式和字符模式两种工作模式,PCtoLCD2002软件图形模式界面如图9所示。

图9 PCtoLCD2002软件图形模式界面

通过选择“模式菜单”,可以切换图形模式或字符模式。选择图形模式,可以将BMP 格式的二值图像转换成OLED 液晶显示屏上显示的数据;选择字符模式,可以将中英文字符、数字等字符转换成OLED 液晶显示屏上显示的数据。PCtoLCD2002 软件字符模式界面如图10 所示。

图10 PCtoLCD2002软件字符模式界面

首先,在图10 中的文本框输入需要转换的文字,例如,输入“西安航空学院”,设置字体等信息,接着,单击“字模生成和液晶面板选项”,设置“字模选项”中的内容,点击“生成字模”图标按钮,生成文字对应的显示数据,如图11 所示。

图11 PCtoLCD2002软件字符模式生成数据

3.3 系统软件设计

Arduino UNO 是基于Atmega328P 的开发板。Arduino IDE 提供了广泛的库函数,易于编程,使用Arduino IDE 可以将程序下载到Arduino UNO 开发板中[18-19]。该系统的软件流程图如图12所示。首先,初始化串口、按键引脚、OLED 液晶显示器等。接着,扫描按键并判断哪个键按下,如果“曲目选择”按键按下,则在OLED 液晶显示器中显示“曲目选择”菜单;如果“曲目选择”按键没有按下,则判断“播放曲目1”按键是否按下,如果“播放曲目1”按键按下,则在OLED 液晶显示器中显示“曲目1 播放”界面,并控制BY8001 语音模块播放曲目1;如果“播放曲目1”按键没有按下,判断“播放曲目2”按键是否按下。如果“播放曲目2”按键按下,则在OLED 液晶显示器中显示“曲目2 播放”界面,并控制BY8001 语音模块播放曲目2;如果“播放曲目2”按键没有按下,则判断“显示当前时间”按键是否按下。如果“显示当前时间”按键按下,则读取ESP8266 开发板发送的时间数据[20];如果“显示当前时间”按键没有按下,则继续扫描按键。

图12 软件流程图

4 结论

该文以Arduino UNO 开发板为核心,以Arduino IDE 作为软件开发平台,设计了一种基于Arduino 的音乐播放器。文中介绍了硬件组成和框图,重点介绍了系统的硬件设计、Arduino UNO 开发板和ESP8266 开发板的通信设计、OLED 软件设计、字模提取、系统软件设计流程。系统具有音乐存储、语音存储、播放、曲目选择、液晶显示、网络时间校准等功能。经过系统测试,该系统能够正常工作,稳定性强,达到了设计要求,非常适合在工厂、图书馆、商场、学校、公园等场合应用。

猜你喜欢

开发板液晶播放器
Windows11自带播放器使用技巧
播放器
基于Verilog语言的4位二进制可逆计数器的设计
开发板在单片机原理及接口技术课程教学中的应用
液晶组合物和包括其的液晶显示器
Lon Duo Deck多功能播放器
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
O+Omm无缝液晶拼接
彻底撑握8大关键词 看懂规格买液晶
MiniGUI在基于OMAP5912开发板上的移植