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

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

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

如何利用ESP32和Arduino制作BLE檢測(cè)器

科技觀察員 ? 來(lái)源:circuitdigest ? 作者:Debashis Das ? 2022-08-09 17:15 ? 次閱讀

接近傳感器可以描述為一種借助光、電磁場(chǎng)或聲音檢測(cè)附近物體的開(kāi)關(guān)。通常,這些類(lèi)型的設(shè)備旨在檢測(cè)附近的對(duì)象,并且大多數(shù)這些傳感器將用于實(shí)際應(yīng)用中。但是在某些情況下,對(duì)象遠(yuǎn)離傳感器或?qū)ο蟊徽趽跽系K物,在這些類(lèi)型的情況下,我們可以使用BLE(低功耗藍(lán)牙)設(shè)備來(lái)檢測(cè)和感知物體的接近度。 ESP32 開(kāi)發(fā)板內(nèi)置 BLE,我們?cè)诤芏嗥渌?xiàng)目中都使用過(guò)。

在本文中,我將向您展示如何在ESP32 和 Arduino 的幫助 下制作一個(gè)簡(jiǎn)單的BLE 存在檢測(cè)器,最后,我們將在我的智能手機(jī)智能手表上使用 BLE 測(cè)試這些設(shè)備。

什么是低功耗藍(lán)牙 (BLE)?

BLE 代表低功耗藍(lán)牙,它于 2011 年進(jìn)入我們的日常生活,因?yàn)槊磕甑哪莻€(gè)時(shí)候,每個(gè)主要制造商都開(kāi)始在他們的設(shè)備中嵌入 BLE 技術(shù)。BLE 是一種低功耗無(wú)線通信技術(shù),專為電池供電應(yīng)用而開(kāi)發(fā),可用于短距離設(shè)備之間的通信。您每天使用的一些設(shè)備都內(nèi)置了藍(lán)牙,例如您的智能手機(jī)、智能手表、無(wú)線 耳塞、無(wú)線 揚(yáng)聲器、智能 家居 設(shè)備。,以及更多的嵌入式藍(lán)牙進(jìn)行通信或獲取位置數(shù)據(jù)。

BLE 是一項(xiàng)相對(duì)較新的技術(shù),BLE 協(xié)議是由藍(lán)牙特別興趣小組 (SIG)開(kāi)發(fā)的,其主要目標(biāo)是使低功耗設(shè)備成為現(xiàn)實(shí)。雖然新開(kāi)發(fā)的協(xié)議名稱保持不變,但新開(kāi)發(fā)的 BLE 協(xié)議不向后兼容,這意味著我們的藍(lán)牙經(jīng)典設(shè)備無(wú)法與 BLE 設(shè)備通信,盡管該技術(shù)存在缺點(diǎn),但它使開(kāi)發(fā)人員能夠產(chǎn)生非常低的功率能量- 使用小型紐扣電池可持續(xù)數(shù)月甚至數(shù)年的高效設(shè)備。

BLE 通信如何工作?

BLE 使用分層數(shù)據(jù)結(jié)構(gòu)來(lái)發(fā)送和接收信息。充當(dāng)服務(wù)器的 BLE 設(shè)備將發(fā)布客戶端可以檢測(cè)到的服務(wù)和特征,一旦信息交換成功,BLE 設(shè)備可以同時(shí)相互通信。用技術(shù)術(shù)語(yǔ)來(lái)說(shuō),這個(gè)信息堆棧一起被稱為 BLE 設(shè)備的屬性。它是使用 GATT(通用屬性)配置文件定義和實(shí)現(xiàn)的。在這些配置文件中,我們按層次順序排列了服務(wù)、特征和值。服務(wù)包含特征,特征包含值,通過(guò)讀取特征,我們可以讀取值和值隨時(shí)間的變化。

pYYBAGLyJLuAARXlAAF58oVg1ME310.png

可以處理特征以包括讀取或?qū)懭胄畔?。包含讀取組件的設(shè)備可以發(fā)布信息,包含寫(xiě)入特性的設(shè)備可以從客戶端接收數(shù)據(jù)。

