0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用ESP32的經(jīng)典串行藍(lán)牙來切換使用智能手機(jī)的LED

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

像HC-05和HC-06這樣的藍(lán)牙模塊很容易設(shè)置,并且可以在Arduino IDE上快速使用,但它們有自己的限制,如高功耗,并且它們在舊的藍(lán)牙V2.0上運(yùn)行。此外,最近我給自己買了一個(gè)新的ESP32 開發(fā)套件,這些模塊具有內(nèi)置Wi-Fi 和藍(lán)牙、充足的 ADCDAC 引腳、音頻支持、SD 卡支持、深度睡眠模式等功能,它幾乎具備構(gòu)建物聯(lián)網(wǎng)項(xiàng)目所需的一切。

正如任何業(yè)余愛好者都會喜歡它一樣,ESP32 現(xiàn)在也得到了 Arduino IDE 的正式支持。早些時(shí)候,我們必須對尼爾·科爾班斯庫做一個(gè)巨大的解決方法,但現(xiàn)在由于這個(gè)家伙的辛勤工作,用Arduino IDE編程ESP32已經(jīng)成為一個(gè)蛋糕。因此,我啟動了我的Arduino IDE,并深入研究了幾個(gè)示例BLE程序,通過這些程序我一無所知。經(jīng)過長時(shí)間的沖浪和推攏,我意識到,如果您必須使用 ESP32 使用低功耗藍(lán)牙 (BLE),還有很多事情需要了解。我決定在單獨(dú)的文章中介紹 BLE,因此在這里我們將使用 ESP32 的經(jīng)典串行藍(lán)牙來切換使用智能手機(jī)LED。

ESP32 藍(lán)牙入門

我想嘗試的第一個(gè)程序是一個(gè)簡單的程序,使用它可以打開或關(guān)閉手機(jī)藍(lán)牙終端應(yīng)用程序中的LED,就像舊的HC-05天一樣。但事實(shí)證明,藍(lán)牙低功耗(BLE)并沒有因此而縮進(jìn)。我還發(fā)現(xiàn) ESP32 模塊中有兩種類型的藍(lán)牙,一種是經(jīng)典藍(lán)牙,另一種是BLE藍(lán)牙低功耗。好吧,但是為什么呢?....為什么我們有兩種類型的藍(lán)牙,我應(yīng)該為我的項(xiàng)目使用什么?

了解低功耗藍(lán)牙 (BLE) 和 ESP32 經(jīng)典藍(lán)牙

顧名思義,低功耗藍(lán)牙比經(jīng)典藍(lán)牙消耗更少的功率。它是通過根據(jù)需要通過預(yù)定義的定期更新發(fā)送數(shù)據(jù)來實(shí)現(xiàn)的。但與傳統(tǒng)藍(lán)牙不同,它不用于傳輸文件或音樂。你有沒有想過你的手機(jī)如何自動識別你剛剛配對的藍(lán)牙設(shè)備是音頻設(shè)備或筆記本電腦或手機(jī),你可能還看到無線音頻播放器或健身樂隊(duì)的電池電量自動顯示在手機(jī)的狀態(tài)欄中;所有這些都可以通過BLE設(shè)備的特性來實(shí)現(xiàn)。BLE設(shè)備可與藍(lán)牙V4.0配合使用,并且可以作為服務(wù)器或客戶端以低功耗運(yùn)行,這使得BLE成為信標(biāo),智能手表,健身手環(huán)等的理想選擇。

另一方面,經(jīng)典藍(lán)牙只是我們用來傳輸文件和其他數(shù)據(jù)的簡單普通的舊藍(lán)牙。幾乎所有BLE設(shè)備都具有與之關(guān)聯(lián)的經(jīng)典藍(lán)牙功能。HC-05等模塊中使用的藍(lán)牙是經(jīng)典藍(lán)牙的一個(gè)版本,稱為藍(lán)牙SSP(串行端口協(xié)議),這意味著藍(lán)牙遵循標(biāo)準(zhǔn)串行協(xié)議,這使得發(fā)送和接收數(shù)據(jù)變得更加容易,沒有太多開銷。在本教程結(jié)束時(shí),我們將學(xué)習(xí)如何在 ESP32 中使用串行藍(lán)牙功能。

在本文中,我們將使用 ESP32 上的串行藍(lán)牙功能將其與智能手機(jī)配對,并使用 Play 商店中任何現(xiàn)有的藍(lán)牙終端應(yīng)用程序向 ESP32 發(fā)送命令,并相應(yīng)地切換板載 LED。

