




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
VI1緒論1.1研究背景及意義1.1.1研究背景當前,隨著科技以及社會時代的發(fā)展,人們的生活質(zhì)量日益提升,除了最基本的衣、食、住、行以外,人們也越來越追求更好的生活體驗,而這一點則成為了商機,使娛樂類電子產(chǎn)品市場日益壯大。聽音樂作為人們?nèi)粘I钪械闹饕獖蕵奉愋椭?,可以達到使人放松心情并且在工作、學習時舒緩壓力等作用。而對于不滿足于只用手機或者電腦聽音樂的人,一個單獨的音樂播放器是他們更好的選擇。且隨著人們對音樂追求的不斷提升,多功能智能音樂播放器的用戶數(shù)量也在逐漸提升,并且會成為一個穩(wěn)定的消費群體。作為年青一代新鮮產(chǎn)品,經(jīng)過這幾年市場上各個廠家不斷的推廣,多功能智能音樂播放器正在被越來越多的人接受并使用,且相對于中老年用戶的數(shù)量提升,年輕用戶數(shù)量的提升尤為明顯,并且還有更為廣闊的用戶市場等待挖掘。在Arduino開源電子原型平臺出現(xiàn)之前,基于單片機開發(fā)平臺的電子產(chǎn)品設(shè)計相對復(fù)雜,需要設(shè)計開發(fā)人員具有一部分電子硬件知識,并且還需要懂得相關(guān)程序才能夠去進行產(chǎn)品設(shè)計,這使得之前想要設(shè)計一款電子產(chǎn)品的門檻就變得非常高,于是開發(fā)電子產(chǎn)品的專業(yè)人士也非常少,電子產(chǎn)品的發(fā)展也十分緩慢。直到Arduino開源電子原型平臺的出現(xiàn),使得曾經(jīng)需要專業(yè)人士才能研發(fā)的新興電子產(chǎn)品設(shè)計,門檻變得更低,非專業(yè)人士也可以通過一些簡單的學習,即可掌握Arduino的基礎(chǔ)使用方法,并用來制作各種新興電子產(chǎn)品,其中就包括像多功能智能音樂播放器這樣的電子產(chǎn)品。[1]1.1.2本設(shè)計的目的及意義在當前環(huán)境下,多功能智能音樂播放器有著巨大的發(fā)展?jié)摿σ约翱蛻艋鶖?shù),本設(shè)計主要面向于對外接播放器有需求的客戶人群,雖然目前市場上智能音樂播放器產(chǎn)品的開發(fā)水平以及達到了較高的水平,但是隨著人們對產(chǎn)品要求的提高以及對新鮮感的追求,市場上的大多數(shù)電子產(chǎn)品的更新?lián)Q代速度響應(yīng)的也增快了許多。新興電子產(chǎn)品能夠豐富人們的生活,尤其對于年輕人,多功能智能音樂播放器既能幫他們在繁忙的生活中放松心情,在能滿足他們對新鮮電子產(chǎn)品的追求。1.2多功能智能播放器的國內(nèi)外現(xiàn)狀目前,國外尤其是美國、日本等國多功能智能播放器技術(shù)比較成熟,美國的AppleInc.以及日本的SoryCorporation等知名企業(yè)都在開發(fā)相關(guān)產(chǎn)品,在播放音樂以及語音互動的層面上還加入了人工智能,讓客戶通過互動的方式來享受音樂,相較于國內(nèi)研發(fā)時間也比較早,并且發(fā)展水平較高,更新迅速。目前國內(nèi)多功能智能播放器的研發(fā)處在研發(fā)過程中,雖然研發(fā)速度不低,但是相較于國外研發(fā)起步時間較晚,研發(fā)進展也沒有國外企業(yè)成熟。很難顧全音質(zhì)以及多功能兩方面,使用的體驗也不及國外產(chǎn)品,但是卻有著很大的發(fā)展空間以及市場,并且產(chǎn)品的設(shè)計會更考慮國內(nèi)用戶較多。隨著人們的生活水平蒸蒸日上,廣大消費者也更愿意去為了享受更舒適的生活而去消費,因此多功能智能播放器擁有巨大的市場以及良好的前程。也有越來越多的廠商加入到了多功能智能播放器的研發(fā)當中,其保證高音質(zhì)的同時又擁有各種互動功能以及人工智能為其主要研究核心。[2]1.3多功能智能播放器的發(fā)展方向多功能智能播放器的發(fā)展方向與目前人們享受生活的方式相關(guān),對于想要購買多功能智能播放器的人們來說,最重要的就是享受穩(wěn)定的播放、良好的音質(zhì)以及更智能的交互方式。因此多功能智能播放器有以下幾點發(fā)展方向。更穩(wěn)定的連接。由于多功能智能播放器是一個單獨的外用設(shè)備,那么則需要更加穩(wěn)定的連接功能,雖然是最基礎(chǔ)的功能,但也是最重要的功能,如果能保證長時間的穩(wěn)定連接,客戶的體感相對會高許多。來保證它能夠連接到無線Wifi以及手機等相關(guān)設(shè)備。更好的音質(zhì)。良好的音質(zhì)也是顧客選擇多功能智能播放器的重要指標,播放器的播放音質(zhì)決定了它的顧客受眾面,如何在一定的價格范圍內(nèi)提升播放器的音質(zhì),也是目前各企業(yè)研究的首要目標。更智能的交互方式。在擁有穩(wěn)定的連接方式以及良好的音質(zhì)條件下,更加智能的交互方式也是顧客追求的一點,播放器可以通過連接手機來更改它的設(shè)置以及風格,同時也可以查看產(chǎn)品使用情況和硬件信息。1.4研究的主要內(nèi)容和目標本設(shè)計選用了Arduino為開發(fā)平臺,以ArduinoMega2560作為開發(fā)板,通過查閱相應(yīng)的資料以及論文去學習,再通過網(wǎng)上尋找Arduino參考編程語句以及程序?qū)嵗齺磉M行參考學習他們的編程思路,在經(jīng)過一定的學習和借鑒并打下一定的基礎(chǔ)后,先通過完成各個基礎(chǔ)功能的編程,再嘗試一步一步將其結(jié)合在一起,不斷完善程序。本設(shè)計需要完成的目標:查閱相關(guān)資料以及論文,學習Arduino編程參考語句以及學習借鑒他人的編程思路。根據(jù)所學內(nèi)容及參考資料完成各個基礎(chǔ)功能的編程。對各個基礎(chǔ)功能的程序進行調(diào)試。嘗試把調(diào)試成功的程序結(jié)合。對合并后的整個程序進行調(diào)試。分析總結(jié)編程中出現(xiàn)的問題,并對程序進行調(diào)整和改進。1.5論文組織結(jié)構(gòu)安排第一章:緒論。描述主題研究的背景并引出本設(shè)計研究的意義,介紹國內(nèi)外多功能智能播放器的發(fā)展現(xiàn)狀,以及分析多功能智能播放器以后的房展方向,確定本設(shè)計研究的主要方向,并描述研究的主要內(nèi)容及目標。第二章:開發(fā)平臺及編程環(huán)境簡介。介紹本設(shè)計控制程序部分所需要用到的開發(fā)平臺以及編程環(huán)境,對開發(fā)平臺的最終選擇進行解釋,并對開發(fā)平臺以及編程環(huán)境的特點進行說明。第三章:多功能智能播放器的總體設(shè)計方案。對該設(shè)計的一個總體設(shè)計方案進行描述,概述本設(shè)計的設(shè)計要求,分布介紹本設(shè)計在每一階段該如何實現(xiàn)。并繪制其運作流程圖。第四章:多功能智能播放器的控制程序設(shè)計。對播放器能實現(xiàn)的功能進行詳細的介紹,描述其程序思路,介紹其每一步功能如何實現(xiàn)。第五章:控制程序的仿真調(diào)試結(jié)果及分析。本章結(jié)合第四章設(shè)計出的程序,對控制程序和實物進行編譯以及調(diào)試。第六章:結(jié)論。對本設(shè)計進行總結(jié),描述在進行畢業(yè)設(shè)計時遇到的難點,描述其設(shè)計創(chuàng)新點以及不足點,并說明本次畢業(yè)設(shè)計的展望。1.6本章小結(jié)本章主要是對多功能智能播放器的背景、現(xiàn)狀以及發(fā)展方向以及定位進行分析說明,分析了本產(chǎn)品的需要設(shè)計的主要內(nèi)容,并且介紹了本設(shè)計中軟件設(shè)計的主要過程和所要達到的目標,對論文的總體結(jié)構(gòu)進行概括。
2開發(fā)平臺及編程環(huán)境簡介在本設(shè)計中,我們選用了Arduino作為開發(fā)平臺、AduinoMega2560作為開發(fā)板,ArduinoIDE作為編程環(huán)境,并且選用了DFPlayerMP3模塊、LD3320語音模塊、OLED顯示器模塊、HC-06藍牙模塊來結(jié)合使用,完成本設(shè)計。2.1開發(fā)平臺-Arduino2.1.1Arduino平臺背景Arduino平臺的起源則需要提到該平臺的兩位創(chuàng)始人,一位是意大利Ivrea一家高科技設(shè)計學校的老師MassimoBanzi,另一位則是西班牙籍晶片工程師DavidCuartielles,當時DavidCuartielles正巧在這所學校擔當訪問學者,才有了他們一起創(chuàng)作Arduino開發(fā)平臺的故事。在以前還有一個適合學生以及初學者使用的開發(fā)平臺下,MassimoBanzi的學生經(jīng)常因為很難找到既便宜又適合新手使用的微控制器而感到煩惱,學生們也向MassimoBanzi老師進行了反饋,在MassimoBanzi找到DavidCuartielles并和其進行協(xié)商后,他們兩人決定設(shè)計屬于自己的開發(fā)平臺。在制作開發(fā)平臺的過程中,他們需要一種編程語言來支持對他們平臺的開發(fā),最終他們?yōu)殚_發(fā)平臺選擇并引入了MassimoBanzi的學生DavidMellis為開發(fā)板設(shè)計的編程語言。在經(jīng)過一段時間研發(fā)以及調(diào)試后,他們成功研發(fā)出了滿足學生們要求的電路板,并為其命名為Arduino。[3]相比于其他開發(fā)平臺來說Arduino平臺則擁有以下特點:能夠跨平臺:目前其他的大多數(shù)控制器只能在Windows系統(tǒng)上運行開發(fā),但是ArduinoIDE編程平臺不光可以在主流操作系統(tǒng)Windows上運行,還可以在Linux、MacintoshOSX兩個操作系統(tǒng)上運行,這使得Arduino的用戶對于其他控制器用戶在運行編程環(huán)境時來說有著更多的操作平臺來給他們使用,讓他們擁有更多的開發(fā)環(huán)境供選擇。簡潔明了:Arduino平臺相較于其他操作系統(tǒng)來說用戶使用起來更加簡潔易懂,比較適合學生以及新入門的初學者,使他們能夠通過初步的學習就能大致掌握并且嘗試開發(fā),并且Arduino平臺還有著很強的靈活變換性,這使得Arduino平臺的初學者不需要花費太多的時間在單片機基礎(chǔ)以及編程語言的學習上,初學者只需要經(jīng)過簡單的了解學習后,就可以進行在Arduino平臺上進行項目的開發(fā)。開放性:不像部分平臺中的一部分數(shù)據(jù)都是拒絕用戶直接拿來使用的,Arduino平臺中的硬件原理圖、電路圖、IDE軟件及核心庫文件都是開放的,只要是在開源協(xié)議范圍內(nèi),Aduino平臺的使用者不光可以對程序代碼進行參考,還可以根據(jù)其喜好來修改設(shè)計代碼并使用,給使用者提供了很大的便利。發(fā)展空間大:Arduino不僅是全球最熱門的開源硬件,也是優(yōu)秀的硬件開發(fā)平臺,它收到世界上許多用戶的青睞。Arduino簡潔明了的開發(fā)方式使得開發(fā)者可以把更多的精力放在項目的創(chuàng)意以及開發(fā)上,所以Arduino擁有著十分廣闊的發(fā)展空間,在較低的入門門檻以及簡潔明了的開發(fā)方式下,Arduino能夠撐起足夠的用戶基數(shù)并為用戶提供足夠大的創(chuàng)想空間,使得有創(chuàng)意、有想法的人不會因為編程語句何使用開發(fā)平臺基礎(chǔ)薄弱而難有進展。[4]2.1.2Arduino開發(fā)板本設(shè)計原本設(shè)想的是使用ArduinoUNO開發(fā)板,但經(jīng)過測試發(fā)現(xiàn)由于ArduinoUNO開發(fā)板本身的內(nèi)存容量較小,不能滿足同時運行MP3、語音、藍牙、物聯(lián)網(wǎng)等模塊同時使用,在ArduinoUNO開發(fā)板運行單個MP3模塊時,運行內(nèi)存就將近達到了70%。經(jīng)過小組內(nèi)討論,我們將ArduinoUNO系列開發(fā)板更換成了ArduinoMega系列開發(fā)板。最終使用的是ArduinoMega2560開發(fā)板,ArduinoMega2560開發(fā)板在擁有眾多引腳和串口的同時,還擁有較大的運行內(nèi)存,相比于ArduinoUNO更適合本產(chǎn)品的研發(fā)。ArduinoMega2560開發(fā)板是基于名為ATmega2560的處理器核心而研發(fā)出來的微控制板,它包含了54個數(shù)字輸入/輸出口、16路模擬輸入端口、4路UART接口、1個16MHz晶體振蕩器、1個USB接口、1個電源接口、1個ICSPheader以及1個復(fù)位按鈕。[5]ArduinoMega2560開發(fā)板是ArduinoMega系列開發(fā)板的升級版,ArduinoMega2560開發(fā)板與之前的其他開發(fā)板最大的不同就在于:ArduinoMega2560沒有使用FTDIUSB-to-serial驅(qū)動芯片,而是使用了ATmega16U2編程作為USB-to-serial的傳輸器。ArduinoMega2560開發(fā)板圖和ArduinoMega2560開發(fā)板參數(shù)如圖2.1、表2.1所示:圖2.1ArduinoMega2560開發(fā)板表2.1ArduinoMega2560參數(shù)序號名稱參數(shù)1控制器ATmega25602工作電壓5V3輸入電壓(推薦)7-12V4輸入電壓(限制)6-20V5數(shù)字I/O口54(含15路PWM輸出)6模擬輸入口167每個I/O口直流電流40mA83.3V口直流電流50mA9閃存(FlashMEmory)256KB(其中8KB用作bootloafer)10靜態(tài)存儲器(SPAM)8KB11EEPPOM4KB12時鐘16MHz2.2編程環(huán)境-ArduinoIDEArduinoIDE是一款專門用于開發(fā)基于Arduino平臺產(chǎn)品的工具,在一款產(chǎn)品硬件設(shè)備都齊全的情況下,還需要軟件來賦予產(chǎn)品其執(zhí)行功能的邏輯以及狀態(tài),硬件與軟件兩者缺一不可,ArduinoIDE就是賦予基于Arduino開發(fā)產(chǎn)品邏輯的編程平臺,主要被用來編寫及開發(fā)Arduino程序,其擁有開放代碼源的電路圖設(shè)計、并且支持ISP在線燒錄,同時還可以與C、Flash、Max/Msp、VVVV、PD、Processing等多種語言程序兼容。并且其最多的特點就是擁有平臺的兼容性,可以適用于Window、MaxOSX還有Linux平臺。[6]ArduinoIDE界面圖如圖2.2所示:圖2.2ArduinoIDE界面圖AruinoIDE具有以下特色:界面簡潔友好,語法簡單,并且能方便的下載程序。ArduinoIDE自帶內(nèi)置程序,點擊“文件-示例”就可以打開內(nèi)置程序,并且?guī)в泻芏喾N程序,可以幫助初學者快速掌握編程框架。并且在“幫助”中用戶還可以點擊相應(yīng)選項進入官網(wǎng)頁面查看相關(guān)介紹。ArduinoIDE的用戶可以在程序開發(fā)接口免費下載開放源代碼的電路設(shè)計圖,下載電路設(shè)計圖之后用戶也可以根據(jù)自己的需求去修改它。ArduinoIDE可以使用低價格的微處理器(比如AVR系列控制器),同時也可以采用USB接口供電,并且不需要外接電源也可以正常運轉(zhuǎn),也可以使用外部9VDC輸入。Arduino支持ISP在線燒錄,可以將新的“bootloader”固件燒錄進AVR芯片。在有了“bootloader”之后,可以通過串口或者“USBtoRs232”等方式在線更新固件??梢愿鶕?jù)官方提供的Eagle格式PCB和SCH電路圖簡化Arduino模組,完成獨立運作的微處理控制。并且可以簡單地與傳感器以及各種各樣的電子元器件連接。能與多種編程語言相兼容,例如:C語言、Flash、Max/Msp、VVVV、PD、Processing等。在軟件應(yīng)用方面,可以利用Arduino突破以往只局限于使用鼠標、鍵盤等外接輸入設(shè)備的互動,通過Arduino不光可以簡單的達成單個使用者的互動,也可以達成多個使用者的互動。2.3本章小結(jié)本章主要介紹了本設(shè)計選用的開發(fā)平臺以及編程環(huán)境,解釋了最終我們?yōu)楹尾皇褂肁rduinoUNO作為開發(fā)版而是選擇了ArduinoMega2560作為開發(fā)板的原因,并對開發(fā)平臺以及編程環(huán)境的主要功能以及特點進行講解和分析。
3多功能智能播放器的總體設(shè)計方案本設(shè)計選用的是ArduinoMega2560作為開發(fā)板,DFPlayerMP3模塊、LD3320語音模塊、OLED顯示器模塊、HC-06藍牙模塊為輔,來通過語音模塊以及MP3模塊的聯(lián)動來實現(xiàn)語音控制功能,并且能通過語音實現(xiàn)播放、暫停、換歌等功能,也可以通過按鍵來控制,手機端通過藍牙連接來實現(xiàn)手機app對播放器的控制。3.1設(shè)計概述音樂播放器的設(shè)計需要開發(fā)者更加注重客戶產(chǎn)品對的體驗,所以開發(fā)者需要一款簡潔的開發(fā)平臺來提供產(chǎn)品的開發(fā),從而將更多精力放在客戶和產(chǎn)品互動的研發(fā)上,而本設(shè)計采用的Arduino開發(fā)平臺相較于其他平臺來說,更加簡單清晰,比較容易掌握,有著較高的靈活性,更易開發(fā)。[7]3.2多功能智能播放器的設(shè)計要求Arduino板上需要燒錄程序來保證各個模塊能夠正常使用,來達成一個語音控制實現(xiàn)的效果,具體的設(shè)計要求如下:可以通過開發(fā)板上的按鍵,來控制播放器的播放、暫停、切換上一首歌、切換下一首歌等功能。可以通過語音識別來控制播放器的播放、暫停、切換上一首歌、切換下一首歌等功能。通過藍牙連接手機來控制播放器的播放、暫停、切換上一首歌、切換下一首歌等功能。顯示屏能夠顯示目前播放歌曲的文件名稱。3.3設(shè)計方案3.3.1設(shè)計步驟本產(chǎn)品的控制程序設(shè)計分為三個階段:第一階段:了解開發(fā)平臺以及硬件知識,了解運作原理,查閱資料,學習C語言控制邏輯,學習他人編程思路。第二階段:嘗試編出基礎(chǔ)功能程序及語音控制程序,再嘗試將兩者相結(jié)合,使播放器同時能實現(xiàn)按鍵操作以及語音控制。再將其他模塊的程序加入進去,實現(xiàn)所有模塊同時運行。第三階段:對程序進行調(diào)試,檢查程序邏輯的問題所在,再對程序進行優(yōu)化。3.3.2設(shè)計流程圖首先,本設(shè)計使用的是ArduinoMega2560開發(fā)板、DFPlayerMP33模塊、LD3320語音模塊、OLED顯示器模塊、HC-06藍牙模塊,擁有按鍵指令、語音指令、物聯(lián)網(wǎng)指令三個指令輸入方式。按鍵指令可以直接通過按鍵輸入進ArduinoMega2560開發(fā)板,Arduino開發(fā)板與DFPlayerMP3模塊、LD33320語音模塊、OLED顯示器模塊、HC-06藍牙模塊連接,并且語音指令通過LD3320語音模塊輸入,手機端控制指令通過HC-06藍牙模塊輸入,同時顯示屏還能顯示目前播放歌曲的文件名。播放器運作流程圖如圖3.1所示:圖3.1播放器運作流程圖3.4本章小結(jié)本章是對多功能智能播放器進行一個總體設(shè)計方案的敘述,以及匯總了本文對設(shè)計的功能要求,并對播放器運行流程進行講解。
4多功能智能播放器的控制程序設(shè)計4.1程序的功能以及接線說明程序開始對播放器功能以及各個模塊接線方式進行匯總。定義一個調(diào)試用的串口,后續(xù)調(diào)試時需要查看各功能執(zhí)行情況的時候可以用到這個串口通信。功能及接線方式匯總?cè)鐖D4.1所示:圖4.1功能及接線方式匯總4.2藍牙模塊定義藍牙串口為串口1,儲存接收到的藍牙數(shù)據(jù),初始化藍牙模塊時將定義藍牙通信波特率為9600,當需要初始化保存到藍牙的數(shù)據(jù)時,通過將儲存的數(shù)據(jù)增加到超過上限來讓其初始化。[8]藍牙模塊初始化設(shè)定程序如圖4.2所示:圖4.2藍牙模塊初始化設(shè)定程序這一步驟是讀取藍牙數(shù)據(jù),判斷是否從藍牙那里接收到了正確的數(shù)據(jù),將藍牙模塊里讀取到的數(shù)據(jù)保存在RecData里并賦予它一個數(shù)值,當讀取到’*’、’r’、’\n’等數(shù)據(jù)時,表示這一行的代碼已經(jīng)接收完成,延時10毫秒等待垃圾數(shù)據(jù)完成。如果數(shù)據(jù)沒有讀完,那么就把數(shù)據(jù)讀取完并清空,如果沒有讀取到’*’、’r’、’\n’等數(shù)據(jù),那么數(shù)值加一,當接收到儲存的數(shù)值超過20時,舍棄多余的數(shù)據(jù),直接讀取目前所有數(shù)據(jù),如果沒有讀取到結(jié)束符或者數(shù)據(jù)儲存爆滿,就返回一個false讓其繼續(xù)讀取數(shù)據(jù)。藍牙信息讀取程序如圖4.3所示:圖4.3藍牙信息讀取程序讀取藍牙數(shù)據(jù),根據(jù)檢測到的指令來控制播放器的功能。strstr是擁有字符串處理功能的一個函數(shù),通過strstr函數(shù)在RecData里面查找是否有“Next”、“Prev”、“Pause”等數(shù)據(jù),如果檢測相關(guān)數(shù)據(jù)時并不是沒有“Next”、“Prev”、“Pause”等相關(guān)數(shù)據(jù),那么檢測到“Next”的指令時,MP3播放下一首;檢測到“Prev”的指令時,MP3播放上一首;檢測到“Pause”的指令時,MP3執(zhí)行播放、暫停功能。為了能夠繼續(xù)接收下一次的數(shù)據(jù),需要把本次解析完數(shù)據(jù)清空。[9]藍牙數(shù)據(jù)接收程序如圖4.4所示:圖4.4藍牙數(shù)據(jù)接收程序4.3OLED顯示器模塊顯示器模塊先引用Wire.h(I2C設(shè)備通訊用)、Adafruit_GFX.h、Adafruit_SSD1306.h庫文件因為此次設(shè)計不需要用到顯示器模塊的復(fù)位引腳,所以給予復(fù)位引腳一個“-1”的值。定義屏幕寬128像素、長63像素。[10]對顯示器模塊進行通信喚醒時,可以通過調(diào)試串口來判斷其是否正常運轉(zhuǎn),如果初始化失敗,串口監(jiān)視器會顯示“SSD1306allocationfailed”,如果初始化完成,那么則清空顯示屏顯示內(nèi)容,保證下一次顯示屏上面是沒有顯示內(nèi)容。顯示器初始化設(shè)定程序如圖4.5所示:圖4.5顯示器初始化設(shè)定程序需要顯示內(nèi)容時就調(diào)用Display函數(shù),其中包括顯示內(nèi)容的坐標,顯示的內(nèi)容,以及判斷是否清屏,如果是true,則清屏,如果是false,則不清屏。設(shè)定字體大小為1,設(shè)定字體顏色為白色,將顯示屏光標移動到需要顯示內(nèi)容的位置,再顯示需要顯示的內(nèi)容。顯示器顯示內(nèi)容程序如圖4.6所示:圖4.6顯示器顯示內(nèi)容程序4.4DFPlayerMP3模塊MP3模塊程序首先先引用軟串口和MP3庫文件,定義MP3模塊的串口為串口2,“IsPlaying”和”PlayingNum”用來記錄MP3播放狀態(tài)以及第幾首,并將其內(nèi)容保存。初始化MP3過程中,設(shè)置MP3串口波特率為9600,并且設(shè)置MP3串口,MP3起初設(shè)定的值為30,在調(diào)試時發(fā)現(xiàn)30音量過大,就把音量改成了20,初始化設(shè)置結(jié)束后,停止MP3的運行。MP3初始化設(shè)定程序如圖4.7所示:圖4.7MP3初始化設(shè)定程序因為MP3播放器的播放、停止功能設(shè)置可以通過一個是非邏輯調(diào)用,所以可以在同一個函數(shù)里賦予其判斷播放器處于播放狀態(tài)中還是暫停狀態(tài)中的功能。如果MP3播放器已經(jīng)處在播放歌曲狀態(tài)中,通過控制方式給與它一個“暫?!备枨拿?,那么MP3播放器就會變成暫停的狀態(tài),如果播放器已經(jīng)處在暫停歌曲狀態(tài)中,通過控制方式給與它一個“播放”歌曲的命令,那么MP3播放器就會變成播放的狀態(tài)。MP3播放、暫停功能控制程序如圖4.8所示:圖4.8MP3播放、暫停功能控制程序然后是MP3模塊接受上、下一曲指令的時候,可以通過串口監(jiān)視器來查看其是否正常執(zhí)行功能。MP3模塊接受下一曲指令的時候,會跳過目前播放的音樂,并播放下一首歌曲,如果播放的歌曲數(shù)已經(jīng)超過TF卡中的歌曲數(shù)目,那么會播放文件中的最后一首歌,顯示屏會顯示當前播放歌曲的文件名稱,并將播放狀態(tài)改為“true”。同理,MP3模塊接受上一曲指令的時候,會跳過目前播放的音樂,并播放上一首歌曲,如果播放的歌曲為第一首歌時,觸發(fā)上一首功能時,播放器還是會播放第一首歌,顯示屏會顯示當前播放歌曲的文件名稱,并將播放狀態(tài)改為“true”。當出發(fā)MP3停止播放指令函數(shù)時,串口監(jiān)視器會顯示“StopMp3”,MP3會停止播放,并且將播放狀態(tài)改成“false”。MP3下一曲、上一曲、停止播放功能控制程序如圖4.9所示:圖4.9MP3下一曲、上一曲、停止播放功能控制程序4.5按鍵部分建立一個按鍵的類,定義按鍵的三個基礎(chǔ)屬性,第一個是對對按鍵的引腳進行定義,第二個是對按下按鍵后的引腳電平部分進行定義,第三個是對按鍵的時間節(jié)點進行定義,它可以通過掃描按下的的時間節(jié)點來判斷其按下的時長。定義按鍵部分需要傳輸?shù)臄?shù)據(jù),將傳輸進來的引腳數(shù)據(jù)以及按下后的電平數(shù)據(jù)保存起來,再設(shè)置按鈕的引腳為輸入上拉模式。再賦予其判斷按鈕是否按下的邏輯,如果沒有按下可以直接更新沒有按下的時間節(jié)點,等待下一次按鍵按下的時間節(jié)點,如果觸發(fā)了判斷按鈕是否按下的函數(shù),為了防止誤判,等到按鍵被松開時,判斷其按下時間是否超過0.05秒,如果大于0.05秒,那么返回已經(jīng)按下的信息,如果沒有大于0.05秒,返回沒有按下的信息。[11]按鍵模塊功能定義程序如圖4.10所示:圖4.10按鍵模塊功能定義程序通過上面的按鍵模塊功能定義完成后,就可以根據(jù)定義設(shè)定播放。暫停、上一曲、下一曲功能對應(yīng)的按鍵。檢查按鍵狀態(tài),如果識別到上一曲按鍵被按下,執(zhí)行“上一曲”功能;如果識別到下一曲按鍵被按下,執(zhí)行“下一曲”功能;如果識別到播放暫停按鍵被按下,播放器播放時執(zhí)行“暫?!惫δ?,播放器暫停時執(zhí)行“播放”功能。按鍵功能控制程序如圖4.11所示:圖4.11按鍵功能控制程序4.6LD3320語音模塊語音模塊程序先引用LD3320語音模塊庫文件,聲明一個語音識別對象,初始化模塊后分別添加上一曲、下一曲、暫停、播放指令,并賦予其對應(yīng)編碼0、1、2、3。[12]語音模塊初始化設(shè)定程序如圖4.12所示:圖4.12語音模塊初始化設(shè)定程序語音判斷識別部分,如果指令是“上一首”,那么播放上一首歌曲;如果指令是“下一首”,那么播放下一首歌曲;如果指令是“暫停”,那么MP3播放器得到一個停止的指令,并且狀態(tài)變?yōu)橥V梗蝗绻噶钍恰安シ拧?,那么MP3播放器得到一個播放的指令,并且狀態(tài)變?yōu)閱硬シ?。串口監(jiān)視器在語音控制的同時也能查看其是否正常執(zhí)行命令。語音模塊功能控制程序如圖4.13所示:圖4.13語音模塊功能控制程序4.7程序功能調(diào)用各個模塊聲明完成后,通過“setup”和“l(fā)oop”兩個函數(shù)調(diào)用程序功能,“setup”函數(shù)初始化變量及引腳,“l(fā)oop”函數(shù)用來改變程序狀態(tài)和響應(yīng)時間,從容控制Arduino開發(fā)板?!皊etup”和“l(fā)oop”函數(shù)部分如圖4.14所示:圖4.14“setup”和“l(fā)oop”函數(shù)部分
4.8本章小結(jié)本章是對播放器每一模塊需要完成的功能進行介紹,描述編程思路,并說明其每一步功能如何實現(xiàn),各個模塊是如何進行聯(lián)動的。
5控制程序的編譯結(jié)果以及調(diào)試程序最終完成后,在ArduinoIDE編程平臺上編譯時沒有報錯,證明其不存在邏輯方面問題。程序編譯情況如圖5.1所示:圖5.1程序編譯情況調(diào)試時也可以通過串口來查看其功能是否執(zhí)行。串口監(jiān)視器調(diào)試情況如圖5.2所示:圖5.2串口監(jiān)視器調(diào)試情況將各個模塊實物連接完成后進行調(diào)試。就目前調(diào)試的情況來說,當我按下“播放、暫?!辨I時,MP3模塊如果正在播放歌曲,那么它會暫停,如果它已經(jīng)處在暫停狀態(tài)中,那么它會結(jié)束暫停狀態(tài)并播放歌曲,如果按“下一首”按鍵,那么它會結(jié)束播放目前正在播放的歌曲,并播放下一首歌曲,如果按“上一首”按鍵,那么它會結(jié)束播放目前正在播放的歌曲,并播放上一首歌曲。同理,語音控制也是如此,當我說“播放、暫?!辨I時,MP3模塊如果正在播放歌曲,那么它會暫停,如果它已經(jīng)處在暫停狀態(tài)中,那么它會結(jié)束暫停狀態(tài)并播放歌曲,如果說“下一曲”,那么它會結(jié)束播放目前正在播放的歌曲,并播放下一首歌曲,如果說“上一首”,那么它會結(jié)束播放目前正在播放的歌曲,并播放上一首歌曲。顯示屏能顯示目前播放歌曲的歌曲名稱,如我在TF卡里歌曲名稱設(shè)置為“0001.mp3”,播放歌曲時顯示器能顯示“1.mp3”。實物連線調(diào)試圖如圖5.3所示:圖5.3實物連線調(diào)試圖
6結(jié)論6.1設(shè)計總結(jié)和難點在一開始接觸畢業(yè)設(shè)計的過程中,由于有許多不懂,所以畢業(yè)設(shè)計的過程中走了很多彎路,在編寫程序的過程之前,我們先用網(wǎng)上的例程對Arduino開發(fā)板以及各個模塊進行調(diào)試,下載程序觀察其是否能正常用,因為特殊原因?qū)е挛覀兘M員之間都互相見不上面,不能一起調(diào)試改進,只能網(wǎng)上遠程溝通,而且我們也是第一次接觸這方面的元器件,所以在調(diào)試的時候廢了很大的功夫,由于對元器件的了解不足,在調(diào)試時發(fā)現(xiàn)ArduinoUNO的開發(fā)板運行內(nèi)存支持不了這么多模塊,于是從ArduinoUNO開發(fā)板換成了ArduinoMega2560開發(fā)板,并且重新進行調(diào)試。在編程開始前,我們還需要通過查閱ArduinoUNO開發(fā)板的使用手冊以及參考網(wǎng)絡(luò)例程來理清ArduinoUNO開發(fā)板的每一個引腳的定義,在后面開發(fā)板從ArduinoUNO換成ArduinoMega2560之后,ArduinoMega2560每一個引腳對應(yīng)的功能和ArduinoUNO略有不同,在程序設(shè)計當中還要將已寫好的引腳對應(yīng)程序進行更新。在編程的過程中,先去觀看教學視頻區(qū)學會最基本的程序邏輯及框架,再去參考別人之前做相同產(chǎn)品的時候他們想擁有的編程思路,然后順著其邏輯根據(jù)自己設(shè)計的功能去編程,還需要對每個模塊引入它們的庫來調(diào)試。在編程過程中,由于自己的編程不是很熟練,在編譯過程中也多次報錯,而且還需要各個模塊的程序環(huán)環(huán)相扣、缺一不可,多種功能相結(jié)合這方面的資料網(wǎng)上也相對較少,自己也是一步一步嘗試,在經(jīng)歷了一次又一次的修改和調(diào)試后,才賦予其嚴密的編程邏輯。6.2設(shè)計創(chuàng)新點(1)能用按鍵控制MP3播放器的播放、暫停、上一首、下一首功能。(2)能用語音控制MP3播放器的播放、暫停、上一首、下一首功能。(3)能用手機端控制MP3播放器的播放、暫停、上一首、下一首功能。(4)顯示屏能顯示當前播放歌曲的數(shù)字序號。(5)使用ArduinoMega2560開發(fā)板代替ArduinoUNO開發(fā)板,預(yù)留了更多的內(nèi)存空間。6.3設(shè)計的不足點這次的畢業(yè)設(shè)計時間有限,而我們因為經(jīng)驗不足的原因在調(diào)試的過程中花費了大量的時間和精力,所以導(dǎo)致我們的功能不能像預(yù)想的那樣完善,MP3播放器涉及到功能較少,只能做到基礎(chǔ)的播放、暫停和切歌,貼心化的互動方式依舊是多功能智能播放器的一個發(fā)展重點,在這方面還有很多問題需要去解決。6.4展望通過本次的畢業(yè)設(shè)計后,使我更加深入的了解了Arduino開發(fā)平臺的和ArduinoIDE編程平臺使用方法,學習編程一路上我也是磕磕碰碰,編程不光需要基本功扎實,還需要有足夠清晰的思路去賦予其邏輯,中間出了任何一點錯誤也可能會導(dǎo)致編譯失敗,也讓我了解到想學好編程語言是一件多么費盡周折的事情,雖然說自己對于設(shè)計產(chǎn)品這方面只是剛?cè)腴T,但是在設(shè)計產(chǎn)品的過程中通過不停地查閱各種資料以及文獻,學習他人的編程思路,了解程序和硬件之間的關(guān)系等等,這些都讓我受益匪淺。
參考文獻[1]侯琳琦.網(wǎng)絡(luò)音樂-新興的藝術(shù)形式[J].北京郵電大學學報(社會科學版),2008,10(6):9-12.[2]杜志超,高立.網(wǎng)絡(luò)音樂及其媒體播放器發(fā)展趨勢[J].北京郵電大學學報,2013,15(1):15-21.[3]頭像好看嗎.Arduino簡介[EB/OL]./hftyfdg/article/details/86549543,2019-01-19.[4]繆璐璐.基于Arduino平臺開發(fā)交互式產(chǎn)品原型的研究[D].上海:上海交通大學,2013.[5]畢圣.ArduinoMega2560[EB/OL]./thread-17938-1-2.html,2015-11-01.[6]beanxyy.arduinoide是什么_關(guān)于arduinoide的簡單介紹[EB/OL]./emb/610258.html,2018-01-03.[7]趙云娥,吳振強.Aduino助理美好生活-以音樂播放器設(shè)計為例[J].甘肅科技縱橫,2016,45(10):23-25.[8]鄭昊.基于Arduino/Android的藍牙通訊系統(tǒng)設(shè)計與實現(xiàn)[D].武漢:湖北大學,2012.[9]mtobeiyf.[Arduino]HC-06藍牙模塊使用小結(jié)[EB/OL]./p/5c220d0d3692,2016-08-02.[10]ling3ye.Arduino驅(qū)動OLED屏幕IIC接線方式簡單入門[EB/OL]./ling3ye/article/details/53028069,2016-11-04.[11]綜合實驗.基于Arduino的按鍵控制音樂播放器實驗(MP3音樂播放器模塊)[EB/OL]./2018/04/20/mp3player/,2018-4-20.[12]yanwl.Arduino系列教程十:語音識別模塊LD3320[EB/OL]./study/article-11-1.html,2015-4-27.
致謝這次的畢業(yè)設(shè)計因為是第一次接觸設(shè)計產(chǎn)品,沒有太多的經(jīng)驗,所以走了不少彎路。最終在小組成員的努力以及老師的幫助下,終于完成了本次畢業(yè)設(shè)計?;仡櫿麄€畢設(shè)研究過程,也是充滿了艱辛。在莫偉強老師的建議下,我們選擇了Arduino作為開發(fā)板,制作多功能智能播放器。首先,我們先了解多功能智能播放器的大致框架,了解我們需要去研究開發(fā)什么功能,定下來了之后再開始開工。再學習程序之前,我需要了解開發(fā)板以及各個模塊的使用方法,這樣在后面編程結(jié)果后,方便配合硬件一起調(diào)試。一開始學習編程的時候,因為自己編程底子薄弱,所以一直是在跟著教學視頻學,然后自己嘗試編出視頻中的程序。后面開始設(shè)計程序的時候,發(fā)現(xiàn)自己無從下手,于是又開始在網(wǎng)上尋找與本設(shè)計相似的程序參考資料,去論壇里查看他們的經(jīng)驗分享,根據(jù)每一步程序后面的說明去理解他們的編程思路,但是網(wǎng)上的資料有限,只找到了音樂播放器單一功能的程序,并沒有找到將多個功能結(jié)合在一起的程序作為參考思路。于是就根據(jù)自己之前學編程的經(jīng)驗來一步一步編輯調(diào)試,在一步一步的嘗試下自己也摸索出了一些方法。這里要感謝我們的指導(dǎo)老師,感謝老師在我們的迷茫期給予我們建議以及指導(dǎo),并且一直在關(guān)心我們畢業(yè)設(shè)計的進展,也給我們耐心講解寫論文時需要注意的事項,并給出相關(guān)的建議。也要感謝我的隊友們,他們對于做畢設(shè)也有很強上進心,沒有他們的相互扶持這個畢設(shè)也很難進行下去,畢竟每個人都有每個人負責的部分,而且現(xiàn)在正值疫情期間,想靠自己一個人去實現(xiàn)還是很困難的。還要感謝在網(wǎng)絡(luò)上提供編程思路的前輩們,如果我不參考他們的編程思路來完成自己的畢業(yè)設(shè)計,我可能都不知道從何下手。大學四年馬上就要結(jié)束了,我們也盡量想以一個優(yōu)秀的畢設(shè)來給大學四年畫上一個句號,所以我們一直在努力學習相關(guān)知識?;仡櫞髮W四年,很感謝學校能給我們提供一個自由的學習環(huán)境,也為我們即將走向社會提供了環(huán)境及引導(dǎo),感謝之前的班導(dǎo)師和學長們帶我們熟悉校園環(huán)境,感謝各位老師給我們傳授專業(yè)知識,感謝大學四年同學和朋友的陪伴,我們以后有機會再會。也要感謝父母對我的無私奉獻,他們對我不光提供了財務(wù)上的支持,也培育了我正確的價值觀、人生觀。走向社會之后我會努力工作報答父母的養(yǎng)育之恩。非常感謝你們對我的幫助以及支持!
附錄1程序/*播放器需要通過按鍵,語音,手機(藍牙)實現(xiàn)播放,暫停,上一首,下一首。顯示屏(1306IIC)能顯示歌名*//**************接線說明*********arduino2560藍牙模塊5V》VCCgnd》gndRX1》TXTX1》RXarduino2560顯示屏5V》VCCgnd》gndSDA》SDASCL》SCLarduino2560MP3模塊(本文件所在文件夾里面有MP3接線圖)5V》VCCgnd》gndTX21k電阻》RXRX2》TXarduino2560語音模塊VCC
》3.3VGND
》GNDD50》MID51
》MOD52
》SCKD4
》CS/NSSD9
》RSTD2》IRQGND》WR按鍵上一首一個引腳接arduino的3,另一個引腳接arduino的gnd按鍵下一首一個引腳接arduino的5,另一個引腳接arduino的gnd按鍵播放、停止一個引腳接arduino的6,另一個引腳接arduino的gnd/**************接線說明*********/#defineDebugSerialSerial/*************藍牙部分*************/#defineBtSerialSerial1charRecData[20];//保存接收到的藍數(shù)據(jù)byteRecNum=0;//獲取到的數(shù)據(jù)個數(shù)voidInitBt()//初始化藍牙{BtSerial.begin(9600);//藍牙通信波特率9600}voidInitReceDate()//初始化保存藍牙數(shù)據(jù)的數(shù)組{for(inti=0;i<20;i++)//字符數(shù)據(jù)清零{RecData[i]=0;}RecNum=0;}boolRead_Bt_data()//是否有串口數(shù)據(jù),有就讀取并且返回1,沒有就返回0{if(BtSerial.available())//串口有數(shù)據(jù){RecData[RecNum]=BtSerial.read();//讀取數(shù)據(jù)if(RecData[RecNum]=='*'||RecData[RecNum]=='\r'||RecData[RecNum]=='\n')//假如讀取到*或者換行符代表是數(shù)據(jù)尾,返回1{delay(10);//等待數(shù)據(jù)接收完成while(BtSerial.available())//清空緩存的藍牙數(shù)據(jù){BtSerial.read();//讀取數(shù)據(jù)}BtSerial.println(RecData);//藍牙返回接收到的數(shù)據(jù)returntrue;}RecNum++;if(RecNum>=20)//保存的數(shù)據(jù)存不下了{delay(10);//等待數(shù)據(jù)接收完成while(BtSerial.available())//清空緩存區(qū)BtSerial.read();returntrue;}}returnfalse;};voidProceBtData()//解析藍牙數(shù)據(jù){if(Read_Bt_data())//如果讀取到藍牙數(shù)據(jù){if(strstr(RecData,"Next")!=NULL)//檢測到下一首的指令{NextMp3();//MP3播放下一首}if(strstr(RecData,"Prev")!=NULL)//檢測到上一首的指令{PrevMp3();//MP3播放上一首}if(strstr(RecData,"Pause")!=NULL)//檢測到暫停的指令{PauseMp3();//暫停、播放Mp3}InitReceDate();//清空緩存數(shù)據(jù)}}/*************藍牙部分*************//***********顯示屏部分*********/#include<Wire.h>#include<Adafruit_GFX.h>#include<Adafruit_SSD1306.h>#defineSCREEN_WIDTH128//128橫像素#defineSCREEN_HEIGHT64//64豎像素#defineOLED_RESET-1Adafruit_SSD1306display=Adafruit_SSD1306(128,32,&Wire);voidInitLcd(){while(!display.begin(SSD1306_SWITCHCAPVCC,0x3C))//初始化顯示屏,iic地址0x3c{DebugSerial.println(F("SSD1306allocationfailed"));delay(500);}display.clearDisplay();//清空顯示}voidDisplay(intx,inty,Stringdis,boolisClear=false)//顯示函數(shù),括號為顯示其實坐標,顯示內(nèi)容,是否清屏{if(isClear)//需要清屏{display.clearDisplay();//清屏}display.setTextSize(1);//設(shè)定字體大小display.setTextColor(SSD1306_WHITE);//設(shè)定顏色display.setCursor(x,y);//設(shè)定光標位置display.println(dis);//顯示內(nèi)容display.display();}/***********顯示屏部分*********//********MP3模塊部分**********/#include<SoftwareSerial.h>#include<DFPlayer_Mini_Mp3.h>#defineMp3SerialSerial2boolIsPlaying=false;//是否在播放intPlayingNum=0;//正在播放第幾個MP3voidInitMp3()//初始化MP3{Mp3Serial.begin(9600);//設(shè)定MP3串口波特率mp3_set_serial(Mp3Serial);//設(shè)定MP3串口delay(10);mp3_set_volume(20);//設(shè)定音量,最大30delay(10);mp3_stop();//停止播放delay(1000);//mp3_play(1);//mp3_next();//下//mp3_prev();//上//mp3_pause();//暫停}voidPauseMp3()//暫停、播放{if(IsPlaying==true)//已經(jīng)播放{DebugSerial.println("mp3_pause");mp3_pause();//暫停IsPlaying=false;}else//沒有播放{DebugSerial.println("mp3_play");mp3_play();//播放IsPlaying=true;}}voidNextMp3()//下一曲{DebugSerial.println("NextMp3");PlayingNum++;//播放第幾首音樂加一mp3_play(PlayingNum);//播放下一曲Display(0,0,String(PlayingNum)+".mp3",true);//顯示屏顯示內(nèi)容IsPlaying=true;}voidPrevMp3()//上一曲{DebugSerial.println("PrevMp3");PlayingNum--;//播放第幾首音樂減一if(PlayingNum<1)//限制不能小于1{PlayingNum=1;}mp3_play(PlayingNum);//播放Display(0,0,String(PlayingNum)+".mp3",true);//顯示屏顯示內(nèi)容IsPlaying=true;}voidStopMp3()//停止播放{DebugSerial.println("StopMp3");mp3_stop();IsPlaying=false;}/********MP3模塊部分**********//**********按鈕部分**************/classBUTTON//建立一個按鈕的類{public:bytePin;//定義按鈕引腳boolClickDigital=false;//定義按下按鈕后的引腳電平unsignedlongUnClickSt=0;//保存按鈕上一次掃描的時候沒有按下的時間節(jié)點BUTTON(bytepin,boolclickDigital=false){Init(pin,clickDigital);}voidInit(bytepin,boolclickDigital=false)//按鈕初始化的函數(shù),括號為引腳,按下時的電平{Pin=pin;//將按鈕的引腳保存起來ClickDigital=clickDigital;//保存按鈕按下后的電平pinMode(Pin,INPUT_PULLUP);//定義按鈕的引腳為輸入模式}boolIsClick(boolwaitForLose=false)//判斷是否按下按鈕的函數(shù),括號里填true會等待按鈕按下松開后返回是否按下{if(digitalRead(Pin)!=ClickDigital)//假如沒有按下{UnClickSt=millis();//更新沒有按下的時間節(jié)點}if(waitForLose)//假如需要等待松開按鈕再返回是否按下{while(digitalRead(Pin)==ClickDigital);//等待按鈕松開}return(millis()-UnClickSt>=50);//如果按下時間大于0.05秒,返回已經(jīng)按下,否則返回沒有按下}};BUTTONBtnUp(3,0);//按鍵上一首一個引腳接arduino的3,另一個引腳接arduino的gndBUTTONBtnDown(5,0);//按鍵下一首一個引腳接arduino的5,另一個引腳接arduino的gndBUTTONBtnPause(6,0);//按鍵播放、停止一個引腳接arduino的6,另一個引腳接arduino的gndvoidCheckBtn()//檢查按鈕{if(BtnUp.IsClick(true))//上一曲按鍵按下{PrevMp3();//上一曲}elseif(BtnDown.IsClick(true))//下一曲按下{NextMp3();//下一曲}elseif(BtnPause.IsClick(true))//暫停、播放按鈕按下{PauseMp3();//暫停、播放}}/**********按鈕部分**************//***********語音識別部分************************/#include<ld3320.h>VoiceRecognitionVoice;//聲明一個語音識別對象voidInitVoice(){Voice.init();//初始化VoiceRecognition模塊Voice.addCommand("shangyiqu",0);//添加指令,參數(shù)(指令內(nèi)容,指令標簽(可重復(fù)))Voice.addCommand("xiayiqu",1);//添加指令,參數(shù)(指令內(nèi)容,指令標簽(可重復(fù)))Voice.addCommand("zanting",2);//添加指令,參數(shù)(指令內(nèi)容,指令標簽(可重復(fù)))Voice.addCommand("bofang",3);//添加指令,參數(shù)(指令內(nèi)容,指令標簽(可重復(fù)))Voice.start();//開始識別}voidProceVoice(){switch(Voice.read())//判斷識別{case0://若是指令"shangyiqu"PrevMp3();break;case1://若是指令"xiayiqu"NextMp3();break;case2://若是指令"zanting"DebugSerial.println("mp3_pause");mp3_pause();IsPlaying=false;break;case3://若是指令"bofang"DebugSerial.println("mp3_play");mp3_play();IsPlaying=true;break;}}/***********語音識別部分************************/voidsetup(){DebugSerial.begin(115200);InitBt();//初始化藍牙InitLcd();//初始化lcdInitMp3();//初始化MP3InitVoice();//初始化語音識別}voidloop(){ProceBtData();//根據(jù)藍牙接收內(nèi)容控制播放CheckBtn();//根據(jù)按鈕控制播放ProceVoice();//根據(jù)語音識別控制播放}
附錄2英文文獻
附錄3英文文獻翻譯Arduino:一個低成本的多用途實驗室設(shè)備摘要:典型的心理和神經(jīng)生理學實驗往往需要精確控制多個輸入和輸出信號。這些信號通常是通過計算機軟件和/或外部專用硬件生成或記錄的。專用硬件通常非常昂貴,需要額外的軟件來控制其行為。在本文中,我介紹了在一個低成本和開源的I/O板(Arduino系列)上進行的一些準確性測試,這些測試在許多實驗室環(huán)境中可能很有用。Arduino的優(yōu)勢之一是可以將實驗?zāi)_本加載到主板的內(nèi)存中,讓它在不與計算機或外部軟件交互的情況下運行,從而獲得完全的獨立性、可移植性和準確性。此外,圍繞Arduino的想法出現(xiàn)了一個大型社區(qū),并為不同的項目提供了許多硬件插件和數(shù)百個免費腳本。準確性測試表明Arduino板可能是許多心理和神經(jīng)生理實驗室的廉價工具。介紹每個進行某種行為研究的實驗室都使用幾種不同的設(shè)備和軟件進行實驗控制。其目標通常是記錄事件(行為或生理)并生成信號(即,以控制或同步不同的機器)。在大多數(shù)情況下,這樣的任務(wù)需要毫秒到毫秒的精度,因此需要特別注意,因為現(xiàn)代操作系統(tǒng)(OS)的設(shè)計不是實時操作,并具有這樣的精度(Canto,Bufalari,&D’ausilio,2011;錢伯斯和布朗出版社,2003年;MacInnes&Taylor,2001;Plant&Turner,2009)。因此,使用了幾種不同的方法,例如通過專用的和優(yōu)化的軟件包(即、E-Prime、Presentation、MATLAB的心理物理學工具箱等)或?qū)㈥P(guān)鍵任務(wù)交給具有內(nèi)部高精度時鐘的專用硬件(即,國家儀器公司的外部I/O板,測量計算,劍橋電子設(shè)備等)。在這兩種情況下,解決方案往往是昂貴的(特別是外部板),次優(yōu)的,因為它嚴重依賴于操作系統(tǒng)的準確性(這適用于所有的實驗控制軟件),或不適合特定的實驗。后一點尤其適用于同時測試多個參與者,或需要便攜式或無線電池供電裝置的實驗。然而,在某些情況下,許多低級的I/O任務(wù)并不需要特定的軟件包或昂貴的電路板。例如,如果實驗者想要一個事件在通過一些傳感器檢測到一個事件時被觸發(fā)(例如,,不需要使用昂貴的硬件或軟件。事實上,簡單而廉價的微控制器板可以解決許多實驗室I/O任務(wù)。這些板子是物理計算平臺,基于簡單的微控制器和編寫軟件的開發(fā)環(huán)境。這些設(shè)備可用于開發(fā)交互式對象,從各種開關(guān)或傳感器獲取輸入,并控制各種燈、馬達和其他物理輸出。此類項目通常可以是獨立的,也可以與計算機上運行的軟件進行通信。這樣的板子已經(jīng)存在了好幾年了,并且通常只在處理器架構(gòu)(ARM、ATMEL等)、編程語言(C/c++、BASIC等)或其他特性(例如:,I/O通道數(shù)目、模擬通道數(shù)目等)。一些制造商已經(jīng)提出了非常流行的解決方案,如視差公司,Coridium公司,F(xiàn)TDI,Picaxe,Arduino,以及許多其他的。所有這些板子的價格一般在50歐元左右。然而,編程這些電路板可能相當復(fù)雜,用戶需要至少一些基本的電子知識。因此,在心理和神經(jīng)生理實驗室廣泛使用這些板的主要障礙是陡峭的學習曲線。然而,Arduino電路板(圖1)提供了一個關(guān)鍵的優(yōu)勢:開源哲學(硬件和軟件),它利用了大量的非專家社區(qū),這些社區(qū)圍繞Arduino的概念蓬勃發(fā)展。一個非常粗略的社區(qū)規(guī)模估計可以從一個谷歌搜索報告“arduino”超過1200萬點擊。事實上,大量的用戶和不斷增長的市場對Arduino的概念表現(xiàn)出了越來越大的興趣。有數(shù)百個開源項目可以根據(jù)特定的(實驗性的)需求使用或修改。許多web教程涵蓋了基本的編程和電子問題,并且有活躍的論壇提供幫助。因此,學習使用Arduino電路板可能比學習使用其他制造商的類似產(chǎn)品要容易得多??紤]到Arduino社區(qū)提供的可用支持,即使是幾乎沒有編程和子背景的研究人員也應(yīng)該考慮使用Arduino,而不是其他類似的電路板。圖Arduino電路板和ArduinoUNO的外觀Arduino硬件由一個開放的硬件設(shè)計和一個AtmelAVR處理器組成。Arduino板可以預(yù)先購買和組裝,但是硬件設(shè)計信息也可以提供給那些愿意構(gòu)建或修改它們的人(進一步的信息可以在http://arduino.cc上找到)。一些第三方制造商已經(jīng)生產(chǎn)出了能夠擴展Arduino基本功能的盾牌(附加板)(更新的列表在http://shield/)。在這些屏蔽中,值得一提的是電機控制屏蔽可以控制直流電機和讀編碼器,Xbee屏蔽可以讓多個Arduino板進行無線通信,臨界速度加速度計屏蔽集成了一個三軸加速度計。此外,第三方(+30)已經(jīng)發(fā)布了基于Arduino概念的幾個變體。這些是使用Arduino軟件構(gòu)建的公司板(通常具有更好的配置或更低的價格)。該軟件由標準的編程語言和在主板上運行的固件組成。Arduino硬件是使用簡化的c++語言在基于處理的IDE中編寫的。然后,軟件被編譯并加載到板上。Arduino板還兼容Flash、Processing、MaxMSP和MATLAB,幾行代碼通常就足以實現(xiàn)非常強大的行為(參見http://arduino.cc/en/reference/主頁)。Arduino的基本編程結(jié)構(gòu)至少由兩部分組成。這些是設(shè)置和循環(huán)組件。在設(shè)置中,它在開始時運行,只有一次來設(shè)置pin模式或串行通信,變量被聲明。第二部分在一個循環(huán)中運行,該循環(huán)使腳本能夠更改、響應(yīng)和控制Arduino板。在聲明變量之后,控制Arduino涉及到典型的控制結(jié)構(gòu)(IF,IF…ELSE,FOR等)、算術(shù)運算符(+、-、/、*等)和比較運算符(>,<等)或布爾運算符(and,or等)。還有一組用于模擬和數(shù)字讀寫的命令,如digitalwrite()或digitalread()。此外,其他命令可以設(shè)置以毫秒為單位的時間延遲,執(zhí)行基本的數(shù)學和三角學操作(最小/最大、絕對值、平方根、正弦、余弦等),或者生成隨機數(shù)。要獲得更全面的信息,請參考web教程或官方文檔(http://www.arduino.cc/playground/uploads/Main/arduino_notebook_v1-1.pdf)。作為一個使用的實際例子,假設(shè)實驗參與者必須接觸并抓住一個對象,而研究人員想要觸發(fā)另一個機器(即。(經(jīng)顱磁刺激機)100ms后接觸物體。典型的解決方案是一個觸摸傳感器,通過并行端口與計算機上的軟件程序進行通信。,E-Prime或Presentation)。軟件檢測狀態(tài)變化,設(shè)置延遲,并通過并行端口發(fā)送TTL。這個解決方案是無可指責的,除了它需要個人電腦和軟件的干預(yù),可能會引入時間準確性問題(Plant&Turner,2009)。簡單的I/O任務(wù)(如建議的任務(wù))需要幾行代碼和Arduino板(或任何其他類似產(chǎn)品)上很少的電子設(shè)備來處理信息,而不需要PC。通過這種方式,可能可以避免時間精度問題,因為代碼是在沒有任何其他干擾進程在后臺運行的情況下編譯并全速運行的。事實上,Arduino板在獲取傳感器數(shù)據(jù)和/或控制電機以及發(fā)送/接收TTL脈沖時非常有用。此外,這些低級的I/O任務(wù)對于非常規(guī)的設(shè)置可能是必要的,通常需要額外的硬件、編程技能和一些創(chuàng)造性的解決方案。例如,考慮一下這張簡短的開放項目列表,它可能在心理學和神經(jīng)生理學實驗室中非常有用。一種易于制作和廉價的觸摸傳感器(http://www.arduino.cc/playground/code/itivesensor)已經(jīng)被設(shè)計用于行為研究,其中包括測量參與者接觸和觸摸物體的反應(yīng)時間(RTs)。另一個項目展示了如何構(gòu)建一個光電二極管(http://www.arduino.cc/playground/Learning/LEDSensor),例如,它可以用來檢測屏幕上的刺激演示。最后,還有一個項目演示了如何將deb功能引入任何輸入(http://arduino.cc/en/Tutorial/Debounce),這非常有用,因為眾所周知,大多數(shù)按鈕面板都提供了嘈雜的信號,而且為了選擇正確的RT,deb是一個必要的步驟。然而,對于所有的實驗人員來說,時間準確性是最重要的,即使它是昂貴的。在這里,Arduino板原則上應(yīng)該是相當準確的,因為腳本是經(jīng)過編譯的,然后加載到板上的內(nèi)存中。因此,一旦加載了編譯后的腳本,它就可以在沒有任何其他操作系統(tǒng)干預(yù)或通信的情況下運行,從而避免了延遲和準確性瓶頸。由于嵌入式微處理器有自己的時鐘,并且只需運行剛剛加載的腳本,因此可以確保精確的計時。然而,必須在一般的實驗環(huán)境中對定時精度進行徹底的測試,并且必須通過外部可靠的、研究級的硬件來控制數(shù)據(jù)(Plant,Hammond,&Turner,2004;Plant,Hammond,&Whitehouse,2002;DeClercq,Crombez,Buysse,&Roeyers,2003)。在本研究中,Arduino板通過一系列常見的I/O任務(wù)進行驗證,以評估其定時精度。方法和結(jié)果Arduino電路板ArduinoUno是一個基于ATmega328的微控制器板。它有14個數(shù)字輸入/輸出引腳,其中6個可以用作脈寬調(diào)制(PWM)輸出。此外,它提供了6個模擬輸入,一個16兆赫的晶體振蕩器,一個USB連接,一個電源插口和一個電路串行編程頭。ArduinoUno可以通過USB連接或外部電源供電(即,9伏電池)。電源是自動選擇的。該板可以操作6至20伏的外部電源。ATmega328有32KB(其中0.5KB用于引導(dǎo)加載程序)。它還有2kb的SRAM和1kb的EEPROM(可以用EEPROM庫讀寫)。使用pinMode()、digitalWrite()和digitalRead()函數(shù),Uno上的14個數(shù)字管腳中的每一個都可以用作輸入或輸出。它們以5伏的電壓工作。每個引腳可以提供或接收最大40毫安,并有一個內(nèi)部上拉電阻(默認斷開)20-50kOhms。此外,一些引腳具有專門的功能:引腳0和1可以用來接收(RX)和傳輸(TX)TTL串行數(shù)據(jù);引腳2和引腳3可配置為在低值、上升或下降沿或值的變化上觸發(fā)中斷;最后,引腳3、5、6、9、10和11使用analogWrite()函數(shù)提供8位PWM輸出。Uno有6個模擬輸入,標記為A0到A5,每個輸入提供10位分辨率(1024個不同的值)。默認情況下,它們從地面測量到5伏特,盡管可以使用AREFpin和analogReference()函數(shù)更改范圍的上限。
HYPERLINK如何給電腦重做系統(tǒng)給電腦重做系統(tǒng),自己學學,可少花錢,哈哈[圖]
一、準備工作:
如何重裝電腦系統(tǒng)
首先,在啟動電腦的時候按住DELETE鍵進入BIOS,選擇AdvancedBIOSFeatures選項,按Enter鍵進入設(shè)置程序。選擇FirstBootDevice選項,然后按鍵盤上的PageUp或PageDown鍵將該項設(shè)置為CD-ROM,這樣就可以把系統(tǒng)改為光盤啟動。
其次,退回到主菜單,保存BIOS設(shè)置。(保存方法是按下F10,然后再按Y鍵即可)
1.準備好WindowsXPProfessional簡體中文版安裝光盤,并檢查光驅(qū)是否支持自啟動。
2.可能的情況下,在運行安裝程序前用磁盤掃描程序掃描所有硬盤檢查硬盤錯誤并進行修復(fù),否則安裝程序運行時如檢查到有硬盤錯誤即會很麻煩。
3.用紙張記錄安裝文件的產(chǎn)品密匙(安裝序列號)。
4.可能的情況下,用驅(qū)動程序備份工具(如:驅(qū)動精靈2004V1.9Beta.exe)將原WindowsXP下的所有驅(qū)動程序備份到硬盤上(如∶F:Drive)。最好能記下主板、網(wǎng)卡、顯卡等主要硬件的型號及生產(chǎn)廠家,預(yù)先下載驅(qū)動程序備用。
5.如果你想在安裝過程中格式化C盤或D盤(建議安裝過程中格式化C盤),請備份C盤或D盤有用的數(shù)據(jù)。
二、用光盤啟動系統(tǒng):
(如果你已經(jīng)知道方法請轉(zhuǎn)到下一步),重新啟動系統(tǒng)并把光驅(qū)設(shè)為第一啟動盤,保存設(shè)置并重啟。將XP安裝光盤放入光驅(qū),重新啟動電腦。剛啟動時,當出現(xiàn)如下圖所示時快速按下回車鍵,否則不能啟動XP系統(tǒng)光盤安裝。如果你不知道具體做法請參考與這相同的-->如何進入純DOS系統(tǒng):
光盤自啟動后,如無意外即可見到安裝界面,將出現(xiàn)如下圖1所示
查看原圖
全中文提示,“要現(xiàn)在安裝WindowsXP,請按ENTER”,按回車鍵后,出現(xiàn)如下圖2所示
查看原圖
許可協(xié)議,這里沒有選擇的余地,按“F8”后如下圖3
HYPERLINK
查看原圖
這里用“向下或向上”方向鍵選擇安裝系統(tǒng)所用的分區(qū),如果你已格式化C盤請選擇C分區(qū),選擇好分區(qū)后按“Enter”鍵回車,出現(xiàn)下圖4所示
查看原圖
這里對所選分區(qū)可以進行格式化,從而轉(zhuǎn)換文件系統(tǒng)格,或保存現(xiàn)有文件系統(tǒng),有多種選擇的余地,但要注意的是NTFS格式可節(jié)約磁盤空間提高安全性和減小磁盤碎片但同時存在很多問題MacOS和98/Me下看不到NTFS格式的分區(qū),在這里選“用FAT文件系統(tǒng)格式化磁盤分區(qū)(快),按“Enter”鍵回車,出現(xiàn)下圖5所示
查看原圖
格式化C盤的警告,按F鍵將準備格式化c盤,出現(xiàn)下圖6所示
HYPERLINK
查看原圖
由于所選分區(qū)C的空間大于2048M(即2G),FAT文件系統(tǒng)不支持大于2048M的磁盤分區(qū),所以安裝程序會用FAT32文件系統(tǒng)格式對C盤進行格式化,按“Enter”鍵回車,出現(xiàn)下圖7所示
查看原圖圖7中正在格式化C分區(qū);只有用光盤啟動或安裝啟動軟盤啟動XP安裝程序,才能在安裝過程中提供格式化分區(qū)選項;如果用MS-DOS啟動盤啟動進入DOS下,運行i386\winnt進行安裝XP時,安裝XP時沒有格式化分區(qū)選項。格式化C分區(qū)完成后,出現(xiàn)下圖8所示
被過濾廣告
查看原圖
圖8中開始復(fù)制文件,文件復(fù)制完后,安裝程序開始初始化Windows配置。然后系統(tǒng)將會自動在15秒后重新啟動。重新啟動后,出現(xiàn)下圖9所示
HYPERLINK
查看原圖
9
查看原圖
過5分鐘后,當提示還需33分鐘時將出現(xiàn)如下圖10
HYPERLINK
查看原圖
區(qū)域和語言設(shè)置選用默認值就可以了,直接點“下一步”按鈕,出現(xiàn)如下圖11
查看原圖
這里輸入你想好的姓名和單位,這里的姓名是你以后注冊的用戶名,點“下一步”按鈕,出現(xiàn)如下圖12
HYPERLINK
查看原圖
如果你沒有預(yù)先記下產(chǎn)品密鑰(安裝序列號)就大件事啦!這里輸入安裝序列號,點“下一步”按鈕,出現(xiàn)如下圖13
HYPERLINK
查看原圖
安裝程序自動為你創(chuàng)建又長又難看的計算機名稱,自己可任意更改,輸入兩次系統(tǒng)管理員密碼,請記住這個密碼,Administrator系統(tǒng)管理員在系統(tǒng)中具有最高權(quán)限,平時登陸系統(tǒng)不需要這個帳號。接著點“下一步”出現(xiàn)如下圖14
查看原圖
日期和時間設(shè)置不用講,選北京時間,點“下一步”出現(xiàn)如下圖15
HYPERLINK
查看原圖
開始安裝,復(fù)制系統(tǒng)文件、安裝網(wǎng)絡(luò)系統(tǒng),很快出現(xiàn)如下圖16
查看原圖
讓你選擇網(wǎng)絡(luò)安裝所用的方式,選典型設(shè)置點“下一步”出現(xiàn)如下圖17
HYPERLINK
查看原圖
點“下一步”出現(xiàn)如下圖18
HYPERLINK
查看原圖
繼續(xù)安裝,到這里后就不用你參與了,安裝程序會自動完成全過程。安裝完成后自動重新啟動,出現(xiàn)啟動畫面,如下圖19
HYPERLINK
查看原圖
第一次啟動需要較長時間,請耐心等候,接下來是歡迎使用畫面,提示設(shè)置系統(tǒng),如下圖20
查看原圖
點擊右下角的“下一步”按鈕,出現(xiàn)設(shè)置上網(wǎng)連接畫面,如下圖21所示
HYPERLINK
查看原圖
點擊右下角的“下一步”按鈕,出現(xiàn)設(shè)置上網(wǎng)連接畫面,如下圖21所示
查看原圖
這里建立的寬帶撥號連接,不會在桌面上建立撥號連接快捷方式,且默認的撥號連接名稱為“我的ISP”(自定義除外);進入桌面后通過連接向?qū)Ы⒌膶拵芴栠B接,在桌面上會建立撥號連接快捷方式,且默認的撥號連接名稱為“寬帶連接”(自定義除外)。如果你不想在這里建立寬帶撥號連接,請點擊“跳過”按鈕。
在這里我先創(chuàng)建一個寬帶連接,選第一項“數(shù)字用戶線(ADSL)或電纜調(diào)制解調(diào)器”,點擊“下一步”按鈕,如下圖22所示
HYPERLINK
查看原圖
目前使用的電信或聯(lián)通(ADSL)住宅用戶都有帳號和密碼的,所以我選“是,我使用用戶名和密碼連接”,點擊“下一步”按鈕,如下圖23所示
查看原圖
輸入電信或聯(lián)通提供的帳號和密碼,在“你的ISP的服務(wù)名”處輸入你喜歡的名稱,該名稱作為撥號連接快捷菜單的名稱,如果留空系統(tǒng)會自動創(chuàng)建名為“我的ISP”作為該連接的名稱,點擊“下一步”按鈕,如下圖24所示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 后臺服務(wù)合同范本
- 廠房抵押欠款合同范本
- 合作安裝合同范本
- 額抵押借款合同范本
- 化糞池抽糞合同范例
- 賣吊牌合同范本
- ktv vi設(shè)計合同范本
- 合伙設(shè)立公司合同范本
- 保安用工協(xié)議合同范本
- 專利轉(zhuǎn)讓押金合同范本
- JGJ79-2012 建筑地基處理技術(shù)規(guī)范
- LIMS實驗室信息管理系統(tǒng)
- 柱塞泵工作原理動畫演示
- 數(shù)字法學原理
- 玉米收購可行性分析報告
- 最全醫(yī)院應(yīng)急預(yù)案匯編目錄
- 駕駛員心理健康教育培訓(xùn)課件
- 別墅的價格評估報告
- 滬科版七年級數(shù)學下冊 第六章 實數(shù) 單元測試卷
- 無痛胃腸鏡的護理查房
- 農(nóng)村生活污水檢測服務(wù)方案
評論
0/150
提交評論