透過Arduino使用ESP-WROOM-32(Bluetooth-BLE連接篇)

本文最初發佈在deviceplus.jp網站上,而後被翻譯成中文。

在本文中,我們將使用Bluetooth(BLE)功能連接ESP-WROOM-32與其他裝置。

本專案電子裝置清單
預計完成時間: 60分鐘
所需零件:
ESP-WROOM-32 development board

目錄
1.什麼是Bluetooth(藍牙)?
2.Bluetooth和BLE的區別
3.在ESP-WROOM-32上使用BLE前的準備
4.範例程式的運行
5.總結

1. 什麼是Bluetooth(藍牙)?
device connected with bluetooth

近年來,頭戴式耳機、入耳式耳機、音箱、車電音響系統、滑鼠、鍵盤等很多裝置都開始支援Bluetooth通訊。雖然與Wi-Fi等無線通訊不同,但Bluetooth通訊對於那些經常使用藍牙功能的人來說應該已經成為一種比較熟悉的通訊方式了。

那麼,Bluetooth通訊到底是一種什麼樣的通訊方式呢?大家可能會有這樣的印象:用Bluetooth功能可以和附近的裝置通訊,不能和遙遠的裝置通訊。下面,讓我們來大致瞭解一下Bluetooth的機制和規格。

Bluetooth(藍牙)
Bluetooth(藍牙)是一種無線通訊技術規範,可實現固定裝置和行動裝置之間的短距離資料交換,還可用於構建個人區域網路(PAN)。該技術使用短波UHF無線電波進行資料傳輸,其波段為2.400 GHz至2.485GHz頻段,這是全球範圍內工業、科學和醫療領域可以使用的無線電頻段。人們研發該技術的初衷是為了找尋一種替代RS-232資料線的無線通訊方式。

現在,Bluetooth由藍牙技術聯盟(SIG)管理,該組織在電信、計算、網路和消費電子等領域擁有35,000多家成員公司。IEEE將Bluetooth標準化為IEEE 802.15.1協議,但是已不再提供維護。藍牙SIG負責監督藍牙規範研發、管理證書認證並保護相關商標權益。要想銷售藍牙裝置,製造商必須符合藍牙SIG的標準。該技術擁有眾多專利,可授權給各種合規裝置。截至2009年,藍牙積體電路晶片的年出貨量約為9.2億片。[改編自維基百科]
[改編自維基百科] https://en.wikipedia.org/wiki/Bluetooth

如維基百科中所述,Bluetooth基本上是一種用於數位裝置短距離無線通訊標準.

識別與連接方法
使用Bluetooth時,需要經過“配對”和“連接”的步驟。對於無線LAN而言,通常需要輸入密碼才能連接到接入點,而Bluetooth通訊則需要一個裝置檢測並登錄(認證)另一個裝置的過程。

How the pairing works

什麼是配對?
比如您想透過Bluetooth功能使用智慧手機和耳機時,您需要先進行配對設定,這就像一個面對面的識別(即認證、資訊註冊)儀式,允許目標裝置之間相互連接。如果沒有這個儀式,比如,如果Bluetooth採用與無線LAN一樣的機制,那麼有可能發生這種事情:A正在使用耳機的過程中,B用密碼認證將A的耳機與自己的智慧手機連接起來,A的耳機上會播放B的智慧手機上正在播放的音樂。為了防止這種問題,Bluetooth採用了一種對裝置之間進行身份驗證和註冊、並在使用時只允許連接已註冊裝置的機制。
所以,對於Bluetooth裝置而言,基本上每個Bluetooth模組只能同時建立一個連接。

2. Bluetooth和BLE的區別

大家應該見過有時會和Bluetooth一起出現的符號“BLE”吧?BLE是Bluetooth的一種。根據裝置的類型和用途,某些裝置是採用BLE方式進行通訊的。BLE是“Bluetooth Low Energy”的首字母縮寫,與普通的Bluetooth相比,是一種功耗更低的通訊方式。

Bluetooth和BLE的區別在於通訊速度和功耗。如果是發送資料量比較大的應用,比如藍牙耳機等需要發送音訊資料的裝置,不適合用BLE通訊方式,因為與普通的文本資訊不同,這類應用對通訊速度和功耗是有一定要求的。BLE的功耗較低,適用於簡單的電源ON/OFF狀態和可以用文本和數位簡單表達的資料通訊。(*BLE有時不需要配對)

Difference between Bluetooth and BLE

ESP-WROOM-32模組支援BLE通訊功能,下面讓我們嘗試使用一下吧。

3. 在ESP-WROOM-32上使用BLE前的準備

現在,讓我們嘗試在ESP-WROOM-32上使用BLE功能。在第69篇中,我們已經搭建了環境,但僅憑這個環境是無法透過Arduino來使用BLE通訊功能的,要想使用該功能,還需要下載所需的檔。

Github for this project

所需文件– ESP-BLE-Arduino
https://github.com/nkolban/ESP32_BLE_Arduino/tree/98cd2290d036a4e27db061a76a512b526ef1cc14

從上述頁面的“Clone or download”下載檔案(ZIP檔),並將檔保存在Arduino安裝路徑的libraries>BLE目錄中。

Download files

將下載的檔保存在libraries>BLE目錄下。

安裝完這些檔後重啟Arduino IDE,將會在“草圖範例”下生成“ESP BLE Arduino”,只要您能看到它們,就證明準備好了。

BLE client

4. 範例程式的運行

接下來,我們將ESP-WROOM-32作為Bluetooth裝置試用一下。從“File”-“Examples”-“ESP32 BLE Arduino”打開“BLE_client”程式,並將程式寫入研發板。

程式寫入完成後,將作為BLE的用戶端啟動(BLE是基於伺服器-用戶端的方式來傳輸資料的,相關概念將在後續文章中進行說明)。

在您的智慧手機或其他裝置上啟用Bluetooth,並檢測周圍裝置,應該會成功顯示ESP-WROOM-32端子。

Settings on the phone

總結

在本文中,我們已做好了將ESP-WROOM-32用作BLE裝置的準備。在下一篇文章中,我們將實際使用這種BLE通訊功能,嘗試在智慧手機或其他裝置上操作ESP-WROOM-32、將ESP-WROOM-32的資料發送到支援BLE的智慧手機等功能。