|

【ESP32專欄】ESP32藍芽連線 — 即時通訊與語音指令

   
作者:尤濬哲

藍芽與 WiFi 都是用來通訊的,藍芽通常用於近端點對點通訊,所謂的點對點就像是藍芽無線耳機與手機連接,用來播放音樂,又如藍芽滑鼠鍵盤功能是輸入文字,它只是一種序列通訊,功能較為簡單,而 WiFi 則常用來連入網際網路,相比之下 WiFi 需要比較複雜的設定,而藍芽只需配對就能取用服務。

與藍芽同位階的應該算是紅外線,不過紅外線有方向性,必須對準裝置才能傳輸,其速度慢不說,距離大概不能超過 10 公尺,而藍芽無方向性,因此不用對準,且傳輸距離遠,速度也比紅外線快很多。

本章先簡介 ESP32 的藍牙通訊設定與使用,由於它是藍芽內建的,所以不用接線或設定 AT COMMAND,也不用宣告 TXRX 相關的通訊協定,值得一提的是,而且它屬於低功率藍芽(BLE:Bluetooth Low Energy),耗電量較少外,傳輸距離理論可達 300 公尺遠,實際測試 30 公尺也沒問題,相對常見搭配 UNO 使用的 HC-05 屬於藍芽 2.1,理論傳輸距離只有 10 公尺。

藍芽單向傳輸

這邊會說明如何使用 ESP32 藍芽將資訊傳遞給藍芽裝置(手機)進行接收,另由於 bluetooth 函式庫與 iOS 手機不相容的原因,接下來都將使用 Android 裝置進行解說。

ESP32 藍芽的開啟僅需幾個步驟:

  1. 使用藍芽函式庫:#include <BluetoothSerial.h>
  2. 宣告藍芽序列通訊物件:BluetoothSerial BT;//BT 為藍芽通訊物件
  3. 在 Setup 中開啟藍芽:BT.begin("BTName");// BTName 為藍芽廣播名稱
  4. 當要傳輸資訊時:BT.print("要傳輸的文字");//println 則是換行

我們先來做一個簡單的測試,就是每秒傳輸一次「Hello World!」到手機中,程式如下:

#include <BluetoothSerial.h>

BluetoothSerial BT;//宣告藍芽物件,名稱為BT

void setup() {

Serial.begin(115200);

BT.begin("Eric1030");//請改名例如英文+生日,以免與其他同學名稱重複

}

void loop() {

BT.println("Hello World!");

delay(1000);

}

完成程式上傳後,我們來處理手機的部份,請開啟 Android 手機的 App store,並搜尋 Arduino Bluetooth Control,其圖示如下,APP Store 有很多類似的 APP,功能也都差不多,但是我們選定的這個 APP 有提供語音辨識的功能;若無法找到該 APP,可能是版本不相容,但可以從我的雲端空間下載備份 APK 檔案。

Arduino Bluetooth Control(圖片來源:Google Play

手機安裝好 APP 後,啟動藍芽連線設定,如果未在「可用裝置」中出現,請點選「不常用類型裝置」。

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

尤濬哲

Author: 尤濬哲

身兼助理教授/專欄作家/知名部落客,以及點點滴滴科技研發總監等身份,專長包括人工智慧、多媒體互動(Unity)、智慧互動裝置(APP、Arduino)、虛擬實境與擴增實境互動、IoT 實做開發。 學歷:中山大學資訊管理研究所 博士

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *