[ESP32]ESP32 Arduino BLE调试 / 与安卓蓝牙数据交互

2023-11-10

帖子导航
[ESP32]ESP32 Arduino开发环境搭建

首先得有支持包吧

ESP32 BLE支持包

进入arduino IDE -> 文件 -> 首选项 -> 项目文件位置
到该路径下,打开git工具,项目地址 https://github.com/espressif/arduino-esp32.git
git命令git clone https://github.com/espressif/arduino-esp32.git
等到下载完成之后进入tools文件夹 -> 点击get.exe进行安装

不会使用git工具的,可以参考一下教你如何备份代码之——版本管理工具Git;

测试上位机

用的BLE Utility APP工具,大家可以上各大安卓市场进行下载安装

BLE程序
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
 
BLECharacteristic *pCharacteristic;
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"
 
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) {
        Serial.print("------>Received Value: ");
 
        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);
	
	// Create the BLE Device
	BLEDevice::init("ESP32 BLE Test"); 
	
	// Create the BLE Server
	BLEServer *pServer = BLEDevice::createServer();
	pServer->setCallbacks(new MyServerCallbacks());
	
	// Create the BLE Service
	BLEService *pService = pServer->createService(SERVICE_UUID);
	
	// Create a BLE Characteristic
	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());
	
	// Start the service
	pService->start();
	
	// Start advertising
	pServer->getAdvertising()->start();
	Serial.println("Waiting a client connection to notify...");
	}
 
void loop() {
	if (deviceConnected) {
		memset(BLEbuf, 0, 32);
		memcpy(BLEbuf, (char*)"Hello BLE APP!", 32); 
		pCharacteristic->setValue(BLEbuf);
		
		pCharacteristic->notify(); // Send the value to the app!
		Serial.print("*** Sent Value: ");
		Serial.print(BLEbuf);
		Serial.println(" ***");
	}
	delay(1000);
}

测试结果

能够和手机进行数据交互,能使用BLE进行数据收发
在这里插入图片描述
在这里插入图片描述

