arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网

本文详细介绍ESP32与Android手机通过低功耗蓝牙通信的方法。包括必要的Arduino库的安装步骤,Arduino代码示例,以及如何配置ESP32蓝牙服务等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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


评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值