SU-03T發送訊號給Micro:bit

這兒我們要自製一個可以由語音觸發並送訊號給Micro:bit的韌體,並說明Micro:bit端如何接收到來自於SU-03T的訊號,首先繼續上篇,因為要跟別的板子傳訊,它的設定是使用串口通訊,也就是我要常說的UART傳訊,SU-03T預設有二組UART,可設定第二組進行串口通訊,GPIO_B6是RX,GPIO_B7是TX,方法是在PIN表上選GPIO_B6為UART1_RX

會發現GPIO_B7跟著連動,波特率可以自己選,重點是要記得~接著往下可以設定喚醒詞(四到六個字最好),這個平台採用AI語音功能,在編譯韌體時會自己產生語音,用不著您自己錄,當然您想要也行!喚醒詞和它的回應都可以設定好幾個,所以不一定要叫做什麼卡好~

接下來看一下重頭戲「命令詞自定義區」這兒用幾個頁籤隔開,先看「基礎信息」,一開始就有四個預設的範例,就是常見的開關燈亮暗調整,看一下欄位,行為欄是自行命名用於自己分類的,觸發方式這一欄設定這一條是由什麼「事件 」啟動,以TurnOn這一行來看,設定「命令詞@」觸發,命令詞「打开台灯|请开灯|开灯|打开灯|我回来了」代表有五個詞可以引發反應(用|隔開),回復語那欄設定當被觸發時,晶片會說什麼話

新增一個條目→按「添加一條」,行為自己取個名稱comm1,假設是要傳給Micro:bit讓小車前進的命令,命令詞我寫「前進」回復語「小車前進」,代表這條目會因為語音「前進」被觸發,而當下它會說「小車前進」

設定串口傳出的命令→點選上方「控制詳情」頁籤,會看到自己新增的那條,在它的動作那欄按「添加控制」,設定「端口輸出」

選了端口輸出後,設定控制類型為UART1_TX,發送→參數41  0A,這些是十六進位碼41和0A之間要有空白,你可以去查一下ascii碼對照,就會發現41是「A」而0A是換行符號

按下確定完成這個條目,往下設定AI語音,可以選一個自己喜歡聽的

設定上電時是否語音講話及節電秒數,設定哪句話要求它退出,一樣可設多句

好了!按右上的保存及發布版本,為這個版本取個名稱,我都使用快速測試版本讓平台編譯

等個幾分鐘,編譯完成就可以下載韌體了

解壓下載的韌體會看到有一個 xxx_update.bin的檔,這個檔案就是可以由USB2TTL串口上傳到SU-03T的檔案,接好線後,插到電腦的USB,確定一下有驅動

檢查USB2TTL是否有正常

打開串口燒錄程式

串口燒錄程式:help.aimachip.com/attach_files/offline_su03t/370   ,下載解壓後執行目錄內的UniOneUpdateTool.exe,這時它應該會抓到電腦所有的COM PORT,選擇要燒錄的韌體檔(最好都放在某一碟的主目錄下),按燒錄,這時不會直接燒錄而會出現等待…,需要插拔一次USB2TTL上的5V接線,就會開始燒錄了

燒錄完成後很容易測試的,把MIC頭和小喇叭接上,幫SU-03T上電馬上分曉!

將韌體燒錄到SU-03T

這兒我錄了一段影片來說明這個過程,包含接線及電腦端燒錄程式的使用

上電測試

燒錄好韌體之後,當然就是要測試一下會不會運作

SU-03T傳送資料給Micro:bit

邏輯整理

這兒整理一下目前在做的事,在設定這個韌體時,我們加了一條可以串口輸出的命令,而這條命令的觸發方式→語音說「前進」,然後SU-03T要回話「小車前進」並且透過Uart發送「41 0A」(十六位元碼)。

所以此時SU-03T是OUTPUT端而對Micro:bit來說是INPUT,如左圖把線接好(Micro:bit找個io擴板比較方便),SU-03T的B6接Micro:bit的p0;B7接P1,我接了一顆LED在P2,程式如下:

Micro:bit接收來自串口的資料

因為我們在韌體中設定傳「41 0A」,這串十六進位碼進到Micro:bit的串口時會被轉換成ASCII,也就是A加上換行符號,有一點要注意的是BAUD要設定一致才能通,而SU-03T最好供給它5V比較穩