聚豐項目 > 基于 AB32VG1的智能音頻控制系統
本系統支持本地按鍵觸發控制音頻播放、切換音量控制,LED通過閃爍時的亮度實時反映音高低,方便易用;同時通過wifi連接本地或遠程云端控制上位機,云端可遠程控制的音頻播放、切換、指定播放,音量控制等功能,設備實時上報狀態信息,交由云端處理,實現數據的實時交互,云與物的有機結合。 上位機軟件使用python Tkinter GUI 庫完成設計實現,可運行在windows、linux等系統,適配性、穩定性、兼容性強,且UI交互更符合人性化設計。
April8820
分享April8820
團隊成員
April8820 嵌入式軟件工程師
硬件組成:
本地硬件:AB32VG1開發版+ESP-C3-32S評估板
遠程控制:PC或其他終端設備
硬件介紹:
AB32VG1開發版使用到的外設有:SDIO,AUDIO,KEY,LED,PWM,UART等
ESP-C3-32S評估板UART與AB32VG1開發版UART1連接
PC:windows系統且已安裝python編譯環境
模塊圖片:
RT-thread使用情況:
內核:線程、消息隊列等
驅動:uart、pwm、io、spi、sdio、audio等
組件:dfs、romfs、fatfs、finsh等
軟件包:wavplayer、optparse、multibutton等
key線程、uart線程、業務處理線程:
1.rtthread內核類模塊初始化:rthread啟動相關初始化
2.驅動、組件、軟件包初始化:uart、sdio、pwm、audio、msh、dfs、fatfs、multibutton、optparse、wavplayer等
3.romfs初始化,掛載到"/"目錄,并在rom中創建了sd文件夾(romfs.c如下)
4.sd卡掛載文件系統,目錄為“/sd”
5.目錄“/sd”下的wav文件檢索
6.注冊按鍵回調,創建按鍵檢測線程
7.pwm初始化及LED的亮度控亮
將當前播放音量作為pwm脈沖的周期,音量越高,閃爍時的LED越亮
1.按鍵循環檢測觸發對應回調。
2.按鍵0回調:單擊:上一首 ;長按:音量增加
3.按鍵1回調:單擊:播放/暫停
4.按鍵2回調:單擊:下一首 ;長按:音量降低
1.接收數據打包后放入接收信息隊列:
這里采用循環讀取的方式完成了串口打包,打包間隔為5ms
1.啟動串口接收線程
2.WIFI聯網,建立socke連接
進入socket(這里使用UDP,可根據需求修改配置)透傳的指令及回復:
AT設置函數:
該函數將根據配置指令結構體數組,依次在重試次數內發送AT指令,等待模組回復,并對比回復結果
AT命令交互函數:
該函數實現了AT指令的一次交互,具體流程:串口數據緩存沖刷,發送AT指令,更劇結構體定義控制發送換行,在超時時間內等待模組回復,最終返回指令交互結果。
3.數據解析及處理,狀態上報
循環接收socket收到的數據,對符合格式的數據進行處理;
無接收數據時,獲取當前播放狀態,上報狀態信息到socket
狀態控制:
對命令碼進行相應動作:上一曲、下一曲、開始/暫停、音量加、減已經播放指定歌曲
狀態獲取:
獲取當前播放狀態、播放音量、播放歌曲已經播放列表
創建socket,接收到數據后對數據進行解析,更新界面的信息展示
控制按鈕功能:上一曲、下一曲、開始/暫停、音量加、減
列表選擇功能:雙擊選擇歌曲后,上位機下發播放該歌曲指令
1.主演示視頻
2.補充視頻