在后面的文章中,我們將介紹 ESP32 BLE 作為服務(wù)器和客戶端。BLE服務(wù)器通常用于將BLE數(shù)據(jù)發(fā)送到其他藍(lán)牙設(shè)備,BLE客戶端用于掃描其他BLE設(shè)備,從而充當(dāng)信標(biāo)。

正在為 ESP32 準(zhǔn)備Arduino IDE

請注意,默認(rèn)情況下,Arduino IDE 不支持 ESP32 板;您必須使用主板管理器下載并安裝它們。如果這是您使用 ESP32 的第一個(gè)程序,請按照此入門教程將 ESP32 開發(fā)板添加到 Arduino 并上傳測試草圖。
此外,您可以使用 ESP32 完成更多項(xiàng)目,而無需使用任何微控制器

適用于 ESP32 的串行藍(lán)牙程序

本頁末尾提供了使用 ESP32 藍(lán)牙切換 LED的完整程序。在此標(biāo)題下,讓我們將代碼分解為小片段并嘗試?yán)斫馑鼈?。如果您已?jīng)使用過其他藍(lán)牙模塊,如 HC-05,那么您會發(fā)現(xiàn)這個(gè)ESP32 藍(lán)牙經(jīng)典示例程序非常相似。

該程序的想法是使用 ESP32 初始化串行藍(lán)牙連接,并偵聽來自配對設(shè)備的數(shù)據(jù)。如果傳入的數(shù)據(jù)是“1”,那么我們打開LED,如果是“0”,我們應(yīng)該關(guān)閉LED。我們通過添加頭文件藍(lán)牙序列開始我們的程序,這使得 ESP32 藍(lán)牙可以作為藍(lán)牙 SSP 工作。

#include "BluetoothSerial.h" //Header File for Serial Bluetooth, will be added by default into Arduino

這個(gè)庫背后有很多事情在發(fā)生,但我們選擇不深入研究它以保持簡單。我們需要的下一件事是藍(lán)牙相關(guān)操作的對象。在這里,我把我的名字命名為ESP_BT,但你可以選擇任何名字。

BluetoothSerial ESP_BT; //Object for Bluetooth

接下來,在空隙設(shè)置()函數(shù)內(nèi)部。我們以波特率9600開始串行通信,并使用名稱初始化藍(lán)牙信號。在這里,我將其命名為“ESP32_LED_Control”,這將是我們的手機(jī)在嘗試配對時(shí)可以找到的名稱。最后,我將內(nèi)置LED引腳聲明為輸出引腳,因?yàn)槲覀儗⒏鶕?jù)藍(lán)牙信號切換它。

void setup() {

Serial.begin(9600); //Start Serial monitor in 9600

ESP_BT.begin("ESP32_LED_Control"); //Name of your Bluetooth Signal

Serial.println("Bluetooth Device is Ready to Pair");

pinMode (LED_BUILTIN, OUTPUT);//Specify that LED pin is output

}

在無限空洞循環(huán)函數(shù)中,我們檢查是否有任何數(shù)據(jù)來自藍(lán)牙模塊,如果是,則讀取數(shù)據(jù)并將其存儲在傳入變量中。我們還在串行監(jiān)視器上打印此值,只是為了交叉檢查Arduino正在接收的內(nèi)容。

if (ESP_BT.available()) //Check if we receive anything from Bluetooth

{

incoming = ESP_BT.read(); //Read what we recevive

Serial.print("Received:"); Serial.println(incoming);

現(xiàn)在,接收到的任何數(shù)據(jù)都存儲在傳入的變量中,因此我們可以直接將此變量與預(yù)期值進(jìn)行比較并執(zhí)行所需的操作。但是從藍(lán)牙發(fā)送的值將采用字符形式,Arduino 將讀取從手機(jī)發(fā)送的字符的十進(jìn)制值。在我們的例子中,對于字符“0”,十進(jìn)制值將為48,對于字符“1”,十進(jìn)制值將為49。您可以參考 ASCII 圖表來了解每個(gè)字符的十進(jìn)制值。

在這里,我們將傳入變量與 48 和 49 進(jìn)行了比較,以分別檢查 0 和 1。如果是1,那么我們關(guān)閉LED,并將確認(rèn)消息打印回藍(lán)牙,說LED已關(guān)閉,反之亦然。

if (incoming == 49)

{

digitalWrite(LED_BUILTIN, HIGH);

ESP_BT.println("LED turned ON");

}

if (incoming == 48)

{

digitalWrite(LED_BUILTIN, LOW);

ESP_BT.println("LED turned OFF");

}

使用 ESP32 測試串行藍(lán)牙

將 ESP 連接到 Arduino IDE,然后選擇正確的電路板和端口,如入門教程中所述。因?yàn)樗且粋€(gè)3斷續(xù)器方板管理器 編譯和上傳代碼可能需要更長的時(shí)間。上傳后,啟動串行監(jiān)視器(僅用于調(diào)試)并打開手機(jī)上的藍(lán)牙設(shè)置。您應(yīng)該找到一個(gè)名為ESP32_LED_Control配對的藍(lán)牙設(shè)備。

