加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

STM32驅(qū)動語音模塊播報實時時間

2022/05/12
950
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大家好,我是程序員小哈。

前幾天有個球友在用一個語音模塊,遇到了點困難,為了方便調(diào)試,小哈哥也買了兩個一起玩了一下。

 

今天小哈哥就來簡單分享一下這個模塊。

模塊概述

  • DY-SV17F 語音模塊,包括IO 分段觸發(fā),UART 串口控制, ONE_line 單總線控制,標(biāo)準(zhǔn) MP3 等 7 種工作模式;板載 5W D 類功放,可直接驅(qū)動 4Ω, 3~5W 喇叭;支持 MP3,WAV 解碼格式;板載4MBte flash 存儲,可通過 USB 數(shù)據(jù)線連接模塊上的MicroUSB接口,電腦可以將模塊識別為一個U盤,打開此存儲更新音頻文件即可。

工作模式配置

 

硬件連接

 

原理圖

為了測試方便,各位也可以畫一個PCB板,這樣就可以避免使用一堆杜邦線進(jìn)行連接,也可以避免調(diào)試過程中遇到一些不必要的問題,底板的原理圖可以參考下圖所示。

 

 

因為我們要選擇串口模式,所以實際使用過程中,CON1、CON2接地,CON3接高電平

CON3/BUSY 引腳,上電 30mS 內(nèi)作為模式配置引腳 3,30mS 后作為 BUSY 信號輸出,播放曲目時,CON3輸出高電平(3.3V),播放結(jié)束輸出低電平(0V)。

注意:上述CON3引腳狀態(tài),我實際測試結(jié)果與手冊中描述相反,此處自己使用時進(jìn)行一下確認(rèn)。

資源文件

要想實現(xiàn)語音播放當(dāng)前時間,我們首先要找到或者制作一些基本語音的音頻文件,如果想制作音頻文件素材,可以用下面網(wǎng)址制作:

https://www.coder.work/text2audio

準(zhǔn)備好組合播放的音頻素材文件,將其放置在 ZH 文件夾下,曲目名要求固定兩個字符,為了控制方便,我們選擇以兩位數(shù)字的形式命名文件名,本次實例的音頻文件素材如下:

 

 

素材的語音內(nèi)容具體如下:

文件名 語音
00.mp3
01.mp3
02.mp3
03.mp3
04.mp3
05.mp3
06.mp3
07.mp3
08.mp3
09.mp3
10.mp3
11.mp3 現(xiàn)在時間是
12.mp3
13.mp3
14.mp3

協(xié)議

串口通信波特率為9600,數(shù)據(jù)位:8,停止位1位,校驗位N。

示例 含義 備注
AA 01 00 AB 查詢播放狀態(tài) AA 01 01 播放狀態(tài) 校驗
AA 02 00 AC 從頭開始播放當(dāng)前曲目  
AA 03 00 AD 暫停 無返回
AA 04 00 AE 停止 無返回
AA 05 00 AF 上一曲 無返回
AA 06 00 B0 下一曲 無返回
AA 07 02 曲目高 曲目低 SM 指定曲目 無返回,曲目序號由存儲順序決定。
AA 0C 00 B6 查詢總曲目 返回:AA 0C 02 總曲目高 總曲目低 校驗
AA 0D 00 B7 查詢當(dāng)前曲目 AA 0D 02 00 08 C1
AA 10 00 BA 結(jié)束播放  
AA 13 01 VOL SM 音量設(shè)置 無返回,例如:AA 13 01 14 D2 設(shè)置音量為 20 級
AA 14 00 BE 音量加 無返回
AA 15 00 BF 音量減 無返回
AA 1B 長度 曲目 1 名稱高字節(jié),曲目名稱 1 低字節(jié)..... 曲目 n 名稱高字節(jié), 曲目 n 名稱低字節(jié) SM 組合播放 無返回,例如:AA 1B 04 30 31 30 32 8C,文件名為“01”、“02”歌曲組合播放。 文件名播放方式,不受拷貝順序限制。
AA 1C 00 C6 結(jié)束組合播報 無返回
AA 25 00 CF 開啟播放時間發(fā)送 返回:AA 25 03 時 分 秒 SM
AA 25 03 01 02 03 D8    
AA 26 00 D0 關(guān)閉播報時間發(fā)送  

查詢模塊當(dāng)前播放狀態(tài)的串口指令,調(diào)試過程如截圖所示:

 

模塊的串口協(xié)議有很多,因為要播放實時時間,這個是一個變化的量,使用模塊自帶的組合播放功能,可以方便的實現(xiàn)實時時間的播報。

 AA 1B 長度 曲目1名稱高字節(jié) 曲目名稱1低字節(jié) ..... 曲目n名稱高字節(jié) 曲目n名稱低字節(jié) SM  

例如:串口發(fā)送 AA 1B 04 30 31 30 32 8C,模塊會將文件名為“01.mp3”、“02.mp3”的歌曲進(jìn)行組合播放。

結(jié)果展示

要進(jìn)行組合播放,無非將要組合的文件名進(jìn)行拼接,將這些內(nèi)容按照組合播放的通信協(xié)議,組成一個字符數(shù)組進(jìn)行發(fā)送即可,代碼比較簡單,大家有需要的,直接去公眾號后臺回復(fù):語音播報實時時間 獲取代碼查看吧。

效果趕不上專業(yè)的TTS模塊,此方案勝在性價比高。

今天的文章到這里就結(jié)束了,希望對你有幫助,我們下期見。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

公眾號『嵌入式從0到1』,號主:程序員小哈,是一個軟硬件全棧開發(fā)工程師(12年工作經(jīng)驗的老司機),電子發(fā)燒友論壇鴻蒙版塊版主,公眾號內(nèi)容專注于嵌入式學(xué)習(xí)。堅持原創(chuàng),寫有圖、有視頻的保姆級教程文章,篇篇有干貨。做一個講清楚,說明白,大家學(xué)得會的交流平臺。