arduino ESP32 AndroidStudio BLE低功耗藍牙 物聯網


 

                  arduino ESP32 AndroidStudio BLE低功耗藍牙 物聯網

參考路徑:  https://blog.csdn.net/qq_35174914/article/details/79328125

nodered開發:

1.   node red sample節點前后端數據傳送

2.    node red 代碼編輯塊傳到后台

 

 

esp32采用的藍牙於普通的藍牙不同,是低功耗藍牙,手機用一般的藍牙代碼是連不上的。在本文中,不討論有關低功耗藍牙的內容,只說明如何實現ESP32與 Android手機間通過低功耗藍牙進行相互通信。

    進入這個倉庫   https://github.com/nkolban/ESP32_BLE_Arduino  打包下載所有文件

 

將內容解壓后復制Arduino安裝目錄下的Libraries文件夾下

 

注意不要產生多級目錄

 

 

然后是Arduino代碼

#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
#include <String.h>

BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
uint8_t txValue = 0;
long lastMsg = 0;//存放時間的變量
String rxload="BlackWalnutLabs";

#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
};
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
}
};

class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string rxValue = pCharacteristic->getValue();
if (rxValue.length() > 0) {
rxload="";
for (int i = 0; i < rxValue.length(); i++)
{
rxload +=(char)rxValue[i];
Serial.print(rxValue[i]);
}
Serial.println("");
}
}
};

void setupBLE(String BLEName){
const char *ble_name=BLEName.c_str();
BLEDevice::init(ble_name);
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX,BLECharacteristic::PROPERTY_NOTIFY);
pCharacteristic->addDescriptor(new BLE2902());
BLECharacteristic *pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_RX,BLECharacteristic::PROPERTY_WRITE);
pCharacteristic->setCallbacks(new MyCallbacks());
pService->start();
pServer->getAdvertising()->start();
Serial.println("Waiting a client connection to notify...");
}


void setup() {
Serial.begin(115200);
setupBLE("BlackWalnutLabs");//設置藍牙名稱
}

void loop() {
long now = millis();//記錄當前時間
if (now - lastMsg > 1000)
{//每隔1秒發一次信號
if (deviceConnected&&rxload.length()>0) {
String str=rxload;
const char *newValue=str.c_str();
pCharacteristic->setValue(newValue);
pCharacteristic->notify();
}
lastMsg = now;//刷新上一次發送數據的時間
}

}
上傳到ESP32上以后 進入APP搜索設備,連接設備

 

直接使用即可

附上AndroidStudio的代碼 https://pan.baidu.com/s/1ht9OwSW   y51b

或者用C幣的。。。恩 http://download.csdn.net/download/qq_35174914/10252124


————————————————
版權聲明:本文為CSDN博主「風度青年」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_35174914/article/details/79328125


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM