ADVERTISEMENT
首先,我們在App Inventor 2程式模塊編輯畫面之中,開立一個新專案: 『BT_Talk_Speech_Light』。
▲開新專案-BT_Talk_Speech_Light
ADVERTISEMENT
拉出左邊紅框的『ListPictker』(選藍芽裝置用) =>即拉出選擇藍芽通訊模組的元件。
ADVERTISEMENT
▲拉出選擇藍芽通訊模組的元件
拉出左邊紅框顯示用的『Label』物件。
ADVERTISEMENT
▲語音顯示文字
拉出左邊紅框顯示啟動語音辨視鈕『Button』物件。
ADVERTISEMENT
▲啟動語音辨視鈕
拉出左邊紅框顯示的語音辨視元件『Speech Reconizer』。
▲拉出語音辨視元件
拉出左邊紅框顯示的藍芽傳輸元件『BlueTooth Client』。
▲拉出藍芽傳輸元件
編修程式,請點選右邊的紅框區『Blocks』按鈕。
▲切換程式設計模式
在App Inventor 2的程式編輯區,建立初始化變數,點選左圖紅框的『Variables』。
▲初始化變數
為了建全的系統,並進行系統初始化,在紅框的『Screen1.initialize』建立敘述。
▲系統初始化
在『ListPicker1.BeforePicking』建立敘述。
▲設定選取藍芽之系統已配對知藍芽內容
在點選藍芽裝置『ListPicker1』下,撰寫『判斷選到藍芽裝置後連接選取藍芽裝置』在『ListPicker1.AfterPicking』建立敘述。
▲選取藍芽後-啟動藍芽傳輸功能
在按下『Button1』下,撰寫『啟動語音辨視按紐程式』,在『Button1.Click』建立敘述。
▲啟動語音辨視按鈕程式
先行建立『Work0程序』、『Work9程序』,主要傳輸給Arduino開發板端所有燈全滅與全亮的命令碼。
▲全燈熄滅與亮起程式
另先行建立『Work1程序~Work8』程序,主要傳輸給Arduino開發板端亮一個燈到八個燈的命令碼。
▲點1_8燈亮起來程式
在語音辨識完成後,根據回傳的字句,判斷其含那一個亮燈的資訊,則傳送那一個命令碼。
▲根據語音辨識傳送命令碼程式
如表所示,我們在語音辨識完成後,根據回傳的字句,判斷其含那一個亮燈的資訊,則傳送那一個命令碼。
表格 1 燈號命令與相應程序對照表
呼叫程序 |
命令碼 |
工作內容 |
Work0 |
0 |
所有的燈全滅 |
Work9 |
9 |
所有的燈全亮 |
Work1 |
1 |
亮第一個燈 |
Work2 |
2 |
亮第二個燈 |
Work3 |
3 |
亮第三個燈 |
Work4 |
4 |
亮第四個燈 |
Work5 |
5 |
亮第五個燈 |
Work6 |
6 |
亮第六個燈 |
Work7 |
7 |
亮第七個燈 |
Work8 |
8 |
亮第八個燈 |
Arduino亮燈
由於此次使用多個Leds,所以我們使用『fayalab nugget 8 LED module』,仍只需要一塊fayaduino Uno開發板、USB下載線、8 LED module (產品網址:http://www.fayalab.com/kit/801-nu0004nu )。
如圖所示,這個實驗我們需要用到的實驗硬體1.fayalab UNO、 2.USB 下載線、3.fayalab nugget 8 LED module:
▲ fayaduino Uno
▲USB 下載線
▲fayalab nugget 8 LED module
如何連接『fayalab nugget 8 LED module』,請參考接腳表,進行電路組立。
表 用手機語音辨視驅動燈號接腳表
fayalab nugget 8 LED module |
Aruino 開發板接腳 |
||
D0 |
Arduino Uno digital Pin 2 |
||
D1 |
Arduino Uno digital Pin 3 |
||
D2 |
Arduino Uno digital Pin 4 |
||
D3 |
Arduino Uno digital Pin 5 |
||
D4 |
Arduino Uno digital Pin 6 |
||
D5 |
Arduino Uno digital Pin 7 |
||
D6 |
Arduino Uno digital Pin 8 |
||
D7 |
Arduino Uno digital Pin 9 |
||
|
|||
藍芽模組(HC-05) |
Arduino 開發板 |
||
VCC |
Arduino Uno +5V |
||
GND |
Arduino Uno GND |
||
TX |
Arduino Uno digitalPin 11 |
||
RX |
Arduino Uno digitalPin 12 |
||
|
我們遵照前面所述,將fayaduino Uno開發板的驅動程式安裝好之後,並完成電路的連接,完成後如圖所示之用手機語音辨視驅動燈號接腳實際組裝圖。
▲用手機語音辨視驅動燈號接腳實際組裝圖
我們遵照上述,將fayaduino Uno開發板的驅動程式安裝好之後,我們打開Arduino 開發板的開發工具:Sketch IDE整合開發軟體,撰寫一段程式,如表所示之8 LED module測試程式一,並將之編譯後上傳到Arduino開發板。
表 用手機語音辨視驅動燈號測試程式一
用手機語音辨視驅動燈號測試程式一(BT_Talk_Speech_Light) |
#include <SoftwareSerial.h> // 引用程式庫 #define LedPinD0 2 #define LedPinD1 3 #define LedPinD2 4 #define LedPinD3 5 #define LedPinD4 6 #define LedPinD5 7 #define LedPinD6 8 #define LedPinD7 9 #define ascStart 48 char getdata ; // 儲存接收資料的變數
// 定義連接藍牙模組的序列埠 SoftwareSerial BT(11, 12); // 接收腳, 傳送腳
void setup() {
pinMode(LedPinD0 , OUTPUT) ; // set Button pin as input data pinMode(LedPinD1 , OUTPUT) ; // set Button pin as input data pinMode(LedPinD2 , OUTPUT) ; // set Button pin as input data pinMode(LedPinD3 , OUTPUT) ; // set Button pin as input data pinMode(LedPinD4 , OUTPUT) ; // set Button pin as input data pinMode(LedPinD5 , OUTPUT) ; // set Button pin as input data pinMode(LedPinD6 , OUTPUT) ; // set Button pin as input data pinMode(LedPinD7 , OUTPUT) ; // set Button pin as input data
Serial.begin(9600); // 與電腦序列埠連線 Serial.println("BT is ready!");
// 設定藍牙模組的連線速率 // 如果是HC-05,請改成38400 BT.begin(9600); allLightOn() ; delay(1000); allLightOff() ; }
void loop() {
getdata = '@'; // 若收到藍牙模組的資料,則送到「序列埠監控視窗」 if (BT.available()) { getdata = BT.read(); Serial.print(getdata, HEX); }
if (getdata == '0') { allLightOff() ; }
if (getdata == '9') { allLightOn() ; }
if (getdata == '1') { digitalWrite(LedPinD0, HIGH) ; }
if (getdata == '2') { digitalWrite(LedPinD1, HIGH) ; }
if (getdata == '3') { digitalWrite(LedPinD2, HIGH) ; }
if (getdata == '4') { digitalWrite(LedPinD3, HIGH) ; }
if (getdata == '5') { digitalWrite(LedPinD4, HIGH) ; }
if (getdata == '6') { digitalWrite(LedPinD5, HIGH) ; }
if (getdata == '7') { digitalWrite(LedPinD6, HIGH) ; }
if (getdata == '8') { digitalWrite(LedPinD7, HIGH) ; }
if (getdata == 'T') { delay(1000); }
}
void allLightOn() { digitalWrite(LedPinD0, HIGH) ; digitalWrite(LedPinD1, HIGH) ; digitalWrite(LedPinD2, HIGH) ; digitalWrite(LedPinD3, HIGH) ; digitalWrite(LedPinD4, HIGH) ; digitalWrite(LedPinD5, HIGH) ; digitalWrite(LedPinD6, HIGH) ; digitalWrite(LedPinD7, HIGH) ; }
void allLightOff() { digitalWrite(LedPinD0, LOW) ; digitalWrite(LedPinD1, LOW) ; digitalWrite(LedPinD2, LOW) ; digitalWrite(LedPinD3, LOW) ; digitalWrite(LedPinD4, LOW) ; digitalWrite(LedPinD5, LOW) ; digitalWrite(LedPinD6, LOW) ; digitalWrite(LedPinD7, LOW) ; }
|
範例原始碼網址:https://github.com/brucetsao/Arduino_FayaNUGGET
網友可以看到本次實驗- 用手機語音辨視驅動燈號測試程式一結果畫面,如圖所示,我們可以使用手機、平板,用語音辨視來驅動燈號。
▲用手機語音辨視驅動燈號測試程式一結果畫面
整合手機測試
如何在手機或平板上執行App Inventor 2程式,如圖所示,我們直接顯示測試程式的主畫面。
▲使用手機進行點燈主畫面
先選擇『SelectBT』來選擇藍芽裝置。
▲點選選取藍芽鈕
會出現手機、平板中已經配對好的藍芽裝置,我們可以選擇手機、平板中已經配對好
的藍芽裝置。
▲選取藍芽裝置
如果藍芽配對成功,正確連接您選擇的藍芽裝置後,則會進入通訊模式的主畫面,這時後我們參考圖示紅框處,按下『Speak』按紐,驅動語音辨視鈕。
▲按下語音輸入鈕
如圖所示,系統會驅動手機、平板的語音辨視功能,使用者此時就可以輸入『100』的語音。
▲輸入語音畫面
如圖所示,如果語音輸入正確,系統會從手機、平板的語音辨視功能回傳語音轉文字的內容到系統的Label物件顯示出『100』的文字,並將『100』的文字透過藍芽傳輸到Arduino開發板設計的一端。
▲取得語音
如圖所示,我們可以另外輸入『345』的語音,如果語音輸入正確,系統會從手機、平板的語音辨視功能回傳語音轉文字的內容到系統的Label物件顯示出『100』的文字,並將『100』的文字透過藍芽傳輸到Arduino開發板設計的一端,網友可以參考用手機語音辨視驅動燈號測試程式一結果畫面的圖示,我們就驅動第3、4、5的燈號。
▲取得語音二
作者介紹曹永忠 (Yung-Chung Tsao):目前為自由作家、台灣資訊傳播學會秘書長,專研於軟體工程、軟體開發與設計、物件導向程式設計,商品攝影及人像攝影。長期投入資訊系統設計與開發、企業應用系統開發、軟體工程、新產品開發管理、商品及人像攝影等領域,並持續發表作品及相關專業著作。 Email: ,Line ID:dr.brucetsao Arduino部落格: 範例原始碼網址:https://github.com/brucetsao/Arduino_FayaNUGGET 臉書社群(Arduino.Taiwan):https://www.facebook.com/groups/Arduino.Taiwan/ Arduino活動官網: Youtube:https://www.youtube.com/channel/UCcYG2yY_u0m1aotcA4hrRgQ |
ADVERTISEMENT