定義服務(wù)和特性的GATT 配置文件稱為通用唯一標(biāo)識(shí)符 (UUID)。SIG 公司定義和保留了一些標(biāo)準(zhǔn)服務(wù)和特性,如果我們讀取 BLE 設(shè)備的 UUID,我們可以立即知道它是什么類(lèi)型的設(shè)備。稍后再討論這個(gè)話題。

BLE 數(shù)據(jù)以非常小的封裝傳輸和接收,當(dāng)TCP 數(shù)據(jù)包為 60 字節(jié)或更多時(shí),BLE 數(shù)據(jù)包總共只有 31 字節(jié)。最后,要記住的重要一點(diǎn)是,BLE 數(shù)據(jù)包需要正確構(gòu)造,然后可以在服務(wù)器端和客戶端一致地序列化和反序列化。

BLE 接近傳感器如何工作?

正如我之前所說(shuō),接近傳感器可以借助光、電磁波或聲音來(lái)檢測(cè)物體。之前我們已經(jīng)制作了一些基于PIR 傳感器和IR 傳感器的項(xiàng)目,如果您想了解更多有關(guān)該主題的信息,可以查看這些項(xiàng)目。

poYBAGLyJMCAMWXOAADbniGfCFE846.png

BLE 服務(wù)器定期廣播廣告信號(hào),以便客戶端可以搜索并連接到它。這個(gè)廣播信號(hào)包含一個(gè)唯一的 BLE MAC(媒體訪問(wèn)控制)地址,它與Wi-Fi 中使用的 MAC 地址非常相似,因?yàn)槲覀兊?ESP32 模塊內(nèi)置了藍(lán)牙,我們可以很容易地檢測(cè)到這個(gè)廣播信號(hào)并將其與查找表,以檢測(cè)已知設(shè)備的存在。驗(yàn)證設(shè)備后,我們可以在本地打開(kāi)燈,也可以使用 Adafruit IO在我們的 android 應(yīng)用程序上觸發(fā)通知。我們之前也用 Adafruit IO 做過(guò)項(xiàng)目,如果你想實(shí)現(xiàn) Adafruit IO,可以查看這些項(xiàng)目。

這個(gè)項(xiàng)目的要求?

pYYBAGLyJMmAAffoAAU8nukT6As534.png

正如您在上圖中看到的,對(duì)這個(gè)項(xiàng)目沒(méi)有太多要求,一個(gè) esp32 開(kāi)發(fā)板和一個(gè)支持 BLE 的設(shè)備,這里我使用的是我的 MI Band,就是這樣。

ESP32 BLE 接近傳感器的 Arduino 代碼

在演示中,我們將對(duì) ESP32 控制器進(jìn)行編程以感應(yīng)已知的 BLE 信標(biāo),一旦已知設(shè)備接近,我們將點(diǎn)亮板載 LED??梢栽诒卷?yè)底部找到執(zhí)行此操作的完整程序。代碼解釋如下。

我們通過(guò)添加所需的頭文件并聲明變量來(lái)開(kāi)始我們的程序。

當(dāng)我們使用 BLEScan 類(lèi)時(shí),我們需要包含 BLEScan 的頭文件以及其他 BLE 頭文件。

#include 
#include 
#include 
#include 

接下來(lái),我們將聲明一些變量,首先是我們存儲(chǔ)已知 BLE MAC 地址的數(shù)組。接下來(lái),我們將聲明閾值,打破將觸發(fā)所需操作的閾值。接下來(lái),我們將定義一個(gè)布爾值,如果我們數(shù)組中的已知設(shè)備與掃描的設(shè)備列表匹配,它將設(shè)置為 true。接下來(lái),我們聲明另一個(gè)變量來(lái)清除已掃描的 BLE 設(shè)備,如果我們不這樣做,就會(huì)出現(xiàn)內(nèi)存問(wèn)題。接下來(lái),我們獲取一個(gè)指向 BLEScan 類(lèi)的指針。