pYYBAGNbooiANa5qAAA5X8_Xec4100.png

現(xiàn)在,您可以在智能手機(jī)上打開任何藍(lán)牙終端應(yīng)用程序,我正在使用從Google應(yīng)用商店下載的名為“藍(lán)牙終端”的應(yīng)用程序。將藍(lán)牙應(yīng)用程序連接到我們剛剛配對的設(shè)備,然后鍵入1并按發(fā)送。

poYBAGNbooqAPxD4AABQ5pv1TMc229.png

ESP32 模塊應(yīng)按照我們的程序接收并打開 LED,并向您發(fā)送確認(rèn)消息,指出 LED 已打開,如上圖所示。您還可以檢查串行監(jiān)視器,它將以十進(jìn)制格式顯示 ESP32 藍(lán)牙接收的數(shù)據(jù),即 Arduino 將按 48 表示 0 和 49 表示 1,如前所述。我的終端窗口的快照如下所示。

pYYBAGNbooqAQ8zFAAAL0YZFtpc925.png

poYBAGNboo6AG-qlAAC7_MZo1j0270.jpg

同樣,您還應(yīng)該能夠通過從移動應(yīng)用程序發(fā)送0來關(guān)閉LED。

/*Program to control LED (ON/OFF) from ESP32 using Serial Bluetooth

* Thanks to Neil Kolbans for his efoorts in adding the support to Arduino IDE

* Turotial on: www.circuitdigest.com

*/


#include "BluetoothSerial.h" //Header File for Serial Bluetooth, will be added by default into Arduino



BluetoothSerial ESP_BT; //Object for Bluetooth


int incoming;

int LED_BUILTIN = 2;


void setup() {

Serial.begin(9600); //Start Serial monitor in 9600

ESP_BT.begin("ESP32_LED_Control"); //Name of your Bluetooth Signal

Serial.println("Bluetooth Device is Ready to Pair");


pinMode (LED_BUILTIN, OUTPUT);//Specify that LED pin is output

}


