色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

將ESP32藍牙低功耗連接到健身手環以觸發燈泡的方法

科技觀察員 ? 來源:circuitdigest ? 作者:阿斯溫斯·拉吉 ? 2022-10-28 17:07 ? 次閱讀

一進入家門就自動開燈,離開時又關掉燈,這是多么酷啊!是的,一個簡單的應用程序可以為您做到這一點。在這個項目中,我們將 ESP32 用作 BLE 客戶端將健身手環用作 BLE 服務器,因此,每當佩戴健身手環的人進入 ESP32 藍牙范圍內時,ESP32 都會檢測到它并打開燈。任何具有 BLE 服務器功能的藍牙設備都可以用作觸發設備,以使用 ESP32 控制任何家用電器

我們將對 ESP32 進行編程,使其充當 BLE 客戶端,并不斷掃描 BLE 設備;如果我們在范圍內找到健身帶,我們將嘗試連接到它,如果連接成功,我們可以通過切換ESP32上的一個GPIO引腳來觸發燈泡。該方法是可靠的,因為每個BLE服務器(健身帶)將具有唯一的硬件ID,因此沒有兩個BLE服務器設備是相同的。有趣的對吧?!!!現在,讓我們開始構建:

所需材料

ESP32 開發板

交流負載(燈)

繼電器模塊

硬件

這個 ESP32 BLE 客戶端項目的硬件非常簡單,因為大多數魔術都發生在代碼內部。ESP32 必須在發現或丟失藍牙信號時切換交流燈(負載)。要切換此負載,我們將使用繼電器,由于 ESP32 的 GPIO 引腳僅兼容 3.3V,我們需要一個可以用 3.3V 驅動的繼電器模塊。只需檢查繼電器模塊中使用的晶體管,如果它是BC548,你就可以按照下面的電路圖建立自己的電路。

pYYBAGNbm0eAN4WsAADxWYTqRTY547.png

警告:該電路直接處理220V交流電源電壓。小心帶電電線,并確保不會產生短路。你已被警告。

使用BC548而不是BC547或2N2222的原因是它們具有低基極發射極電壓,僅可在3.3V下觸發。這里使用的繼電器是5V繼電器,因此我們使用Vin引腳為其供電,該引腳從電源線中獲得5V。接地引腳連接到電路的接地。電阻 R1 1K 用作基極電流限制器電阻。相線連接到繼電器的NO引腳,繼電器的共引腳連接到負載,負載的另一端連接到中性線。您可以交換相位和中性的位置,但請注意不要直接做空它們。電流應始終通過負載(燈泡)。我使用了一個繼電器模塊來保持簡單,這里的負載是焦點LED燈。我的設置如下所示

pYYBAGNbm8qAfGRLAAC3jIacubg753.jpg

如果您現在想跳過硬件,可以使用 GPIO 2 引腳而不是 GPIO 13 引腳來切換 ESP32 上的板載 LED。建議初學者使用此方法。

獲取服務器的藍牙地址(健身手環的地址)

如前所述,我們將對 ESP32 進行編程,使其充當客戶端(類似于電話)并連接到我的健身手環(聯想 HW-01)的服務器。對于連接到服務器的客戶端,它必須知道服務器的藍牙地址。每個藍牙服務器,就像我的健身手環一樣,都有自己獨特的藍牙地址,這是永久性的。您可以將此與筆記本電腦手機的 MAC 地址相關聯。

為了從服務器中獲取此地址,我們使用稱為nRF的應用程序從北歐半導體連接,我們已經在上一個教程中使用過。它免費提供給IOS和安卓用戶。只需下載,啟動應用程序并掃描附近的藍牙設備。該應用程序將列出它找到的所有BLE設備。我的命名為HW-01,只需查看其名稱下方,您就會發現服務器的硬件地址,如下所示。

poYBAGNbm8uAYNwVAAA4atOrE8k433.png

所以我的健身手環的 ESP32 BLE 硬件地址是 C7:F0:69:F0:68:81,您將擁有一組相同格式的不同數字。只需記下它,因為我們在編程ESP32時需要它。

獲取服務器的服務和特征 UUID

好的,現在我們已經使用BLE地址標識了我們的服務器,但是為了與之通信,我們需要說服務語言和特征,如果您閱讀了上一個教程,您將理解這一點。在本教程中,我將使用我的服務器的寫入特征(健身帶)與它配對。因此,為了與設備配對,我們需要服務廣告特征UUID,我們可以使用相同的應用程序再次獲得它。

只需單擊應用程序上的“連接”按鈕并搜索一些寫入特征,應用程序將顯示服務 UUID 和特征 UUID。我的如下所示

