透過藍牙經典版傳輸資料



本章將介紹如何使用 ESP32 透過藍牙傳輸資料。Arduino 擁有一個專用於 ESP32 的 BluetoothSerial 庫,它使透過藍牙傳輸資料變得像傳輸資料到序列埠監視器一樣簡單。我們將瞭解如何圍繞 ESP32 建立藍牙欄位,將我們的智慧手機連線到該欄位,並與 ESP32 通訊。

程式碼演練

我們將使用本章中的示例程式碼。您可以在 File -> Examples -> BluetoothSerial -> SerialToSerialBT 中找到它。它也可以在 GitHub 上找到。

我們從包含 BluetoothSerial 庫開始。

#include <BluetoothSerial.h>

如果您沒有使用過 ESP32,那麼接下來的幾行程式碼有點無關緊要。它們檢查藍牙配置是否已啟用,如果未啟用則會發出警告。藍牙配置在您的 ESP32 上預設啟用,因此,如果您僅將 ESP32 與 Arduino IDE 配合使用,則可以將這些行註釋掉。錯誤訊息中提到的 make menuconfig 實際上是透過 ESP-IDF 訪問的,而不是透過 Arduino IDE 訪問的。所以,底線是,不要擔心這些行。

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

接下來,我們定義 BluetoothSerial 物件。

BluetoothSerial SerialBT;

在 setup 中,我們將使用 **SerialBT.begin()** 函式開始圍繞 ESP32 的藍牙欄位。此函式接受一個引數,即藍牙裝置的名稱(在本例中為 ESP32)。這是您在手機上掃描藍牙網路時將顯示的名稱。

void setup() {
   Serial.begin(115200);
   SerialBT.begin("ESP32test"); //Bluetooth device name
   Serial.println("The device started, now you can pair it with bluetooth!");
}

現在,迴圈在這裡非常簡單。如果您在 Serial 上有任何傳入的文字(即您在序列埠監視器上輸入的文字),請將其透過 SerialBT 傳送。如果您從 SerialBT 收到任何文字,請透過 Serial 傳送它,或者換句話說,在序列埠監視器上列印它。

void loop() {
   if (Serial.available()) {
      SerialBT.write(Serial.read());
   }
   if (SerialBT.available()) {
      Serial.write(SerialBT.read());
   }
   delay(20);
}

測試程式碼

要測試此程式碼,建議您在智慧手機上下載一個序列埠藍牙終端應用程式(以下所示或任何等效應用程式)。它將幫助您與 ESP32 配對,顯示從 ESP32 收到的訊息,並幫助您向 ESP32 傳送訊息。

Bluetooth Serial Terminal

要在 Android 裝置上安裝它,請點選 此處。iOS 的等效應用程式可以是 BluTerm

您可以在下面找到使用序列埠藍牙終端應用程式執行的測試的螢幕截圖。我已將 ESP32 的藍牙名稱更改為“ESP32test345”,因為我已經將我的手機與另一個藍牙名稱為“ESP32test”的 ESP32 配對。配對完成後,可以在序列埠藍牙終端應用程式中新增該裝置,然後您可以像在訊息應用程式中與其他使用者通訊一樣與您的裝置通訊。

Pairing and Communication

配對和通訊

Arduino Serial Terminal

Arduino 序列埠終端的對應檢視

恭喜。您已使用藍牙與 ESP32 通訊。繼續探索 BluetoothSerial 庫附帶的其他示例。

注意 - 您可能會想要在 ESP32 上同時使用 WiFi 和藍牙。不建議這樣做。雖然 ESP32 具有用於 WiFi 和藍牙的獨立堆疊,但它們共享一個公共無線電天線。因此,當兩個堆疊都試圖訪問天線時,模組的行為變得不可預測。建議一次只允許一個堆疊訪問天線。

廣告

© . All rights reserved.