蓝牙技术
直播中

从未拥有

10年用户 1020经验值
擅长:可编程逻辑 电源/新能源 光电显示
私信 关注
[问答]

如何对DUAL_SENSOR_BOX_KIT 模式(BLE/蓝牙)进行编程?

  如何对DUAL_SENSOR_BOX_KIT 模式(BLE/蓝牙)进行编程?CYBT-263065-EVALTDA5235_868_5_BOARD

回帖(1)

远风

2025-7-10 18:11:14

DUAL_SENSOR_BOX_KIT(基于 CYBT-263065-EVAL 和 TDA5235_868_5_BOARD)的 BLE/蓝牙模式编程,需遵循以下步骤。整个过程使用 ModusToolbox(英飞凌官方开发环境)和 WICED SDK BLE 协议栈:




1. 开发环境准备



  • 安装 ModusToolbox

    下载并安装 ModusToolbox(最新版本):

    ModusToolbox 官网

  • 添加开发板支持包

    安装 CYBT-263065-EVAL BSP(Board Support Package):

    • 打开 ModusToolbox → Tools → Packs → Board Support Packages → 搜索 CYBT-263065-EVAL 并安装。


  • 获取 SDK

    确保安装 WICED BLE Stack(或最新版 AIROC BLE SDK)。




2. 创建新项目



  1. 打开 ModusToolbox → New Application

  2. 选择目标开发板:CYBT-263065-EVAL

  3. 选择 BLE 模板:  

    • 推荐模板:Empty BLE PSoC 6 App(基础框架)或 BLE Sensor Reporter(传感器示例)。


  4. 命名项目并生成代码。




3. 配置 BLE 服务(GATT)



  • 使用 GATT Configurator 工具(图形化配置):

    1. 打开项目中的 .cybt/.cygatt 文件(如 design.cybt)。

    2. 添加 自定义 GATT 服务

      • Service UUID:定义一个唯一 UUID(如 0xA001)。

      • 特征值 (Characteristics)

      • 传感器1数据(如温度):TEMP_SENSOR_1(UUID 0xA011,属性:Read & Notify)。

      • 传感器2数据(如湿度):HUMID_SENSOR_2(UUID 0xA012,属性:Read & Notify)。

      • (可选)控制命令:SENSOR_CTRL(UUID 0xA013,属性:Write)。


    3. 保存配置 → 自动生成 GATT 代码。





4. 编写传感器驱动


main.c 中添加传感器初始化与数据读取逻辑(假设传感器通过 I²C 连接):


#include "sensor_driver.h" // 替换为实际传感器驱动头文件

// 初始化传感器
void init_sensors(void) {
    i2c_init(); // 初始化 I²C 接口
    sensor1_init(); // 初始化传感器1(温度)
    sensor2_init(); // 初始化传感器2(湿度)
}

// 读取传感器数据
void read_sensor_data(void) {
    float temp = sensor1_read_temp();
    float humid = sensor2_read_humid();
    // 将数据更新到 BLE 特征值
    update_ble_characteristic(TEMP_SENSOR_1, (uint8_t*)&temp, sizeof(temp));
    update_ble_characteristic(HUMID_SENSOR_2, (uint8_t*)&humid, sizeof(humid));
}



5. 实现 BLE 事件回调


cy_ble_event_handler 中处理 BLE 事件:


void cy_ble_event_handler(uint32_t event, void *event_param) {
    switch (event) {
        // BLE 连接成功
        case CY_BLE_EVT_GAP_DEVICE_CONNECTED:
            enable_notifications(); // 启用通知
            break;

        // 写入请求(来自手机端)
        case CY_BLE_EVT_GATTS_WRITE_REQ: {
            cy_ble_gatts_write_req_param_t *req = (cy_ble_gatts_write_req_param_t *)event_param;
            if (req->handleValPair.attrHandle == SENSOR_CTRL_HANDLE) {
                process_control_command(req->handleValPair.value); // 处理控制命令
            }
            break;
        }
    }
}



6. 主循环逻辑


main() 中周期性读取传感器数据并发送通知:


int main(void) {
    cy_rslt_t result;
    result = cybt_platform_initialize(); // 初始化蓝牙平台
    init_sensors(); // 初始化传感器

    for (;;) {
        cy_ble_process_events(); // 处理 BLE 事件
        read_sensor_data(); // 读取传感器数据
        cy_ble_gatts_send_notification(connection_handle, TEMP_SENSOR_1_HANDLE); // 发送通知
        cy_ble_gatts_send_notification(connection_handle, HUMID_SENSOR_2_HANDLE);
        Cy_SysLib_Delay(2000); // 每 2 秒更新一次
    }
}



7. 编译与烧录



  1. 编译

    ModusToolbox → Build Application(生成 .hex 文件)。

  2. 烧录固件

    • 连接开发板到 PC(通过 USB)。

    • 使用 KitProg3 烧录工具

      ModusToolbox → Tools → Program (KitProg3) → 选择生成的 .hex 文件。





8. 手机端测试



  1. BLE 扫描工具

    使用 nRF ConnectLightBlue 扫描设备。

  2. 验证服务

    • 连接后查看 GATT 服务列表。

    • 订阅温度/湿度特征值的通知 → 接收实时数据。

    • 发送控制命令(如果实现)。





关键文档参考





调试技巧



  • 日志输出

    使用 printf 通过 UART 输出日志(配置 cy_retarget_io)。

  • BLE 嗅探器

    使用 EllisysFrontline 抓包分析 BLE 通信。

  • 功耗优化

    cycfg_ble.c 中调整广播间隔/连接参数降低功耗。


通过以上步骤,您可实现 DUAL_SENSOR_BOX_KIT 的 BLE 通信功能。根据实际传感器型号调整驱动逻辑,并优化数据更新策略以平衡功耗与实时性。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分