字符串 knownBLEAddresses[] = {"aa:bc:cc:dd:ee:ee", "54:2c:7b:87:71:a2"};
int RSSI_THRESHOLD = -55;
bool device_found;
整數(shù)掃描時(shí)間 = 5;//片刻之間
BLEScan* pBLEScan;

我們必須定義一個(gè)回調(diào)函數(shù),首先,這個(gè)回調(diào)函數(shù)將每隔幾秒調(diào)用一次,以檢查是否有新的 BLE 設(shè)備可用。一旦我們進(jìn)入回調(diào)函數(shù),如果我們找到一個(gè) BLE 設(shè)備,我們將設(shè)置一個(gè)標(biāo)志并中斷循環(huán)。最后,我們將打印 BLE 設(shè)備信息。

類(lèi) MyAdvertisedDeviceCallbacks:公共 BLEAdvertisedDeviceCallbacks {
    無(wú)效 onResult(BLEAdvertisedDevice 廣告設(shè)備){
      for (int i = 0; i < (sizeof(knownBLEAddresses) / sizeof(knownBLEAddresses[0])); i++)
      {
        //取消注釋以啟用調(diào)試信息
        //Serial.println("*************開(kāi)始**************");
        //Serial.println(sizeof(knownBLEAddresses));
        //Serial.println(sizeof(knownBLEAddresses[0]));
        //Serial.println(sizeof(knownBLEAddresses)/sizeof(knownBLEAddresses[0]));
        //Serial.println(advertisedDevice.getAddress().toString().c_str());
        //Serial.println(knownBLEAddresses[i].c_str());
        //Serial.println("*************結(jié)束**************");
        if (strcmp(advertisedDevice.getAddress().toString().c_str(), knownBLEAddresses[i].c_str()) == 0)
                        {
          device_found = true;
                          休息;
                        }
        別的
          device_found = 假;
      }
      Serial.printf("廣告設(shè)備:%s \n", AdvertisementdDevice.toString().c_str());
    }
};

接下來(lái)是設(shè)置部分,我們將LED 引腳聲明為輸出。此外,我們使用BLEDevice::init 方法初始化BLEDevice,之后,我們從 BLEDevice 獲取掃描對(duì)象,我們將地址存儲(chǔ)到先前聲明的pBLEScan 指針中。

接下來(lái),我們?cè)O(shè)置回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)會(huì)在幾秒鐘內(nèi)調(diào)用一次,檢查是否有新設(shè)備可用,接下來(lái)我使用SetActiveScan方法將其設(shè)置為非活動(dòng)模式,因?yàn)槿绻覀儐⒂么斯δ?,BLE 設(shè)備將為我們提供非常準(zhǔn)確的結(jié)果。最后我們?cè)O(shè)置setInterval和setWindow方法來(lái)完成設(shè)置。

  序列號(hào).開(kāi)始(115200);//在ESP32上啟用UART
  Serial.println("正在掃描..."); // 打印掃描
  pinMode(LED_BUILTIN,輸出);//
  BLEDevice::init("");
  pBLEScan = BLEDevice::getScan(); //創(chuàng)建新的掃描
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); //初始化回調(diào)函數(shù)
  pBLEScan->setActiveScan(true); //主動(dòng)掃描消耗更多的能量,但更快地得到結(jié)果
  pBLEScan->setInterval(100); // 設(shè)置掃描間隔
  pBLEScan->setWindow(99); // 小于或等于 setInterval 值

在循環(huán)部分,我們使用start 方法啟動(dòng) BLE 設(shè)備。scanTime參數(shù)定義了 BLE 設(shè)備掃描新設(shè)備所需的時(shí)間。

BLEScanResults foundDevices = pBLEScan->start(scanTime, false);

掃描完成后,我們將其放入名為foundDevices的變量中。