pYYBAGNbm86AJC0LAABtBM2E4b4348.png

在這里,我的服務 UUID 和特征 UUID 是相同的,但它不必相同。記下服務器的 UUID。我的被記錄下來

Service UUID:

0000fee7-0000-1000-8000-00805f9b34fb

Characteristic

UUID: 0000fee7-0000-1000-8000-00805f9b34fb

使用寫入特性不是強制性的;您可以使用應用程序中顯示的服務器的任何有效服務和特征 UUID。

對 ESP32 進行編程,使其充當鄰近感應開關應用的客戶端

該程序的理念是使 ESP32 充當客戶端,在找到我們的服務器(健身帶)時不斷掃描藍牙設備,驗證硬件 ID,并通過 GPIO 引腳 13 切換指示燈。好吧!!,但有一個問題。所有BLE服務器的射程均為10米,這有點太多了。因此,如果我們試圖使接近開關打開打開一扇門的燈,這個范圍非常高。

要縮小BLE服務器的范圍,我們可以使用配對選項。僅當 BLE 服務器和客戶端的距離在 3-4 米以內時,兩者才會保持配對狀態。這非常適合我們的應用。因此,我們制造 ESP32 不僅是為了發現 BLE 服務器,也是為了連接到它并確保它是否保持配對狀態。 本頁末尾提供了完整的 ESP32 BLE 示例程序來執行相同的操作。下面,我將代碼分解成小片段并嘗試解釋它們。

在包含頭文件后,我們通知 ESP32 我們通過 nRF 連接應用程序獲得的 BLE 地址、服務和特征 UUID,如上面的標題中所述。代碼如下所示

static BLEUUID serviceUUID("0000fee7-0000-1000-8000-00805f9b34fb"); //Service UUID of fitnessband obtained through nRF connect application

static BLEUUID charUUID("0000fee7-0000-1000-8000-00805f9b34fb"); //Characteristic UUID of fitnessband obtained through nRF connect application

String My_BLE_Address = "c7:f0:69:f0:68:81"; //Hardware Bluetooth MAC of my fitnessband, will vary for every band obtained through nRF connect application

其次,在程序中,我們有連接到服務器和我的廣告服務回撥,我們稍后將返回。然后在設置函數內部,我們初始化串行監視器,并使ESP上的BLE掃描設備。掃描完成后,發現每個BLE設備,就會調用“我的廣告設備”回調功能。

我們還支持主動掃描,因為我們使用主電源為 ESP32 供電,對于電池應用,它已關閉以降低電流消耗。繼電器觸發引腳在我們的硬件中連接到GPIO 13,因此我們也聲明GPIO引腳13為輸出。

void setup() {

Serial.begin(115200); //Start serial monitor

Serial.println("ESP32 BLE Server program"); //Intro message

BLEDevice::init("");

pBLEScan = BLEDevice::getScan(); //create new scan

pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); //Call the class that is defined above

pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster

pinMode (13,OUTPUT); //Declare the in-built LED pin as output

}

在“我的廣告設備回調”功能中,我們打印行將列出發現的BLE設備的名稱和其他信息。我們需要發現的BLE設備的硬件ID,以便我們可以將其與所需的設備進行比較。因此,我們使用變量Server_BLE_Address來獲取設備的地址,然后將其從BLE地址類型轉換為字符串。

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks

{

void onResult(BLEAdvertisedDevice advertisedDevice) {

Serial.printf("Scan Result: %s n", advertisedDevice.toString().c_str());

Server_BLE_Address = new BLEAddress(advertisedDevice.getAddress());

Scaned_BLE_Address = Server_BLE_Address->toString().c_str();

}

};

在循環函數中,我們掃描 3 秒鐘,并將結果放在發現的設備中,這是來自 BLEScanResults 的對象。如果我們通過掃描找到一個或多個設備,我們將開始檢查發現的BLE地址是否與我們在程序中輸入的地址匹配。如果匹配是正數,并且設備未提前配對,我們嘗試使用 connectToserver 函數對其進行配對。我們還使用了一些串行語句來理解目的。

while (foundDevices.getCount() >= 1)

