聚豐項(xiàng)目 > 基于 AB32VG1的智能音頻控制系統(tǒng)
本系統(tǒng)支持本地按鍵觸發(fā)控制音頻播放、切換音量控制,LED通過(guò)閃爍時(shí)的亮度實(shí)時(shí)反映音高低,方便易用;同時(shí)通過(guò)wifi連接本地或遠(yuǎn)程云端控制上位機(jī),云端可遠(yuǎn)程控制的音頻播放、切換、指定播放,音量控制等功能,設(shè)備實(shí)時(shí)上報(bào)狀態(tài)信息,交由云端處理,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)交互,云與物的有機(jī)結(jié)合。 上位機(jī)軟件使用python Tkinter GUI 庫(kù)完成設(shè)計(jì)實(shí)現(xiàn),可運(yùn)行在windows、linux等系統(tǒng),適配性、穩(wěn)定性、兼容性強(qiáng),且UI交互更符合人性化設(shè)計(jì)。
April8820

April8820
團(tuán)隊(duì)成員
April8820 嵌入式軟件工程師
硬件組成:
本地硬件:AB32VG1開發(fā)版+ESP-C3-32S評(píng)估板
遠(yuǎn)程控制:PC或其他終端設(shè)備
硬件介紹:
AB32VG1開發(fā)版使用到的外設(shè)有:SDIO,AUDIO,KEY,LED,PWM,UART等
ESP-C3-32S評(píng)估板UART與AB32VG1開發(fā)版UART1連接
PC:windows系統(tǒng)且已安裝python編譯環(huán)境
模塊圖片:

RT-thread使用情況:
內(nèi)核:線程、消息隊(duì)列等
驅(qū)動(dòng):uart、pwm、io、spi、sdio、audio等
組件:dfs、romfs、fatfs、finsh等
軟件包:wavplayer、optparse、multibutton等

key線程、uart線程、業(yè)務(wù)處理線程:

1.rtthread內(nèi)核類模塊初始化:rthread啟動(dòng)相關(guān)初始化
2.驅(qū)動(dòng)、組件、軟件包初始化:uart、sdio、pwm、audio、msh、dfs、fatfs、multibutton、optparse、wavplayer等
3.romfs初始化,掛載到"/"目錄,并在rom中創(chuàng)建了sd文件夾(romfs.c如下)


4.sd卡掛載文件系統(tǒng),目錄為“/sd”
5.目錄“/sd”下的wav文件檢索

6.注冊(cè)按鍵回調(diào),創(chuàng)建按鍵檢測(cè)線程

7.pwm初始化及LED的亮度控亮
將當(dāng)前播放音量作為pwm脈沖的周期,音量越高,閃爍時(shí)的LED越亮

1.按鍵循環(huán)檢測(cè)觸發(fā)對(duì)應(yīng)回調(diào)。
2.按鍵0回調(diào):?jiǎn)螕簦荷弦皇?;長(zhǎng)按:音量增加

3.按鍵1回調(diào):?jiǎn)螕簦翰シ?暫停

4.按鍵2回調(diào):?jiǎn)螕簦合乱皇?;長(zhǎng)按:音量降低

1.接收數(shù)據(jù)打包后放入接收信息隊(duì)列:
這里采用循環(huán)讀取的方式完成了串口打包,打包間隔為5ms

1.啟動(dòng)串口接收線程


2.WIFI聯(lián)網(wǎng),建立socke連接
進(jìn)入socket(這里使用UDP,可根據(jù)需求修改配置)透?jìng)鞯闹噶罴盎貜?fù):


AT設(shè)置函數(shù):
該函數(shù)將根據(jù)配置指令結(jié)構(gòu)體數(shù)組,依次在重試次數(shù)內(nèi)發(fā)送AT指令,等待模組回復(fù),并對(duì)比回復(fù)結(jié)果

AT命令交互函數(shù):
該函數(shù)實(shí)現(xiàn)了AT指令的一次交互,具體流程:串口數(shù)據(jù)緩存沖刷,發(fā)送AT指令,更劇結(jié)構(gòu)體定義控制發(fā)送換行,在超時(shí)時(shí)間內(nèi)等待模組回復(fù),最終返回指令交互結(jié)果。

3.數(shù)據(jù)解析及處理,狀態(tài)上報(bào)
循環(huán)接收socket收到的數(shù)據(jù),對(duì)符合格式的數(shù)據(jù)進(jìn)行處理;
無(wú)接收數(shù)據(jù)時(shí),獲取當(dāng)前播放狀態(tài),上報(bào)狀態(tài)信息到socket

狀態(tài)控制:
對(duì)命令碼進(jìn)行相應(yīng)動(dòng)作:上一曲、下一曲、開始/暫停、音量加、減已經(jīng)播放指定歌曲


狀態(tài)獲取:
獲取當(dāng)前播放狀態(tài)、播放音量、播放歌曲已經(jīng)播放列表


創(chuàng)建socket,接收到數(shù)據(jù)后對(duì)數(shù)據(jù)進(jìn)行解析,更新界面的信息展示


控制按鈕功能:上一曲、下一曲、開始/暫停、音量加、減
列表選擇功能:雙擊選擇歌曲后,上位機(jī)下發(fā)播放該歌曲指令


1.主演示視頻
2.補(bǔ)充視頻