王瑜
(西安航空學院機械工程學院,陜西西安 710077)
在生產、生活中需要播放音樂的場合很多,如工廠、圖書館、商場、學校、公園、電子導游、停車場、醫(yī)療設備等。隨著科技和互聯(lián)網的快速發(fā)展,電子產品隨處可見,給人們的生活帶來了便利。聽音樂可以提升創(chuàng)造力、舒緩壓力、解除疲勞、幫助睡眠,傳統(tǒng)的多功能音樂播放器面向高端市場,難以普及到大眾,而在我國中低端市場才是消費主力軍[1]。該文設計了一款基于Arduino UNO 和ESP8266 開發(fā)板并結合BY8001 語音模塊的音樂播放器。
Arduino UNO 的大腦是ATmega 328P,Arduino UNO 開發(fā)板有14 個數字I/O 引腳和6 個模擬輸入引腳,一個16 MHz 的晶振,一個USB 接口,一個DC 接口等,硬件資源豐富,使用電池可以驅動,使用方便、成本低??梢酝ㄟ^Arduino IDE 進行編程,并下載到Arduino UNO 開發(fā)板中,不需要外接編程器。音樂播放器所有的硬件設備均在Arduino UNO 開發(fā)板上進行集成和控制。通過Arduino IDE 軟件程序的控制完成各個模塊之間接口的數據傳遞和協(xié)同工作[2-3]。ESP8266 開發(fā)板上嵌入了ESP8266 芯片,該開發(fā)板采用板載PCB 天線,支持STA、AP、STA+AP 三種工作模式,支持無線802.11 b/g/n標準,支持UART/GPIO 數據通信接口[4],利用ESP8266 開發(fā)板獲取網絡時間,可以實時顯示在OLED上。BY8001語音模塊采用BY8001-SSOP24 MP3 主控芯片,支持MP3、WAV 格式雙解碼。模塊內置TF 卡座,可插卡進行更換語音內容,支持MP3、WAV高品質音頻格式文件,聲音優(yōu)美,模塊支持24位DAC輸出,其動態(tài)范圍為90 dB、信噪比為85 dB[5]。
音樂播放器結構框圖如圖1 所示,該系統(tǒng)主要由Arduino UNO 開發(fā)板、ESP8266 開發(fā)板、語音模塊、TF 卡、喇叭、OLED 液晶顯示器、按鍵、電源組成[6]。電源給整個系統(tǒng)供電,語音模塊、TF 卡、喇叭根據由按鍵輸入的控制信號來播放音樂或語音,在播放前需要將音樂或語音文件復制到TF 卡中。ESP8266 開發(fā)板獲取網絡時間,通過串口發(fā)送到Arduino UNO 開發(fā)板,利用兩個開發(fā)板之間的通信,實現網絡時間的傳輸,并顯示在OLED 液晶顯示器上,從而實現音樂播放器存儲音樂或音頻文件,并根據按鍵選擇播放音樂或音頻、顯示播放信息、顯示網絡時間等功能。
圖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(觸發(fā)輸入口1~5)、GND、DP(USB 數據線)、DM(USB 數據線)。BY8001 語音模塊有五個觸發(fā)I/O 口,最多支持15 段按鍵一對一觸發(fā)播放。音樂播放器的音樂/語音播放電路如圖2 所示,按鍵的一端接地,另一端接BY8001 的I/O1、I/O2 引腳,同時和Arduino UNO 的引腳3、引腳4 連接,該設計的按鍵選擇獨立式按鍵,即每一個I/O 口上只接一個按鍵,另一端接地,這種接法的優(yōu)點是編程簡單、系統(tǒng)穩(wěn)定[7-8]。
圖2 音樂/語音播放電路
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播放界面
系統(tǒng)選用ESP8266開發(fā)板獲取網絡時間,ESP8266開發(fā)板有豐富的GPIO接口、擴展口和串口等,ESP8266開發(fā)板和Arduino UNO 的連接電路如圖8 所示。ESP8266 開發(fā)板的GND 引腳和Arduino UNO 的GND引腳相連;ESP8266 的GPIO1 引腳和Arduino UNO 的RX 引腳相連;ESP8266 的GPIO3 引腳和Arduino UNO 的TX 引腳相連[13-14]。ESP8266 開發(fā)板連接WiFi,獲取網絡時間,通過串口發(fā)送到Arduino UNO,并根據按鍵功能利用OLED 液晶顯示器顯示當前時間,這種方法獲得的時間精準,只要有網絡即可,而不需要校時[15-16]。
圖8 ESP8266開發(fā)板和Arduino UNO的連接電路
OLED 液晶顯示器是一種高對比度、高分辨率的顯示器,具有良好的顯示界面,可以顯示字符、圖形、漢字甚至更高級的動畫,極大地提高了系統(tǒng)的可操作性[17]。利用Arduino UNO 控制OLED 液晶顯示器顯示字符、圖形等信息,需要使用OLED 模塊的專用庫SSD1306 和圖形庫GFX。
首先,利用PCtoLCD2002 字模提取軟件將OLED顯示的圖形轉換為點陣數據。接著,將數據存儲到數組中。最后,利用庫函數可以實現將圖形顯示在OLED 液晶顯示器上。
文中使用PCtoLCD2002軟件提取字模,雙擊桌面圖標,打開軟件。軟件有圖形模式和字符模式兩種工作模式,PCtoLCD2002軟件圖形模式界面如圖9所示。
圖9 PCtoLCD2002軟件圖形模式界面
通過選擇“模式菜單”,可以切換圖形模式或字符模式。選擇圖形模式,可以將BMP 格式的二值圖像轉換成OLED 液晶顯示屏上顯示的數據;選擇字符模式,可以將中英文字符、數字等字符轉換成OLED 液晶顯示屏上顯示的數據。PCtoLCD2002 軟件字符模式界面如圖10 所示。
圖10 PCtoLCD2002軟件字符模式界面
首先,在圖10 中的文本框輸入需要轉換的文字,例如,輸入“西安航空學院”,設置字體等信息,接著,單擊“字模生成和液晶面板選項”,設置“字模選項”中的內容,點擊“生成字?!眻D標按鈕,生成文字對應的顯示數據,如圖11 所示。
圖11 PCtoLCD2002軟件字符模式生成數據
Arduino UNO 是基于Atmega328P 的開發(fā)板。Arduino IDE 提供了廣泛的庫函數,易于編程,使用Arduino IDE 可以將程序下載到Arduino UNO 開發(fā)板中[18-19]。該系統(tǒng)的軟件流程圖如圖12所示。首先,初始化串口、按鍵引腳、OLED 液晶顯示器等。接著,掃描按鍵并判斷哪個鍵按下,如果“曲目選擇”按鍵按下,則在OLED 液晶顯示器中顯示“曲目選擇”菜單;如果“曲目選擇”按鍵沒有按下,則判斷“播放曲目1”按鍵是否按下,如果“播放曲目1”按鍵按下,則在OLED 液晶顯示器中顯示“曲目1 播放”界面,并控制BY8001 語音模塊播放曲目1;如果“播放曲目1”按鍵沒有按下,判斷“播放曲目2”按鍵是否按下。如果“播放曲目2”按鍵按下,則在OLED 液晶顯示器中顯示“曲目2 播放”界面,并控制BY8001 語音模塊播放曲目2;如果“播放曲目2”按鍵沒有按下,則判斷“顯示當前時間”按鍵是否按下。如果“顯示當前時間”按鍵按下,則讀取ESP8266 開發(fā)板發(fā)送的時間數據[20];如果“顯示當前時間”按鍵沒有按下,則繼續(xù)掃描按鍵。
圖12 軟件流程圖
該文以Arduino UNO 開發(fā)板為核心,以Arduino IDE 作為軟件開發(fā)平臺,設計了一種基于Arduino 的音樂播放器。文中介紹了硬件組成和框圖,重點介紹了系統(tǒng)的硬件設計、Arduino UNO 開發(fā)板和ESP8266 開發(fā)板的通信設計、OLED 軟件設計、字模提取、系統(tǒng)軟件設計流程。系統(tǒng)具有音樂存儲、語音存儲、播放、曲目選擇、液晶顯示、網絡時間校準等功能。經過系統(tǒng)測試,該系統(tǒng)能夠正常工作,穩(wěn)定性強,達到了設計要求,非常適合在工廠、圖書館、商場、學校、公園等場合應用。