ESP32蓝牙模块

1 篇文章 0 订阅
1 篇文章 0 订阅

一、只读属性添加

1、vscode环境实现。在这里插入图片描述
2、添加一个只读蓝牙服务。
在这里插入图片描述
添加char_prop_read属性设置只读。
在这里插入图片描述
3、编译烧录到esp32开发板。
在这里插入图片描述
4、蓝牙调试。
打开手机蓝牙调试器发现有特征uuid:0xFF04。
在这里插入图片描述
接收数据:
在这里插入图片描述
接收数据的参数配置位置和数据源。
参数设置位置(char_value):

 /* Characteristic Declaration */
    [IDX_CHAR_D]      =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ,
      CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read}},

    /* Characteristic Value */
    [IDX_CHAR_VAL_D]  =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&GATTS_CHAR_UUID_TEST_D, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
      GATTS_DEMO_CHAR_VAL_LEN_MAX, sizeof(char_value), (uint8_t *)char_value}},

在这里插入图片描述
5、自定义发送参数,向client发送字符串。
自定义字符串数据。
在这里插入图片描述

在发送函数中配置参数

/* Characteristic Value */
    [IDX_CHAR_VAL_D]  =
    {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&GATTS_CHAR_UUID_TEST_D, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
      GATTS_DEMO_CHAR_VAL_LEN_MAX, sizeof(c_string_value), (uint8_t *)c_string_value}},

蓝牙调试app接收到的数据
在这里插入图片描述
二、通知属性,只写属性

添加服务类型
在这里插入图片描述
为服务类型添加uuid
在这里插入图片描述
为服务添加特征值步骤一样。

三、添加服务

添加服务包含的特征值
在这里插入图片描述
添加新服务的uuid
在这里插入图片描述
添加“表”。

const esp_gatts_attr_db_t gatt_db_BATTERY[IDX_BATTERY_MAX] =
    {
        // Service Declaration
        [IDX_SVC] =
            {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&primary_service_uuid, ESP_GATT_PERM_READ, sizeof(uint16_t), sizeof(GATT_UUID_BATTERY_SVC), (uint8_t *)&GATT_UUID_BATTERY_SVC}},

        /* Characteristic Declaration */
        [IDX_CHAR_A] =
            {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_declaration_uuid, ESP_GATT_PERM_READ, CHAR_DECLARATION_SIZE, CHAR_DECLARATION_SIZE, (uint8_t *)&char_prop_read_write_notify}},

        /* Characteristic Value */
        [IDX_CHAR_VAL_A] =
            {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&GATT_UUID_BATTERY_CHAR, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, GATTS_DEMO_CHAR_VAL_LEN_MAX, sizeof(char_value), (uint8_t *)char_value}},

        /* Client Characteristic Configuration Descriptor */
        [IDX_CHAR_CFG_A] =
            {{ESP_GATT_AUTO_RSP}, {ESP_UUID_LEN_16, (uint8_t *)&character_client_config_uuid, ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE, sizeof(uint16_t), sizeof(heart_measurement_ccc), (uint8_t *)heart_measurement_ccc}},

};

“注册表”,实际上是在函数中引入。

/*db注册*/
        esp_err_t create_attr_ret_2 = esp_ble_gatts_create_attr_tab(gatt_db_BATTERY, gatts_if, IDX_BATTERY_MAX, 1);
        if (create_attr_ret_2)
        {
            ESP_LOGE(GATTS_TABLE_TAG, "gatt_BATT_db create attr table failed, error code = %x", create_attr_ret_2);
        }
        else
        {
            ESP_LOGI(GATTS_TABLE_TAG, "create ok");
        }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值