要在手机上与ESP32通过蓝牙(BLE)连接,需结合硬件准备、代码配置和手机端操作三个环节。以下是详细步骤(基于你提供的ESP32 BLE代码):

一、准备工作

  1. ESP32硬件与代码

    • 确保ESP32开发板正常工作(供电、串口连接正常)。
    • 将你提供的Dri_BLE.c代码烧录到ESP32中(需配合ESP-IDF环境编译,确保蓝牙初始化函数Dri_BT_Init()被正确调用,例如在app_main()中启动)。
    • 代码中已配置BLE广播、GATT服务(心率服务0x180D)和安全认证(静态密码123456),烧录后ESP32会自动启动蓝牙广播。
  2. 手机端工具
    手机需安装支持BLE调试的APP(推荐以下工具,支持查看服务、发送/接收数据):

    • 安卓:nRF Connect(Nordic官方工具,功能全面)、BLE调试助手。
    • iOS:LightBlue Explorer、nRF Connect for Mobile。

二、手机连接ESP32的详细步骤

1. 确保ESP32正常广播

代码中ESP32启动后会自动初始化蓝牙并开始广播(通过esp_ble_gap_start_advertising()),广播名称由esp_ble_gap_set_device_name(EXAMPLE_DEVICE_NAME)设置(需在代码中确认EXAMPLE_DEVICE_NAME的定义,例如可能是"ESP32-HRS")。

  • 若ESP32未广播,检查代码中Dri_BT_Init()是否被调用,或通过串口日志(如ESP_LOGI输出)确认蓝牙初始化是否成功(搜索日志中"advertising start success"的提示)。
2. 手机搜索并发现ESP32设备
  • 打开手机蓝牙(系统设置中开启)。
  • 打开BLE调试APP(以nRF Connect为例):
    • 点击APP首页的“SCAN”按钮,开始扫描周围的BLE设备。
    • 在扫描列表中找到ESP32的设备名称(如"ESP32-HRS"),其广播数据中会包含心率服务UUID(0x180D),可辅助确认。
3. 建立连接
  • 点击列表中的ESP32设备名称,APP会尝试与ESP32建立连接。
  • 连接过程中,ESP32的串口日志会输出"ESP_GATTS_CONNECT_EVT",表示连接成功。
4. 处理配对与安全认证(关键步骤)

你的代码中配置了严格的安全认证(ESP_LE_AUTH_REQ_SC_MITM_BOND),需要配对并输入密码:

  • 连接后,手机会弹出配对请求(不同手机提示可能不同,如“需要配对以继续连接”)。
  • 按照提示输入静态密码(代码中设置为123456,见esp_ble_gap_set_security_param(ESP_BLE_SM_SET_STATIC_PASSKEY, &passkey, ...))。
  • 配对成功后,ESP32串口日志会输出"auth mode = ESP_LE_AUTH_REQ_SC_MITM_BOND""pair status = success",表示加密连接建立完成。
5. 与GATT服务交互(发送/接收数据)

连接成功后,APP会显示ESP32提供的GATT服务列表,找到“Heart Rate Service”(UUID:0x180D),展开后可看到3个特征(对应代码中的heart_rate_gatt_db):

  • 接收ESP32数据(通知)
    找到“Heart Rate Measurement”特征(UUID:0x2A37),点击进入后启用“Notify”(通过客户端配置描述符CCC开启)。ESP32可通过该特征主动向手机发送数据(需在代码中调用esp_ble_gatts_send_notify()实现,例如模拟心率值)。

  • 向ESP32发送数据
    找到“Heart Rate Control Point”特征(UUID:0x2A39),该特征支持“Write”操作(代码中ESP_GATTS_WRITE_EVT事件会触发App_Communication_RecvDataCb回调)。

    • 在APP中点击“WRITE”或“WRITE WITHOUT RESPONSE”,输入要发送的数据(如字符串或十六进制),点击发送。
    • ESP32会通过App_Communication_RecvDataCb接收数据,你可在该回调中添加自定义处理逻辑(如打印、解析指令)。

三、常见问题与解决

  1. 搜索不到ESP32设备

    • 检查ESP32是否正常广播(日志中是否有"advertising start success")。
    • 确保手机蓝牙已开启,且与ESP32距离较近(BLE有效距离通常在10米内)。
    • 若设备名称正确但未显示,尝试重启ESP32或手机蓝牙。
  2. 配对失败/密码错误

    • 确认代码中静态密码是否为123456(若被修改,需使用对应密码)。
    • 若提示“认证失败”,检查代码中安全参数配置(如auth_req是否设置过高,可暂时改为ESP_LE_AUTH_BOND降低安全级别测试)。
  3. 无法发送/接收数据

    • 确认特征UUID是否正确(发送数据需用0x2A39,接收通知需用0x2A37)。
    • 检查ESP32是否正确处理ESP_GATTS_WRITE_EVT事件(代码中已通过App_Communication_RecvDataCb传递数据,需确保该函数被正确实现)。

通过以上步骤,手机即可与ESP32建立稳定的BLE连接,并实现双向数据交互。调试时建议结合ESP32的串口日志(输出各类事件和数据)和手机APP的日志(查看发送/接收的原始数据),快速定位问题。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