ESP32, IOT物聯網

【IOT物聯網應用-ESP32】第十九篇:如何通過 ESP32和Android手機的藍牙進行數據通訊

實驗說明:

米羅會分成兩篇分別介紹如何使用ESP32的藍牙與手機藍牙進行簡單的相互數據傳輸。本篇將示範ESP32與Android手機的藍牙2.0進行資料傳送與接收,在下一篇將會介紹ESP32與Iphone手機的BLE藍牙進行資料傳送與接收。

 

材料:

  • ESP32-E DevKit
  • USB 傳輸線
  • Android手機或平板

▼ 購買IoT物聯網學習教材:

ESP32 物聯網應用學習套件 ESP32CAM IoT物聯網學習教材 適用Arduino

 

相關知識:

藍牙Bluetooth無線通訊傳輸,通常用於近端點對點通訊,為了確保藍牙裝置間的互通性,藍牙技術聯盟(SIG)定義了許多Profile,稱為藍牙規範(Bluetooth profile),例如藍牙立體聲音訊傳輸規範(A2DP)、人機介面規範 (HID)、序列埠規範 (SPP)、藍牙耳機規範(HSP)、免手持裝置規範 (HFP)等等…。本篇將會使用序列埠規範 (Serial Port Profile – SPP)與手機的藍牙進行數據傳輸。

若需要了解更詳細的藍牙規範細節,可參考SIG網站:https://www.bluetooth.com/specifications/specs/

 

▼ESP32集成了低功耗藍牙(BLE)和傳統藍牙兩種藍牙功能。在數據傳輸有兩種模式:主模式和從模式。

Master mode (主模式):

在這種模式下,工作在主設備中完成,它可以與從設備連線。我們可以搜索並選擇附近的從設備進行連線。當一個設備在主模式下發起連線請求時,它需要其他藍牙設備的信息,包括它們的MAC Address和Passkey 。配對完成後,就可以直接連線。

Slave mode(從機模式)

從模式的藍牙模組只能接受來自主模式的連線請求,而不能主動發起連線請求。與主設備連線後,它可以向主設備發送數據或從主機設備接收數據。

藍牙設備之間可以進行數據交互傳送,一個是主模式,另一個則是從模式。在進行數據交互傳送時,主模式下的藍牙設備會搜索並選擇附近的藍牙設備進行連接,在藍牙建立連接後就可以交互進行傳送與接收資料。手機與ESP32交互傳送數據時,通常手機為主模式,ESP32 則是從模式。

 

程式:

#include <BluetoothSerial.h> 
BluetoothSerial SerialBT; 

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32_BT"); //藍牙顯示名稱,可自行更改,需避免與他人重複命名
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.println(SerialBT.readString());
  }
  delay(50);
}

 

程式說明:

將範例程式編譯並上傳程式碼到ESP32開發板後,接著我們開始設定手機端的部分。

▼首先,請至Android App Store 下載並安裝『Arduino Bluetooth Control』

 

▼手機安裝好APP後,請先開啟Android手機『設定』並打開藍牙,點擊“搜索”附近的藍牙設備,選擇ESP32_BT進行配對連線。

 

▼接著,開啟『Arduino Bluetooth Control』APP,選擇ESP32_BT進行連線。

 

▼進入APP之後,請點擊Terminal序列通訊功能,接著就會看到上下兩個視窗,分別是用來『接收資料的顯示視窗』與『發送資料的顯示視窗』

 

▼接下來在ESP32的序列視窗發送訊息後,我們即可在手機視窗內接收到ESP32傳來的文字訊息。注意鮑率需要設定在115200。

 

▼一樣在手機端的序列通訊功能下方的資料發送欄位,輸入文字後並按鍵盤處的完成鍵送出資料,我們即可在ESP32的序列視窗內接收到手機傳來的文字訊息。

 

 

 

 

相關文章