「OK ,Google」結合 Google Assistant 製作 M5Stack 語音留言板

一、前言

今天要為大家介紹如何使用M5Stack Core2 結合Google Assistant,透過語音助理「OK, Google」說出要留言的語句,即可將語句傳送至M5Stack Core2做顯示。

本次實作語音留言板主要著重在軟體部分,軟體都是免費使用,硬體只使用到您的行動裝置(手機、平板或筆電)與M5Stack Core2,準備起來相當方便,現在就趕快跟我們一起開始吧!

二、架構

本次的M5Stack 語音留言板整體架構如下圖所示,使用行動裝置對Google語音助理說出(輸入)特定語句觸發IFTTT 事件,IFTTT將語音內容傳到Adafruit IOM5Stack Core2 透過MQTT 訂閱 Adafruit IO 主題以接收語音內容,最後將語音內容顯示在LCD面板上。

三、硬體

專案中使用 M5Stack Core2 作為語音留言板的通訊與顯示介面,透過內建LCD剛好可以拿來作為語音訊息顯示用,如果覺得LCD顯示面板太小也可結合點矩陣LED作為顯示介面。

四、軟體

實作語音留言板會需要透過IFTTT 以及 Adafruit IO 這兩個雲端服務來達成。

1. Adafruit IO

Adafruit IO

Adafruit IO 是一個雲端IoT 服務平台,提供數據存放、顯示等功能,支援的Protocol 有HTTP(s)、MQTT(s),本次我們將會使用 M5Stack Core2 透過MQTT Protocol與 Adafruit IO 溝通,透過MQTT訂閱主題以接收最新語音訊息。

首先到Adafruit IO官網,建立一個Feed用來存放語音訊息,名稱可自訂,這裡使用「message」為範例名稱,如下圖所示(關於Adafruit IO的操作可參考「5步驟輕鬆上手Adafruit IO平台!」)。

2. IFTTT

IFTTT 全名為「If this, then that」,顧名思義就是「如果什麼條件觸發,就去做什麼事」,IFTTT 提供非常多的服務可以串接,本次使用的服務為Google Assistant 以及Adafruit IO,透過觸發Google Assistant 服務,將語音訊息傳送至 Adafruit IO 儲存,接著 M5Stack Core2 只需要透過MQTT Protocol 訂閱主題,即可收到最新留言的語音訊息。

我們到IFTTT官網建立一個觸發事件,「If this」選擇Google Assistant:

接著選擇第三個「Say a phrase with a text ingredient」。

繼續在「What do you want to say?」欄位輸入「Update message $」,他將會把$符號後面的語句傳送到Adafruit IO;「What do you want the Assistant to say in response?」欄位輸入「OK」。

if this的部分我們已經選好了,接著在Then That的部分選擇「Adafruit」,如下圖所示。

選擇「Send data to Adafruit IO」,如下圖所示。

選擇上一步Adafruit IO 中新增的「message」Feed,存放內容新增「TextField」,如下圖所示。

完成以上全部步驟後即可看到如下圖所示的畫面。

五、程式撰寫

M5Stack Core2 上的韌體開發我們使用UI Flow M5Stack,UIFlow是圖形化的IDE,使用者可以透過拉圖塊的方式來撰寫程式。

首先下載「UIFlow-Desktop-IDE」、「M5Burner」,如下圖所示。

開啟M5Burner,畫面如下圖所示。

選擇下載「UIFLOW(CORE2)」,接上電腦,選擇COM(每個人的可能不一樣),按下「燒錄」:

輸入你的Wi-Fi 帳號密碼:

燒錄完成時,如下圖所示。

接著在 M5Stack Core2 上選擇「UIFlow」,連接方式選擇「USB」,選好後如下圖所示畫面:

IDE選擇「COM3」,裝置選擇Core2 圖示。

UI 的部分我們會使用到兩個Label,從左方拉兩個label到LCD上,依照喜好調整顏色、位置、字體大小,如下圖所示。

設定完UI 就可以開始寫程式了,程式非常的少,只要使用MQTT 功能訂閱Adafruit IO message主題即可收到語音文字,再將他顯示到「msg」label即可。

程式碼如下:

請自行修改MQTT user、password以及訂閱主題參數內容。

六、執行成果

完成上述設定步驟後,並執行程式碼,我們就可以透過Google 語音助理將想要的語句傳送到M5Stack 上了,試著說出「OK Google」>>「update message Hello M5Stack」,他將會回應「OK」,並將「Hello M5Stack」語句更新到LCD上顯示。

七、結語

只要依照以上步驟執行就可以做出一個語音留言板,理解了這個的運作模式後,想要做到語音控制的功能就會相對容易許多, IFTTT也有提供相對應的服務,透過這些服務就能夠使用語音控制任何裝置。想像一下睡覺前還要先去關燈的困擾,只要透過語音控制功能即可解決,是不是就突然有動力做一個這樣的裝置了呢?本次的分享就到這邊,喜歡我們文章的夥伴們,別忘了多多支持與分享喔!