【app篇】可拖拽BLE遥控app简单版本

本文介绍了如何利用ESP32BLE开发一个可拖拽的蓝牙控制应用程序,并提供了相关代码示例。作者分享了使用开源拖拽框架修改后的ESP32BLE测试代码,以及Arduino测试结果,适用于物联网设备的用户界面控制。
摘要由CSDN通过智能技术生成

可拖拽配置蓝牙控制app

忘记过去,超越自己

  • ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
  • ❤️ 本篇创建记录 2023-09-26 ❤️
  • ❤️ 本篇更新记录 2023-09-26 ❤️
  • 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝
  • 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
  • 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志 🔥零基础从入门到熟悉Arduino平台下开发ESP8266,同时会涉及网络编程知识。专栏文章累计超过60篇,分为基础篇、网络篇、应用篇、高级篇,涵盖ESP8266大部分开发技巧。

快速导航
单片机菜鸟的博客快速索引(快速找到你要的)

如果觉得有用,麻烦点赞收藏,您的支持是博主创作的动力。

1. 前言

写app也快10年了,最近在玩玩esp32 ble相关知识点。对于物联网来说,经常有各种控制UI页面,那么可不可以说弄一个拖拽的简单app。说干就干!!!!!
app下载链接,0积分下载,亲测可用

BLE调试助手APP

2. 参考资料

使用到了一个网友开源的拖拽框架,在这基础上修改了部分代码达到现在的效果。

3. App源码

需要app源码同学直接留言邮箱,见到处理。
在这里插入图片描述

4. ESP32 BLE测试代码

把以下代码烧录到ESP32-C3或者有BLE功能的ESP32即可。

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

BLECharacteristic *pCharacteristicRead;
BLECharacteristic *pCharacteristicNotify;
BLECharacteristic *pCharacteristicWrite;
BLEServer *pServer;

bool deviceConnected = false;
char BLEbuf[32] = {0};
uint32_t cnt = 0;

#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"
#define CHARACTERISTIC_UUID_READ "6E400003-B5A3-F393-E0A9-E50E24DCCA9F"

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

    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
};

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

        if (rxValue.find("A") != -1) {
          Serial.print("Rx A!");
        }
        else if (rxValue.find("B") != -1) {
          Serial.print("Rx B!");
        }
        Serial.println();
      }
    }
};
void setup() {
	Serial.begin(115200);
	// 创建一个ble设备
	BLEDevice::init("BLE_TEST");
  BLEDevice::setMTU(100);
	// 创建一个ble服务器
	pServer = BLEDevice::createServer();
	pServer->setCallbacks(new MyServerCallbacks());
	// 创建一个ble服务
	BLEService *pService = pServer->createService(SERVICE_UUID);

	// 创建一个ble特征,用于通知对方
	pCharacteristicNotify = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
    // 添加一个特征描述符
	pCharacteristicNotify->addDescriptor(new BLE2902());

	// 创建一个只读ble特征
	pCharacteristicRead = pService->createCharacteristic(CHARACTERISTIC_UUID_READ, BLECharacteristic::PROPERTY_READ);
	memset(BLEbuf, 0, 32);
  memcpy(BLEbuf, (char*)"只读数据!", 32);
  pCharacteristicRead->setValue(BLEbuf);

    // 创建一个ble特征,用于收到对方数据
	pCharacteristicWrite = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE);
	pCharacteristicWrite->setCallbacks(new MyWriteCallbacks());
	// 启动服务器
	pService->start();
	// 启动广播
	pServer->getAdvertising()->start();
	Serial.println("Waiting a client connection to notify...");
  Serial.print("MTU:");
  Serial.println(BLEDevice::getMTU());
}

void loop() {
	if (deviceConnected) {
		memset(BLEbuf, 0, 32);
		memcpy(BLEbuf, (char*)"Hello BLE APP!", 32);
		pCharacteristicNotify->setValue(BLEbuf);
		pCharacteristicNotify->notify(); // Send the value to the app!
		Serial.print("*** Sent Value: ");
		Serial.print(BLEbuf);
		Serial.println(" ***");
	} else {
	  pServer->getAdvertising()->start();
      Serial.println("Waiting a client connection to notify...");
	}
	delay(5000);
}

5. Arduino测试结果

在这里插入图片描述

整体过程是通路的,后面即可在上面进行业务开发。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机菜鸟哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值