{

if (Scaned_BLE_Address == My_BLE_Address && paired == false)

{

Serial.println("Found Device :-)... connecting to Server as client");

if (connectToserver(*Server_BLE_Address))

{

連接服務器功能中,我們使用 UUID 與 BLE 服務器(健身帶)配對。要連接服務器,ESP32 必須充當客戶端,因此我們使用 createClient() 函數創建一個客戶端,然后連接到 BLE 服務器的地址。然后,我們使用 UUID 值搜索服務和特征,并嘗試連接到它。當連接成功時,該函數返回 true,如果不是,則返回 false。請注意,使用服務和特征 UUID 與服務器配對并不是強制性的,它只是為了便于您理解。

bool connectToserver (BLEAddress pAddress){

BLEClient* pClient = BLEDevice::createClient();

Serial.println(" - Created client");

// Connect to the BLE Server.

pClient->connect(pAddress);

Serial.println(" - Connected to fitnessband");

// Obtain a reference to the service we are after in the remote BLE server.

BLERemoteService* pRemoteService = pClient->getService(serviceUUID);

if (pRemoteService != nullptr)

{

Serial.println(" - Found our service");

return true;

}

else

return false;

// Obtain a reference to the characteristic in the service of the remote BLE server.

pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID);

if (pRemoteCharacteristic != nullptr)

Serial.println(" - Found our characteristic");

return true;

}

如果連接成功,則GPIO引腳13變高,并使用中斷語句將控件發送到環路之外。配對的布爾變量也設置為 true。

if (connectToserver(*Server_BLE_Address))

{

paired = true;

Serial.println("********************LED turned ON************************");

digitalWrite (13,HIGH);

break;

}

配對成功并打開GPIO引腳后,我們必須檢查設備是否仍在范圍內。由于現在設備已配對,因此BLE掃描服務將無法再看到它。只有當用戶離開該區域時,我們才會再次找到它。因此,我們只需要掃描BLE服務器,如果我們發現,則必須將GPIO引腳設置為低電平,如下所示

if (Scaned_BLE_Address == My_BLE_Address && paired == true)

{

Serial.println("Our device went out of range");

paired = false;

Serial.println("********************LED OOOFFFFF************************");

digitalWrite (13,LOW);

ESP.restart();

break;

}

工作和測試

完成程序和硬件設置后,只需將代碼上傳到 ESP32 并按如下所示安排整個設置即可。

poYBAGNbm8-AQH9hAADIXXLZy9c059.jpg

您應該注意到,一旦健身手環(服務器)與 ESP32 配對,燈就會被打開。您也可以通過注意健身手環上的連接藍牙符號來檢查這一點。配對后,只需嘗試離開 ESP32,當您越過 3-4 米時,您會注意到手表上的藍牙符號消失,連接丟失。現在,如果你看一下燈,它將被關閉。當您走回設備時,設備會再次配對并打開指示燈。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • BLE
    BLE
    +關注

    關注

    12

    文章

    667

    瀏覽量

    59494
  • GPIO
    +關注

    關注

    16

    文章

    1216

    瀏覽量

    52267
  • ESP32
    +關注

    關注

    18

    文章

    977

    瀏覽量

    17460
收藏 人收藏

    評論

    相關推薦

    請問esp32 mesh provisioner和低功耗藍牙可以共存嗎?

    esp32 mesh provisioner 和低功耗藍牙可以共存嗎
    發表于 06-18 06:40

    請問esp32藍牙能不能保持超低功耗的監聽?

    做一個低功耗的設備,需要進入深度睡眠,但是有需要空中喚醒,可以用外掛LORA去喚醒esp32。 那么esp32低功耗藍牙,能不能像家用的
    發表于 06-18 07:11

    基于ESP32低功耗藍牙觸摸鍵盤

    觸摸低功耗藍牙行業芯事經驗分享
    迪文智能屏
    發布于 :2022年04月07日 16:05:53

    藍牙4.1申請】低功耗藍牙手環

    申請理由:想開發低功耗手環,苦于沒有開發板,看到這邊有符合我的開發板,所以申請一套。項目描述:低功耗藍牙手環,適合當代年輕人追求科技時尚的理
    發表于 10-09 14:18

    低功耗藍牙的應用領域

    、室內定位導航(包括商場、圖書館、停車場、酒店、飯店等等)、景點語音介紹、身份識別等均可使用低功耗藍牙技術。藍牙防丟器藍牙防丟器與智能手機
    發表于 03-18 02:25

    請問esp32藍牙能不能保持超低功耗的監聽?

    做一個低功耗的設備,需要進入深度睡眠,但是有需要空中喚醒,可以用外掛LORA去喚醒esp32。那么esp32低功耗藍牙,能不能像家用的
    發表于 02-15 06:13

    如何使用ESP32和Bluetooth模塊閃爍LED

    在本教程中,LED的陽極連接到ESP32的p21,LED的陰極連接到ESP32的GND
    的頭像 發表于 10-05 17:50 ?9008次閱讀
    如何使用<b class='flag-5'>ESP32</b>和Bluetooth模塊閃爍LED

    HC05 藍牙模塊 連接 ESP32 經典藍牙

    概述HC05是一款常用的經典藍牙模塊,某寶有大量銷售,主從機一體,而ESP32藍牙兼容經典藍牙低功耗
    發表于 11-24 12:36 ?65次下載
    HC05 <b class='flag-5'>藍牙</b>模塊 <b class='flag-5'>連接</b> <b class='flag-5'>ESP32</b> 經典<b class='flag-5'>藍牙</b>

    通用型WiFi和低功耗藍牙模組ESP32-C3的優勢特征及應用范例

    ESP32-C3-WROOM-02(簡稱ESP32-C3)模組是一款專為物聯網應用場景設計的通用型 WiFi 和低功耗藍牙模組,安全性高、內存充足、外設接口多、應用場景豐富、尺寸小,可
    的頭像 發表于 06-24 10:16 ?4688次閱讀

    您的Magicbit(ESP32)連接到thingsboard

    電子發燒友網站提供《您的Magicbit(ESP32)連接到thingsboard.zip》資料免費下載
    發表于 11-15 11:46 ?0次下載
    <b class='flag-5'>將</b>您的Magicbit(<b class='flag-5'>ESP32</b>)<b class='flag-5'>連接到</b>thingsboard

    使用ESP32簡單且不安全的方式連接到AWS IoT

    電子發燒友網站提供《使用ESP32簡單且不安全的方式連接到AWS IoT.zip》資料免費下載
    發表于 12-26 09:15 ?0次下載
    使用<b class='flag-5'>ESP32</b><b class='flag-5'>以</b>簡單且不安全的方式<b class='flag-5'>連接到</b>AWS IoT

    基于ESP32低功耗藍牙暗室定時器

    電子發燒友網站提供《基于ESP32低功耗藍牙暗室定時器.zip》資料免費下載
    發表于 02-09 11:53 ?0次下載
    基于<b class='flag-5'>ESP32</b>的<b class='flag-5'>低功耗</b><b class='flag-5'>藍牙</b>暗室定時器

    自動化燒錄器支持芯片燒錄Espressif樂鑫科技的低功耗藍牙模組ESP32-WROOM32E

    芯片燒錄行業領導者-昂科技術近日發布最新的燒錄軟件更新及新增支持的芯片型號列表,其中昂科發布軟件更新支持Espressif樂鑫科技的低功耗藍牙模組ESP32-WROOM32E已經被昂科的通用燒錄平臺
    的頭像 發表于 05-09 17:17 ?3294次閱讀
    自動化燒錄器支持芯片燒錄Espressif樂鑫科技的<b class='flag-5'>低功耗</b><b class='flag-5'>藍牙</b>模組<b class='flag-5'>ESP32</b>-WROOM32E

    信馳達基于ESP32-C3推出低功耗Wi-Fi藍牙雙模模塊

    廠商深圳信馳達科技RF-star推出了基于ESP32-C3 SoC的低功耗WiFi藍牙二合一通信模塊——RF-WM-ESP32B1。
    的頭像 發表于 07-19 09:44 ?903次閱讀

    低功耗藍牙模塊在運動健身追蹤中的革新應用

    隨著健康和健身意識的不斷提升,人們對運動追蹤技術的需求日益增加。低功耗藍牙模塊的引入為運動健身追蹤領域帶來了新的可能性。本文探討
    的頭像 發表于 11-29 14:50 ?477次閱讀
    主站蜘蛛池模板: jealousvue成熟40岁| 9277在线观看资源| 97一期涩涩97片久久久久久久| 国产亚洲精品久久久久久国模美| 日本艳妓BBW高潮一19| gogogo免费视频观看| 免费一区在线观看| 69人体阴展网| 门事件快播| AV天堂午夜精品蜜臀AV| 免费观看a视频| 91精品视频网站| 欧美xxxx83d| 床上色APP下载免费版 | 闺蜜扒开我尿口使劲揉| 日本xxxx19| 囯产精品一区二区三区线| 微拍秒拍99福利精品小视频| 国产精品嫩草免费视频| 亚洲国产第一| 久久这里的只有是精品23| 51久久夜色精品国产| 女教师公车痴汉在线播放| 草699一码二码三码四码| 三级黄色在线观看| 国产亚洲精品久久久久久久| 一本道色播| 内射老妇BBX| 郭德纲于谦2012最新相声| 亚洲成人免费| 恋夜影视列表免费安卓手机版| 99久久婷婷国产综合精品青草| 日韩高清毛片| 国内精品蜜汁乔依琳视频 | 伊人网综合网| 男子扒开美女尿口做羞羞的事| 成人短片迅雷下载| 亚洲国产日韩欧美视频二区| 久久是热频国产在线| V8成品人视频| 羞羞答答dc视频|