refer: https://www.instructables.com/id/ESP32-BLE-Android-App-Arduino-IDE-AWESOME/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[ESP32]ESP32 Arduino BLE调试 / 与安卓蓝牙数据交互 的相关文章

  • ESP32(MicroPython)四轮差速底盘遥控

    本项目主控改为ESP32 C3 沿用之前的L298N电机驱动 12 6v 18650电池组 LM7805降压模块的方案 电机改用1 19减速比的 使用130mm车轮 主要考虑越野用途 遥控方面 本项目使用HC 14模块 实测连接到电脑可以通
  • ESP32 上快捷部署 Tensorflow lite 机器学习(TinyML)

    在这篇文章中 我将向您展示使用 Arduino IDE 将 TensorFlow Lite 模型部署到 ESP32 的最简单方法 无需任何编译内容 Arduino 库 这个 Arduino 库是为了简化使用 Arduino IDE 将用于微
  • 【低功耗蓝牙】① 蓝牙广播数据格式分析

    摘要 本文章主要讲解了蓝牙的发展史 蓝牙信号 蓝牙广播数据的格式 最后使用ESP32芯片MicroPython固件给出了蓝牙广播的具体代码 是蓝牙初学者很好的参考资料 也可以参考下我在B站的蓝牙视频教程 ESP32教程 第二章 低功耗蓝牙B
  • ESP32(MicroPython)摇杆控制舵机

    主程序 橙色 信号线 gt 17 红色 电源正 gt 5V 褐色 电源负 gt GND 导入Pin模块 from machine import Pin import time from servo import Servo from mac
  • 【ESP-Matter】matter协议学习笔记--以乐鑫方案为例

    matter协议学习笔记 以乐鑫方案为例 0 写在前边的话 1 matter 协议基本概念 2 设备间的本地自动化交互 2 1 同步控制的实例 2 2 异步通知 订阅 报告 3 桥接设备 4 thread 边界路由器 5 专业名词 0 写在
  • ESP32(MicroPython)LVGL图形界面 RGB灯闪烁控制器

    ESP32 MicroPython RGB灯闪烁控制器 本程序通过依次调整RGB灯中每个灯的P 频率和占空比实现对RGB灯闪烁的控制 import lvgl as lv import time from espidf import VSPI
  • ESP32开发路程LVGL篇(三)——显示图片

    目录 显示图片 在线转换图片 图片加入项目 主函数代码 参考 LVGL 图片 显示图片 本文利用的方式 通过工具将图片转化为 c文件 写入单片机程序并进行烧录 这种方式实现起来较为简单 但是由于硬件限制 图片的大小会受限 且占用内存 可以用
  • ESP32s3 MSC/U盘 虚拟串口

    ESP32s3 MSC U盘 虚拟串口 开发环境是 IDF4 4 芯片 esp32s3 在项目中想要用到把内部的FLASH做成U盘 但是在idf4 4中没有找到MSC相关例程 如图 1 我在网上只找到esp32s2的例程 https git
  • [ESP32]ESP32 Arduino BLE调试 / 与安卓蓝牙数据交互

    帖子导航 ESP32 ESP32 Arduino开发环境搭建 首先得有支持包吧 ESP32 BLE支持包 进入arduino IDE gt 文件 gt 首选项 gt 项目文件位置 到该路径下 打开git工具 项目地址 https githu
  • ESP32学习笔记(1)—— 搭建开发环境、编译烧录 hello world 工程(基于rtos sdk 3.3.2)

    前言 ESP32 是一套 Wi Fi 2 4 GHz 和蓝牙 4 2 双模解决方案 sdk版本 v3 3 2 此次实验是在 Windows 10 系统下利用虚拟机安装 Ubuntu 16 04系统 并在此系统中进行开发编译和下载固件 一 准
  • ESP32串口不断输出rst:0x10 (RTCWDT_RTC_RESET),boot:0x13(SPI_FAST_FLASH_BOOT)且按BOOT键进不了下载模式

    错误现象 rst 0x10 RTCWDT RTC RESET boot 0x13 SPI FAST FLASH BOOT flash read err 1000 ets main c 371 ets Jun 8 2016 00 22 57
  • 【STM32 x ESP8266】连接 MQTT 服务器(报文,附部分源码解析)

    MQTT 协议作为物联网非常重要的传输协议 如何使用它十分重要 如果有不理解的同学可以点击这里学习 这里只是简单介绍一下 同时这里附上MQTT 3 1 1协议中文版 pdf 的链接 对协议底层感兴趣的同学可以下载学习一下 同时下面的实现函数
  • micropython RX8025T 驱动简单演示

    我就知道可能八百年会有一位大哥来找这个驱动 让我来猜猜为啥用这个 嫌一般的RTC不够精准是吧 想用个带温度补偿的试试 代码拿去 其实巨简单的 没啥好说的 而且只有基本功能 from micropython import const impo
  • C#驱动ESP32控制机器臂

    物料清单 介绍 NET nanoFramework 是一个免费的开源平台 可以为受限嵌入式设备编写托管代码应用程序 它适用于多种类型的项目 包括物联网传感器 可穿戴设备 学术概念验证 机器人技术 业余爱好者 创客创作甚至复杂的工业设备 通过
  • ESP32引脚参考

    原文链接 ESP32引脚参考 您应该使用哪个GPIO引脚 360doc个人图书馆 总结的相当全面 ESP32简单易懂的GPIO使用注意事项 首先上图 GPIO建议列表 特别的在硬件上要注意使用外接模块时不能将GPIO12拉高 否则将导致ES
  • 还是 “月饼” 后续,玩转炫彩 “月饼” 之 问题说明

    画一个 月饼 陪我过中秋 开发板后续问题跟进说明 目录 前言 一 出现问题 二 寻求办法 三 若有所思 四 问题测试 结语 悬赏送开发板 前言 本文有纯理论玩家是永远不会经历的实际问题 嵌入式工程师不动手永远出不了作品 本文最后有送开发板的
  • 最快方式 ESP-IDF 创建例子 教程

    需要条件 安装了 VSCODE 安装了插件 Espressif IDF工具 系统中安装了 ESP IDF 可使用离线包 或在线安装包 在插件中配置了 ESP IDF 可能需要在线更新一些东西 点击F1 输入 ESP 等待提示 出现提示后 选
  • ESP32学习笔记05-串口事件方式读取数据

    串口中断方式处理数据 事件机构体 typedef struct uart event type t type lt UART event type size t size lt UART data size for UART DATA ev
  • ESP32开发阶段启用 Secure Boot 与 Flash encryption

    Secure Boot 与 Flash encryption详情 请参考 https blog csdn net espressif article details 79362094 1 开发环境 AT版本 2 4 0 0 发布 IDF 与
  • 【ESP32接入国产大模型之文心一言】

    1 怎样接入文心一言 随着人工智能技术的不断发展 自然语言处理领域也得到了广泛的关注和应用 在这个领域中 文心一言作为一款强大的自然语言处理工具 具有许多重要的应用价值 本文将重点介绍如何通过ESP32接入国产大模型之文心一言api 以及其