掃描完成后,我們可以使用found devices.getCount()方法獲取掃描儀找到了多少個(gè)設(shè)備,我們方便地將其放入for 循環(huán)中,逐個(gè)獲取每個(gè)設(shè)備的 RSSI 值,然后,我們比較該設(shè)備是否與列表中的設(shè)備匹配,我們使用一個(gè)簡(jiǎn)單的if語(yǔ)句來(lái)做到這一點(diǎn)。如果我們得到一個(gè)已知設(shè)備,我們會(huì)點(diǎn)亮板載 LED,以表明我們?cè)诹斜碇姓业搅艘粋€(gè)已知設(shè)備。否則我們會(huì)關(guān)閉 LED。

for (int i = 0; i < foundDevices.getCount(); i++)
  {
    BLEAdvertisedDevice device = foundDevices.getDevice(i);
    int rssi = device.getRSSI();
    Serial.print("RSSI:");
    序列號(hào).println(rssi);
    如果(rssi > RSSI_THRESHOLD && device_found == true)
      數(shù)字寫(xiě)入(LED_BUILTIN,高);
    別的
      數(shù)字寫(xiě)入(LED_BUILTIN,低);
  }

最后,我們通過(guò)調(diào)用 -

clearResults() 方法
pBLEScan->clearResults(); // 從BLEScan緩沖區(qū)中刪除結(jié)果以釋放內(nèi)存

上傳代碼后,如果已知設(shè)備靠近您的 ESP32 設(shè)備,您可以觸發(fā)任何操作。完整的工作也可以在此頁(yè)面的底部找到。

