




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
WiFi控制智能家庭影音的設(shè)計(jì)摘要:WiFi控制智能家庭影音系統(tǒng)是基于STM32制作而且可以運(yùn)行在WiFi環(huán)境下的智能家居系統(tǒng)之一。通過(guò)使用無(wú)線模塊、音頻解碼模塊和溫度傳感等模塊,實(shí)現(xiàn)播放音樂(lè)和溫度查詢等功能。該系統(tǒng)具有應(yīng)用廣泛且擴(kuò)展性高的特點(diǎn),能夠利用主芯片強(qiáng)勁的性能,實(shí)現(xiàn)多樣且實(shí)用的功能。本論文研究了從硬件的選取到軟件程序的編寫(xiě),包括固件燒寫(xiě)和系統(tǒng)移植,最終完成整個(gè)系統(tǒng)的設(shè)計(jì)。關(guān)鍵詞:WiFi;STM32;智能家居;模塊;設(shè)計(jì)SmartHomeAudioDesignunderWiFiAbstract:SmarthomeaudiosystemunderWiFiisoneofSmarthomesystemsbaseonSTM32.Realizethefunctionofplayingmusicandtemperaturequerybywirelessmodule,audiodecodingmoduleandothers.Thissystemhaswidelyusedandhighscalabilitycharacteristics.Thethesisresearchedfromhardwareselectiontosoftwareprogrammingincludingfirmwareprogrammingandsystemmigration.Intheend,Ihadfinishedthisdesign. KeyWord:WiFi;STM32;Smarthomesystem;Modules;Design
1引言隨著經(jīng)濟(jì)水平的提升和科學(xué)技術(shù)的發(fā)展,越來(lái)越多打著智能旗幟的產(chǎn)品走進(jìn)我們的視野和生活。對(duì)于這樣的現(xiàn)象,其實(shí)在歷史長(zhǎng)河中一直都在發(fā)生著。在諾貝爾文學(xué)獎(jiǎng)獲得者加夫列爾·加西亞·馬爾克斯的魔幻現(xiàn)實(shí)主義著作《百年孤獨(dú)》的第一章就有這樣的一段描述:“Theworldwassorecentthatmanythingslackednames,andinordertoindicatethemitwasnecessarytopoint.EveryyearduringthemonthofMarchafamilyofraggedgypsieswouldsetuptheirtentsnearthevillage,andwithagreatuproarofpipesandkettledrumstheywoulddisplaynewinventions.”[1]描述了發(fā)生在Macondo看似荒誕的一幕,其實(shí)就展現(xiàn)了人類在文明發(fā)展中對(duì)新鮮事物的好奇。這也可以解釋如今火爆的智能家居市場(chǎng),科技類新聞開(kāi)始從充滿八卦的娛樂(lè)新聞中開(kāi)辟出一片空間。不只是普遍年輕化的極客們關(guān)注,現(xiàn)在科技已經(jīng)走進(jìn)大眾的視野。智能家居的概念起源很早,這要從科技發(fā)展比我們更早的美國(guó)說(shuō)起。在物質(zhì)生活大多得到滿足的當(dāng)今社會(huì),智能家居帶來(lái)的便捷讓人們更加注重生活的品質(zhì)。顯而易見(jiàn)的是2018年的智能家居市場(chǎng),產(chǎn)品呈現(xiàn)井噴式的增長(zhǎng),類似智能音箱,智能燈泡,智能插座等,形式和用途各不相同。據(jù)《IDC中國(guó)智能家居設(shè)備市場(chǎng)季度跟蹤報(bào)告》顯示:“2018年中國(guó)智能家居市場(chǎng)出貨量預(yù)計(jì)達(dá)到1.5億臺(tái),同比增長(zhǎng)35.9%。產(chǎn)品的智能化升級(jí)主要圍繞APP客戶端、語(yǔ)音助手以及機(jī)器學(xué)習(xí)等方面展開(kāi)?!盵2]直觀的數(shù)據(jù)更加能體現(xiàn)如今中國(guó)智能家居市場(chǎng)的火爆。到目前為止,全球范圍各個(gè)國(guó)家,機(jī)構(gòu),公司都在全速發(fā)展信息技術(shù),不同的產(chǎn)品、不同的服務(wù)、不同的業(yè)態(tài)在出現(xiàn)著,與此同時(shí)也在刺激著新的消費(fèi)需求,智能家居一躍成為日益活躍的消費(fèi)熱點(diǎn)。中國(guó)擁有龐大的市場(chǎng)規(guī)模,城鎮(zhèn)和農(nóng)業(yè)現(xiàn)代加快融合,信息和工業(yè)加速發(fā)展。我們也知道,中國(guó)也正處于消費(fèi)升級(jí)的階段,人民溫飽問(wèn)題得到解決的同時(shí),信息消費(fèi)具有良好發(fā)展基礎(chǔ)和巨大發(fā)展?jié)摿?。為了推?dòng)信息化、智能化城市發(fā)展,我國(guó)政府大力測(cè)發(fā)展寬帶普及、寬帶提速,信息消費(fèi)也得到了持續(xù)增長(zhǎng),信息道路得到了建設(shè),這些都為物聯(lián)網(wǎng)行業(yè)的飛速發(fā)展打下了堅(jiān)實(shí)而穩(wěn)定的基礎(chǔ)。[3]這種趨勢(shì)并不只是企業(yè)獲得巨大收入的機(jī)會(huì),更是全面提高人民生活水平的變革,市場(chǎng)龐大的需求更加推動(dòng)科技研發(fā)的速度。無(wú)論對(duì)于企業(yè)家還是人民,抑或是研發(fā)機(jī)構(gòu),這都是充滿契機(jī)的時(shí)代,是每個(gè)年輕人都要去追逐夢(mèng)想的時(shí)代。2總體設(shè)計(jì)本論文開(kāi)發(fā)設(shè)計(jì)的是一種基于STM32的智能家庭影音系統(tǒng),實(shí)現(xiàn)在移動(dòng)端的APP通過(guò)WiFi實(shí)現(xiàn)音樂(lè)播放和溫度監(jiān)控等功能。設(shè)計(jì)所需要用的的硬件如下:STM32F103ZET6開(kāi)發(fā)板,CH340串口電路,DS18B20溫度傳感器,VS1053音頻編解碼模塊,樂(lè)鑫ESP8266WiFi模塊,ST-LINK仿真器,音箱,杜邦線。該系統(tǒng)是基于機(jī)智云平臺(tái)架構(gòu)的物聯(lián)網(wǎng)項(xiàng)目,采用了MCU的方案。STM32從傳感器DB18B20讀取數(shù)據(jù)通過(guò)串口通信協(xié)議調(diào)用燒寫(xiě)了Gagent固件的ESP8266模塊接入機(jī)智云服務(wù)器。手機(jī)APP通過(guò)WiFi從云端API向設(shè)備接收或者發(fā)送數(shù)據(jù)。云端通過(guò)gizwitsEventProcess()函數(shù)向開(kāi)發(fā)板發(fā)送數(shù)據(jù),開(kāi)發(fā)板調(diào)用mp3play()函數(shù)從SD卡中讀取數(shù)據(jù)通過(guò)VS1053解碼播放。3硬件設(shè)計(jì)3.1開(kāi)發(fā)平臺(tái)使用的STM32F103ZET6的開(kāi)發(fā)板資源豐富,包括64KBSRAM、512KBFLASH來(lái)提供大容量存儲(chǔ)和運(yùn)行速度,還有基本定時(shí)器2個(gè)、通用定時(shí)器2個(gè)、高級(jí)定時(shí)器2個(gè)、DMA控制器2個(gè)、3個(gè)SPI、2個(gè)IIC、1個(gè)USB、1個(gè)CAN、1個(gè)12位DAC、3個(gè)12位ADC來(lái)提供強(qiáng)大的性能,接口種類也多,包括1個(gè)SDIO接口、1個(gè)FSMC接口和112個(gè)通用IO口用于擴(kuò)展各種模塊和功能。STM32原理圖3-1所示圖3-1STM32部分原理圖選取STM32是因?yàn)檫@款開(kāi)發(fā)板對(duì)比其他具有很多優(yōu)點(diǎn)。首先價(jià)格低。價(jià)格和8位單片機(jī)差不多,這是STM32最具有競(jìng)爭(zhēng)力的優(yōu)勢(shì)。其次開(kāi)發(fā)成本低,STM32的開(kāi)發(fā)不只需要一個(gè)串口即可下載代碼,并且支持SWD和JTAG兩種調(diào)試口。SWD調(diào)試只需要2個(gè)IO口,即可實(shí)現(xiàn)仿真調(diào)試。型號(hào)也多,STM32擁有F100、F101、F102、F103、F105、F107、F207、F217等上百種型號(hào),還可以選擇QFN、LQFP、BGA等封裝。外設(shè)多。STM32擁有FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等外設(shè)。實(shí)時(shí)性能好。84個(gè)中斷,16級(jí)可編程優(yōu)先級(jí),并且所有的引腳都可以作為中斷輸入。功耗控制好。每個(gè)外設(shè)都有自己的獨(dú)立時(shí)鐘開(kāi)關(guān),可以通過(guò)關(guān)閉相應(yīng)外設(shè)的時(shí)鐘來(lái)降低功耗。3.2Cortex-M3內(nèi)核簡(jiǎn)介STM32F103ZET6是基于ARMCortex-M3架構(gòu)的,包括存儲(chǔ)器+外設(shè)等。Cortex-M3內(nèi)核通過(guò)接口總線的形式掛載儲(chǔ)存器、中斷、外設(shè)等組成整個(gè)MCU。ARMCortex-M3內(nèi)核是為了適應(yīng)現(xiàn)在器件供應(yīng)商的要求而生,能夠讓32位處理器進(jìn)去單片機(jī),讓單片機(jī)擁有了更強(qiáng)的運(yùn)算速度和實(shí)時(shí)能力,更方便移植。它替代了原來(lái)的ARM7架構(gòu),使編程和調(diào)試更簡(jiǎn)單。[3]3.3溫度傳感器此次設(shè)計(jì)的溫度傳感器為了節(jié)省成本我采用的是STM32內(nèi)部的溫度傳感器,這個(gè)主要是用來(lái)測(cè)量CPU周圍溫度的,作為環(huán)境溫度檢測(cè)其實(shí)算不上準(zhǔn)確,但也具備一定的參考價(jià)值。該溫度傳感器通過(guò)ADCx_IN16輸入通道連接,把輸出的電壓值轉(zhuǎn)換成數(shù)字值。內(nèi)部溫度傳感器的溫度范圍為:-40到125度。精度為±1.5℃左右。3.4音頻解碼模塊VS1053模塊是一款采用VS1053B為主芯片的高性能音頻編解碼模塊,如圖3-2,支持的音頻錄音格式:OGG/WAV,支持的音頻解碼格式MP3/WMA/OGG/WAV/FLAC/MIDI/AAC等,支持高低音調(diào)節(jié)和空間效果設(shè)置。模塊通過(guò)SPI接口與外部單片機(jī)通信,模塊自帶穩(wěn)壓芯片,外部?jī)H需提供5V/3.3V電壓即可,模塊可以直接與3.3V單片機(jī)系統(tǒng)連接,通過(guò)串電阻的方式,也可以方便的與5V單片機(jī)系統(tǒng)連接。功能十分強(qiáng)大。此次設(shè)計(jì)主要使用的就是它的音頻解碼功能,通過(guò)讀取SD卡中的數(shù)據(jù)播放音樂(lè)。圖3-2VS1053原理圖3.5無(wú)線模塊WiFi部分我采用了ESP8266模塊,如圖3-3,該模塊具有一套完整的網(wǎng)絡(luò)解決方案,能夠搭載軟件應(yīng)用??梢灾苯訌耐饨娱W存啟動(dòng),對(duì)于系統(tǒng)性能的提高具有很大的幫助。這個(gè)模塊占用較小的系統(tǒng)資源是選擇這個(gè)模塊的主要原因。有利必有弊,與此同時(shí),它在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量也很有限,不能承擔(dān)大量數(shù)據(jù)穩(wěn)定,準(zhǔn)確,快速的傳輸,所以我的設(shè)計(jì)采用這款芯片是僅僅作為開(kāi)關(guān)控制之類少量的數(shù)據(jù)收發(fā)用途。這一點(diǎn)會(huì)在后面軟件設(shè)計(jì)相關(guān)有具體描述。ESP8266可以燒寫(xiě)各種固件。無(wú)線模塊支持各種網(wǎng)絡(luò)協(xié)議,這里主要介紹的就是TCP/IP協(xié)議。網(wǎng)絡(luò)層IP提供的是一種不可靠服務(wù),只是負(fù)責(zé)把分組從源節(jié)點(diǎn)送到目的節(jié)點(diǎn)。TCP在不可靠的IP層上提供了一個(gè)可靠的運(yùn)輸層,為了提供這個(gè)可靠的服務(wù),采用了超時(shí)重傳和確認(rèn)分組等機(jī)制。[6]圖3-3ESP8266原理圖4軟件設(shè)計(jì) 4.1無(wú)線功能的實(shí)現(xiàn) 在硬件設(shè)計(jì)中提到我是采用ESP8266模塊實(shí)現(xiàn)STM32的無(wú)線通信的,但我要實(shí)現(xiàn)的功能不僅僅如此,想要實(shí)現(xiàn)實(shí)用性更高的家庭影音系統(tǒng),我希望能夠通過(guò)平時(shí)使用頻率最高的工具——手機(jī),控制開(kāi)發(fā)板。為了實(shí)現(xiàn)這一功能,我在嘗試多種方案后,選擇了當(dāng)下熱門(mén)的方案——云控制。4.1.1機(jī)智云介紹 機(jī)智云是一個(gè)硬件軟件自助開(kāi)發(fā)和物聯(lián)網(wǎng)云服務(wù)平臺(tái),為企業(yè)和個(gè)人提供機(jī)器學(xué)習(xí),大數(shù)據(jù)和消息存儲(chǔ)等功能。我使用的是機(jī)智云提供的saas云服務(wù)。如圖4-1,該平臺(tái)提供了完整的MCU與手機(jī)的通信方案。圖4-1機(jī)智云架構(gòu)4.1.2固件燒寫(xiě)設(shè)計(jì)采用的ESP8266能夠刷入機(jī)智云官方提供的Gagent固件,模塊上原本的AT指令會(huì)被覆蓋。GAgent主要的作用是數(shù)據(jù)轉(zhuǎn)發(fā),能夠?qū)崿F(xiàn)設(shè)備數(shù)據(jù)、機(jī)智云、應(yīng)用端的數(shù)據(jù)交互。目前有三種配網(wǎng)方式:airkiss(微信)、airlink、softap。4.1.3串口協(xié)議移植 1).建立工程協(xié)議的移植需要用到串口和定時(shí)器,我使用定時(shí)器中斷實(shí)驗(yàn)工程為模板進(jìn)行移植。這里附上部分代碼:voidTIM3_Int_Init(u16arr,u16psc){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure; NVIC_InitTypeDefNVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//時(shí)鐘使能 //定時(shí)器TIM3初始化 TIM_TimeBaseStructure.TIM_Period=arr;//設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler=psc;//設(shè)置用來(lái)作為T(mén)IMx時(shí)鐘頻率除數(shù)的預(yù)分頻值 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//設(shè)置時(shí)鐘分割:TDTS=Tck_tim TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上計(jì)數(shù)模式 TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);//根據(jù)指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//使能指定的TIM3中斷,允許更新中斷 //中斷優(yōu)先級(jí)NVIC設(shè)置 NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//TIM3中斷 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//先占優(yōu)先級(jí)0級(jí) NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//從優(yōu)先級(jí)3級(jí) NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道被使能 NVIC_Init(&NVIC_InitStructure);//初始化NVIC寄存器 TIM_Cmd(TIM3,ENABLE);//使能TIMx }//定時(shí)器3中斷服務(wù)程序voidTIM3_IRQHandler(void)//TIM3中斷{ if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)//檢查T(mén)IM3更新中斷發(fā)生與否 { TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除TIMx更新中斷標(biāo)志 gizTimerMs(); }}2)添加文件在機(jī)智云開(kāi)發(fā)者中心,我建立一個(gè)WiFi家庭影音系統(tǒng)的項(xiàng)目,在項(xiàng)目中添加需要的數(shù)據(jù)點(diǎn),然后選擇通用MCU方案利用機(jī)智云提供的代碼自動(dòng)生成功能生成一個(gè)代碼包并下載下來(lái)。然將后下載的通用平臺(tái)SDK下“Gizwits”文件夾復(fù)制到的工程下,在usart3.c文件中添加串口3的初始化和中斷服務(wù)函數(shù),將中斷接收的數(shù)據(jù)寫(xiě)入到gizPutData()函數(shù),在定時(shí)器3中斷服務(wù)函數(shù)中添加gizTimerMs()函數(shù),并且添加gizwits_product.h頭文件,在主函數(shù)中,先對(duì)按鍵、LED、串口以及Gizwits串口協(xié)議所需的定時(shí)器、WIF串口、數(shù)據(jù)緩沖區(qū)等一系列進(jìn)行初始化,主循環(huán)通過(guò)按鍵掃描函數(shù)KEY_Scan一直掃描當(dāng)前按鍵狀態(tài),KEY1按下使WIFI設(shè)備進(jìn)入AirLink配網(wǎng)模式,KEY_UP按下讓W(xué)IFI設(shè)備進(jìn)入復(fù)位模式(清除配對(duì)信息、斷開(kāi)連接),而UserHandl函數(shù)則讀取當(dāng)前的LED1狀態(tài),將讀出狀態(tài)值賦予回設(shè)備數(shù)據(jù)結(jié)構(gòu)體變量中,然后再通過(guò)gizwitsHandle函數(shù)上報(bào)到服務(wù)器,而DS0紅燈閃爍代表程序正在運(yùn)行。下行處理::處理云端/APP發(fā)送過(guò)來(lái)的控制事件。以控制LED燈亮滅代碼為例:int8_tgizwitsEventProcess(eventInfo_t*info,uint8_t*data,uint32_tlen){uint8_ti=0;dataPoint_t*dataPointPtr=(dataPoint_t*)data;moduleStatusInfo_t*wifiData=(moduleStatusInfo_t*)data;protocolTime_t*ptime=(protocolTime_t*)data;if((NULL==info)||(NULL==data)){return-1;}for(i=0;i<info->num;i++){switch(info->event[i]){caseEVENT_LED_ONOFF:currentDataPoint.valueLED_OnOff=dataPointPtr->valueLED_OnOff;GIZWITS_LOG("Evt:EVENT_LED_ONOFF%d\n",currentDataPoint.valueLED_OnOff);if(0x01==currentDataPoint.valueLED_OnOff){//userhandle LED1=0;//LED1亮}else{//userhandleLED1=1;//LED1滅 }break;caseWIFI_SOFTAP:break;caseWIFI_AIRLINK:break;caseWIFI_STATION:break;caseWIFI_CON_ROUTER:break;caseWIFI_DISCON_ROUTER:break;caseWIFI_CON_M2M:break;caseWIFI_DISCON_M2M:break;caseWIFI_RSSI:GIZWITS_LOG("RSSI%d\n",wifiData->rssi);break;caseTRANSPARENT_DATA:GIZWITS_LOG("TRANSPARENT_DATA\n");//userhandle,Fetchdatafrom[data],sizeis[len]break;caseWIFI_NTP:GIZWITS_LOG("WIFI_NTP:[%d-%d-%d%02d:%02d:%02d][%d]\n",ptime->year,ptime->month,ptime->day,ptime->hour,ptime->minute,ptime->second,ptime->ntp);break;default:break;}}return0;}上行處理:上報(bào)設(shè)備狀態(tài)。以獲取內(nèi)部溫度傳感器代碼為例:voiduserHandle(void){ staticu8t=0;staticshorttemp; if(wifi_sta)//WIFI設(shè)備已連接 { if(t==10)//每1s讀取一次 { if(temp_mode==0) temp=DS18B20_Get_Temp();//獲取DS18B20溫度 else temp=Get_Temprate();//獲取STM32內(nèi)部溫度傳感器溫度 t=0; } t++; }else { if(t!=0)t=0; }}3)驗(yàn)證1)下載工程下載工程到板子上,也就是IOT_LED這個(gè)project。2)配網(wǎng)首次運(yùn)行工程會(huì)要求我們先配網(wǎng),如圖4-2所示,配網(wǎng)的話需要通過(guò)DemoAPP來(lái)完成,這時(shí)需確認(rèn)設(shè)備是否處于待連接的狀態(tài),打開(kāi)串口調(diào)試助手,選擇對(duì)應(yīng)的串口,波特率配置115200,我們點(diǎn)擊板子上KEYI按鍵,讓ESP8266進(jìn)入Airlink配網(wǎng)模式,在串口調(diào)試助手上可以看到ESP8266返回?cái)?shù)據(jù)包給MCU,表示已進(jìn)入模式。通過(guò)手機(jī)DEMOAPP以及可以控制LED燈的亮滅還可以查看開(kāi)發(fā)板傳過(guò)來(lái)的溫度數(shù)據(jù)。圖4-2機(jī)智云配網(wǎng)流程4.2音樂(lè)播放的實(shí)現(xiàn)4.2.1編寫(xiě)MP3播放器工程MP3播放器實(shí)驗(yàn)工程是讀取儲(chǔ)存在SD卡中的音樂(lè)通過(guò)VS1053解碼播放。模擬電路和數(shù)字電路它們同樣是信號(hào)變化的載體,模擬電路在電路中對(duì)信號(hào)的放大和削減是通過(guò)元器件的放大特性來(lái)實(shí)現(xiàn)操作的,而數(shù)字電路是對(duì)信號(hào)的傳輸是通過(guò)開(kāi)關(guān)特性來(lái)實(shí)現(xiàn)操作的。[7]先初始化SPI及其引腳,SPI通信流程是先發(fā)送讀命令或者寫(xiě)命令,寫(xiě)命令是發(fā)送要寫(xiě)的VS1053寄存器的地址,再發(fā)送數(shù)據(jù),先高8位后低8位。讀命令是發(fā)送你要讀的寄存器地址,再去讀,讀到的值先高8位,后低8位,組合為16位。注意的是讀寫(xiě)的SPI是低速的,還有DCS和CS通信時(shí)的電平順序。初始VS1053,硬復(fù)位一下,軟復(fù)位一下。配置一下播放的寄存器,最后循環(huán)向VS1053發(fā)送32字節(jié)的音頻文件,VS1053自動(dòng)解碼音頻文件并且播放。這里貼出主要的音樂(lè)播放函數(shù)的代碼:[8] u8mp3_play_song(u8*pname){ FIL*fmp3;u16br; u8res,rval; u8*databuf; u16i=0; u8key; rval=0; fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));//申請(qǐng)內(nèi)存 databuf=(u8*)mymalloc(SRAMIN,4096); //開(kāi)辟4096字節(jié)的內(nèi)存區(qū)域 if(databuf==NULL||fmp3==NULL)rval=0XFF;//內(nèi)存申請(qǐng)失敗. if(rval==0) { VS_Restart_Play(); //重啟播放 VS_Set_All(); //設(shè)置音量等信息 VS_Reset_DecodeTime(); //復(fù)位解碼時(shí)間 res=f_typetell(pname); //得到文件后綴 if(res==0x4c)//如果是flac,加載patch { VS_Load_Patch((u16*)vs1053b_patch,VS1053B_PATCHLEN); } res=f_open(fmp3,(constTCHAR*)pname,FA_READ);//打開(kāi)文件 if(res==0)//打開(kāi)成功. { VS_SPI_SpeedHigh(); //高速 while(rval==0) { res=f_read(fmp3,databuf,4096,(UINT*)&br);//讀出4096個(gè)字節(jié) i=0; do//主播放循環(huán) { if(VS_Send_MusicData(databuf+i)==0)//給VS10XX發(fā)送音頻數(shù)據(jù) { i+=32; }else { key=KEY_Scan(0); switch(key) { caseKEY0_PRES: rval=1; //下一曲 break; caseKEY1_PRES: rval=2; //上一曲 break; } mp3_msg_show(fmp3->fsize);//顯示信息 } }while(i<4096);//循環(huán)發(fā)送4096個(gè)字節(jié) if(br!=4096||res!=0) { rval=0; break;//讀完了. } } f_close(fmp3); }elserval=0XFF;//出現(xiàn)錯(cuò)誤 } myfree(SRAMIN,databuf); myfree(SRAMIN,fmp3); returnrval; } 4.2.2移植為了實(shí)現(xiàn)音樂(lè)的播放,我移植了MP3播放器的代碼。 除了主要的函數(shù),還有所需要的驅(qū)動(dòng),頭文件的添加,例如:SD卡驅(qū)動(dòng),F(xiàn)ATFS文件系統(tǒng)等。把工程啟動(dòng)添加到gizwitsEventProcess()函數(shù)中。 剩下溫度傳感器的移植也是類似的方法。 4.2.3實(shí)現(xiàn) 下載代碼到開(kāi)發(fā)板,打開(kāi)串口調(diào)試助手,選擇對(duì)應(yīng)的串口,波特率配置為115200,開(kāi)發(fā)板通過(guò)按鍵進(jìn)行配網(wǎng)連接,配網(wǎng)完成后,手機(jī)與開(kāi)發(fā)板進(jìn)行綁定,如圖4-3所示。最后實(shí)現(xiàn)手機(jī)控制音樂(lè)播放以及溫度查詢。圖4-3機(jī)智云綁定設(shè)備流程圖5總結(jié)在此次設(shè)計(jì)中,無(wú)論在硬件選取和連接,還是軟件編寫(xiě)和移植,都是看似簡(jiǎn)單,實(shí)則需要很大耐心和耐力的。這是對(duì)自己幾年學(xué)習(xí)的總結(jié),把自己的所學(xué)都利用起來(lái),開(kāi)發(fā)自己的創(chuàng)造力,是腦力和體力并存的考驗(yàn)。我的智能家庭影音系統(tǒng)對(duì)比市面上成熟的產(chǎn)品還有很大的差距。但實(shí)現(xiàn)了基本的播放音樂(lè)功能,其他功能利用相同的方法都可以得到實(shí)現(xiàn)和完善?,F(xiàn)在人們
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼琴機(jī)構(gòu)消防管理制度
- 4000td新型干法水泥熟料生產(chǎn)線及余熱發(fā)電項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)拿地
- 企業(yè)督察部管理制度
- 軟件運(yùn)營(yíng)項(xiàng)目管理制度
- 食品公司庫(kù)房管理制度
- 運(yùn)輸公司物品管理制度
- 公司管理制度合法化
- 酒店設(shè)備管理制度規(guī)范
- 軸承公司員工管理制度
- 門(mén)窗企業(yè)工人管理制度
- 2025年超高功率大噸位電弧爐項(xiàng)目建議書(shū)
- 寵物殯葬創(chuàng)新創(chuàng)業(yè)
- 2025年第三屆天揚(yáng)杯建筑業(yè)財(cái)稅知識(shí)競(jìng)賽題庫(kù)附答案(801-900題)
- 2024年黑龍江出版集團(tuán)招聘筆試真題
- 2024年4月27日浙江省事業(yè)單位招聘考試《職業(yè)能力傾向測(cè)驗(yàn)》真題及答案
- 【初中歷史】遼宋夏金元時(shí)期經(jīng)濟(jì)的繁榮 課件 2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 2025-2030中國(guó)橄欖球行業(yè)市場(chǎng)全景調(diào)研及投資價(jià)值評(píng)估咨詢報(bào)告
- 砌體結(jié)構(gòu)檢測(cè)試題及答案
- 跌倒墜床的預(yù)防及護(hù)理
- DB32T 5061.1-2025 中小學(xué)生健康管理技術(shù)規(guī)范 第1部分:心理健康
- 2025年寧波職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)審定版
評(píng)論
0/150
提交評(píng)論