随机推荐

  • Hyperledger Fabric配置文件解析-core.yaml

    peer节点的主要配置文件为core yaml 接下来我们以sampleconfig core yaml为例进行注释 core yaml文件分为几大section Peer section 节 点配置 VM section 链码运行环境配置
  • SpringBoot系列---【SpringBoot在多个profiles环境中自由切换】

    SpringBoot在多个profiles环境中自由切换 1 在resource目录下新建dev prod两个目录 并分别把dev环境的配置文件和prod环境的配置文件放到对应目录下 可以在配置文件中指定激活的配置文件 也可以默认不指定 2
  • 【fake_useragent】网络爬虫获取随机User-Agent

    学习目标 通过安装python的fake useragent第三方库 使用它生成随机User Agent请求网站 以此突破反爬 掌握fake useragent安装与使用 目录 User agent 安装fake useragent库 导入
  • 深度解析:在vue3中使用自定义Hooks

    目录 什么是Hooks 如何自定义Hooks 如何编写自定义Hooks 如何使用自定义Hooks 在复杂的场景中使用Hooks 使用Hooks的优点 什么是Hooks Hooks技术最早是由React团队的Sophie Alpert和Dan
  • 网络编程 用eclipse获取百度服务器端的首页

    案例 public class MyWebBrowse public static void main String args try InetAddress address InetAddress getByName www baidu
  • 【计算机组成】Cache与CPU的直接映射、全相联映射与组相联映射

    一 Cache与CPU需要映射的原因 CPU准备访问内存时 会先问问cache存储器有没有已经提前准备好了数据 如果没有则再找内存要 如果Cache刚好命中 则直接从Cache中读取数据 如果Cache没有命中 Cache失效 则CPU再去
  • 安卓知识点-动态权限(A6,A13)

    1 清单文件AndroidManifest xml声明
  • vue2.0click点击事件修饰符stop阻止单击事件冒泡prevent阻止默认事件

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 事件修饰符 在事件处理器中经常需要调用 event preventDefault 或 event stopPropagation 尽管我们在方法内可以轻松做到 不过让方法是
  • 深度学习入门基础CNN系列——卷积计算

    卷积计算 卷积是数学分析中的一种积分变换的方法 在图像处理中采用的是卷积的离散形式 这里需要说明的是 在卷积神经网络中 卷积层的实现方式实际上是数学中定义的互相关 cross correlation 运算 与数学分析中的卷积定义有所不同 这
  • 【操作系统】王道考研 p14 调度算法的评价指标

    视频 知识总览 最后的思维导图最重要 CPU利用率 系统吞吐量 一个比喻 吞相当于把作业拿过来 吐相当于作业做完了拿走 周转时间 周转时间 作业完成时间 作业提交时间 带权周转时间 作业周转时间 作业工作时间 带权周转时间越大 说明等的越久
  • 解决执行 spark.sql 时版本不兼容的一种方式

    场景描述 hive 数据表的导入导出功能部分代码如下所示 使用 assemble 将 Java 程序和 spark 相关依赖一起打成 jar 包 最后 spark submit 提交 jar 到集群执行 public class Spark
  • CRM--今日简报(接口实现)

    接口定义 按照开始时间和结束时间查询今日基本数据 线索数量 商机数量 合同数量 成交的金额 需求 当前用户在当前的线索数量 商机数量 合同数量 成交的金额 当前用户的线索 商机 合同 成交金额都不需要考虑状态 只要是今日做的 哪怕是回收了删
  • 移动FPGA使用Verilog图像处理verilator模拟和ice40执行

    概述 在verilog中实现简单的图像处理操作 该项目围绕一个中央图像处理模块 image processing v 展开 该模块可以包含在使用 verilator 的模拟环境中 也可以包含在 ice40 Ultraplus fpga 的
  • FLASH和EEPROM的区别和扩展

    EEPROM和FLASH总体差异 部分MCU片内不带程序存储器ROM 可执行代码只能放在外面的EEPROM FLASH 外扩 中 单片机对于数据的处理和系统的大量数据采集 需要考虑数据的长期保存和掉电保存等问题 因此外扩EEPROM就是这系
  • Scala-13:集合-列表List

    Scala 13 集合 列表List 一 不可变 List 1 说明 List 默认为不可变集合 创建一个 List 数据有顺序 可重复 List 默认为不可变集合 val list List Int List 1 2 3 4 3 遍历 L
  • 总结:js中Object.setPrototypeOf和Object.create的区别

    首先知道什么是原型 只要这样才能理解下面的内容 Object setPrototypeOf obj prototype 他是将prototype作为已知对象obj的原型 Object create prototype 是创建一个以proto
  • Java-动态代理原理

    1 什么是代理模式 1 例子 1 例子 在了解Java动态代理技术之前 先了解一下什么是代理模式 其实代理模式在生活中很常见 比如房东与中介其实就是一个代理的过程 房东有自己的房子 在代理模式中扮演角色是被代理对象 中介扮演角色是代理对象
  • java 行转列_Java程序员从阿里面试回来,这些面试题你们会吗?

    序言 简单的介绍一下自己的工作经历与职责 在校或者在工作中主要的工作内容 主要负责的内容 你的信息一清二白的写在简历上 这个主要为了缓解面试者的压力 介绍下自己最满意的 有技术亮点的项目或平台 重点介绍下自己负责那部分的技术细节 主要考察应
  • selenium爬虫与配置谷歌浏览器的driver问题

    用selenium爬虫时 明明已经安装了selenium模块 程序却运行不了 在使用selenium之前必须先配置浏览器对应版本的webdriver 本文主要涉及驱动有问题driver 网上有很多手动的方法 查看谷歌浏览的版本然后在其他博主
  • [ESP32]ESP32 Arduino BLE调试 / 与安卓蓝牙数据交互

    帖子导航 ESP32 ESP32 Arduino开发环境搭建 首先得有支持包吧 ESP32 BLE支持包 进入arduino IDE gt 文件 gt 首选项 gt 项目文件位置 到该路径下 打开git工具 项目地址 https githu