#include
#include
#include
#include
字符串 knownBLEAddresses[] = {"6E:bc:55:18:cf:7b", "53:3c:cb:56:36:02", "40:99:4b:75:7d:2f", "5c :5b:68:6f:34:96"};
int RSSI_THRESHOLD = -55;
bool device_found;
整數(shù)掃描時(shí)間 = 5;//片刻之間
BLEScan* pBLEScan;
類(lèi) MyAdvertisedDeviceCallbacks:公共 BLEAdvertisedDeviceCallbacks {
無(wú)效 onResult(BLEAdvertisedDevice 廣告設(shè)備){
for (int i = 0; i < (sizeof(knownBLEAddresses) / sizeof(knownBLEAddresses[0])); i++)
{
//取消注釋以啟用調(diào)試信息
//Serial.println("*************開(kāi)始**************");
//Serial.println(sizeof(knownBLEAddresses));
//Serial.println(sizeof(knownBLEAddresses[0]));
//Serial.println(sizeof(knownBLEAddresses)/sizeof(knownBLEAddresses[0]));
//Serial.println(advertisedDevice.getAddress().toString().c_str());
//Serial.println(knownBLEAddresses[i].c_str());
//Serial.println("*************結(jié)束**************");
if (strcmp(advertisedDevice.getAddress().toString().c_str(), knownBLEAddresses[i].c_str()) == 0)
{
device_found = true;
休息;
}
別的
device_found = 假;
}
Serial.printf("廣告設(shè)備:%s \n", AdvertisementdDevice.toString().c_str());
}
};
無(wú)效設(shè)置(){
序列號(hào).開(kāi)始(115200);//在ESP32上啟用UART
Serial.println("正在掃描..."); // 打印掃描
pinMode(LED_BUILTIN,輸出);//使 BUILTIN_LED 引腳作為輸出
BLEDevice::init("");
pBLEScan = BLEDevice::getScan(); //創(chuàng)建新的掃描
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); //初始化回調(diào)函數(shù)
pBLEScan->setActiveScan(true); //主動(dòng)掃描消耗更多的能量,但更快地得到結(jié)果
pBLEScan->setInterval(100); // 設(shè)置掃描間隔
pBLEScan->setWindow(99); // 小于或等于 setInterval 值
}
無(wú)效循環(huán)(){
// 把你的主要代碼放在這里,重復(fù)運(yùn)行:
BLEScanResults foundDevices = pBLEScan->start(scanTime, false);
for (int i = 0; i < foundDevices.getCount(); i++)
{
BLEAdvertisedDevice device = foundDevices.getDevice(i);
int rssi = device.getRSSI();
Serial.print("RSSI:");
序列號(hào).println(rssi);
如果(rssi > RSSI_THRESHOLD && device_found == true)
數(shù)字寫(xiě)入(LED_BUILTIN,高);
別的
數(shù)字寫(xiě)入(LED_BUILTIN,低);
}
pBLEScan->clearResults(); // 從BLEScan緩沖區(qū)中刪除結(jié)果以釋放內(nèi)存
}

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

    關(guān)注

    1

    文章

    847

    瀏覽量

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

    關(guān)注

    12

    文章

    634

    瀏覽量

    59179
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185927
  • ESP32
    +關(guān)注

    關(guān)注

    17

    文章

    936

    瀏覽量

    16663
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ESP32ESP8266基于Arduino的MQTT收發(fā)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是ESP32ESP8266基于Arduino的MQTT收發(fā)資料說(shuō)明。
    發(fā)表于 01-24 08:00 ?104次下載
    <b class='flag-5'>ESP32</b>和<b class='flag-5'>ESP</b>8266基于<b class='flag-5'>Arduino</b>的MQTT收發(fā)資料說(shuō)明

    使用Arduino制作檢測(cè)PM2.5檢測(cè)器的程序詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用Arduino制作檢測(cè)PM2.5檢測(cè)器的程序詳細(xì)資料免費(fèi)下載。
    發(fā)表于 02-26 08:00 ?9次下載
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b><b class='flag-5'>檢測(cè)</b>PM2.5<b class='flag-5'>檢測(cè)器</b>的程序詳細(xì)資料免費(fèi)下載

    DIY使用ESP32的手持游戲手柄并通過(guò)BLE進(jìn)行通信的設(shè)計(jì)

    ?? ? 軟件應(yīng)用程序和在線服務(wù): Arduino IDE?? ? 手動(dòng)工具和制造機(jī): 烙鐵(通用) 這是一個(gè)使用ESP32微控制制作的DIY手持游戲手柄。您可能之前已經(jīng)看過(guò)這樣的游
    的頭像 發(fā)表于 01-27 13:40 ?8227次閱讀

    esp32arduino的區(qū)別,esp32能否替代arduino

    很多創(chuàng)客愛(ài)好者甚至有些技術(shù)工程師在理解esp32arduino的時(shí)候總是問(wèn)一句這兩塊板子哪個(gè)更好用?他們可能潛意識(shí)中就覺(jué)得arduinoesp32是競(jìng)品的關(guān)系,但實(shí)際是這樣嗎?今天
    發(fā)表于 06-24 17:11 ?2.6w次閱讀

    ESP32 開(kāi)發(fā)之旅② Arduino For ESP32說(shuō)明

    文章目錄1. Arduino Core For ESP32是什么?2.Arduino core for ESP32庫(kù)3.與ESP8266庫(kù)類(lèi)
    發(fā)表于 11-13 19:51 ?33次下載
    <b class='flag-5'>ESP32</b> 開(kāi)發(fā)之旅② <b class='flag-5'>Arduino</b> For <b class='flag-5'>ESP32</b>說(shuō)明

    ESP32-Arduino-開(kāi)發(fā)實(shí)例-ESP32的WiFi工作模式

    WiFi-BT-BLE MCU模組,功能強(qiáng)大,用途廣泛,可以用于低功耗傳感網(wǎng)絡(luò)和要求極高的任務(wù),例如語(yǔ)音編碼、音頻流和MP3解碼等。此款模組的核心是ESP32芯片,具有可擴(kuò)展、自適應(yīng)的特點(diǎn)。兩個(gè)CPU核可以被單獨(dú)控制或上電。時(shí)
    發(fā)表于 11-26 17:21 ?82次下載
    <b class='flag-5'>ESP32-Arduino</b>-開(kāi)發(fā)實(shí)例-<b class='flag-5'>ESP32</b>的WiFi工作模式

    使用Arduino開(kāi)發(fā)ESP32-01S

    使用Arduino開(kāi)發(fā)ESP32-01S
    發(fā)表于 12-03 18:06 ?16次下載
    使用<b class='flag-5'>Arduino</b>開(kāi)發(fā)<b class='flag-5'>ESP32</b>-01S

    arduino / VScode+platformIO搭建esp32/esp8266編譯環(huán)境(一篇足矣)

    arduino/VScode+platformIO 搭建esp32/esp8266開(kāi)發(fā)環(huán)境(一篇足矣)前言:入門(mén)開(kāi)源硬件開(kāi)發(fā),在搭建編譯環(huán)境的時(shí)候碰了一臉灰,特意寫(xiě)下此博客,以供參考!制作
    發(fā)表于 12-05 14:06 ?31次下載
    <b class='flag-5'>arduino</b> / VScode+platformIO搭建<b class='flag-5'>esp32</b>/<b class='flag-5'>esp</b>8266編譯環(huán)境(一篇足矣)

    如何使用ESP8266開(kāi)發(fā)板制作光強(qiáng)度檢測(cè)器

    本文將介紹如何使用一個(gè)ESP8266開(kāi)發(fā)板制作光強(qiáng)度檢測(cè)器,并將檢測(cè)結(jié)果在本地網(wǎng)頁(yè)顯示。
    的頭像 發(fā)表于 04-08 15:27 ?3934次閱讀
    如何使用<b class='flag-5'>ESP</b>8266開(kāi)發(fā)板<b class='flag-5'>制作</b>光強(qiáng)度<b class='flag-5'>檢測(cè)器</b>

    如何使用ESP32構(gòu)建一個(gè)BLE iBeacon

    在本教程中,我們將使用 ESP32 構(gòu)建一個(gè) BLE iBeacon,其中 ESP32 將充當(dāng)服務(wù),智能手機(jī)將充當(dāng)客戶端。
    發(fā)表于 07-12 16:48 ?6646次閱讀
    如何使用<b class='flag-5'>ESP32</b>構(gòu)建一個(gè)<b class='flag-5'>BLE</b> iBeacon

    Arduino封裝上的ESP32

    電子發(fā)燒友網(wǎng)站提供《Arduino封裝上的ESP32板.zip》資料免費(fèi)下載
    發(fā)表于 07-25 14:36 ?5次下載
    <b class='flag-5'>Arduino</b>封裝上的<b class='flag-5'>ESP32</b>板

    使用ESP32制作ESP RainMaker IoT項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《使用ESP32制作ESP RainMaker IoT項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 10-24 10:54 ?9次下載
    使用<b class='flag-5'>ESP32</b><b class='flag-5'>制作</b><b class='flag-5'>ESP</b> RainMaker IoT項(xiàng)目

    帶有磁性鼠標(biāo)墊的基于ESP32BLE鼠標(biāo)

    電子發(fā)燒友網(wǎng)站提供《帶有磁性鼠標(biāo)墊的基于ESP32BLE鼠標(biāo).zip》資料免費(fèi)下載
    發(fā)表于 11-04 09:33 ?0次下載
    帶有磁性鼠標(biāo)墊的基于<b class='flag-5'>ESP32</b>的<b class='flag-5'>BLE</b>鼠標(biāo)

    基于ESP32Arduino兼容系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《基于ESP32Arduino兼容系統(tǒng).zip》資料免費(fèi)下載
    發(fā)表于 12-20 17:53 ?0次下載
    基于<b class='flag-5'>ESP32</b>的<b class='flag-5'>Arduino</b>兼容系統(tǒng)

    如何在Arduino IDE中安裝ESP32開(kāi)發(fā)環(huán)境

    要在Arduino IDE中使用ESP32開(kāi)發(fā)板,您需要先安裝相應(yīng)的開(kāi)發(fā)環(huán)境。以下是在Arduino IDE中安裝ESP32開(kāi)發(fā)環(huán)境的步驟。
    的頭像 發(fā)表于 07-13 16:48 ?1.6w次閱讀
    如何在<b class='flag-5'>Arduino</b> IDE中安裝<b class='flag-5'>ESP32</b>開(kāi)發(fā)環(huán)境