void loop() {



if (ESP_BT.available()) //Check if we receive anything from Bluetooth

{

incoming = ESP_BT.read(); //Read what we recevive

Serial.print("Received:"); Serial.println(incoming);


if (incoming == 49)

{

digitalWrite(LED_BUILTIN, HIGH);

ESP_BT.println("LED turned ON");

}



if (incoming == 48)

{

digitalWrite(LED_BUILTIN, LOW);

ESP_BT.println("LED turned OFF");

}

}

delay(20);

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    23087

    瀏覽量

    657346
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    650

    瀏覽量

    59302
  • 低功耗藍(lán)牙
    +關(guān)注

    關(guān)注

    1

    文章

    223

    瀏覽量

    21186
收藏 人收藏

    評論

    相關(guān)推薦

    如何快速開發(fā)智能手機(jī)新外設(shè)-藍(lán)牙4.0說了算

    `如何快速開發(fā)智能手機(jī)新外設(shè)―論低功耗藍(lán)牙技術(shù)在智能移動設(shè)備中的應(yīng)用―USB協(xié)議的產(chǎn)生,讓個(gè)人電腦的外設(shè)如雨后春筍般地涌現(xiàn)。同樣,做為智能手機(jī)最新開放的低功耗
    發(fā)表于 03-02 10:19

    藍(lán)牙4.0模塊如何讓客戶快速開發(fā)智能手機(jī)新外設(shè)

    `如何快速開發(fā)智能手機(jī)新外設(shè)―論低功耗藍(lán)牙技術(shù)在智能移動設(shè)備中的應(yīng)用―USB協(xié)議的產(chǎn)生,讓個(gè)人電腦的外設(shè)如雨后春筍般地涌現(xiàn)。同樣,做為智能手機(jī)最新開放的低功耗
    發(fā)表于 03-21 11:17

    智能手機(jī)

    智能手機(jī)圖紙誰有呢能看清
    發(fā)表于 06-23 19:55

    智能手機(jī)如何判斷人臉的貼近

    智能手機(jī)里應(yīng)用的傳感器是多種多樣的,其中距離傳感器就是智能手機(jī)里面經(jīng)常應(yīng)用的一種傳感器,距離傳感器有什么作用呢?我們都知道,智能手機(jī)都是觸屏手機(jī),當(dāng)人體接觸屏幕時(shí),能激活相應(yīng)用的應(yīng)用軟
    發(fā)表于 09-30 16:03

    智能手機(jī)加平板

    怎樣把智能手機(jī)中的藍(lán)牙和GPS.sim通訊硬件和軟件移植到平板電腦里、望高手賜教、給個(gè)思路
    發(fā)表于 10-15 18:20

    模擬智能手機(jī)

    STM32單片機(jī)模擬智能手機(jī)
    發(fā)表于 09-26 10:19

    你怎么定義智能手機(jī)殼,覺得高科技+手機(jī)殼=智能手機(jī)殼嗎?!

    搜到的這個(gè)寶就是MOPIC的3D智能手機(jī)殼,瞬間感覺這就是為我準(zhǔn)備滴^&^~為啥說它是個(gè)寶,一起來看看就知道了。你怎么定義智能手機(jī)殼,覺得高科技+手機(jī)殼=智能手機(jī)
    發(fā)表于 01-05 09:56

    自動對焦在智能手機(jī)的應(yīng)用

    作者:高級產(chǎn)品營銷經(jīng)理Jason Whetstone當(dāng)今最想要的智能手機(jī)特性對于許多用戶,相機(jī)性能已成為一臺智能手機(jī)最重要的方面。社交媒體和線上業(yè)務(wù)使每個(gè)人都成為攝影師或影片導(dǎo)演,輔以幾百萬像素
    發(fā)表于 07-16 08:50

    智能手機(jī)怎么才能更加智能?

    很明顯,智能手機(jī)不僅融入了我們的日常商業(yè)活動,而且融入了我們的日常生活。過去,智能手機(jī)被定義為采用專用操作系統(tǒng)(OS)的蜂窩電話。這意味著智能手機(jī)可以增加或安裝/刪除應(yīng)用軟件,雖然這種定義稍嫌簡單了點(diǎn)。今天的
    發(fā)表于 08-20 08:32

    如何設(shè)計(jì)智能手機(jī)省電系統(tǒng)?

    智能手機(jī)中包含了很多耗能設(shè)備, 諸如MP3、MPEG- 4、Wi-Fi、數(shù)碼相機(jī)、3D 游戲等等。在手機(jī)電池容量還沒有實(shí)現(xiàn)質(zhì)的飛躍的前提下, 我們不得不考慮手機(jī)電源節(jié)能的問題。我主要通過了以下四個(gè)方面
    發(fā)表于 11-05 08:03

    如何利用智能手機(jī)耳機(jī)接口音頻傳輸實(shí)現(xiàn)智能手機(jī)拓展監(jiān)測環(huán)境溫度、濕度的應(yīng)用設(shè)計(jì)?

    本文介紹一種利用智能手機(jī)耳機(jī)接口音頻傳輸,實(shí)現(xiàn)智能手機(jī)拓展監(jiān)測環(huán)境溫度、濕度的應(yīng)用設(shè)計(jì)與實(shí)現(xiàn)方案,同時(shí)提出了可兼容2種不同耳機(jī)接口標(biāo)準(zhǔn)的解決方案,增強(qiáng)了智能手機(jī)拓展應(yīng)用價(jià)值。
    發(fā)表于 05-11 06:50

    使用電腦的USB端口對智能手機(jī)充電

    對于在辦公室工作的人來說,在辦公室里充電智能手機(jī)是必要的,但大多數(shù)人都無法避免兩個(gè)錯(cuò)誤。他們將使用電腦的USB端口對智能手機(jī)充電,否則他們的數(shù)據(jù)線往往會掉到地面上,這樣可能會損壞數(shù)據(jù)線。 用電
    發(fā)表于 09-14 07:48

    用8051通過HC-05藍(lán)牙模塊與智能手機(jī)通信控制門鎖

    描述使用8051的藍(lán)牙門鎖使用您的智能手機(jī)通過藍(lán)牙控制您家的門鎖。 系統(tǒng)使用 8051 通過 HC-05 藍(lán)牙模塊與智能手機(jī)通信,如果密碼正
    發(fā)表于 09-14 06:45

    HC05 藍(lán)牙模塊 連接 ESP32 經(jīng)典藍(lán)牙

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

    Diy ESP32智能手

    電子發(fā)燒友網(wǎng)站提供《Diy ESP32智能手表.zip》資料免費(fèi)下載
    發(fā)表于 07-04 11:26 ?5次下載
    Diy <b class='flag-5'>ESP32</b><b class='flag-5'>智能手</b>表